12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038 |
- /* ///////////////////////////////////////////////////////////////////////////
- //
- // INTEL CORPORATION PROPRIETARY INFORMATION
- // This software is supplied under the terms of a license agreement or
- // nondisclosure agreement with Intel Corporation and may not be copied
- // or disclosed except in accordance with the terms of that agreement.
- // Copyright(c) 2001-2009 Intel Corporation. All Rights Reserved.
- //
- // Intel(R) Integrated Performance Primitives
- // Video Coding (ippVC)
- //
- */
- #if !defined( __IPPVC_H__ ) || defined( _OWN_BLDPCS )
- #define __IPPVC_H__
- #if defined (_WIN32_WCE) && defined (_M_IX86) && defined (__stdcall)
- #define _IPP_STDCALL_CDECL
- #undef __stdcall
- #endif
- #ifndef __IPPDEFS_H__
- #include "ippdefs.h"
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- /* ////////////////////////////////////////////////////////////////////////////
- // Structures and definitions //
- //////////////////////////////////////////////////////////////////////////// */
- #if !defined( _OWN_BLDPCS )
- /* flags for motion compensation */
- #define IPPVC_VLC_FORBIDDEN 0xf0f1
- #define IPPVC_ESCAPE 0x00ff
- #define IPPVC_ENDOFBLOCK 0x00fe
- #define IPPVC_FRAME_PICTURE 0x0003
- typedef enum _IPPVC_ESCAPE_FLAG
- {
- IPPVC_EF_NONE = 0x0,
- IPPVC_EF_REVERSIBLE_VLC = 0x1,
- IPPVC_EF_SHORT_HEADER = 0x2
- } IPPVC_ESCAPE_FLAG;
- typedef enum _IPPVC_MC_APX
- {
- IPPVC_MC_APX_FF = 0x0,
- IPPVC_MC_APX_FH = 0x4,
- IPPVC_MC_APX_HF = 0x8,
- IPPVC_MC_APX_HH = 0x0c
- } IPPVC_MC_APX;
- typedef enum _IPPVC_MV_TYPE
- {
- IPPVC_MV_FIELD = 0x0,
- IPPVC_MV_FRAME = 0x1
- } IPPVC_MV_TYPE;
- typedef enum _IppvcFrameFieldFlag
- {
- IPPVC_FRAME = 0x0,
- IPPVC_TOP_FIELD = 0x1,
- IPPVC_BOTTOM_FIELD = 0x2
- }IppvcFrameFieldFlag;
- /* VL code longer than 8 bits */
- typedef struct _IppVCHuffmanSpec_32u
- {
- Ipp32u code; /* right justified */
- Ipp32u len;
- } IppVCHuffmanSpec_32u;
- typedef Ipp32s IppVCHuffmanSpec_32s ;
- /* Motion Vector */
- typedef struct _IppMotionVector
- {
- Ipp16s dx;
- Ipp16s dy;
- } IppMotionVector;
- typedef enum
- {
- IPP_4x4_VERT = 0,
- IPP_4x4_HOR = 1,
- IPP_4x4_DC = 2,
- IPP_4x4_DIAG_DL = 3,
- IPP_4x4_DIAG_DR = 4,
- IPP_4x4_VR = 5,
- IPP_4x4_HD = 6,
- IPP_4x4_VL = 7,
- IPP_4x4_HU = 8,
- /* these modes are not supported by all h264 prediction functions.
- read the manual for details. */
- IPP_4x4_DC_TOP = 9,
- IPP_4x4_DC_LEFT = 10,
- IPP_4x4_DC_128 = 11
- } IppIntra4x4PredMode_H264;
- typedef enum
- {
- IPP_8x8_VERT = 0,
- IPP_8x8_HOR = 1,
- IPP_8x8_DC = 2,
- IPP_8x8_DIAG_DL = 3,
- IPP_8x8_DIAG_DR = 4,
- IPP_8x8_VR = 5,
- IPP_8x8_HD = 6,
- IPP_8x8_VL = 7,
- IPP_8x8_HU = 8,
- /* these modes are not supported by all h264 prediction functions.
- read the manual for details. */
- IPP_8x8_DC_TOP = 9,
- IPP_8x8_DC_LEFT = 10,
- IPP_8x8_DC_128 = 11
- } IppIntra8x8PredMode_H264;
- typedef IppIntra8x8PredMode_H264 IppIntra8x8PredMode_AVS;
- typedef enum
- {
- IPP_16X16_VERT = 0,
- IPP_16X16_HOR = 1,
- IPP_16X16_DC = 2,
- IPP_16X16_PLANE = 3,
- /* these modes are not supported by all h264 prediction functions.
- read the manual for details. */
- IPP_16X16_DC_TOP = 4,
- IPP_16X16_DC_LEFT = 5,
- IPP_16X16_DC_128 = 6
- } IppIntra16x16PredMode_H264;
- typedef struct _IppiFilterDeblock_16u
- {
- Ipp16u* pSrcDstPlane; /* Pointer to the left upper pixel of macroblock. and resultant samples. */
- Ipp32s srcDstStep; /* Plane step (pitch). */
- Ipp16u* pAlpha; /* Alpha Thresholds */
- Ipp16u* pBeta; /* Beta Thresholds */
- Ipp16u* pThresholds; /* Thresholds (Tc0) */
- Ipp8u* pBs; /* BS parameters */
- Ipp32s bitDepth; /* number of bits of plane's sample (range - [8..14]) */
- } IppiFilterDeblock_16u;
- typedef struct _IppiFilterDeblock_8u
- {
- Ipp8u* pSrcDstPlane; /* Pointer to the left upper pixel of macroblock. and resultant samples. */
- Ipp32s srcDstStep; /* Plane step (pitch). */
- Ipp8u* pAlpha; /* Alpha Thresholds */
- Ipp8u* pBeta; /* Beta Thresholds */
- Ipp8u* pThresholds; /* Thresholds (Tc0) */
- Ipp8u* pBs; /* BS parameters */
- } IppiFilterDeblock_8u;
- typedef struct _IppVCInterpolate_8u
- {
- const Ipp8u* pSrc; /* Pointer to the source. */
- Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */
- Ipp8u* pDst; /* Pointer to the destination. */
- Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */
- Ipp32s dx; /* Fractional parts of the motion vector */
- Ipp32s dy; /* in 1/4 pel units (0, 1, 2, or 3). */
- IppiSize roiSize; /* Flag that specifies the region of interest
- (could be 16, 8, 4 or 2 in each dimension). */
- Ipp32s roundControl; /* Reserved for VC1 using. */
- } IppVCInterpolate_8u;
- typedef struct _IppVCInterpolate_16u
- {
- const Ipp16u* pSrc; /* Pointer to the source. */
- Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */
- Ipp16u* pDst; /* Pointer to the destination. */
- Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */
- Ipp32s dx; /* Fractional parts of the motion vector */
- Ipp32s dy; /* in 1/4 pel units (0, 1, 2, or 3). */
- IppiSize roiSize; /* Flag that specifies the region of interest
- (could be 16, 8, 4 or 2 in each dimension). */
- Ipp32s bitDepth; /* Number of significant bits in Ipp16u sample. */
- } IppVCInterpolate_16u;
- typedef struct _IppVCInterpolateBlock_8u
- {
- const Ipp8u *pSrc[2]; /* pointers to reference image planes */
- Ipp32s srcStep; /* step of the reference image planes */
- Ipp8u *pDst[2]; /* pointers to destination image planes */
- Ipp32s dstStep; /* step of the destination image planes */
- IppiSize sizeFrame; /* dimensions of the reference image planes */
- IppiSize sizeBlock; /* dimensions of the block to be interpolated */
- IppiPoint pointBlockPos; /* current position of the block in the being
- interpolated image */
- IppiPoint pointVector; /* relative difference between current position
- and reference data to be used */
- } IppVCInterpolateBlock_8u;
- typedef struct _IppVCInterpolateBlock_16u
- {
- const Ipp16u *pSrc[2]; /* pointers to reference image planes */
- Ipp32s srcStep; /* step of the reference image planes */
- Ipp16u *pDst[2]; /* pointers to destination image planes */
- Ipp32s dstStep; /* step of the destination image planes */
- IppiSize sizeFrame; /* dimensions of the reference image planes */
- IppiSize sizeBlock; /* dimensions of the block to be interpolated */
- IppiPoint pointBlockPos; /* current position of the block in the being
- interpolated image */
- IppiPoint pointVector; /* relative difference between current position
- and reference data to be used */
- Ipp32s bitDepth; /* data capacity depth in range 8..14 */
- } IppVCInterpolateBlock_16u;
- typedef struct _IppVCInterpolateBlockIC_8u
- {
- const Ipp8u *pSrc; /* Pointer to the source. */
- Ipp32s srcStep; /* Step of the pointer pSrc (source array) in bytes. */
- Ipp8u *pDst; /* Pointer to the destination. */
- Ipp32s dstStep; /* Step of the pointer pDst (destination array) in bytes. */
- Ipp8u *pLUTTop; /* pointer to top Intensity Compensation LUT table */
- Ipp8u *pLUTBottom; /* pointer to bottom Intensity Compensation LUT table */
- IppiSize sizeFrame; /* dimensions of the reference image plane */
- IppiSize sizeBlock; /* dimensions of the block to be interpolated */
- IppiPoint pointRefBlockPos; /* position inside reference frame. Which was calculated
- as sum of current position and integer part of motion vector */
- IppiPoint pointVectorQuarterPix; /* quarter part of MV */
- Ipp32u oppositePadding; /* flag that specified padding correspondence between
- current frame and reference frame */
- Ipp32u fieldPrediction; /* flag that specified prediction type for current MB progressive or field */
- Ipp32u roundControl; /* indicates type of rounding for the current frame */
- Ipp32u isPredBottom; /* flag that specified type of reference field in case
- of interlace reference picture - top or bottom */
- } IppVCInterpolateBlockIC_8u;
- typedef struct _IppiBidir_16u
- {
- const Ipp16u * pSrc1;
- Ipp32s srcStep1;
- const Ipp16u* pSrc2;
- Ipp32s srcStep2;
- Ipp16u* pDst;
- Ipp32s dstStep;
- IppiSize roiSize;
- Ipp32s bitDepth;
- } IppVCBidir_16u;
- typedef struct _IppiMBReconstructHigh_32s16u
- {
- Ipp32s** ppSrcDstCoeff; /* Pointer to the order of blocks of residual coefficients
- for this macroblock */
- Ipp16u* pSrcDstPlane; /* Pointer to macroblock that is reconstructed in current plane. This
- macroblock should contain inter prediction samples if exist.*/
- Ipp32s srcDstStep; /* Plane step. */
- Ipp32u cbp; /* Coded block pattern. */
- Ipp32s qp; /* quantizer */
- Ipp16s* pQuantTable; /* Pointer to the quantization table for plane */
- Ipp32s bypassFlag; /* Flag enabling lossless coding (reserved for future use). */
- Ipp32s bitDepth; /* Number of significant bits in Ipp16u sample. */
- } IppiReconstructHighMB_32s16u;
- typedef struct _IppiReconstructHighMB_16s8u
- {
- Ipp16s** ppSrcDstCoeff; /* Pointer to the order of blocks of residual coefficients
- for this macroblock */
- Ipp8u* pSrcDstPlane; /* Pointer to macroblock that is reconstructed in current plane. This
- macroblock should contain inter prediction samples if exist.*/
- Ipp32s srcDstStep; /* Plane step. */
- Ipp32u cbp; /* Coded block pattern. */
- Ipp32s qp; /* quantizer */
- Ipp16s* pQuantTable; /* Pointer to the quantization table for plane */
- Ipp32s bypassFlag; /* Flag enabling lossless coding (reserved for future use). */
- } IppiReconstructHighMB_16s8u;
- typedef enum
- {
- IPP_CHROMA_DC = 0,
- IPP_CHROMA_HOR = 1,
- IPP_CHROMA_VERT = 2,
- IPP_CHROMA_PLANE = 3,
- /* these modes are not supported by all h264 prediction functions.
- read the manual for details. */
- IPP_CHROMA_DC_TOP = 4,
- IPP_CHROMA_DC_LEFT = 5,
- IPP_CHROMA_DC_128 = 6
- } IppIntraChromaPredMode_H264;
- typedef IppIntraChromaPredMode_H264 IppIntraChromaPredMode_AVS;
- enum
- {
- IPPVC_LEFT_EDGE = 0x1,
- IPPVC_RIGHT_EDGE = 0x2,
- IPPVC_TOP_EDGE = 0x4,
- IPPVC_BOTTOM_EDGE = 0x8,
- IPPVC_TOP_LEFT_EDGE = 0x10,
- IPPVC_TOP_RIGHT_EDGE = 0x20
- };
- #define IPPVC_CBP_1ST_CHROMA_DC_BITPOS 17
- #define IPPVC_CBP_1ST_CHROMA_AC_BITPOS 19
- #define IPPVC_CBP_CHROMA_DC (0x3<<IPPVC_CBP_1ST_CHROMA_DC_BITPOS)
- #define IPPVC_CBP_CHROMA_AC (0xff<<IPPVC_CBP_1ST_CHROMA_AC_BITPOS)
- #define IPPVC_CBP_LUMA_AC (0xffff<<IPPVC_CBP_1ST_LUMA_AC_BITPOS)
- #define IPPVC_CBP_1ST_LUMA_AC_BITPOS 1
- #define IPPVC_CBP_LUMA_DC 1
- #define MAX_CAVLC_LEVEL_VALUE 2063
- #define IPPVC_CBP_DC 1
- #define IPPVC_CBP_1ST_AC_BITPOS 1
- enum
- {
- IPPVC_MBTYPE_INTER = 0, /* P picture or P-VOP */
- IPPVC_MBTYPE_INTER_Q = 1, /* P picture or P-VOP */
- IPPVC_MBTYPE_INTER4V = 2, /* P picture or P-VOP */
- IPPVC_MBTYPE_INTRA = 3, /* I and P picture, or I- and P-VOP */
- IPPVC_MBTYPE_INTRA_Q = 4, /* I and P picture, or I- and P-VOP */
- IPPVC_MBTYPE_INTER4V_Q = 5, /* P picture or P-VOP(H.263)*/
- IPPVC_MBTYPE_DIRECT = 6, /* B picture or B-VOP (MPEG-4 only) */
- IPPVC_MBTYPE_INTERPOLATE = 7, /* B picture or B-VOP */
- IPPVC_MBTYPE_BACKWARD = 8, /* B picture or B-VOP */
- IPPVC_MBTYPE_FORWARD = 9, /* B picture or B-VOP */
- IPPVC_MB_STUFFING = 255
- };
- enum
- {
- IPPVC_SCAN_NONE = -1,
- IPPVC_SCAN_ZIGZAG = 0,
- IPPVC_SCAN_VERTICAL = 1,
- IPPVC_SCAN_HORIZONTAL = 2
- };
- /* Block Type */
- enum
- {
- IPPVC_BLOCK_LUMA = 0,
- IPPVC_BLOCK_CHROMA = 1
- };
- /* Interpolation types */
- enum
- {
- IPPVC_INTERP_NONE = 0,
- IPPVC_INTERP_HORIZONTAL = 1,
- IPPVC_INTERP_VERTICAL = 2,
- IPPVC_INTERP_2D = 3
- };
- /* Sprite Type */
- enum
- {
- IPPVC_SPRITE_STATIC = 1,
- IPPVC_SPRITE_GMC = 2
- };
- typedef struct WarpSpec_MPEG4 IppiWarpSpec_MPEG4;
- typedef struct QuantInvIntraSpec_MPEG4 IppiQuantInvIntraSpec_MPEG4;
- typedef struct QuantInvInterSpec_MPEG4 IppiQuantInvInterSpec_MPEG4;
- typedef struct QuantIntraSpec_MPEG4 IppiQuantIntraSpec_MPEG4;
- typedef struct QuantInterSpec_MPEG4 IppiQuantInterSpec_MPEG4;
- /* General Color Conversion Enumerated Types */
- enum {
- IPPVC_ROTATE_DISABLE = 0,
- IPPVC_ROTATE_90CCW = 1,
- IPPVC_ROTATE_90CW = 2,
- IPPVC_ROTATE_180 = 3
- };
- enum
- {
- IPPVC_CbYCr422ToBGR565 = 0,
- IPPVC_CbYCr422ToBGR555 = 1
- };
- /* enum used in VC1 deblocking and smoothing */
- enum
- {
- IPPVC_EDGE_QUARTER_1 = 0x01,
- IPPVC_EDGE_QUARTER_2 = 0x02,
- IPPVC_EDGE_QUARTER_3 = 0x04,
- IPPVC_EDGE_QUARTER_4 = 0x08,
- IPPVC_EDGE_HALF_1 = IPPVC_EDGE_QUARTER_1 + IPPVC_EDGE_QUARTER_2,
- IPPVC_EDGE_HALF_2 = IPPVC_EDGE_QUARTER_3 + IPPVC_EDGE_QUARTER_4,
- IPPVC_EDGE_ALL = IPPVC_EDGE_HALF_1 + IPPVC_EDGE_HALF_2
- };
- /* deinterlacing structure */
- typedef struct DeinterlaceBlendState_8u_C1 IppiDeinterlaceBlendState_8u_C1;
- /* denoise structures & enums */
- typedef enum _IppvcNoiseBlurFlag
- {
- IPPVC_NOISE_BLUR0 = 0x0,
- IPPVC_NOISE_BLUR1 = 0x1,
- IPPVC_NOISE_BLUR2 = 0x2,
- IPPVC_NOISE_BLUR3 = 0x3
- }IppvcNoiseBlurFlag;
- struct DenoiseSmoothState;
- typedef struct DenoiseSmoothState IppiDenoiseSmoothState_8u_C1;
- struct DenoiseAdaptiveState;
- typedef struct DenoiseAdaptiveState IppiDenoiseAdaptiveState_8u_C1;
- struct DenoiseMNRState;
- typedef struct DenoiseMNRState IppiDenoiseMosquitoState_8u_C1;
- /* user-open structure */
- typedef struct {
- Ipp8u TemporalDifferenceThreshold; /* default 16 - range [0, 255] */
- Ipp8u NumberOfMotionPixelsThreshold; /* default 0 - range [0, 16] */
- Ipp8u StrongEdgeThreshold; /* default 8 - range [0, 255] */
- Ipp8u BlockWidth; /* default 4 - range [1, 16] */
- Ipp8u BlockHeight; /* default 4 - range [1, 16] */
- Ipp8u EdgePixelWeight; /* default 128 - range [0, 255] */
- Ipp8u NonEdgePixelWeight; /* default 16 - range [0, 255] */
- Ipp8u GaussianThresholdY; /* default 12 */
- Ipp8u GaussianThresholdUV; /* default 6 */
- Ipp8u HistoryWeight; /* default 192 - range [0, 255] */
- } IppDenoiseCAST;
- #endif /* _OWN_BLDPCS */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name: ippvcGetLibVersion
- // Purpose: getting of the library version
- // Returns: the structure of information about version of ippvc library
- // Parameters:
- //
- // Notes: not necessary to release the returned structure
- */
- IPPAPI( const IppLibraryVersion*, ippvcGetLibVersion, (void) )
- /* ///////////////////////////////////////////////////////////////////////////
- // MPEG-1 and MPEG-2 Video Decoding Functions
- //////////////////////////////////////////////////////////////////////////// */
- /* Variable Length Decoding Functions */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiHuffmanTableInitAlloc_32s
- //
- // Purpose:
- // allocates memory and initializes the table that contains codes
- // for macroblock address increment, macroblock type, macroblock pattern,
- // or motion vectors.
- //
- // Parameters:
- // pSrcTable Pointer to the source table
- // ppDstSpec Pointer to pointer to the destination decoding table
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsMemAllocErr No memory is allocated.
- */
- IPPAPI(IppStatus, ippiHuffmanTableInitAlloc_32s, (
- const Ipp32s* pSrcTable,
- IppVCHuffmanSpec_32s** ppDstSpec))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiHuffmanRunLevelTableInitAlloc_32s
- //
- // Purpose:
- // Allocates memory and initializes the table that contains Run-Level codes.
- //
- // Parameters:
- // pSrcTable Pointer to the source table
- // ppDstSpec Pointer to pointer to the destination decoding table
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsMemAllocErr No memory is allocated.
- */
- IPPAPI(IppStatus, ippiHuffmanRunLevelTableInitAlloc_32s, (
- const Ipp32s* pSrcTable,
- IppVCHuffmanSpec_32s** ppDstSpec))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeHuffmanOne_1u32s
- //
- // Purpose:
- // Decodes one code using a specified table
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bit stream
- // pOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pDst Pointer to the destination result
- // pDecodeTable Pointer to the decoding table
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
- */
- IPPAPI(IppStatus, ippiDecodeHuffmanOne_1u32s, (
- Ipp32u** ppBitStream,
- int* pOffset,
- Ipp32s* pDst,
- const IppVCHuffmanSpec_32s* pDecodeTable))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeHuffmanPair_1u16s
- //
- // Purpose:
- // Decodes one code using a specified table
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bit stream
- // pOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pDecodeTable Pointer to the decoding table
- // pFirst Pointer to the first destination result
- // pSecond Pointer to the second destination result
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
- */
- IPPAPI(IppStatus, ippiDecodeHuffmanPair_1u16s, (
- Ipp32u **ppBitStream,
- Ipp32s *pOffset,
- const IppVCHuffmanSpec_32s *pDecodeTable,
- Ipp8s *pFirst,
- Ipp16s *pSecond))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructDCTBlock_MPEG1_32s
- //
- // Purpose:
- // Decodes 8x8 non-intra block using a table with Run-Level codes
- // for MPEG-1 Standard, rearranges and performs inverse quantization.
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bitstream.
- // pOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pDCSizeTable Pointer to the table with DC coefficient,
- // that is the first of the DCT coefficients
- // pACTable Pointer to the table with Run-Level codes for
- // all DCT coefficients but the first
- // pScanMatrix Pointer to the matrix containing indices of elements
- // in scanning sequence
- // QP Quantizer scale factor which is read from the bitstream
- // pQPMatrix Pointer to the weighting matrix imposed by the Standard
- // or user-defined
- // pDstBlock Pointer to the decoded elements
- // pDstSize Pointer to the position of the last non-zero block coefficient
- // in scanning sequence
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
- */
- IPPAPI(IppStatus, ippiReconstructDCTBlock_MPEG1_32s, (
- Ipp32u** ppBitStream,
- int* pOffset,
- const Ipp32s* pDCSizeTable,
- const Ipp32s* pACTable,
- Ipp32s* pScanMatrix,
- int QP,
- Ipp16s* pQPMatrix,
- Ipp16s* pDstBlock,
- Ipp32s* pDstSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructDCTBlockIntra_MPEG1_32s
- //
- // Purpose:
- // Decodes 8x8 intra block using a table with Run-Level codes
- // for MPEG-1 Standard, rearranges and performs inverse quantization.
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bitstream.
- // pOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pDCSizeTable Pointer to the table with codes for DC coefficient,
- // that is the first of the DCT coefficients
- // pACTable Pointer to the table with Run-Level codes for
- // all DCT coefficients but the first
- // pScanMatrix Pointer to the scanning matrix imposed by the Standard
- // or user-defined
- // QP Quantizer scale factor which is read from the bitstream
- // pQPMatrix Pointer to the weighting matrix imposed by the Standard
- // or user-defined
- // pDCPred Pointer to the value to be added to the DC coefficient
- // pDstBlock Pointer to the decoded elements
- // pDstSize Pointer to the position of the last non-zero block
- // coefficient in scanning sequence
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
- */
- IPPAPI(IppStatus, ippiReconstructDCTBlockIntra_MPEG1_32s, (
- Ipp32u** ppBitStream,
- int* pOffset,
- const Ipp32s* pDCSizeTable,
- const Ipp32s* pACTable,
- Ipp32s* pScanMatrix,
- int QP,
- Ipp16s* pQPMatrix,
- Ipp16s* pDCPred,
- Ipp16s* pDstBlock,
- Ipp32s* pDstSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructDCTBlock_MPEG2_32s
- //
- // Purpose:
- // Decodes 8x8 non-intra block using a table with Run-Level codes for
- // MPEG-2 Standard, rearranges and performs inverse quantization.
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bitstream.
- // pOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pDCTable Pointer to the table with codes for DC coefficient,
- // that is the first of the DCT coefficients
- // pACTable Pointer to the table with Run-Level codes for
- // all DCT coefficients but the first
- // pScanMatrix Pointer to the matrix containing indices of elements
- // in scanning sequence
- // QP Quantizer scale factor which is read from the bitstream
- // pQPMatrix Pointer to the weighting matrix imposed by the Standard
- // or user-defined
- // pDstBlock Pointer to the decoded elements
- // pDstSize Pointer to the position of the last non-zero block
- // coefficient in scanning sequence
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
- */
- IPPAPI(IppStatus, ippiReconstructDCTBlock_MPEG2_32s, (
- Ipp32u** ppBitStream,
- int* pOffset,
- const IppVCHuffmanSpec_32s* pDCTable,
- const IppVCHuffmanSpec_32s* pACTable,
- Ipp32s* pScanMatrix,
- int QP,
- Ipp16s* pQPMatrix,
- Ipp16s* pDstBlock,
- Ipp32s* pDstSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructDCTBlockIntra_MPEG2_32s
- //
- // Purpose:
- // Decodes 8x8 intra block using a table with Run-Level codes for
- // MPEG-1 Standard, rearranges and performs inverse quantization.
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bitstream.
- // pOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pDCSizeTable Pointer to the table with codes for DC coefficient,
- // that is the first of the DCT coefficients
- // pACTable Pointer to the table with Run-Level codes for
- // all DCT coefficients but the first
- // pScanMatrix Pointer to the scanning matrix imposed by the Standard
- // or user-defined
- // QP Quantizer scale factor which is read from the bitstream
- // pQPMatrix Pointer to the weighting matrix imposed by the Standard
- // or user-defined
- // pDCPred Pointer to the value to be added to the DC coefficient
- // shiftDCVal Integer value, DC coefficient must be multiplied by
- // 2**shiftDCVal
- // pDstBlock Pointer to the decoded elements
- // pDstSize Pointer to the position of the last non-zero block
- // coefficient in scanning sequence
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsH263VLCCodeErr Decoding in accordance with H.263 Standard
- */
- IPPAPI(IppStatus, ippiReconstructDCTBlockIntra_MPEG2_32s, (
- Ipp32u** ppBitStream,
- int* pOffset,
- const IppVCHuffmanSpec_32s* pDCSizeTable,
- const IppVCHuffmanSpec_32s* pACTable,
- Ipp32s* pScanMatrix,
- int QP,
- Ipp16s* pQPMatrix,
- Ipp16s* pDCPred,
- Ipp32s shiftDCVal,
- Ipp16s* pDstBlock,
- Ipp32s* pDstSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiHuffmanTableFree_32s
- //
- // Purpose:
- // Frees memory allocated for VLC table
- //
- // Parameters:
- // pDecodeTable Pointer to the allocated table
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiHuffmanTableFree_32s, (IppVCHuffmanSpec_32s *pDecodeTable))
- /* Inverse Quantization */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvIntra_MPEG2_16s_C1I
- // ippiQuantInv_MPEG2_16s_C1I
- //
- // Purpose:
- // Performs inverse quantization for intra and non-intra frames
- // respectively in accordance with the MPEG-2 Standard
- //
- // Parameters:
- // pSrcDst Pointer to the block of DCT coefficients
- // QP Quantizer scale factor which is read from the bitstream
- // pQPMatrix Pointer to the weighting matrix imposed by the Standard
- // or user-defined
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiQuantInvIntra_MPEG2_16s_C1I, (
- Ipp16s* pSrcDst,
- int QP,
- Ipp16s* pQPMatrix))
- IPPAPI(IppStatus, ippiQuantInv_MPEG2_16s_C1I, (
- Ipp16s* pSrcDst,
- int QP,
- Ipp16s* pQPMatrix))
- /* Inverse Discrete Cosine Transformation */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT8x8Inv_AANTransposed_16s_C1R
- //
- // Purpose:
- // Performs inverse DCT on a pre-transposed block
- //
- // Parameters:
- // pSrc Pointer to the block of DCT coefficients
- // pDst Pointer to the destination array
- // dstStep Step through the destination array
- // count Number of the last non-zero coefficient in zig-zag order
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // This function is used for non-intra macroblocks
- */
- IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s_C1R, (
- const Ipp16s* pSrc,
- Ipp16s* pDst,
- Ipp32s dstStep,
- Ipp32s count))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT8x8Inv_AANTransposed_16s8u_C1R
- //
- // Purpose:
- // Performs inverse DCT on a pre-transposed block and
- // converts output to unsigned char format
- //
- // Parameters:
- // pSrc Pointer to the block of DCT coefficients
- // pDst Pointer to the destination array
- // dstStep Step through the destination array
- // count Number of the last non-zero coefficient in zig-zag order
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // This function is used for non-intra macroblocks
- */
- IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s8u_C1R, (
- const Ipp16s* pSrc,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s count))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT8x8Inv_AANTransposed_16s_P2C2R
- //
- // Purpose:
- // Performs Inverse DCT on pre-transposed data of two input chroma blocks
- // and joins the output data into one array
- //
- // Parameters:
- // pSrcU Pointer to block of DCT coefficients for U component
- // pSrcV Pointer to block of DCT coefficients for V component
- // pDstUV Pointer to the destination array
- // dstStep Step through the destination array
- // countU Number of the last non-zero U coefficient in zig-zag order
- // countV Number of the last non-zero V coefficient in zig-zag order
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // This function is used for non-intra macroblocks
- */
- IPPAPI(IppStatus,ippiDCT8x8Inv_AANTransposed_16s_P2C2R, (
- const Ipp16s* pSrcU,
- const Ipp16s* pSrcV,
- Ipp16s* pDstUV,
- Ipp32s dstStep,
- Ipp32s countU,
- Ipp32s countV))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT8x8Inv_AANTransposed_16s8u_P2C2R
- //
- // Purpose:
- // Performs inverse DCT on pre-transposed data of two input chroma
- // blocks and joins the output data into one unsigned char array
- //
- // Parameters:
- // pSrcU Pointer to block of DCT coefficients for U component
- // pSrcV Pointer to block of DCT coefficients for V component
- // pDstUV Pointer to the destination array
- // dstStep Step through the destination array
- // countU Number of the last non-zero U coefficient in zig-zag order
- // countV Number of the last non-zero V coefficient in zig-zag order
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // This function is used for non-intra macroblocks
- */
- IPPAPI(IppStatus, ippiDCT8x8Inv_AANTransposed_16s8u_P2C2R, (
- const Ipp16s* pSrcU,
- const Ipp16s* pSrcV,
- Ipp8u* pDstUV,
- Ipp32s dstStep,
- Ipp32s countU,
- Ipp32s countV))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT8x8Fwd_8u16s_C2P2
- //
- // Purpose:
- // The function performs forward discrete cosines transform at block 8x8
- // of chrominance part of NV12 plane and after put results into separate
- // blocks of 8x8 for U (Cb) and V (Cr) components.
- //
- // Parameters:
- // pSrc - the pointer to the source block ( chrominance part of NV12 plane).
- // 0 UV UV UV UV UV UV UV UV
- // 1 UV UV UV UV ... UV
- // ...
- // 7 UV UV UV UV UV UV UV UV
- //
- // pSrc Pointer to block of DCT coefficients for U component
- // srcStep Step of the current source block, specifying width of the plane
- // in bytes.negative step works.
- // pDstU - the pointer to the destination buffer for U coefficients of DCT
- // pDstV - the pointer to the destination buffer for U coefficients of DCT
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus,ippiDCT8x8Fwd_8u16s_C2P2, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp16s* pDstU,
- Ipp16s* pDstV ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT8x8InvOrSet_16s8u_P2C2
- //
- // Purpose:
- // The function performs inverse discrete cosines transform at block 8x8
- // and after put results into chrominance part of NV12 plane. Or fill
- // chrominance part of NV12 plane by constant values depends on flag parameter.
- // Parameters:
- // pSrcU - the pointer to the source of U(Cb) DCT coefficients
- // pSrcV - the pointer to the source of U(Cb) DCT coefficients
- // pDst - the pointer to the destination block ( chrominance part of NV12 plane).
- // 0 UV UV UV UV UV UV UV UV
- // 1 UV UV UV UV UV
- // ...
- // 7 UV UV UV UV UV UV UV UV
- //
- // dstStep Step of the current destination block, specifying width of the plane
- // in bytes.negative step works.
- // flag - Bits from 2 to 31 are reserved. Take into account only two low bits.
- // (flag&0x03) == 0x00 - Do iDCT for U and V
- // (flag&0x03) == 0x01 - Do iDCT for U and SET for V
- // (flag&0x03) == 0x02 - Do SET for U and iDCT for V
- // (flag&0x03) == 0x03 - Do SET for U and V
- // SET means that destination blok fill by (pSrcU[0]/8) value for U
- // or (pSrcV[0]/8) value for V.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiDCT8x8InvOrSet_16s8u_P2C2, (
- const Ipp16s* pSrcU,
- const Ipp16s* pSrcV,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s flag))
- /* Motion Compensation */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiMC16x16_8u_C1, ippiMC16x8_8u_C1, ippiMC8x16_8u_C1,
- // ippiMC8x8_8u_C1, ippiMC8x4_8u_C1, ippiMC4x8_8u_C1,
- // ippiMC4x4_8u_C1, ippiMC2x4_8u_C1, ippiMC4x2_8u_C1,
- // ippiMC2x2_8u_C1
- //
- // Purpose:
- // Performs motion compensation for a predicted block of
- // the correspondent size
- //
- // Parameters:
- // pSrcRef Pointer to the reference intra block
- // srcStep Step in bytes, specifying the width of
- // the aligned reference frame
- // pSrcYData Pointer to the data obtained after inverse DCT
- // srcYDataStep Step in bytes, specifying the width of
- // the aligned data after inverse DCT
- // pDst Pointer to the destination predicted block
- // dstStep Step in bytes, specifying the width of
- // the aligned destination frame
- // mcType Type of motion compensation, IPPVC_MC_APX
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiMC16x16_8u_C1,(
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC16x8_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x16_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x8_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x4_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC4x8_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC4x4_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC2x4_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC4x2_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC2x2_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiMC16x4_8u_C1
- // ippiMC16x8UV_8u_C1
- //
- // Purpose:
- // Performs motion compensation for a predicted UV block of
- // the correspondent size
- //
- // Parameters:
- // pSrcRef Pointer to the reference block
- // srcStep Step in bytes, specifying the width of
- // the aligned reference frame
- // pSrcYData Pointer to the data obtained after inverse DCT
- // srcYDataStep Step in bytes, specifying the width of
- // the aligned data after inverse DCT
- // pDst Pointer to the destination predicted block
- // dstStep Step in bytes, specifying the width of
- // the aligned destination frame
- // mcType Type of motion compensation, IPPVC_MC_APX
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiMC16x4_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC16x8UV_8u_C1, (
- const Ipp8u* pSrcRef,
- Ipp32s srcStep,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiMC16x16B_8u_C1, ippiMC16x8B_8u_C1, ippiMC8x16B_8u_C1,
- // ippiMC8x8B_8u_C1, ippiMC8x4B_8u_C1, ippiMC4x8B_8u_C1,
- // ippiMC4x4B_8u_C1, ippiMC2x4B_8u_C1, ippiMC4x2B_8u_C1,
- // ippiMC2x2B_8u_C1
- //
- // Purpose:
- // Performs motion compensation for a bi-predicted block of
- // the correspondent size
- //
- // Parameters:
- // pSrcRefB Pointer to the forward reference block
- // srcStepF Step in bytes, specifying the width of
- // the aligned forward reference frame
- // mcTypeF Forward motion compensation type, IPPVC_MC_APX
- // pSrcRefB Pointer to the backward reference block
- // srcStepB Step in bytes, specifying the width of
- // the aligned backward reference frame
- // mcTypeB Backward motion compensation type, IPPVC_MC_APX
- // pSrcYData Pointer to the data obtained after inverse DCT
- // srcYDataStep Step in bytes, specifying the width of
- // the aligned data after inverse DCT
- // pDst Pointer to the destination predicted block
- // dstStep Step in bytes, specifying the width of
- // the aligned destination frame
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiMC16x16B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC16x8B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x16B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x8B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x4B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC4x8B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC4x4B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC2x4B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC4x2B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC2x2B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiMC16x4B_8u_C1
- // ippiMC16x8BUV_8u_C1
- //
- // Purpose:
- // Performs motion compensation for a bi-predicted UV block of
- // the correspondent size
- //
- // Parameters:
- // pSrcRefB Pointer to the forward reference block
- // srcStepF Step in bytes, specifying the width of
- // the aligned forward reference frame
- // mcTypeF Forward motion compensation type, IPPVC_MC_APX
- // pSrcRefB Pointer to the backward reference block
- // srcStepB Step in bytes, specifying the width of
- // the aligned backward reference frame
- // mcTypeB Backward motion compensation type, IPPVC_MC_APX
- // pSrcYData Pointer to the data obtained after inverse DCT
- // srcYDataStep Step in bytes, specifying the width of
- // the aligned data after inverse DCT
- // pDst Pointer to the destination predicted block
- // dstStep Step in bytes, specifying the width of
- the aligned destination frame
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiMC16x4B_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC16x8BUV_8u_C1, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcStepB,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcYData,
- Ipp32s srcYDataStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiMC8x8_16s8u_P2C2R
- // ippiMC8x4_16s8u_P2C2R
- //
- // Purpose:
- // Performs motion compensation for UV block (as a part of
- // chrominance part of NV12 plane) of the correspondent size.
- //
- // Parameters:
- // pSrcRef Pointer to the reference block
- // srcStep Step in bytes, specifying the width of
- // the aligned reference frame
- // pSrcU Pointer to the U data obtained after inverse DCT
- // pSrcV Pointer to the V data obtained after inverse DCT
- // srcUVStep Step in bytes, specifying the width of
- // the aligned data after inverse DCT
- // pDst Pointer to the destination predicted block
- // dstStep Step in bytes, specifying the width of
- // the aligned destination frame
- // mcType Type of motion compensation, IPPVC_MC_APX
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // pSrcRef and pDst - the pointer to the chrominance part of NV12 plane.
- // 0 UV UV UV UV UV UV UV UV
- // 1 UV UV UV UV ... UV
- // ...
- // 7 UV UV UV UV UV UV UV UV
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiMC8x8_16s8u_P2C2R, (
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- const Ipp16s* pSrcU,
- const Ipp16s* pSrcV,
- Ipp32s srcUVStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x4_16s8u_P2C2R, (
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- const Ipp16s* pSrcU,
- const Ipp16s* pSrcV,
- Ipp32s srcUVStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiMC8x8B_16s8u_P2C2R
- // ippiMC8x4B_16s8u_P2C2R
- //
- // Purpose:
- // Performs motion compensation for a bi-predicted UV block (as a part of
- // chrominance part of NV12 plane) of the correspondent size.
- //
- // Parameters:
- // pSrcRefF Pointer to the forward reference block
- // srcStepF Step in bytes, specifying the width of
- // the aligned forward reference frame
- // mcTypeF Forward motion compensation type, IPPVC_MC_APX
- // pSrcRefB Pointer to the backward reference block
- // srcStepB Step in bytes, specifying the width of
- // the aligned backward reference frame
- // mcTypeB Backward motion compensation type, IPPVC_MC_APX
- // pSrcU Pointer to the U data obtained after inverse DCT
- // pSrcV Pointer to the V data obtained after inverse DCT
- // srcUVStep Step in bytes, specifying the width of
- // the aligned data after inverse DCT
- // pDst Pointer to the destination predicted block
- // dstStep Step in bytes, specifying the width of
- // the aligned destination frame
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // pSrcRefF, pSrcRefB and pDst - the pointer to the chrominance part of NV12 plane.
- // 0 UV UV UV UV UV UV UV UV
- // 1 UV UV UV UV ... UV
- // ...
- // 7 UV UV UV UV UV UV UV UV
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiMC8x8B_16s8u_P2C2R, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcRefFStep,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcRefBStep,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcU,
- const Ipp16s* pSrcV,
- Ipp32s srcUVStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiMC8x4B_16s8u_P2C2R, (
- const Ipp8u* pSrcRefF,
- Ipp32s srcRefFStep,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcRefBStep,
- Ipp32s mcTypeB,
- const Ipp16s* pSrcU,
- const Ipp16s* pSrcV,
- Ipp32s srcUVStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // MPEG-1 and MPEG-2 Video Encoding Functions
- //////////////////////////////////////////////////////////////////////////// */
- /* Motion Estimation and Compensation Functions */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiGetDiff16x16_8u16s_C1
- // ippiGetDiff16x8_8u16s_C1
- // ippiGetDiff8x8_8u16s_C1
- // ippiGetDiff8x16_8u16s_C1
- // ippiGetDiff8x4_8u16s_C1
- //
- // Purpose:
- // Evaluates the difference between current predicted and reference blocks
- // of the specified size in accordance with the type of motion compensation.
- //
- // Parameters:
- // pSrcCur Pointer to the current block
- // srcCurStep Step in bytes of the current block
- // pSrcRef Pointer to the reference block
- // srcRefStep Step in bytes of the reference block
- // pDstDiff Pointer to the destination block containing
- // differences between current and reference blocks
- // dstDiffStep Step in bytes through the destination block
- // pDstPredictor Pointer to the block containing predictors
- // dstPredictorStep Step in bytes through the predictor block
- // mcType Type of the following motion compensation
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // These operations are inverse to that performed by correspondent motion
- // compensation functions
- */
- IPPAPI(IppStatus, ippiGetDiff16x16_8u16s_C1,(
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp16s* pDstPredictor,
- Ipp32s dstPredictorStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff16x8_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp16s* pDstPredictor,
- Ipp32s dstPredictorStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x8_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp16s* pDstPredictor,
- Ipp32s dstPredictorStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x16_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp16s* pDstPredictor,
- Ipp32s dstPredictorStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x4_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp16s* pDstPredictor,
- Ipp32s dstPredictorStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- /* Motion Estimation and Compensation Functions for NV12 chroma format */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiGetDiff8x8_8u16s_C2P2
- // ippiGetDiff8x4_8u16s_C2P2
- //
- // Purpose:
- // Evaluates the difference between current predicted and reference blocks
- // of the specified size in accordance with the type of motion compensation.
- // Chroma is presented in NV12 format
- //
- // Parameters:
- // pSrcCur Pointer to the current block
- // srcCurStep Step in bytes of the current block
- // pSrcRef Pointer to the reference block
- // srcRefStep Step in bytes of the reference block
- // pDstDiffU Pointer to the destination block containing
- // differences between current and reference blocks U-plane
- // dstDiffStepU Step in bytes through the destination block for U-plane
- // pDstDiffV Pointer to the destination block containing
- // differences between current and reference blocks V-plane
- // dstDiffStepV Step in bytes through the destination block for V-plane
- // mcType Type of the following motion compensation
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // These operations are inverse to that performed by correspondent motion
- // compensation functions
- */
- IPPAPI(IppStatus, ippiGetDiff8x4_8u16s_C2P2,(const Ipp8u *pSrcCur,Ipp32s srcCurStep,
- const Ipp8u *pSrcRef,Ipp32s srcRefStep,
- Ipp16s *pDstDiffU,Ipp32s dstDiffStepU,
- Ipp16s *pDstDiffV,Ipp32s dstDiffStepV,
- Ipp32s mcType,Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x8_8u16s_C2P2,(const Ipp8u *pSrcCur,Ipp32s srcCurStep,
- const Ipp8u *pSrcRef,Ipp32s srcRefStep,
- Ipp16s *pDstDiffU,Ipp32s dstDiffStepU,
- Ipp16s *pDstDiffV,Ipp32s dstDiffStepV,
- Ipp32s mcType,Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiGetDiff4x4_8u16s_C1
- //
- // Purpose:
- // Evaluates the difference between current predicted and reference blocks
- // of the specified size in accordance with the type of motion compensation.
- //
- // Parameters:
- // pSrcCur Pointer to the current block
- // srcCurStep Step in bytes of the current block
- // pSrcRef Pointer to the reference block
- // srcRefStep Step in bytes of the reference block
- // pDstDiff Pointer to the destination block containing
- // differences between current and reference blocks
- // dstDiffStep Step in bytes through the destination block
- // pDstPredictor Reserved parameter (must be 0).
- // dstPredictorStep Reserved parameter (must be 0).
- // mcType Reserved parameter (must be 0).
- // roundControl Reserved parameter (must be 0).
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // These operations are inverse to that performed by correspondent motion
- // compensation functions
- */
- IPPAPI( IppStatus, ippiGetDiff4x4_8u16s_C1,(
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRef,
- Ipp32s srcRefStep,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp16s* pDstPredictor,
- Ipp32s dstPredictorStep,
- Ipp32s mcType,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiGetDiff16x16B_8u16s_C1
- //
- // Purpose:
- // Evaluates difference between current bi-predicted and mean of two
- // reference blocks of the specified size in accordance with the type of
- // motion compensation.
- //
- // Parameters:
- // pSrcCur Pointer to the current block
- // srcCurStep Step in bytes through the current block (stride1)
- // pSrcRefF Pointer to the forward reference block
- // srcRefStepF Step in bytes through the forward reference block
- // (stride1)
- // mcTypeF Forward motion compensation type
- // pSrcRefB Pointer to the backward reference block
- // srcRefStepB Step in bytes through the backward reference block
- // (stride1)
- // mcTypeB Backward motion compensation type
- // pDstDiff Pointer to the destination block containing the
- // differences between current and reference blocks
- // dstDiffStep Step in bytes through the destination block
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // These operations are inverse to that performed by correspondent motion
- // compensation functions
- */
- IPPAPI(IppStatus, ippiGetDiff16x16B_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRefF,
- Ipp32s srcRefStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcRefStepB,
- Ipp32s mcTypeB,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff16x8B_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRefF,
- Ipp32s srcRefStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcRefStepB,
- Ipp32s mcTypeB,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x8B_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRefF,
- Ipp32s srcRefStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcRefStepB,
- Ipp32s mcTypeB,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x16B_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRefF,
- Ipp32s srcRefStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcRefStepB,
- Ipp32s mcTypeB,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x4B_8u16s_C1, (
- const Ipp8u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp8u* pSrcRefF,
- Ipp32s srcRefStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pSrcRefB,
- Ipp32s srcRefStepB,
- Ipp32s mcTypeB,
- Ipp16s* pDstDiff,
- Ipp32s dstDiffStep,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiGetDiff8x8B_8u16s_C2P2
- // ippiGetDiff8x4B_8u16s_C2P2
- //
- // Purpose:
- // Evaluates difference between current bi-predicted and mean of two
- // reference blocks of the specified size in accordance with the type of
- // motion compensation.
- // Chroma is presented in NV12 format
- //
- // Parameters:
- // pSrcCur Pointer to the current block
- // srcCurStep Step in bytes through the current block (stride1)
- // pSrcRefF Pointer to the forward reference block
- // srcRefStepF Step in bytes through the forward reference block
- // (stride1)
- // mcTypeF Forward motion compensation type
- // pSrcRefB Pointer to the backward reference block
- // srcRefStepB Step in bytes through the backward reference block
- // (stride1)
- // mcTypeB Backward motion compensation type
- // pDstDiffU Pointer to the destination block containing the
- // differences between current and reference blocks U plane
- // dstDiffStepU Step in bytes through the destination block for U plane
- // pDstDiffV Pointer to the destination block containing the
- // differences between current and reference blocks V plane
- // dstDiffStepV Step in bytes through the destination block for V plane
- // roundControl Type of rounding for half-pixel approximation;
- // may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // These operations are inverse to that performed by correspondent motion
- // compensation functions
- */
- IPPAPI(IppStatus, ippiGetDiff8x4B_8u16s_C2P2, (const Ipp8u *pSrcCur,Ipp32s srcCurStep,
- const Ipp8u *pSrcRefF,Ipp32s srcRefStepF,
- Ipp32s mcTypeF,
- const Ipp8u *pSrcRefB,Ipp32s srcRefStepB,
- Ipp32s mcTypeB,
- Ipp16s *pDstDiffU, Ipp32s dstDiffStepU,
- Ipp16s *pDstDiffV, Ipp32s dstDiffStepV,
- Ipp32s roundControl))
- IPPAPI(IppStatus, ippiGetDiff8x8B_8u16s_C2P2, (const Ipp8u *pSrcCur, Ipp32s srcCurStep,
- const Ipp8u *pSrcRefF,Ipp32s srcRefStepF,
- Ipp32s mcTypeF,
- const Ipp8u *pSrcRefB,Ipp32s srcRefStepB,
- Ipp32s mcTypeB,
- Ipp16s *pDstDiffU, Ipp32s dstDiffStepU,
- Ipp16s *pDstDiffV, Ipp32s dstDiffStepV,
- Ipp32s roundControl))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSAD16x16_8u32s
- //
- // Purpose:
- // Evaluates the sum of absolute difference (SAD) between all elements of
- // the current block and the corresponding elements of the reference block.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
- //
- // Parameters:
- // pSrc Pointer to the current block
- // srcStep Step in bytes through the current block
- // pRef Pointer to the reference block
- // refStep Step in bytes through the reference block
- // mcType Type of motion compensation
- // pSAD Pointer to the result
- */
- IPPAPI(IppStatus, ippiSAD16x16_8u32s, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRef,
- Ipp32s refStep,
- Ipp32s* pSAD,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSAD4x4_8u32s
- //
- // Purpose:
- // Evaluates the sum of absolute difference (SAD) between all elements of
- // the current block and the corresponding elements of the reference block.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
- //
- // Parameters:
- // pSrc Pointer to the current block
- // srcStep Step in bytes through the current block
- // pRef Pointer to the reference block
- // refStep Step in bytes through the reference block
- // mcType reserved and must be 0.
- // pSAD Pointer to the result
- */
- IPPAPI(IppStatus, ippiSAD4x4_8u32s,(const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRef,
- Ipp32s refStep,
- Ipp32s* pSAD,
- Ipp32s mcType ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // SAD16x16Blocks8x8_8u16u
- //
- // Purpose:
- // Evaluates four partial sums of absolute differences
- // between current and reference 16X16 blocks.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Parameters:
- // pSrc Pointer to 16x16 block in the source plane.
- // srcStep Pitch of the source plane (in bytes).
- // pRef Pointer to 16x16 block in the reference plane.
- // refStep Pitch of the reference plane (in bytes).
- // pSAD Pointer to array of size 4 to store SAD values.
- // mcType reserved and must be 0.
- */
- IPPAPI(IppStatus, ippiSAD16x16Blocks8x8_8u16u,(const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRef,
- Ipp32s refStep,
- Ipp16u* pDstSAD,
- Ipp32s mcType ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // SAD16x16Blocks4x4_8u16u
- //
- // Purpose:
- // Evaluates 16 partial sums of absolute differences
- // between current and reference 16X16 blocks.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Parameters:
- // pSrc Pointer to 16x16 block in the source plane.
- // srcStep Pitch of the source plane (in bytes).
- // pRef Pointer to 16x16 block in the reference plane.
- // refStep Pitch of the reference plane (in bytes).
- // pSAD Pointer to array of size 16 to store SAD values.
- // mcType reserved and must be 0.
- */
- IPPAPI(IppStatus, ippiSAD16x16Blocks4x4_8u16u, (const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRef,
- Ipp32s refStep,
- Ipp16u* pDstSAD,
- Ipp32s mcType))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSATD16x16_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 16x16 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSATD16x16_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSATD16x8_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 16x8 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSATD16x8_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSATD8x16_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 8x16 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSATD8x16_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSATD8x8_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 8x8 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSATD8x8_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSATD8x4_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 8x4 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSATD8x4_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSATD4x8_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 4x8 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSATD4x8_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSATD4x4_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 4x4 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSATD4x4_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSAT8x8D_8u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 8x8 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current 8x8 block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference 8x8 block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSAT8x8D_8u32s_C1R, (
- const Ipp8u* pSrcCur,
- int srcCurStep,
- const Ipp8u* pSrcRef,
- int srcRefStep,
- Ipp32s* pDst))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSAT8x8D_16u32s_C1R
- // Purpose: Evaluates sum of absolute transformed differences between
- current and reference 8x8 blocks
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current 8x8 block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference 8x8 block
- // srcRefStep Width of the reference plane
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSAT8x8D_16u32s_C1R, (
- const Ipp16u* pSrcCur,
- int srcCurStep,
- const Ipp16u* pSrcRef,
- int srcRefStep,
- Ipp32s* pDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSqrDiff16x16_8u32s
- //
- // Purpose:
- // Evaluates the sum of square differences between all the elements of
- // the current block and correspondent elements of the reference block.
- //
- // Parameters:
- // pSrc Pointer to the current block
- // srcStep Step in bytes through the current block
- // pRef Pointer to the reference block
- // refStep Step in bytes through the reference block
- // mcType Type of motion compensation
- // pSqrDiff Pointer to the result
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsStepErr srcCurStep or srcRefStep is less than or equal to 0
- */
- IPPAPI(IppStatus, ippiSqrDiff16x16_8u32s, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRef,
- Ipp32s refStep,
- Ipp32s mcType,
- Ipp32s* pSqrDiff))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSqrDiff16x16B_8u32s
- //
- // Purpose:
- // Evaluates the sum of square differences between all the elements of
- // the current block and the mean of correspondent elements of
- // two reference blocks.
- //
- // Parameters:
- // pSrc Pointer to the current block
- // srcStep Step in bytes through the current block
- // pRefF Pointer to the forward reference block
- // refStepF Step in bytes through the forward reference block
- // pRefB Pointer to the backward reference block
- // refStepB Step in bytes through the backward reference block
- // mcTypeF Forward motion compensation type
- // mcTypeB Backward motion compensation type
- // pSqrDiff Pointer to the result
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsStepErr one of step values is less than or equal to 0
- */
- IPPAPI(IppStatus, ippiSqrDiff16x16B_8u32s, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRefF,
- Ipp32s refStepF,
- Ipp32s mcTypeF,
- const Ipp8u* pRefB,
- Ipp32s refStepB,
- Ipp32s mcTypeB,
- Ipp32s* pSqrDiff))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiVariance16x16_8u32s
- //
- // Purpose:
- // Evaluates the variance of the current block
- //
- // Parameters:
- // pSrc Pointer to the current block
- // srcStep Step through the current block
- // pVar Pointer to the variance
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc is NULL
- // ippStsStepErr srcStep is less than or equal to 0
- */
- IPPAPI(IppStatus, ippiVariance16x16_8u32s, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp32s* pVar))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiVarSum8x8_8u32s
- //
- // Purpose:
- // Evaluates the variance and sum of 8x8 block of unsigned char values
- //
- // Parameters:
- // pSrc Pointer to the source block
- // srcStep Step through the source block (stride1)
- // pVar Pointer to the variance
- // pSum Pointer to the sum value
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc is NULL
- */
- IPPAPI(IppStatus, ippiVarSum8x8_8u32s_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp32s* pVar,
- Ipp32s* pSum))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiVarSum8x8_16s32s
- //
- // Purpose:
- // Evaluates the variance and sum of 8x8 block of short integer values
- //
- // Parameters:
- // pSrc Pointer to the source block
- // srcStep Step through the source block (stride1)
- // pVar Pointer to the variance
- // pSum Pointer to the sum value
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc is NULL
- */
- IPPAPI(IppStatus, ippiVarSum8x8_16s32s_C1R, (
- const Ipp16s* pSrc,
- Ipp32s srcStep,
- Ipp32s* pVar,
- Ipp32s* pSum))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiVarMean8x8_8u32s
- //
- // Purpose:
- // Evaluates the Variance and mean of 8x8 block of unsigned char values
- //
- // Parameters:
- // pSrc Pointer to the source block
- // srcStep Step through the source block (stride1)
- // pVar Pointer to the variance
- // pMean Pointer to the mean value
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc is NULL
- */
- IPPAPI(IppStatus, ippiVarMean8x8_8u32s_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp32s* pVar,
- Ipp32s* pMean))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiVarMean8x8_16s32s
- //
- // Purpose:
- // Evaluates the variance and mean of 8x8 block of short integer values
- //
- // Parameters:
- // pSrc Pointer to the source block
- // srcStep Step through the source block (stride1)
- // pVar Pointer to the variance
- // pMean Pointer to the mean value
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc is NULL
- */
- IPPAPI(IppStatus, ippiVarMean8x8_16s32s_C1R, (
- const Ipp16s* pSrc,
- Ipp32s srcStep,
- Ipp32s* pVar,
- Ipp32s* pMean))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEdgesDetect16x16_8u_C1R
- // ippiEdgesDetect16x16_16u_C1R
- //
- // Purpose:
- // This function detects edges inside 16x16 block:
- // finds pair of neighboring (horizontal and vertical) elements with
- // difference is greater than EdgePelDifference.
- // In the case of number of pairs is greater than EdgePelCount,
- // edges are detected and flag (* pRes) is set to 1.
- // Otherwise, edges aren't detected ((* pRes) is set to 0)
- //
- //
- // Parameters:
- // pSrc Pointer to 16x16 block in current plan
- // srcStep Step of the current plan, specifying width of the plane in bytes.
- // EdgePelDifference The value for estimation of difference between neighboring elements.
- // EdgePelCount The value for estimation of number of pairs with "big difference"
- // pRes Pointers to output value. (*pRes) is equal 1 in
- // the case of edges are detected and it is equal
- // 0 in the case of edges aren't detected. I
- //
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr one of the input pointers is NULL
- */
- IPPAPI(IppStatus, ippiEdgesDetect16x16_8u_C1R, (
- const Ipp8u *pSrc,
- Ipp32u srcStep,
- Ipp8u EdgePelDifference,
- Ipp8u EdgePelCount,
- Ipp8u *pRes
- ))
- IPPAPI(IppStatus, ippiEdgesDetect16x16_16u_C1R, (
- const Ipp16u* pSrc,
- Ipp32s srcStep,
- Ipp32s EdgePelDifference,
- Ipp32s EdgePelCount,
- Ipp32s* pRes))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiVarMeanDiff16x16_8u32s_C1R
- //
- // Purpose:
- // Evaluates the variances and means of four 8x8 blocks containing
- // differences between two 16x16 blocks
- //
- // Parameters:
- // pSrc Pointer to the current block 16x16
- // srcStep Step in bytes through the current block
- // pRef Pointer to the reference block 16x16
- // refStep Step in bytes through the reference block
- // pSrcSum Pointer to the sum of pixel values for the current block
- // pVar Pointer to four element array that contains the variances
- // pMean Pointer to four element array that contains the Mean values
- // mcType Type of motion compensation
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr one of the input pointers is NULL
- */
- IPPAPI(IppStatus, ippiVarMeanDiff16x16_8u32s_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRef,
- Ipp32s refStep,
- Ipp32s* pSrcSum,
- Ipp32s* pVar,
- Ipp32s* pMean,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiVarMeanDiff16x8_8u32s_C1R
- //
- // Purpose:
- // Evaluates the variances and means of four 8x8 blocks containing
- // differences between two 16x8 blocks
- //
- // Parameters:
- // pSrc Pointer to the current block 16x16
- // srcStep Step in bytes through the current block
- // pRef Pointer to the reference block 16x16
- // refStep Step in bytes through the reference block
- // pSrcSum Pointer to the sum of pixel values for the current block
- // pVar Pointer to four element array that contains the variances
- // pMean Pointer to four element array that contains the Mean values
- // mcType Type of motion compensation
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr one of the input pointers is NULL
- */
- IPPAPI(IppStatus, ippiVarMeanDiff16x8_8u32s_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pRef,
- Ipp32s refStep,
- Ipp32s* pSrcSum,
- Ipp32s* pVar,
- Ipp32s* pMean,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSumsDiff16x16Blocks4x4_8u16s_C1, ippiSumsDiff16x16Blocks4x4_8u16s_C1
- //
- // Purpose:
- // These functions evaluates difference between current and reference 4x4 blocks
- // and calculates sums of 4x4 residual blocks elements
- // Parameters:
- // pSrc Pointer block in current plane
- // srcStep Step of the current plane, specifying width of the plane in bytes.
- // pPred Pointer to reference block
- // predStep Step of the reference plane, specifying width of the plane in bytes.
- // pDiff If it isn't zero, pointer to array that contains a sequence of 4x4
- // residual blocks. The array's filled by function if pDiff isn't null.
- // pSums Pointer to array that contains sums of 4x4 difference blocks coefficients.
- // The array's filled by function.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr one of the input pointers is NULL
- */
- IPPAPI(IppStatus, ippiSumsDiff16x16Blocks4x4_8u16s_C1,
- (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pPred,
- Ipp32s predStep,
- Ipp16s* pSums,
- Ipp16s* pDiff
- ))
- IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_8u16s_C1,
- (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- const Ipp8u* pPred,
- Ipp32s predStep,
- Ipp16s* pSums,
- Ipp16s* pDiff
- ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSumsDiff8x8Blocks4x4_8u16s_C2P2
- //
- // Purpose:
- // These functions evaluates difference between current and reference 4x4 blocks and
- // calculates sums of 4x4 residual blocks elements. Clone of ippiSumsDiff8x8Blocks4x4_8u16s_C1,
- // but source image is chominance part of NV12 plane.
- // NV12 Plane
- // YY YY YY YY
- // YY YY YY YY
- // UV UV UV UV - chominance part of NV12 plane.
- // Parameters:
- // pSrcUV the pointer to the source block ( chrominance part of NV12 plane).
- // 0...UV UV UV UV UV UV UV UV
- // 1...UV UV UV UV ...
- // ...
- // 7...UV UV UV UV UV UV UV UV
- // srcStep - Step of the current source block, specifying width of the plane in bytes.negative step works
- // pPredU - Pointer to reference U block
- // pPredPitchU - Step of the reference U plane, specifying width of the plane in bytes.
- // pPredV - Pointer to reference V block
- // pPredPitchV - Step of the reference V plane, specifying width of the plane in bytes.
- // 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.
- // pDCU - Pointer to array that contains sums of 4x4 difference blocks coefficients. The array's filled by function.
- // 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.
- // pDCV - Pointer to array that contains sums of 4x4 difference blocks coefficients. The array's filled by function.
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr one of the input pointers is NULL
- */
- IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_8u16s_C2P2,
- (
- const Ipp8u* pSrcUV,
- Ipp32s srcStep,
- const Ipp8u* pPredU,
- Ipp32s predStepU,
- const Ipp8u* pPredV,
- Ipp32s predStepV,
- Ipp16s* pSumsU,
- Ipp16s* pDiffU,
- Ipp16s* pSumsV,
- Ipp16s* pDiffV
- ))
- /* Quantization Functions */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantIntra_MPEG2_16s_C1I
- //
- // Purpose:
- // Performs quantization on DCT coefficients for intra block in-place with
- // specified quantization matrix according to the MPEG-2 standard.
- // Returns the number of last non-zero coefficient for
- // future considerations. If pointer to inverse quantization matrix is NULL,
- // the default matrix is used
- //
- // Parameters:
- // pSrcDst Pointer to the block of DCT coefficients
- // QP Quantizer
- // pQPMatrix Pointer to the matrix of inverted quantization
- // coefficients (floating point)
- // pCount Pointer to the position of the last non-zero coefficient
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsDivByZeroErr QP is equal to 0
- */
- IPPAPI(IppStatus, ippiQuantIntra_MPEG2_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s QP,
- const Ipp32f* pQPMatrix,
- Ipp32s* pCount))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuant_MPEG2_16s_C1I
- //
- // Purpose:
- // Performs quantization on DCT coefficients for non-intra block
- // in-place with specified quantization matrix according to the
- // MPEG-2 standard. Returns the number of last non-zero coefficient for
- // future considerations. If pointer to inverse quantization matrix is NULL,
- // the default matrix is used
- //
- // Parameters:
- // pSrcDst Pointer to the block of DCT coefficients
- // QP Quantizer
- // pQPMatrix Pointer to the matrix of inverted quantization
- // coefficients (floating point)
- // pCount Pointer to the position of the last non-zero coefficient
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsDivByZeroErr QP is equal to 0
- */
- IPPAPI(IppStatus, ippiQuant_MPEG2_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s QP,
- const Ipp32f* pQPMatrix,
- Ipp32s* pCount))
- /* Huffman Encoding Functions */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiCreateRLEncodeTable
- //
- // Purpose:
- // Creates Run-Level Encode Table
- //
- // Parameters:
- // pSrcTable Pointer to the source table
- // ppDstSpec Double pointer to the destination table
- //
- // Returns:
- // ippStsNoErr No error
- */
- IPPAPI(IppStatus, ippiCreateRLEncodeTable, (
- const Ipp32s* pSrcTable,
- IppVCHuffmanSpec_32s** ppDstSpec))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiPutIntraBlock
- //
- // Purpose:
- // Encodes, rearranges and puts intra block into bitstream
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bitstream.
- // pOffset Pointer to offset between the bit pointed by pBitStream and
- // the start of the code
- // pSrcBlock Pointer to the block
- // pDCPred Pointer to the value to be added to the DC coefficient
- // pDCTable Pointer to the table with codes for DC coefficient,
- // that is the first of the DCT coefficients
- // pACTable Pointer to the table with Run-Level codes for
- // AC coefficients, that is all DCT coefficients but the first
- // pScanMatrix Pointer to the scanning matrix
- // EOBLen Length of the block end code
- // EOBCode Value of the block end code
- // count Number of the last non-zero coefficient
- //
- // Returns:
- // ippStsNoErr No error
- */
- IPPAPI(IppStatus, ippiPutIntraBlock, (
- Ipp32u** ppBitStream,
- int* pOffset,
- Ipp16s* pSrcBlock,
- Ipp32s* pDCPred,
- IppVCHuffmanSpec_32u* pDCTable,
- IppVCHuffmanSpec_32s* pACTable,
- Ipp32s* pScanMatrix,
- Ipp32s EOBLen,
- Ipp32s EOBCode,
- Ipp32s count))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiPutNonIntraBlock
- // Purpose:
- // Encodes, rearranges and puts non-intra block into bitstream
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bitstream.
- // pOffset Pointer to offset between the bit pointed by pBitStream and
- // the start of the code
- // pSrcBlock Pointer to the block
- // pACTable Pointer to the table with Run-Level codes for
- // AC coefficients, that is all DCT coefficients but the first
- // pScanMatrix Pointer to the scanning matrix
- // EOBLen Length of the block end code
- // EOBCode Value of the block end code
- // count Number of the last non-zero coefficient
- //
- // Returns:
- // ippStsNoErr No error
- */
- IPPAPI(IppStatus, ippiPutNonIntraBlock, (
- Ipp32u** pBitStream,
- int* pOffset,
- Ipp16s* pSrcBlock,
- IppVCHuffmanSpec_32s* pACTable,
- Ipp32s* pScanMatrix,
- Ipp32s EOBLen,
- Ipp32s EOBCode,
- Ipp32s count))
- /* ///////////////////////////////////////////////////////////////////////////
- // Video Data Decoding Functions for DV
- //////////////////////////////////////////////////////////////////////////// */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInitAllocHuffmanTable_DV_32u
- //
- // Purpose:
- // Allocates memory and initializes the table with Run-Level codes for
- // DCT coefficients
- //
- // Parameters:
- // pSrcTable1 Pointer to the source table 1
- // pSrcTable2 Pointer to the source table 2
- // ppHuffTable Double pointer to the destination decoding table
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsMemAllocErr No memory is allocated.
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiInitAllocHuffmanTable_DV_32u, (
- Ipp32s* pSrcTable1,
- Ipp32s* pSrcTable2,
- Ipp32u** ppHuffTable))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFreeHuffmanTable_DV_32u
- //
- // Purpose:
- // Frees the memory allocated for the VLC table
- //
- // Parameters:
- // pHuffTable Pointer to the decoding table
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pHuffTable is NULL
- */
- IPPAPI(IppStatus, ippiFreeHuffmanTable_DV_32u, (Ipp32u* pHuffTable))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiHuffmanDecodeSegment_DV_8u16s
- //
- // Purpose:
- // Decodes DV video segment, rearranges block
- // elements, multiplies first element by 128.
- //
- // Parameters:
- // pStream Pointer to the bitstream
- // pZigzagTables Pointer to the array of two scanning matrices
- // pHuffTable Pointer to the decoding Huffman Table
- // pBlock Pointer to decoded elements
- // pBlockParam Pointer to the output parameters array [30]
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiHuffmanDecodeSegment_DV_8u16s, (
- const Ipp8u* pStream,
- const Ipp32u* pZigzagTables,
- const Ipp32u* pHuffTable,
- Ipp16s* pBlock,
- Ipp32u* pBlockParam))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiHuffmanDecodeSegmentOnePass_DV_8u16s
- //
- // Purpose:
- // Performs first pass of video segment decoding process. Rearranges block
- // elements, multiplies first element by 128.
- //
- // Parameters:
- // pStream Pointer to the bitstream
- // pZigzagTables Pointer to the array of two scanning matrices
- // pHuffTable Pointer to the decoding Huffman Table
- // pBlock Pointer to decoded elements
- // pBlockParam Pointer to the output parameters array [30]
- // nNumCoeffs Max number of coefficients to extract
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiHuffmanDecodeSegmentOnePass_DV_8u16s, (
- const Ipp8u* pStream,
- const Ipp32u* pZigzagTables,
- const Ipp32u* pHuffTable,
- Ipp16s* pBlock,
- Ipp32u* pBlockParam,
- Ipp32s nNumCoeffs))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiHuffmanDecodeSegment_DV100_8u16s
- //
- // Purpose:
- // Decodes DV100 video segment, rearranges block
- // elements, multiplies first element by 128.
- //
- // Parameters:
- // pStream Pointer to the bitstream
- // pZigzagTable Pointer to the scanning matrix
- // pHuffTable Pointer to the decoding Huffman Table
- // pBlock Pointer to decoded elements
- // pBlockParam Pointer to the output parameters array [40]
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiHuffmanDecodeSegment_DV100_8u16s, (
- const Ipp8u* pStream,
- const Ipp32u* pZigzagTable,
- const Ipp32u* pHuffTable,
- Ipp16s* pBlock,
- Ipp32u* pBlockParam))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInv_DV_16s_C1I
- //
- // Purpose:
- // Performs inverse quantization on a block
- //
- // Parameters:
- // pSrcDst Pointer to the block
- // pDequantTable Pointer to the dequantization table
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiQuantInv_DV_16s_C1I, (Ipp16s* pSrcDst, Ipp16s* pDequantTable))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT2x4x8Inv_16s_C1I
- //
- // Purpose:
- // Performs the inverse DCT for block of type 2
- //
- // Parameters:
- // pSrcDst Pointer to the block
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- */
- IPPAPI(IppStatus, ippiDCT2x4x8Inv_16s_C1I, (Ipp16s* pSrcDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Video Data Encoding Functions for DV
- //////////////////////////////////////////////////////////////////////////// */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT2x4x8Frw_16s_C1I
- //
- // Purpose:
- // Performs DCT for a block of type 2
- //
- // Parameters:
- // pSrcDst Pointer to block
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- */
- IPPAPI(IppStatus, ippiDCT2x4x8Frw_16s_C1I, (Ipp16s* pSrcDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiCountZeros8x8_16s_C1
- //
- // Purpose:
- // Evaluates number of zeros in a block
- //
- // Parameters:
- // pSrc Pointer to 8x8 block
- // pCount Pointer the evaluated number of zeros
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiCountZeros8x8_16s_C1, (Ipp16s* pSrc, Ipp32u* pCount))
- /* ///////////////////////////////////////////////////////////////////////////
- // Common Functions
- //////////////////////////////////////////////////////////////////////////// */
- /* ////////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFrameFieldSAD16x16_8u32s_C1R
- // ippiFrameFieldSAD16x16_16s32s_C1R
- // Purpose: compute SAD between Frame and Field lines
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrc Pointer to the 16x16 block
- // srcStep Width of the source plane
- // pFrameSAD Pointer to result of Frame SAD
- // pFieldSAD Pointer to result of Field SAD
- */
- IPPAPI(IppStatus, ippiFrameFieldSAD16x16_8u32s_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp32s* pFrameSAD,
- Ipp32s* pFieldSAD))
- IPPAPI(IppStatus, ippiFrameFieldSAD16x16_16s32s_C1R, (
- const Ipp16s* pSrc,
- int srcStep,
- Ipp32s* pFrameSAD,
- Ipp32s* pFieldSAD))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSAD16x8_8u32s_C1R
- // Purpose: Computes SAD of two blocks 16x8
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // mcType Interpolate type
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSAD16x8_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst,
- Ipp32s mcType))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSAD8x16_8u32s_C1R
- // Purpose: Computes SAD of two blocks 8x16
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // mcType Reserved and must be 0.
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSAD8x16_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst,
- Ipp32s mcType))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSAD8x4_8u32s_C1R
- // Purpose: Computes SAD of two blocks 8x4
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // mcType Reserved and must be 0.
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSAD8x4_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst,
- Ipp32s mcType))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSAD4x8_8u32s_C1R
- // Purpose: Computes SAD of two blocks 4x8
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // mcType Reserved and must be 0.
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSAD4x8_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst,
- Ipp32s mcType))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSSD8x8_8u32s_C1R
- // Purpose: compute SSD of two blocks 8x8
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // mcType Interpolate type
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSSD8x8_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst,
- Ipp32s mcType))
- /* /////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiSSD4x4_8u32s_C1R
- // Purpose: compute SSD of two blocks 4x4
- // Returns:
- //
- // ippStsNoErr No error
- // ippStsNullPtrErr At least one of the pointers is NULL
- // Arguments:
- //
- // pSrcCur Pointer to the current block
- // srcCurStep Width of the current plane
- // pSrcRef Pointer to the reference block
- // srcRefStep Width of the reference plane
- // mcType Interpolate type
- // pDst Pointer to result
- */
- IPPAPI(IppStatus, ippiSSD4x4_8u32s_C1R, (
- const Ipp8u *pSrcCur,
- int srcCurStep,
- const Ipp8u *pSrcRef,
- int srcRefStep,
- Ipp32s *pDst,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiScanFwd_16s_C1
- //
- // Purpose:
- // Performs classical zigzag, alternate-horizontal, or alternate-vertical
- // forward scan on a block.
- //
- // Parameters:
- // pSrc Pointer to input block (coefficients in the normal order).
- // pDst Pointer to output block (coefficients in the scan order).
- // countNonZero Number of non-zero coefficients in the block. Valid within
- // the range 1 to 64.
- // scan Type of the scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsOutOfRangeErr Indicates an error condition if countNonZero is out
- // of the range [1, 64].
- // Notes:
- */
- IPPAPI(IppStatus, ippiScanFwd_16s_C1, (
- const Ipp16s* pSrc,
- Ipp16s* pDst,
- int countNonZero,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiScanInv_16s_C1
- //
- // Purpose:
- // Performs classical zigzag, alternate-horizontal, or alternate-vertical
- // inverse scan on a block stored in a compact buffer.
- //
- // Parameters:
- // pSrc Pointer to input block (coefficients in the scan order).
- // pDst Pointer to output block (coefficients in the normal order).
- // indxLastNonZero Index of the last non-zero coefficient. Valid within the
- // range 0 to 63.
- // scan Type of the scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsOutOfRangeErr Indicates an error condition if indxLastNonZero is
- // out of the range [0, 63].
- // Notes:
- */
- IPPAPI(IppStatus, ippiScanInv_16s_C1, (
- const Ipp16s* pSrc,
- Ipp16s* pDst,
- int indxLastNonZero,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSAD8x8_8u32s_C1R
- //
- // Purpose:
- // Computes SAD.
- //
- // Parameters:
- // pSrcCur Pointer to the current block
- // srcCurStep Width in bytes of the current plane.
- // pSrcRef Pointer to the reference block
- // srcRefStep Width in bytes of the reference plane.
- // mcType Type of motion compensation
- // pDst Pointer to the output value
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- */
- IPPAPI(IppStatus, ippiSAD8x8_8u32s_C1R, (
- const Ipp8u* pSrcCur,
- int srcCurStep,
- const Ipp8u* pSrcRef,
- int srcRefStep,
- Ipp32s* pDst,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSAD8x8_8u32s_C2R
- //
- // Purpose:
- // Computes SAD for chrominance part of NV12 plane.
- //
- // Parameters:
- // pSrcCur - the pointer to the current 8x8 block
- // srcCurStep - Step of the current block, specifying width of the plane in bytes..
- // pSrcRef - the pointer to the reference 8x8 block.
- // srcRefStep - Step of the reference block, specifying width of the plane in bytes.
- // pDstU - pointer to return value - calculated SAD for U(Cb).
- // pDstV - pointer to return value - calculated SAD for V(Cr).
- // mcType - type of motion compensation - IPPVC_MC_APX.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- */
- IPPAPI(IppStatus, ippiSAD8x8_8u32s_C2R, (
- const Ipp8u* pSrcCur,
- int srcCurStep,
- const Ipp8u* pSrcRef,
- int srcRefStep,
- Ipp32s* pDstU,
- Ipp32s* pDstV,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiMeanAbsDev16x16_8u32s_C1R
- // ippiMeanAbsDev8x8_8u32s_C1R
- //
- // Purpose:
- // Computes mean absolute dev = sum(|Bij-M|).
- //
- // Parameters:
- // pSrcCur Pointer to the block 16x16 or 8x8.
- // srcStep Width in bytes of the source plane.
- // pDst Pointer to the deviation value.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- */
- IPPAPI(IppStatus, ippiMeanAbsDev16x16_8u32s_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp32s* pDst))
- IPPAPI(IppStatus, ippiMeanAbsDev8x8_8u32s_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp32s* pDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSub8x8_16s8u_C1R
- // ippiSub16x16_16s8u_C1R
- //
- // Purpose:
- // Subtract two blocks and store the result in the third block
- //
- // Parameters:
- // pSrc1 Pointer to the first source block.
- // src1Step Step in bytes through the first source plane
- // pSrc2 Pointer to the second source block.
- // src2Step Step in bytes through the second source plane
- // pSrcDst Pointer to the destination block.
- // srcDstStep Step in bytes through the destination plane
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiSub8x8_8u16s_C1R, (
- const Ipp8u* pSrc1,
- int src1Step,
- const Ipp8u* pSrc2,
- int src2Step,
- Ipp16s* pDst,
- int dstStep))
- IPPAPI(IppStatus, ippiSub16x16_8u16s_C1R, (
- const Ipp8u* pSrc1,
- int src1Step,
- const Ipp8u* pSrc2,
- int src2Step,
- Ipp16s* pDst,
- int dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSubSAD8x8_16s8u_C1R
- //
- // Purpose:
- // Subtract two blocks and store the result in the third block and
- // computes a SAD
- //
- // Parameters:
- // pSrc1 Pointer to the first source block.
- // src1Step Step in bytes through the first source plane
- // pSrc2 Pointer to the second source block.
- // src2Step Step in bytes through the second source plane
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane
- // pSAD Pointer to the result of SAD
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiSubSAD8x8_8u16s_C1R, (
- const Ipp8u* pSrc1,
- int src1Step,
- const Ipp8u* pSrc2,
- int src2Step,
- Ipp16s* pDst,
- int dstStep,
- Ipp32s* pSAD))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiCopy8x8_8u_C1R
- // ippiCopy16x16_8u_C1R
- //
- // Purpose:
- // Copy fixed sizes blocks
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiCopy8x8_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep))
- IPPAPI(IppStatus, ippiCopy16x16_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiAverage8x8_8u_C1IR
- // ippiAverage16x16_8u_C1IR
- //
- // Purpose:
- // Performs averaging of two blocks with rounding.
- //
- // Parameters:
- // pSrc Pointer to the first source block.
- // srcStep Step in bytes through the first source plane.
- // pSrcDst Pointer to the second source/destination block.
- // srcDstStep Step in bytes through the second plane.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiAverage8x8_8u_C1IR, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pSrcDst,
- int srcDstStep))
- IPPAPI(IppStatus, ippiAverage16x16_8u_C1IR, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pSrcDst,
- int srcDstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiAverage8x8_8u_C1R
- // ippiAverage16x16_8u_C1R
- //
- // Purpose:
- // Performs averaging of two blocks with rounding.
- //
- // Parameters:
- // pSrc1 Pointer to the first source block.
- // src1Step Step in bytes through the first source plane.
- // pSrc2 Pointer to the second source block.
- // src2Step Step in bytes through the second source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the second plane.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiAverage8x8_8u_C1R, (
- const Ipp8u* pSrc1,
- int src1Step,
- const Ipp8u* pSrc2,
- int src2Step,
- Ipp8u* pDst,
- int dstStep))
- IPPAPI(IppStatus, ippiAverage16x16_8u_C1R, (
- const Ipp8u* pSrc1,
- int src1Step,
- const Ipp8u* pSrc2,
- int src2Step,
- Ipp8u* pDst,
- int dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiCopy8x4HP_8u_C1R
- // ippiCopy8x8HP_8u_C1R
- // ippiCopy16x8HP_8u_C1R
- // ippiCopy16x16HP_8u_C1R
- //
- // Purpose:
- // Copy fixed sizes blocks with half-pixel accuracy
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- // acc Parameter that determines half-pixel accuracy.
- // rounding Parameter that determines type of rounding for pixel
- // interpolation; may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiCopy8x4HP_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiCopy8x8HP_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiCopy16x8HP_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiCopy16x16HP_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateAverage8x4_8u_C1IR
- // ippiInterpolateAverage8x8_8u_C1IR
- // ippiInterpolateAverage16x8_8u_C1IR
- // ippiInterpolateAverage16x16_8u_C1IR
- //
- // Purpose:
- // Interpolate source block according to half-pixel offset and
- // average the result with destination block
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pSrcDst Pointer to the destination block.
- // srcDstStep Step in bytes through the destination plane.
- // acc Parameter that determines half-pixel accuracy.
- // rounding Parameter that determines type of rounding for pixel
- // interpolation; may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiInterpolateAverage8x4_8u_C1IR, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pSrcDst,
- int srcDstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiInterpolateAverage8x8_8u_C1IR, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiInterpolateAverage16x8_8u_C1IR, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiInterpolateAverage16x16_8u_C1IR, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiAdd8x8_16s8u_C1IRS
- //
- // Purpose:
- // Add two blocks with saturation
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane
- // pSrcDst Pointer to the second source/destination block.
- // srcDstStep Step in bytes through the destination plane
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiAdd8x8_16s8u_C1IRS, (
- const Ipp16s* pSrc,
- int srcStep,
- Ipp8u* pSrcDst,
- int srcDstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiAdd8x8HP_16s8u_C1RS
- //
- // Purpose:
- // Add interpolated with half-pixel accuracy prediction to difference with
- // saturation
- //
- // Parameters:
- // pSrc1 Pointer to the 16s source block.
- // src1Step Step in bytes through the first source plane
- // pSrc2 Pointer to the 8u source block.
- // src2Step Step in bytes through the second source plane
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiAdd8x8HP_16s8u_C1RS, (
- const Ipp16s* pSrc1,
- int src1Step,
- Ipp8u* pSrc2,
- int src2Step,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiAddC8x8_16s8u_C1IR
- //
- // Purpose:
- // Adds a constant to 8x8 block with saturation
- //
- // Parameters:
- // value The constant value to add to block.
- // pSrcDst Pointer to the source/destination block.
- // srcDstStep Step in bytes through the destination block.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiAddC8x8_16s8u_C1IR, (
- Ipp16s value,
- Ipp8u* pSrcDst,
- int srcDstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // H.261 Functions
- //////////////////////////////////////////////////////////////////////////// */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilter8x8_H261_8u_C1R
- //
- // Purpose:
- // Performs "loop" filtering on one block as specified in
- // "ITU-T Recommendation H.261", subclause 3.2.3.
- //
- // Parameters:
- // pSrc Pointer to the origin of the source block.
- // srcStep Width in bytes of the source image plane.
- // pDst Pointer to the origin of the destination block.
- // dstStep Width in bytes of the destination image plane.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- */
- IPPAPI(IppStatus, ippiFilter8x8_H261_8u_C1R, (
- Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsIntra_H261_1u16s
- //
- // Purpose:
- // Performs decoding and, optionally, inverse scan of quantized DCT
- // coefficients (DC and AC) for one Intra coded block. DC fixed length and
- // AC VLC decoding processes are specified in "ITU-T Recommendation H.263,
- // subclause 4.2.4.1".
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
- // the scanning order. If an error is detected while
- // decoding a coefficient, the index of the last decoded
- // coefficient is returned in *pIndxLastNonZero.
- // *pIndxLastNonZero is set to -1 if there are no correctly
- // decoded coefficients in the block.
- // scan Type of the inverse scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_NONE, indicating that no inverse scan is
- // performed.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsIntra_H261_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsInter_H261_1u16s
- //
- // Purpose:
- // Performs decoding and, optionally, inverse scan of quantized DCT
- // coefficients for one Inter coded block. Inter DCT VLC decoding process
- // is specified in "ITU-T Recommendation H.261, subclause 4.2.4.1".
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
- // the scanning order. If an error is detected while
- // decoding a coefficient, the index of the last decoded
- // coefficient is returned in *pIndxLastNonZero.
- // *pIndxLastNonZero is set to -1 if there are no correctly
- // decoded coefficients in the block.
- // scan Type of the inverse scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_NONE, indicating that no inverse scan is
- // performed.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsInter_H261_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructCoeffsIntra_H261_1u16s
- //
- // Purpose:
- // Performs decoding, dequantization and inverse scan of
- // DCT coefficients for one intra coded block.
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream buffer,
- // updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by *ppBitStream.
- // Valid within the range [0, 7], updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in the scanning order.
- // If an error is detected while decoding a coefficient, the index of the
- // last decoded coefficient is returned in *pIndxLastNonZero. *pIndxLastNonZero
- // is set to -1 if there are no correctly decoded coefficients in the block.
- // QP Quantization parameter.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsQPErr QP is out of the range [1, 31].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- */
- IPPAPI(IppStatus, ippiReconstructCoeffsIntra_H261_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructCoeffsInter_H261_1u16s
- //
- // Purpose:
- // Performs decoding, dequantization and inverse scan of
- // DCT coefficients for one inter coded block.
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream buffer,
- // updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by *ppBitStream.
- // Valid within the range [0, 7], updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in the scanning order.
- // If an error is detected while decoding a coefficient, the index of the
- // last decoded coefficient is returned in *pIndxLastNonZero. *pIndxLastNonZero
- // is set to -1 if there are no correctly decoded coefficients in the block.
- // QP Quantization parameter.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsQPErr QP is out of the range [1, 31].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- */
- IPPAPI(IppStatus, ippiReconstructCoeffsInter_H261_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsIntra_H261_16s1u
- //
- // Purpose:
- // Performs encoding of quantized DCT coefficients (DC and AC) in a scan
- // order for one Intra coded block, and puts the codes into the bitstream.
- // DC fixed length and AC VLC encoding processes are specified in "ITU-T
- // Recommendation H.261, subclause 4.2.4.1".
- //
- // Parameters:
- // pQCoef Pointer to the array of quantized DCT coefficients.
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // countNonZero Number of non-zero coefficients in the block.
- // Valid within the range [1, 64].
- // scan Type of the scan to be performed on the coefficients before
- // encoding, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_NONE, indicating that no scan is to be
- // performed (the input coefficients are already in the scan
- // order).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsIntra_H261_16s1u, (
- Ipp16s* pQCoef,
- Ipp8u** ppBitStream,
- int* pBitOffset,
- int countNonZero,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsInter_H261_16s1u
- //
- // Purpose:
- // Performs encoding of quantized DCT coefficients in a scan order for one
- // Inter coded block, and puts the codes into the bitstream. The encoding
- // process is specified in "ITU-T Recommendation H.261, subclause 4.2.4.1".
- //
- // Parameters:
- // pQCoef Pointer to the array of quantized DCT coefficients.
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // countNonZero Number of non-zero coefficients in the block.
- // Valid within the range [1, 64].
- // scan Type of the scan to be performed on the coefficients before
- // encoding, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_NONE, indicating that no scan is to be
- // performed (the input coefficients are already in the scan
- // order).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsInter_H261_16s1u, (
- Ipp16s* pQCoef,
- Ipp8u** ppBitStream,
- int* pBitOffset,
- int countNonZero,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // H.263 Functions
- //////////////////////////////////////////////////////////////////////////// */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeDCIntra_H263_1u16s
- //
- // Purpose:
- // Performs fixed length decoding of the DC coefficient for one Intra coded
- // block, as specified in "ITU-T Recommendation H.263, subclause 5.4.1."
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // pDC Pointer to the output coefficient.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr Illegal code is detected through the stream
- // processing.
- */
- IPPAPI(IppStatus, ippiDecodeDCIntra_H263_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pDC))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsIntra_H263_1u16s
- //
- // Purpose:
- // Performs decoding and, optionally, inverse scan of quantized DCT
- // coefficients for one Intra coded block. Intra AC VLC decoding process
- // is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
- // modified as specified in the Recommendation, Annex T, clause T.4, when
- // Modified Quantization mode is in use. When in Advanced Intra Coding
- // mode, VLC Table I.2 from Annex I of the Recommendation is used for all
- // Intra DC and Intra AC coefficients, otherwise Table 16 from the
- // Recommendation is used to decode AC coefficients (starting from
- // pCoef[1]) only.
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
- // the scanning order. If an error is detected while
- // decoding a coefficient, the index of the last decoded
- // coefficient is returned in *pIndxLastNonZero.
- // If there are no correctly decoded coefficients in the
- // block, *pIndxLastNonZero is set to -1 when in Advanced
- // Intra Coding mode, and to 0 otherwise.
- // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
- // mode is in use, equal to 0 otherwise.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- // scan Type of the inverse scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan,
- // IPPVC_SCAN_NONE, indicating that no inverse scan is
- // performed.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsIntra_H263_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int advIntraFlag,
- int modQuantFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsInter_H263_1u16s
- //
- // Purpose:
- // Performs decoding and, optionally, inverse scan of quantized DCT
- // coefficients for one Inter coded block. Inter DCT VLC decoding process
- // is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
- // modified as specified in the Recommendation, Annex T, clause T.4, when
- // Modified Quantization mode is in use.
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
- // the scanning order. If an error is detected while
- // decoding a coefficient, the index of the last decoded
- // coefficient is returned in *pIndxLastNonZero.
- // *pIndxLastNonZero is set to -1 if there are no correctly
- // decoded coefficients in the block.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- // scan Type of the inverse scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_NONE, indicating that no inverse scan is
- // performed.
- //
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsInter_H263_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int modQuantFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvIntra_H263_16s_C1I
- //
- // Purpose:
- // This function performs inverse quantization on intra coded block.
- // When (advIntraFlag == 0 && modQuantFlag == 0), the output coefficients
- // other than pSrcDst[0] are saturated to lie in the range [-2048; 2047].
- //
- // Parameters:
- // pSrcDst Pointer to the decoded DCT coefficient of the current
- // block
- // QP Quantization parameter.
- // indxLastNonZero Index of the last non-zero coefficient, should be set
- // to 63 if not known.
- // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
- // mode is in use, equal to 0 otherwise.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- // ippStsQPErr QP is out of the range [1, 31].
- // ippStsOutOfRangeErr indxLastNonZero is negative.
- //
- // NOTE
- // The function can be applied to a buffer of arbitrary size (indxLastNonZero
- // can be any positive number), and can thus be used, for example, to process
- // multiple blocks in one call. (In this case for any Intra block following
- // the first one the Intra DC should be processed separately, if not in
- // Advanced Intra mode).
- */
- IPPAPI(IppStatus, ippiQuantInvIntra_H263_16s_C1I, (
- Ipp16s* pSrcDst,
- int indxLastNonZero,
- int QP,
- int advIntraFlag,
- int modQuantFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvInter_H263_16s_C1I
- //
- // Purpose:
- // This function performs inverse quantization on intra coded block.
- // When (advIntraFlag == 0 && modQuantFlag == 0), the output coefficients
- // other than pSrcDst[0] are saturated to lie in the range [-2048; 2047].
- //
- // Parameters:
- // pSrcDst Pointer to the decoded DCT coefficient of the current
- // block
- // QP Quantization parameter.
- // indxLastNonZero Index of the last non-zero coefficient, should be set
- // to 63 if not known.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- // ippStsQPErr QP is out of the range [1, 31]
- // ippStsOutOfRangeErr indxLastNonZero is negative.
- //
- // NOTE
- // The function can be applied to a buffer of arbitrary size (indxLastNonZero
- // can be any positive number), and can thus be used, for example, to process
- // multiple blocks in one call.
- //
- */
- IPPAPI(IppStatus, ippiQuantInvInter_H263_16s_C1I, (
- Ipp16s* pSrcDst,
- int indxLastNonZero,
- int QP,
- int modQuantFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiAddBackPredPB_H263_8u_C1R
- //
- // Purpose:
- // Calculates backward prediction for a B-block of a PB-frame and adds it
- // to the block, previously reconstructed with forward prediction. All the
- // operations are restricted to the bidirectionally-predicted part of the
- // B-block, the area size is defined by srcRoiSize. The backward prediction
- // is performed with pixel accuracy defined by acc, the sum of the forward
- // and backward predictions for every pixel within srcRoiSize is divided
- // by 2 (division by truncation). The bidirectional prediction procedure
- // is specified in "ITU-T Recommendation H.263, Annex G, clause G.5".
- //
- // Parameters:
- // pSrc Pointer to the origin of the source image (P-macroblock)
- // region of interest (ROI).
- // srcStep Width in bytes of the source image plane.
- // srcRoiSize Size of the source ROI.
- // pSrcDst Pointer to the origin of the source-destination image ROI
- // (bidirectionally-predicted part of the block).
- // srcDstStep Width in bytes of the source-destination image plane.
- // acc Pixel accuracy for backward prediction: bit 0 (the least
- // significant bit) contains the horizontal half-pixel offset,
- // bit 1 - the vertical offset.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr The pointer is NULL.
- // ippStsSizeErr srcRoiSize has a field with zero or negative value.
- */
- IPPAPI(IppStatus, ippiAddBackPredPB_H263_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- IppiSize srcRoiSize,
- Ipp8u* pSrcDst,
- int srcDstStep,
- int acc))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiResample_H263_8u_P3R
- //
- // Purpose:
- // Resamples a YCbCr picture as specified in "ITU-T Recommendation H.263,
- // Annex P". The destination picture region of interest (ROI) is mapped
- // onto the source picture ROI as defined by warpParams, the pixels falling
- // outside the source picture are treated according to fillMode.
- //
- // Parameters:
- // pSrcY Pointer to the origin of the source image ROI in the
- // luminance plane.
- // srcYStep Width in bytes of the source image luminance (Y) plane.
- // yRoiSize Size of the source and destination ROI in the luminance plane.
- // pSrcCb Pointer to the origin of the source ROI in Cb chrominance
- // plane.
- // srcCbStep Width in bytes of the source image Cb chrominance plane.
- // pSrcCr Pointer to the origin of the source ROI in Cr chrominance
- // plane.
- // srcCrStep Width in bytes of the source image Cr chrominance plane.
- // pDstY Pointer to the origin of the destination image ROI in the
- // luminance plane.
- // dstYStep Width in bytes of the destination image luminance plane.
- // pDstCb Pointer to the origin of the destination ROI in Cb
- // chrominance plane.
- // dstCbStep Width in bytes of the destination image Cb chrominance plane.
- // pDstCr Pointer to the origin of the destination ROI in Cr
- // chrominance plane.
- // dstCrStep Width in bytes of the destination image Cr chrominance plane.
- // warpParams Array of warping parameters - 4 pairs of motion vectors,
- // describing, in the order they are stored in the array, how the
- // upper left, upper right, lower left, and lower right corners
- // of the destination ROI are mapped onto the source image.
- // wda Warping displacement accuracy flag, if set to 0, pixel
- // displacements are quantized to half-pixel accuracy, otherwise -
- // to 1/16-pixel accuracy.
- // fillMode Flag that defines the fill-mode action to be taken for the
- // values of the source pixels for which the calculated location
- // in the source image lies outside of the source image ROI.
- // Takes one of the following values:
- // 0, indicating color fill mode, the "outside" Y, Cb and Cr
- // pixel values are set to fillColor[0], fillColor[1], and
- // fillColor[2], respectively.
- // 1 - black fill mode, the "outside" pixel values are set as follows:
- // Y = 16, Cb = Cr = 128.
- // 2 - gray fill mode, the "outside" pixel values are all set to 128.
- // 3 - clip fill mode, the "outside" pixel values are extrapolated
- // from the values of pixels at the ROI border, as specified in
- // "ITU-T Recommendation H.263, Annex D".
- // fillColor Array of fill color values used in color fill mode.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsSizeErr yRoiSize has a field which is odd or less than 4.
- */
- IPPAPI(IppStatus, ippiResample_H263_8u_P3R, (
- const Ipp8u* pSrcY,
- int srcYStep,
- IppiSize ySrcRoiSize,
- const Ipp8u* pSrcCb,
- int srcCbStep,
- const Ipp8u* pSrcCr,
- int srcCrStep,
- Ipp8u* pDstY,
- int dstYStep,
- IppiSize yDstRoiSize,
- Ipp8u* pDstCb,
- int dstCbStep,
- Ipp8u* pDstCr,
- int dstCrStep,
- IppMotionVector warpParams[4],
- int wda,
- int rounding,
- int fillMode,
- int fillColor[3]))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiUpsampleFour_H263_8u_C1R
- //
- // Purpose:
- // Performs factor-of-4 picture upsampling, as specified in
- // "ITU-T Recommendation H.263, Annex P, subclause P.5.1".
- //
- // Parameters:
- // pSrc Pointer to the origin of the source image region
- // of interest (ROI).
- // srcStep Width in bytes of the source image plane.
- // srcRoiSize Size of the source ROI.
- // pDst Pointer to the origin of the destination image ROI.
- // dstStep Width in bytes of the destination image plane.
- // rounding Rounding value used in pixel interpolation,
- // can be 0 or 1.
- // fillColor Fill color value used for the source pixels for which
- // the calculated location in the source image lies outside
- // of the source image ROI. When negative, "clip" fill-mode
- // action is employed - the "outside" pixel values are
- // extrapolated from the values of pixels at the ROI border,
- // as specified in "ITU-T Recommendation H.263, Annex D".
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsSizeErr srcRoiSize has a field which is odd or less than 4.
- */
- IPPAPI(IppStatus, ippiUpsampleFour_H263_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- IppiSize srcRoiSize,
- Ipp8u* pDst,
- int dstStep,
- int rounding,
- int fillColor))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDownsampleFour_H263_8u_C1R
- //
- // Purpose:
- // Performs factor-of-4 picture downsampling, as specified in
- // "ITU-T Recommendation H.263, Annex P, subclause P.5.2".
- //
- // Parameters:
- // pSrc Pointer to the origin of the source image region
- // of interest (ROI).
- // srcStep Width in bytes of the source image plane.
- // srcRoiSize Size of the source ROI.
- // pDst Pointer to the origin of the destination image ROI.
- // dstStep Width in bytes of the destination image plane.
- // rounding Rounding value used in pixel interpolation,
- // can be 0 or 1.
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsSizeErr srcRoiSize has a field with zero or negative value.
- */
- IPPAPI(IppStatus, ippiDownsampleFour_H263_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- IppiSize srcRoiSize,
- Ipp8u* pDst,
- int dstStep,
- int rounding))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSpatialInterpolation_H263_8u_C1R
- //
- // Purpose:
- // Performs picture interpolation for 1-D or 2-D spatial scalability, as
- // specified in "ITU-T Recommendation H.263, Annex O, clause O.6".
- //
- // Parameters:
- // pSrc Pointer to the origin of the source image region
- // of interest (ROI).
- // srcStep Width in bytes of the source image plane.
- // srcRoiSize Size of the source ROI.
- // pDst Pointer to the origin of the destination image ROI.
- // dstStep Width in bytes of the destination image plane.
- // interpType Interpolation type, takes one of the following values:
- // IPPVC_INTERP_HORIZONTAL, IPPVC_INTERP_VERTICAL, or
- // IPPVC_INTERP_2D, indicating one-dimensional (1-D)
- // horizontal, 1-D vertical, and 2-D interpolation,
- // respectively.
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsSizeErr srcRoiSize has a field which is odd or less than 4.
- */
- IPPAPI(IppStatus, ippiSpatialInterpolation_H263_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- IppiSize srcRoiSize,
- Ipp8u* pDst,
- int dstStep,
- int interpType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiUpsampleFour8x8_H263_16s_C1R
- //
- // Purpose:
- // Performs factor-of-4 upsampling of an 8x8 source block to a
- // 16x16 destination block, as specified in
- // "ITU-T Recommendation H.263, Annex Q, clause Q.6".
- //
- // Parameters:
- // pSrc Pointer to the origin of the source 8x8 block.
- // srcStep Width in bytes of the source image plane.
- // pDst Pointer to the origin of the destination 16x16 block.
- // dstStep Width in bytes of the destination image plane.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- */
- IPPAPI(IppStatus, ippiUpsampleFour8x8_H263_16s_C1R, (
- const Ipp16s* pSrc,
- int srcStep,
- Ipp16s* pDst,
- int dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDownsampleFour16x16_H263_16s_C1R
- //
- // Purpose:
- // Performs factor-of-4 downsampling of a 16x16 source block to an
- // 8x8 destination block to be applied for the block encoding in
- // Reduced-Resolution Update mode specified in "ITU-T Recommendation H.263,
- // Annex Q.
- //
- // Parameters:
- // pSrc Pointer to the origin of the source 16x16 block.
- // srcStep Width in bytes of the source image plane.
- // pDst Pointer to the origin of the destination 8x8 block.
- // dstStep Width in bytes of the destination image plane.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- */
- IPPAPI(IppStatus, ippiDownsampleFour16x16_H263_16s_C1R, (
- const Ipp16s* pSrc,
- int srcStep,
- Ipp16s* pDst,
- int dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblocking8x8HorEdge_H263_8u_C1IR
- // ippiFilterDeblocking8x8VerEdge_H263_8u_C1IR
- //
- // Purpose:
- // Perform deblocking filtering on bordering edges, horizontal and
- // vertical respectively, of two adjacent 8x8 blocks, as specified in
- // "ITU-T Recommendation H.263, Annex J, clause J.3"
- //
- // Parameters:
- // pSrcDst Pointer to the first pixel of lower (HorEdge) or
- // right (VerEdge) block.
- // srcDstStep Width in bytes of the source and destination plane.
- // QP Quantization parameter.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr pSrcDst pointer is NULL.
- // ippStsQPErr QP is out of the range [1, 31].
- */
- IPPAPI(IppStatus, ippiFilterDeblocking8x8HorEdge_H263_8u_C1IR, (
- Ipp8u* pSrcDst,
- int srcDstStep,
- int QP))
- IPPAPI(IppStatus, ippiFilterDeblocking8x8VerEdge_H263_8u_C1IR, (
- Ipp8u* pSrcDst,
- int srcDstStep,
- int QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblocking16x16HorEdge_H263_8u_C1IR
- // ippiFilterDeblocking16x16VerEdge_H263_8u_C1IR
- //
- // Purpose:
- // Perform deblocking filtering on bordering edges, horizontal and
- // vertical respectively, of two adjacent 16x16 blocks, as specified in
- // "ITU-T Recommendation H.263, Annex Q, subclause Q.7.2"
- //
- // Parameters:
- // pSrcDst Pointer to the first pixel of lower (HorEdge) or
- // right (VerEdge) block.
- // srcDstStep Width in bytes of the source and destination plane.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr pSrcDst pointer is NULL.
- */
- IPPAPI(IppStatus, ippiFilterDeblocking16x16HorEdge_H263_8u_C1IR, (
- Ipp8u* pSrcDst,
- int srcDstStep))
- IPPAPI(IppStatus, ippiFilterDeblocking16x16VerEdge_H263_8u_C1IR, (
- Ipp8u* pSrcDst,
- int srcDstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterBlockBoundaryHorEdge_H263_8u_C1IR
- // ippiFilterBlockBoundaryVerEdge_H263_8u_C1IR
- //
- // Purpose:
- // Perform block boundary filtering on bordering edges, horizontal and
- // vertical respectively, of two adjacent 16x16 blocks, as specified in
- // "ITU-T Recommendation H.263, Annex Q, subclause Q.7.1".
- //
- // Parameters:
- // pSrcDst Pointer to the origin of the lower (HorEdge) or the right
- // (VerEdge) 16x16 block.
- // srcDstStep Width in bytes of the image plane.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr The pointer is NULL.
- */
- IPPAPI(IppStatus, ippiFilterBlockBoundaryHorEdge_H263_8u_C1IR, (
- Ipp8u* pSrcDst,
- int srcDstStep))
- IPPAPI(IppStatus, ippiFilterBlockBoundaryVerEdge_H263_8u_C1IR, (
- Ipp8u* pSrcDst,
- int srcDstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructCoeffsIntra_H263_1u16s
- //
- // Purpose:
- // Performs decoding, dequantization and inverse scan of the DCT
- // coefficients for one intra coded block. Intra DC decoding process is
- // specified in "ITU-T Recommendation H.263, subclause 5.4.1".
- // Intra AC VLC decoding process is specified in "ITU-T Recommendation H.263,
- // subclause 5.4.2", and is modified as specified in the Recommendation,
- // Annex T, clause T.4, when Modified Quantization mode is in use. When
- // in Advanced Intra Coding mode, VLC Table I.2 from Annex I of the
- // Recommendation is used for all Intra DC and Intra AC coefficients,
- // otherwise Table 16 from the Recommendation is used to decode AC
- // coefficients (starting from pCoef[1]) only. When not in Advanced Intra
- // Coding mode, the dequantization processes for the Intra DC and for all
- // other non-zero coefficients are specified in the Recommendation,
- // subclause 6.2.1, otherwise all the coefficients are dequantized as
- // specified in the Recommendation, Annex I, clause I.3. When not in
- // Advanced Intra Coding mode and not in Modified Quantization mode, the
- // output coefficients other than the Inta DC one are clipped to the range
- // [-2048, 2047] (the Recommendation, subclause 6.2.2).
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
- // the scanning order. If an error is detected while
- // decoding a coefficient, the index of the last decoded
- // coefficient is returned in *pIndxLastNonZero.
- // If there are no correctly decoded coefficients in the
- // block, *pIndxLastNonZero is set to -1.
- // cbp Coded block pattern, when set to 0 indicates that the
- // block contains only Intra DC coefficient.
- // QP Quantization parameter.
- // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
- // mode is in use, equal to 0 otherwise.
- // scan Type of the inverse scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- // ippStsQPErr QP is out of the range [1, 31].
- */
- IPPAPI(IppStatus, ippiReconstructCoeffsIntra_H263_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int cbp,
- int QP,
- int advIntraFlag,
- int scan,
- int modQuantFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructCoeffsInter_H263_1u16s
- //
- // Purpose:
- // Performs decoding, dequantization and inverse zigzag scan of the DCT
- // coefficients for one inter coded block. Inter DCT VLC decoding process
- // is specified in "ITU-T Recommendation H.263, subclause 5.4.2", and is
- // modified as specified in the Recommendation, Annex T, clause T.4, when
- // Modified Quantization mode is in use. The dequantization process is
- // specified in the Recommendation, subclause 6.2.1. When not in
- // Modified Quantization mode, the output coefficients are clipped to the
- // range [-2048, 2047] (the Recommendation, subclause 6.2.2).
- //
- // Parameters:
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // pCoef Pointer to the output coefficients.
- // pIndxLastNonZero Pointer to the index of the last non-zero coefficient in
- // the scanning order. If an error is detected while
- // decoding a coefficient, the index of the last decoded
- // coefficient is returned in *pIndxLastNonZero.
- // If there are no correctly decoded coefficients in the
- // block, *pIndxLastNonZero is set to -1.
- // QP Quantization parameter.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- //
- // Returns:
- // ippStsNoErr No errors.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr Illegal VL code is detected through the stream
- // processing.
- // ippStsQPErr QP is out of the range [1, 31].
- */
- IPPAPI(IppStatus, ippiReconstructCoeffsInter_H263_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoef,
- int* pIndxLastNonZero,
- int QP,
- int modQuantFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeDCIntra_H263_16s1u
- //
- // Purpose:
- // Performs fixed length encoding of the DC coefficient for one Intra coded
- // block and puts the code into the bitstream. Intra DC encoding process is
- // specified in "ITU-T Recommendation H.263, subclause 5.4.1".
- //
- // Parameters:
- // qDC Quantized DC coefficient.
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- */
- IPPAPI(IppStatus, ippiEncodeDCIntra_H263_16s1u, (
- Ipp16s qDC,
- Ipp8u** ppBitStream,
- int* pBitOffset))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsIntra_H263_16s1u
- //
- // Purpose:
- // Performs encoding of the quantized AC coefficients in a scan order for
- // one Intra coded block, and puts the codes into the bitstream. Intra AC
- // VLC encoding process is specified in "ITU-T Recommendation H.263,
- // subclause 5.4.2", and is modified as specified in the Recommendation,
- // Annex T, clause T.4, when Modified Quantization mode is in use. When in
- // Advanced Intra Coding mode, VLC Table I.2 from Annex I of the
- // Recommendation is used for all Intra DC and Intra AC coefficients,
- // otherwise Table 16 from the Recommendation is used to encode AC
- // coefficients (starting from pQCoef[1]) only.
- //
- // Parameters:
- // pQCoef Pointer to the array of quantized DCT coefficients.
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // countNonZero Number of non-zero coefficients in the block.
- // Valid within the range [1, 64].
- // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
- // mode is in use, equal to 0 otherwise.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- // scan Type of the scan to be performed on the coefficients before
- // encoding, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan,
- // IPPVC_SCAN_NONE, indicating that no scan is to be
- // performed (the input coefficients are already in a scan
- // order).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsIntra_H263_16s1u, (
- Ipp16s* pQCoef,
- Ipp8u** ppBitStream,
- int* pBitOffset,
- int countNonZero,
- int advIntraFlag,
- int modQuantFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsInter_H263_16s1u
- //
- // Purpose:
- // Performs encoding of the quantized DCT coefficients in a scan order for
- // one Inter coded block, and puts the codes into the bitstream. Inter DCT
- // VLC encoding process is specified in "ITU-T Recommendation H.263,
- // subclause 5.4.2", and is modified as specified in the Recommendation,
- // Annex T, clause T.4, when Modified Quantization mode is in use.
- //
- // Parameters:
- // pQCoef Pointer to the array of quantized DCT coefficients.
- // ppBitStream Pointer to pointer to the current byte in the bitstream
- // buffer, updated by the function.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream. Valid within the range [0, 7],
- // updated by the function.
- // countNonZero Number of non-zero coefficients in the block.
- // Valid within the range [1, 64].
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- // scan Type of the scan to be performed on the coefficients before
- // encoding, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_NONE, indicating that no scan is to be
- // performed (the input coefficients are already in the scan
- // order).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one of the pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsOutOfRangeErr countNonZero is out of the range [1, 64].
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsInter_H263_16s1u, (
- Ipp16s* pQCoef,
- Ipp8u** ppBitStream,
- int* pBitOffset,
- int countNonZero,
- int modQuantFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantIntra_H263_16s_C1I
- //
- // Purpose:
- // Performs quantization on Intra coded block according to H.263 standard.
- // The standard specifies dequantization process, while quantization
- // decision levels are not defined. When not in Advanced Intra Coding mode,
- // the Intra DC coefficient is dequantized using uniformly placed
- // reconstruction levels with a step size of 8, and the other DCT
- // coefficients are reconstructed using equally spaced levels with a
- // central dead-zone around zero and with a step size of 2*QP
- // ("ITU-T Recommendation H.263, subclauses 4.2.4, 6.2"). When in Advanced
- // Intra Coding mode, all the block coefficients are dequantized using a
- // reconstruction spacing without a dead-zone and with a step size of 2*QP
- // ("ITU-T Recommendation H.263, Annex I, clause I.3"). When not in
- // Modified Quantization mode, the quantized Intra DC coefficient (when not
- // in Advanced Intra Coding mode) is clipped to the range [1, 254], and the
- // other quantized coefficients (all coefficients, if in Advanced Intra
- // Coding mode) are clipped to the range [-127, 127].
- //
- // Parameters:
- // pSrcDst Pointer to the decoded DCT coefficient of the current
- // block
- // QP Quantization parameter.
- // pCountNonZero Pointer to the number of non-zero coefficients after
- // quantization
- // advIntraFlag Flag equal to a non-zero value when Advanced Intra Coding
- // mode is in use, equal to 0 otherwise.
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL.
- // ippStsQPErr QP is out of the range [1, 31].
- //
- */
- IPPAPI(IppStatus, ippiQuantIntra_H263_16s_C1I, (
- Ipp16s* pSrcDst,
- int QP,
- int* pCountNonZero,
- int advIntraFlag,
- int modQuantFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInter_H263_16s_C1I
- //
- // Purpose:
- // Performs quantization on Inter coded block according to H.263 standard.
- // The standard specifies dequantization process, while quantization
- // decision levels are not defined. The DCT coefficients are reconstructed
- // using equally spaced levels with a central dead-zone around zero and
- // with a step size of 2*QP ("ITU-T Recommendation H.263, subclauses 4.2.4,
- // 6.2"). When not in Modified Quantization mode, the quantized coefficients
- // are clipped to the range [-127, 127].
- //
- // Parameters:
- // pSrcDst Pointer to the decoded DCT coefficient of the current
- // block
- // QP Quantization parameter.
- // pCountNonZero Pointer to the number of non-zero coefficients after
- // quantization
- // modQuantFlag Flag equal to a non-zero value when Modified Quantization
- // mode is in use, equal to 0 otherwise.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL.
- // ippStsQPErr QP is out of the range [1, 31].
- //
- */
- IPPAPI(IppStatus, ippiQuantInter_H263_16s_C1I, (
- Ipp16s* pSrcDst,
- int QP,
- int* pCountNonZero,
- int modQuantFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // MPEG-4 Functions
- //////////////////////////////////////////////////////////////////////////// */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblocking8x8HorEdge_MPEG4_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on a horizontal edge of two adjacent
- // blocks in the reconstructed frame, which is described in Annex F.3.1.
- //
- // Parameters:
- // pSrcDst Pointer to the first pixel of the lower block.
- // step Width of the source and destination plane.
- // QP Quantization parameter.
- // THR1, THR2 Threshold values specifying the filter mode
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsQPErr QP is out of range [1, 31].
- */
- IPPAPI(IppStatus, ippiFilterDeblocking8x8HorEdge_MPEG4_8u_C1IR, (
- Ipp8u* pSrcDst,
- int step,
- int QP,
- int THR1,
- int THR2))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblocking8x8VerEdge_MPEG4_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on a vertical edge of two adjacent
- // blocks in the reconstructed frame, which is described in Annex F.3.1.
- //
- // Parameters:
- // pSrcDst Pointer to the first pixel of the right block.
- // step Width of the source and destination plane.
- // QP Quantization parameter.
- // THR1,THR2 Threshold values specifying the filter mode
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsQPErr QP is out of range [1, 31].
- */
- IPPAPI(IppStatus, ippiFilterDeblocking8x8VerEdge_MPEG4_8u_C1IR, (
- Ipp8u* pSrcDst,
- int step,
- int QP,
- int THR1,
- int THR2))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeringingThreshold_MPEG4_8u_P3R
- //
- // Purpose:
- // Computes threshold values of 6 blocks in one macroblock
- // (4Y, Cb, Cr) for the deringing filter described in Annex F.3.2.1.
- //
- // Parameters:
- // pSrcY Pointer to the first pixel of the first Y block
- // in the current macroblock.
- // stepY Width of the Y plane.
- // pSrcCb Pointer to the first pixel of the Cb block
- // stepCb Width of the Cb plane.
- // pSrcCr Pointer to the first pixel of the Cr block
- // stepCr Width of the Cr plane.
- // threshold Array of 6 threshold values for each block
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- */
- IPPAPI(IppStatus, ippiFilterDeringingThreshold_MPEG4_8u_P3R, (
- const Ipp8u* pSrcY,
- int stepY,
- const Ipp8u* pSrcCb,
- int stepCb,
- const Ipp8u* pSrcCr,
- int stepCr,
- int threshold[6]))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeringingSmooth8x8_MPEG4_8u_C1R
- //
- // Purpose:
- // Performs index acquisition and adaptive smoothing
- // (Annex F.3.2) of a block
- //
- // Parameters:
- // pSrc Pointer to the first pixel of the source block
- // srcStep Width of the source plane.
- // pDst Pointer to the first pixel of the destination block
- // dstStep Width of the destination plane.
- // QP Quantization parameter.
- // threshold Threshold values for block
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsQPErr QP is out of range [1, 31].
- */
- IPPAPI(IppStatus, ippiFilterDeringingSmooth8x8_MPEG4_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int QP,
- int threshold))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeDCIntra_MPEG4_16s1u
- //
- // Purpose:
- // Encodes one DC coefficient for intra coded block.
- //
- // Parameters:
- // dcCoeff DC coefficient to be encoded
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after encoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after encoding.
- // blockType Indicates the type of block, takes one of the following
- // values:
- // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
- // IPPVC_BLOCK_CHROMA - for chroma blocks
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- */
- IPPAPI(IppStatus, ippiEncodeDCIntra_MPEG4_16s1u, (
- Ipp16s dcCoeff,
- Ipp8u** ppBitStream,
- int* pBitOffset,
- int blockType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsIntra_MPEG4_16s1u
- //
- // Purpose:
- // Encodes DCT coefficients for intra coded block.
- //
- // Parameters:
- // pCoeffs Pointer to the DCT coefficients
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after encoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after encoding.
- // countNonZero The number of nonzero coefficients
- // rvlcFlag This is a flag which when set to '0' indicates that VLC
- // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
- // when decoding DCT coefficients otherwise the RVLC tables
- // B.23, B.24 and B.25 [ISO14496] will be used.
- // noDCFlag This is a flag which when set to '0' indicates that
- // pCoeffs will be encoded starting with zero element otherwise
- // with first
- // scan Type of the scan, takes one of the following values:
- // IPPVC_SCAN_NONE, indicating do not perform scan,
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsIntra_MPEG4_16s1u, (
- const Ipp16s* pCoeffs,
- Ipp8u** ppBitStream,
- int* pBitOffset,
- int countNonZero,
- int rvlcFlag,
- int noDCFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsInter_MPEG4_16s1u
- //
- // Purpose:
- // Encodes DCT coefficients for inter coded block..
- //
- // Parameters:
- // pCoeffs Pointer to the DCT coefficients
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after block decoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after block decoding.
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // countNonZero The number of nonzero coefficients
- // rvlcFlag This is a flag which when set to '0' indicates that VLC
- // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
- // when decoding DCT coefficients otherwise the RVLC tables
- // B.23, B.24 and B.25 [ISO14496] will be used.
- // scan Type of the scan, takes one of the following values:
- // IPPVC_SCAN_NONE, indicating do not perform scan,
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsInter_MPEG4_16s1u, (
- const Ipp16s* pCoeffs,
- Ipp8u** ppBitStream,
- int* pBitOffset,
- int countNonZero,
- int rvlcFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeDCIntra_MPEG4_1u16s
- //
- // Purpose:
- // Performs VLC decoding of the DC coefficient for one intra coded block
- // using Intra DC VLC.
- //
- // Parameters:
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after block decoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after block decoding.
- // pDst Pointer to the decoded DC coefficient of the current block
- // blockType Indicates the type of block, takes one of the following
- // values:
- // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
- // IPPVC_BLOCK_CHROMA - for chroma blocks
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCCodeErr An illegal code is detected through the
- // DC stream processing.
- */
- IPPAPI(IppStatus, ippiDecodeDCIntra_MPEG4_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pDst,
- int blockType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsIntra_MPEG4_1u16s
- //
- // Purpose:
- // Performs VLC decoding of the DCT coefficient for one intra coded block
- // using Intra DC VLC.
- //
- // Parameters:
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after block decoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after block decoding.
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // pIndxLastNonZero Pointer to the index of last non zero coefficient.
- // In case of error during decoding the index on wich
- // error occurred will be stored in pIndxLastNonZero
- // rvlcFlag This is a flag which when set to '0' indicates that VLC
- // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
- // when decoding DCT coefficients otherwise the RVLC tables
- // B.23, B.24 and B.25 [ISO14496] will be used.
- // noDCFlag This is a flag which when set to '0' indicates that
- // pCoeffs will be set starting with zero element otherwise
- // with first
- // scan Type of the scan, takes one of the following values:
- // IPPVC_SCAN_NONE, indicating do not perform inverse scan,
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_HORIZONTAL - alternate-horizontal scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCCodeErr An illegal code is detected through the
- // DC stream processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsIntra_MPEG4_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoeffs,
- int* pIndxLastNonZero,
- int rvlcFlag,
- int noDCFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsIntraRVLCBack_MPEG4_1u16s
- //
- // Purpose:
- // Decodes DCT coefficients in backward direction for intra coded block
- // using RVLC.
- //
- // Parameters:
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after block decoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after block decoding.
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // pIndxLastNonZero Pointer to the index of last non zero coefficient.
- // In case of error during decoding the index on wich
- // error occurred will be stored in pIndxLastNonZero
- // noDCFlag This is a flag which when set to '0' indicates that
- // pCoeffs will be set starting with zero element otherwise
- // with first
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCCodeErr An illegal code is detected through the
- // DC stream processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsIntraRVLCBack_MPEG4_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoeffs,
- int* pIndxLastNonZero,
- int noDCFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsInter_MPEG4_1u16s
- //
- // Purpose:
- // Performs VLC decoding of the DCT coefficient for one inter coded block
- // using Inter DC VLC.
- //
- // Parameters:
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after block decoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after block decoding.
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // pIndxLastNonZero Pointer to the index of last non zero coefficient.
- // In case of error during decoding the index on wich
- // error occurred will be stored in pIndxLastNonZero
- // rvlcFlag This is a flag which when set to '0' indicates that VLC
- // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
- // when decoding DCT coefficients otherwise the RVLC tables
- // B.23, B.24 and B.25 [ISO14496] will be used.
- // scan Type of the scan, takes one of the following values:
- // IPPVC_SCAN_NONE, indicating do not perform inverse scan,
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCCodeErr An illegal code is detected through the
- // DC stream processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsInter_MPEG4_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoeffs,
- int* pIndxLastNonZero,
- int rvlcFlag,
- int scan))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCoeffsInterRVLCBack_MPEG4_1u16s
- //
- // Purpose:
- // Decodes DCT coefficients in backward direction for inter coded block
- // using RVLC.
- //
- // Parameters:
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after block decoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after block decoding.
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // pIndxLastNonZero Pointer to the index of last non zero coefficient.
- // In case of error during decoding the index on wich
- // error occurred will be stored in pIndxLastNonZero
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCCodeErr An illegal code is detected through the
- // DC stream processing.
- */
- IPPAPI(IppStatus, ippiDecodeCoeffsInterRVLCBack_MPEG4_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoeffs,
- int* pIndxLastNonZero))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructCoeffsInter_MPEG4_1u16s
- //
- // Purpose:
- // Performs VLC decoding of the DCT coefficient for one inter coded block
- // using Inter DC VLC.
- //
- // Parameters:
- // ppBitStream Pointer to the pointer to the current byte in
- // the bitstream, it is updated after block decoding.
- // pBitOffset Pointer to the bit position in the byte pointed by
- // *ppBitStream, it is updated after block decoding.
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // pIndxLastNonZero Pointer to the index of last non zero coefficient.
- // In case of error during decoding the index on wich
- // error occurred will be stored in pIndxLastNonZero
- // rvlcFlag This is a flag which when set to '0' indicates that VLC
- // tables B.16, B.18, B.19 and B.21 [ISO14496] will be used
- // when decoding DCT coefficients otherwise the RVLC tables
- // B.23, B.24 and B.25 [ISO14496] will be used.
- // scan Type of the scan, takes one of the following values:
- // IPPVC_SCAN_ZIGZAG, indicating the classical zigzag scan,
- // IPPVC_SCAN_VERTICAL - alternate-vertical scan
- // pQuantInvInterSpec Pointer to the structure IppiQuantInterSpec_16s which
- // QP Quantization parameter.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- // ippStsBitOffsetErr *pBitOffset is out of the range [0, 7].
- // ippStsVLCErr An illegal code is detected through the
- // stream processing.
- // ippStsQPErr Indicates an error condition if QP is out of the
- // range [1; 2^(bitsPerPixel - 3) - 1]
- */
- IPPAPI(IppStatus, ippiReconstructCoeffsInter_MPEG4_1u16s, (
- Ipp8u** ppBitStream,
- int* pBitOffset,
- Ipp16s* pCoeffs,
- int* pIndxLastNonZero,
- int rvlcFlag,
- int scan,
- const IppiQuantInvInterSpec_MPEG4* pQuantInvInterSpec,
- int QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvIntraInit_MPEG4
- // ippiQuantInvInterInit_MPEG4
- //
- // Purpose:
- // Initialize a IppiQuantInvIntraSpec_16s or IppiQuantInvInterSpec_MPEG4 for
- // future usage in ippiQuantInvIntra_MPEG4_16s_C1I or
- // ippiQuantInvInter_MPEG4_16s_C1I. If pQuantMatrix is NULL, the second
- // quantization method will be used; otherwise, the first
- //
- // Parameters:
- // pQuantMatrix Pointer to the quantization matrix size of 64.
- // pSpec Pointer to the structure IppiQuantInvIntraSpec_16s or
- // IppiQuantInvInterSpec_MPEG4 which will initialized.
- // bitsPerPixel Video data precision used for saturation of result. This
- // parameter is valid within the range [4; 12].
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when pointer pSpec is NULL.
- // ippStsOutOfRangeErrIndicates an error when bitsPerPixel is out of
- // the range [4; 12].
- */
- IPPAPI(IppStatus, ippiQuantInvIntraInit_MPEG4, (
- const Ipp8u* pQuantMatrix,
- IppiQuantInvIntraSpec_MPEG4* pSpec,
- int bitsPerPixel))
- IPPAPI(IppStatus, ippiQuantInvInterInit_MPEG4, (
- const Ipp8u* pQuantMatrix,
- IppiQuantInvInterSpec_MPEG4* pSpec,
- int bitsPerPixel))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvIntraGetSize_MPEG4
- // ippiQuantInvInterGetSize_MPEG4
- //
- // Purpose:
- // Return size of IppiQuantInvIntraSpec_MPEG4 or IppiQuantInvInterSpec_MPEG4.
- //
- // Parameters:
- // pSpecSize Pointer to the resulting size of the structure
- // IppiQuantInvIntraSpec_MPEG4 or IppiQuantInvInterSpec_MPEG4.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
- */
- IPPAPI(IppStatus, ippiQuantInvIntraGetSize_MPEG4, (
- int* pSpecSize))
- IPPAPI(IppStatus, ippiQuantInvInterGetSize_MPEG4, (
- int* pSpecSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvIntra_MPEG4_16s_C1I
- // ippiQuantInvInter_MPEG4_16s_C1I
- //
- // Purpose:
- // Perform inverse quantization. Output coefficients are saturated to lie
- // in the range: [-2^(bitsPerPixel + 3); 2^(bitsPerPixel + 3) - 1]. If the
- // index of last nonzero coefficient is known the parameter len may be set
- // to indxLastNonZero + 1 otherwise the len should be set to 64
- //
- // Parameters:
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // indxLastNonZero The index of last non zero coeff..
- // pSpec Pointer to the structure IppiQuantInvIntraSpec_MPEG4 or
- // IppiQuantInvInterSpec_MPEG4 which will initialized.
- // QP Quantization parameter.
- // blockType Indicates the type of block, takes one of the following
- // values:
- // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
- // IPPVC_BLOCK_CHROMA - for chroma blocks
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- // ippStsQPErr Indicates an error condition if QP is out of the
- // range [1; 2^(bitsPerPixel - 3) - 1]
- */
- IPPAPI(IppStatus, ippiQuantInvIntra_MPEG4_16s_C1I, (
- Ipp16s* pCoeffs,
- int indxLastNonZero,
- const IppiQuantInvIntraSpec_MPEG4* pSpec,
- int QP,
- int blockType))
- IPPAPI(IppStatus, ippiQuantInvInter_MPEG4_16s_C1I, (
- Ipp16s* pCoeffs,
- int indxLastNonZero,
- const IppiQuantInvInterSpec_MPEG4* pSpec,
- int QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantIntraInit_MPEG4
- // ippiQuantInterInit_MPEG4
- //
- // Purpose:
- // Initialize a IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4 for
- // future usage in ippiQuantIntra_MPEG4_16s_C1I or
- // ippiQuantInter_MPEG4_16s_C1I. If pQuantMatrix is NULL, the second
- // quantization method will be used; otherwise, the first
- //
- // Parameters:
- // pQuantMatrix Pointer to the quantization matrix size of 64.
- // pSpec Pointer to the structure IppiQuantIntraSpec_MPEG4 or
- // IppiQuantInterSpec_MPEG4 which will initialized.
- // bitsPerPixel Video data precision used for saturation of result. This
- // parameter is valid within the range [4; 12].
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when pointer pSpec is NULL.
- // ippStsOutOfRangeErrIndicates an error when bitsPerPixel is out of
- // the range [4; 12].
- */
- IPPAPI(IppStatus, ippiQuantIntraInit_MPEG4, (
- const Ipp8u* pQuantMatrix,
- IppiQuantIntraSpec_MPEG4* pSpec,
- int bitsPerPixel))
- IPPAPI(IppStatus, ippiQuantInterInit_MPEG4, (
- const Ipp8u* pQuantMatrix,
- IppiQuantInterSpec_MPEG4* pSpec,
- int bitsPerPixel))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantIntraGetSize_MPEG4
- // ippiQuantInterGetSize_MPEG4
- //
- // Purpose:
- // Return size of IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4.
- //
- // Parameters:
- // pSpecSize Pointer to the resulting size of the structure
- // IppiQuantIntraSpec_MPEG4 or IppiQuantInterSpec_MPEG4.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
- */
- IPPAPI(IppStatus, ippiQuantIntraGetSize_MPEG4, (
- int* pSpecSize))
- IPPAPI(IppStatus, ippiQuantInterGetSize_MPEG4, (
- int* pSpecSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantIntra_MPEG4_16s_C1I
- // ippiQuantInter_MPEG4_16s_C1I
- //
- // Purpose:
- // Perform quantization. Output coefficients are saturated to lie in the
- // range: [-2047; 2047]. Also these functions calculate the number of
- // nonzero coefficients after quantization
- //
- // Parameters:
- // pCoeffs Pointer to the decoded DCT coefficient of the current
- // block
- // pSpec Pointer to the structure IppiQuantIntraSpec_MPEG4 or
- // IppiQuantInterSpec_MPEG4 which will initialized.
- // QP Quantization parameter.
- // pCountNonZero Pointer to the count of non zero coefficients.
- // blockType Indicates the type of block, takes one of the following
- // values:
- // IPPVC_BLOCK_LUMA - for luma and alpha blocks,
- // IPPVC_BLOCK_CHROMA - for chroma blocks
- // len The number of coefficients to dequantize.
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- // ippStsQPErr Indicates an error condition if QP is out of the
- // range [1; 2^(bitsPerPixel - 3) - 1]
- */
- IPPAPI(IppStatus, ippiQuantIntra_MPEG4_16s_C1I, (
- Ipp16s* pCoeffs,
- const IppiQuantIntraSpec_MPEG4* pSpec,
- int QP,
- int* pCountNonZero,
- int blockType))
- IPPAPI(IppStatus, ippiQuantInter_MPEG4_16s_C1I, (
- Ipp16s* pCoeffs,
- const IppiQuantInterSpec_MPEG4* pSpec,
- int QP,
- int* pCountNonZero))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiWarpInit_MPEG4
- //
- // Purpose:
- // Init an IppiWarpSpec_MPEG4 structure for further usage in GMC or Sprite
- // reconstruction
- //
- // Parameters:
- // pSpec Pointer to the IppiWarpSpec_MPEG4 structure.
- // pDU Pointer to array of the x-coordinate of warping points
- // pDV Pointer to array of the y-coordinate of warping points
- // numWarpingPoints The number of warping points, valid in [0-4].
- // spriteType Indicates a sprite coding mode,
- // IPPVC_SPRITE_STATIC - static sprites
- // IPPVC_SPRITE_GMC - GMC(Global Motion Compensation)
- // warpingAccuracy The accuracy of warping, valid in [0-3].
- // roundingType Parameter that determines type of rounding for pixel
- // approximation; may be 0 or 1
- // quarterSample Parameter that indicates a quarter sample mode;
- // may be 0 or 1.
- // fcode Parameter that determines the range of motion vector,
- // valid in diapason [1-7]
- // spriteRect Parameter that determines rectangle region for Sprite
- // (or ref VOP for GMC)
- // vopRect Parameter that determines rectangle region for
- // current VOP
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when pSpec is NULL or pDU,pDV are
- // NULL for numWarpingPoints > 0.
- // ippStsSizeErr Indicates an error when width or height of images is
- // less than or equal to zero
- // ippStsOutOfRangeErr Indicates an error when numWarpingPoints or
- // warpingAccuracy are out of valid diapason.
- */
- IPPAPI(IppStatus, ippiWarpInit_MPEG4, (
- IppiWarpSpec_MPEG4* pSpec,
- const int* pDU,
- const int* pDV,
- int numWarpingPoints,
- int spriteType,
- int warpingAccuracy,
- int roundingType,
- int quarterSample,
- int fcode,
- const IppiRect* spriteRect,
- const IppiRect* vopRect))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiWarpGetSize_MPEG4
- //
- // Purpose:
- // Return size of IppiWarpSpec_MPEG4 structure
- //
- // Parameters:
- // pSpecSize Pointer to the resulting size of the structure
- // IppiWarpSpec_MPEG4.
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when pointer pSpecSize is NULL.
- */
- IPPAPI(IppStatus, ippiWarpGetSize_MPEG4, (
- int* pSpecSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiWarpLuma_MPEG4_8u_C1R
- //
- // Purpose:
- // Warp an arbitrary luma rectangular region according motion parameters
- // stored in IppiWarpSpec_MPEG4 structure
- //
- // Parameters:
- // pSrcY Pointer to the origin of the source plane.
- // srcStep Step in bytes through the source plane
- // pDst Pointer to the destination region.
- // dstStep Step in bytes through the destination plane
- // dstRect The rectangular destination region
- // pSpec Pointer to the structure with motion parameters.
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
- */
- IPPAPI(IppStatus, ippiWarpLuma_MPEG4_8u_C1R, (
- const Ipp8u* pSrcY,
- int srcStepY,
- Ipp8u* pDstY,
- int dstStepY,
- const IppiRect* dstRect,
- const IppiWarpSpec_MPEG4* pSpec))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiWarpChroma_MPEG4_8u_P2R
- //
- // Purpose:
- // Warp an arbitrary chroma rectangular region according motion parameters
- // stored in IppiWarpSpec_MPEG4 structure
- //
- // Parameters:
- // pSrcCb Pointer to the origin of the first source plane.
- // srcStepCb Step in bytes through the first source plane
- // pSrcCr Pointer to the origin of the second source plane.
- // srcStepCr Step in bytes through the second source plane
- // pDstCb Pointer to the first destination plane.
- // dstStepCb Step in bytes through the first destination plane
- // pDstCr Pointer to the second destination plane.
- // dstStepCr Step in bytes through the second destination plane
- // dstRect The rectangular destination region
- // pSpec Pointer to the structure with motion parameters.
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
- */
- IPPAPI(IppStatus, ippiWarpChroma_MPEG4_8u_P2R, (
- const Ipp8u* pSrcCb,
- int srcStepCb,
- const Ipp8u* pSrcCr,
- int srcStepCr,
- Ipp8u* pDstCb,
- int dstStepCb,
- Ipp8u* pDstCr,
- int dstStepCr,
- const IppiRect* dstRect,
- const IppiWarpSpec_MPEG4* pSpec))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiCalcGlobalMV_MPEG4
- //
- // Purpose:
- // Calculate a Global Motion Vector for one macroblock according motion
- // parameters stored in IppiWarpSpec_MPEG4 structure
- //
- // Parameters:
- // xOffset The left coordinate of top-left corner of luma 16x16 block
- // yOffset The top coordinate of top-left corner of luma 16x16 block
- // pGMV Pointer to the resulting motion vector.
- // pSpec Pointer to the structure with motion parameters.
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
- */
- IPPAPI(IppStatus, ippiCalcGlobalMV_MPEG4, (
- int xOffset,
- int yOffset,
- IppMotionVector* pGMV,
- const IppiWarpSpec_MPEG4* pSpec))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiChangeSpriteBrightness_MPEG4_8u_C1IR
- //
- // Purpose:
- // Change brightness after sprite warping
- //
- // Parameters:
- // pSrcDst Pointer to the video plane.
- // srcDstStep Step in bytes through the video plane
- // width The width of the video plane
- // height The height of the video plane
- // brightnessChangeFactor Factor for changing brightness; valid in diapason
- // [-112; 1648]
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Indicates an error when at least one pointer is NULL.
- // ippStsOutOfRangeErrIndicates an error when brightnessChangeFactor is out
- // of valid diapason.
- */
- IPPAPI(IppStatus, ippiChangeSpriteBrightness_MPEG4_8u_C1IR, (
- Ipp8u* pSrcDst,
- int srcDstStep,
- int width,
- int height,
- int brightnessChangeFactor))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiCopy8x8QP_MPEG4_8u_C1R
- // ippiCopy16x8QP_MPEG4_8u_C1R
- // ippiCopy16x16QP_MPEG4_8u_C1R
- //
- // Purpose:
- // Copy fixed sizes blocks with quarter-pixel accuracy
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- // acc Parameter that determines quarter-pixel accuracy.
- // rounding Parameter that determines type of rounding for pixel
- // interpolation; may be 0 or 1
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiCopy8x8QP_MPEG4_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiCopy16x8QP_MPEG4_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- IPPAPI(IppStatus, ippiCopy16x16QP_MPEG4_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- int acc,
- int rounding))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiOBMC8x8HP_MPEG4_8u_C1R
- // ippiOBMC16x16HP_MPEG4_8u_C1R
- // ippiOBMC8x8QP_MPEG4_8u_C1R
- //
- // Purpose:
- // Performs the OBMC for a block with half-pixel and quarter pixel accuracy
- //
- // Parameters:
- // pSrc Pointer to the first pixel of the reference macroblock.
- // srcStep Width of the source plane.
- // pDst Pointer to the first pixel of the destination macroblock.
- // dstStep Width of the destination plane.
- // pMVCur Pointer to the motion vector for the current block.
- // pMVLeft Pointer to the motion vector for left block.
- // pMVRight Pointer to the motion vector for right block.
- // pMVAbove Pointer to the motion vector for above block.
- // pMVBelow Pointer to the motion vector for bellow block.
- // rounding Parameter specifying type of rounding according to 7.6.2.1
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr One of the specified pointers is NULL.
- */
- IPPAPI(IppStatus, ippiOBMC8x8HP_MPEG4_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- const IppMotionVector* pMVCur,
- const IppMotionVector* pMVLeft,
- const IppMotionVector* pMVRight,
- const IppMotionVector* pMVAbove,
- const IppMotionVector* pMVBelow,
- int rounding))
- IPPAPI(IppStatus, ippiOBMC16x16HP_MPEG4_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- const IppMotionVector* pMVCur,
- const IppMotionVector* pMVLeft,
- const IppMotionVector* pMVRight,
- const IppMotionVector* pMVAbove,
- const IppMotionVector* pMVBelow,
- int rounding))
- IPPAPI(IppStatus, ippiOBMC8x8QP_MPEG4_8u_C1R, (
- const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- const IppMotionVector* pMVCur,
- const IppMotionVector* pMVLeft,
- const IppMotionVector* pMVRight,
- const IppMotionVector* pMVAbove,
- const IppMotionVector* pMVBelow,
- int rounding))
- /* ///////////////////////////////////////////////////////////////////////////
- // H.264 Video Decoder Functions
- //////////////////////////////////////////////////////////////////////////// */
- /*////////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiPredictIntra_4x4_H264_8u_C1IR
- //
- // Purpose:
- // Performs intra prediction for a 4x4 luma component.
- //
- // Parameters:
- // pSrcDst - pointer to the source and destination array
- // srcDstStep - Step (in bytes) of the source and destination array,
- // predMode - prediction mode, valid range [0, 8]
- // avilability - flag that specifies the availability of
- // the samples for prediction.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsStepErr srcDstStep is less than 4
- // ippStsOutOfRangeErr predMode is out of range [0,8]
- */
- IPPAPI(IppStatus, ippiPredictIntra_4x4_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- IppIntra4x4PredMode_H264 predMode,
- Ipp32s availability))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiPredictIntra_16x16_H264_8u_C1IR
- //
- // Purpose:
- // Performs intra prediction for a 16x16 luma component.
- //
- // Parameters:
- // pSrcDst - pointer to the source and destination array
- // srcDstStep - Step (in bytes) of the source and destination array,
- // predMode - prediction mode, valid range [0,3]
- // avilability - flag that specifies the availability of
- // the samples for prediction.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsStepErr srcDstStep is less than 16
- // ippStsOutOfRangeErr predMode is out of range [0,3]
- */
- IPPAPI(IppStatus, ippiPredictIntra_16x16_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- IppIntra16x16PredMode_H264 predMode,
- Ipp32s availability))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiPredictIntraChroma8x8_H264_8u_C1IR
- //
- // Purpose:
- // Perform intra prediction for an 8x8 chroma component.
- //
- // Parameters:
- // pSrcDst - pointer to the source and destination array
- // srcDstStep - Step (in bytes) of the source and destination array,
- // predMode - prediction mode, valid range [0,3]
- // avilability - flag that specifies the availability of
- // the samples for prediction.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsStepErr srcDstStep is less than 8
- // ippStsOutOfRangeErr predMode is out of range [0,3]
- */
- IPPAPI(IppStatus, ippiPredictIntraChroma8x8_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- IppIntraChromaPredMode_H264 predMode,
- Ipp32s availability))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformDequantLumaDC_H264_16s_C1I
- // ippiTransformDequantChromaDC_H264_16s_C1I
- //
- // Purpose:
- // Perform integer inverse transformation and dequantization
- // for 4x4 luma DC coefficients,
- // and 2x2 chroma DC coefficients respectively.
- //
- // Parameters:
- // pSrcDst - pointer to initial coefficients and resultant DC,
- // QP - quantization parameter.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 1 or greater than 51
- */
- IPPAPI(IppStatus, ippiTransformDequantLumaDC_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s QP))
- IPPAPI(IppStatus, ippiTransformDequantChromaDC_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDequantTransformResidual_H264_16s_C1I
- //
- // Purpose:
- // Places a DC coefficient (if any) to its place,
- // Performs dequantization, integer inverse transformation and
- // shift by 6 bits for 4x4 block of residuals.
- //
- // Parameters:
- // pSrcDst - pointer to the initial coefficients and resultant residuals,
- // step - step (in bytes) of the source and destination array,
- // pDC - pointer to the DC coefficient. If it is set to NULL, than
- // Inter 4x4 Inverse quantization is performed on the DC
- // coefficient in the top left corner of the macroblock,
- // otherwise function just gets it in the specified location;
- // AC - flag that is not zero, if at least one AC coefficient exists,
- // and equals zero otherwise.
- // QP - quantization parameter.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 1 or greater than 51
- // ippStsStepErr step is less than 8 respectively
- */
- IPPAPI(IppStatus, ippiDequantTransformResidual_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s step,
- Ipp16s* pDC,
- Ipp32s AC,
- Ipp32s QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDequantTransformResidualAndAdd_H264_16s_C1I
- //
- // Purpose:
- // Places a DC coefficient (if any) to its place,
- // Performs dequantization, integer inverse transformation and
- // shift by 6 bits for 4x4 block of residuals
- // with subsequent intra prediction or motion
- // compensation.
- //
- //
- // Parameters:
- // pPred - pointer to the reference 4x4 block, which is used for intra
- // prediction or motion compensation.
- // pSrcDst - pointer to the initial coefficients and resultant residuals (4x4
- // block) - array of size 16.
- // pDC - pointer to the DC coefficient. In the case of Intra 4x4
- // macroblock type pDC is set to NULL.
- // pDst - pointer to the destination 4x4 block.
- // PredStep - reference frame step in bytes.
- // DstStep - destination frame step in bytes.
- // QP - quantization parameter
- // AC - flag that is not equal to zero, if at least one AC coefficient
- // exists, and is equal to zero otherwise.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 1 or greater than 51
- //
- */
- IPPAPI(IppStatus, ippiDequantTransformResidualAndAdd_H264_16s_C1I,(
- const Ipp8u* pPred,
- Ipp16s* pSrcDst,
- Ipp16s* pDC,
- Ipp8u* pDst,
- Ipp32s PredStep,
- Ipp32s DstStep,
- Ipp32s QP,
- Ipp32s AC))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingLuma_VerEdge_H264_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on the vertical edges of the
- // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients,
- // srcdstStep - step of the arrays,
- // pAlpha - array of size 2 of Alpha Thresholds(values for external
- // and internal vertical edge)
- // pBeta - array of size 2 of Beta Thresholds(values for external
- // and internal vertical edge)
- // pTresholds - array of size 16 of Thresholds (TC0)(values for
- // the left edge of each 4x4 block)
- // pBS - array of size 16 of BS parameters
- //
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation
- // and Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- const Ipp8u* pAlpha,
- const Ipp8u* pBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBs))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingLuma_VerEdge_MBAFF_H264_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on the vertical edges of the
- // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients,
- // srcdstStep - step of the arrays,
- // nAlpha - Alpha Threshold (value for external vertical edge)
- // nBeta - Beta Threshold (value for external vertical edge)
- // pTresholds - array of size 16 of Thresholds
- // pBS - array of size 16 of BS parameters
- //
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation
- // and Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_MBAFF_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- Ipp32u nAlpha,
- Ipp32u nBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBs))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingLuma_HorEdge_H264_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on the horizontal edges of the
- // luma macroblock(16x16) in accordance with 8.7.2. of H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients,
- // srcdstStep - step of the arrays,
- // pAlpha - array of size 2 of Alpha Thresholds(values for external
- // and internal vertical edge)
- // pBeta - array of size 2 of Beta Thresholds(values for external
- // and internal vertical edge)
- // pTresholds - array of size 16 of Thresholds (TC0)(values for
- // the left edge of each 4x4 block)
- // pBS - array of size 16 of BS parameters
- //
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingLuma_HorEdge_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- const Ipp8u* pAlpha,
- const Ipp8u* pBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBS))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingChroma_VerEdge_H264_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on the vertical edges of the
- // chroma macroblock(8x8) in accordance with 8.7.2. of the H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients,
- // srcdstStep - step of the arrays,
- // pAlpha - array of size 2 of Alpha Thresholds(values for
- // external and internal vertical edge)
- // pBeta - array of size 2 of Beta Thresholds(values for
- // external and internal vertical edge)
- // pTresholds - array of size 16 of Thresholds (TC0)(values for
- // the left edge of each 2x2 block)
- // pBS - array of size 16 of BS parameters
- //
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- const Ipp8u* pAlpha,
- const Ipp8u* pBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBS))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingChroma_VerEdge_H264_8u_C2IR
- //
- // Purpose:
- // Performs deblocking filtering on the vertical edges of the
- // NV12 chroma macroblock(16x8) in accordance with 8.7.2. of the H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients in NV12 format (UV...UV),
- // srcdstStep - step of the arrays,
- // pAlpha - array of size 2 of Alpha Thresholds(values for
- // external and internal vertical edge)
- // pBeta - array of size 2 of Beta Thresholds(values for
- // external and internal vertical edge)
- // pTresholds - array of size 16 of Thresholds (TC0)(values for
- // the left edge of each 4x2 block)
- // pBS - array of size 16 of BS parameters
- //
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_H264_8u_C2IR, (
- Ipp8u* pSrcDst,
- Ipp32u srcdstStep,
- const Ipp8u* pAlpha,
- const Ipp8u* pBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBS))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingChroma_VerEdge_MBAFF_H264_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on the vertical edges of the
- // chroma macroblock(8x8) in accordance with 8.7.2. of the H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients,
- // srcdstStep - step of the arrays,
- // nAlpha - Alpha Threshold (value for external vertical edge)
- // nBeta - Beta Threshold (value for external vertical edge)
- // pTresholds - array of size 16 of Thresholds
- // pBS - array of size 16 of BS parameters
- //
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_MBAFF_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- Ipp32u nAlpha,
- Ipp32u nBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBS))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingChroma_HorEdge_H264_8u_C1IR
- //
- // Purpose:
- // Performs deblocking filtering on the horizontal edges of the
- // chroma macroblock(8x8) in accordance with 8.7.2. of H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients,
- // srcdstStep - step of the arrays,
- // pAlpha - array of size 2 of Alpha Thresholds (values for
- // external and internal horizontal edge)
- // pBeta - array of size 2 of Beta Thresholds (values for
- // external and internal horizontal edge)
- // pTresholds - array of size 16 of Thresholds (TC0) (values for
- // the upper edge of each 2x2 block)
- // pBS - array of size 16 of BS parameters (values for
- // external and internal horizontal edge)
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_H264_8u_C1IR, (
- Ipp8u* pSrcDst,
- Ipp32s srcdstStep,
- const Ipp8u* pAlpha,
- const Ipp8u* pBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBS))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingChroma_HorEdge_H264_8u_C2IR
- //
- // Purpose:
- // Performs deblocking filtering on the horizontal edges of the
- // chroma macroblock in NV12 format (16x8) in accordance with 8.7.2. of H.264 standard
- //
- // Parameters:
- // pSrcDst - pointer to the initial and resultant coefficients in NV12 format (UV...UV),
- // srcdstStep - step of the arrays,
- // pAlpha - array of size 2 of Alpha Thresholds (values for
- // external and internal horizontal edge)
- // pBeta - array of size 2 of Beta Thresholds (values for
- // external and internal horizontal edge)
- // pTresholds - array of size 16 of Thresholds (TC0) (values for
- // the upper edge of each 4x2 block)
- // pBS - array of size 16 of BS parameters (values for
- // external and internal horizontal edge)
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_H264_8u_C2IR, (
- Ipp8u* pSrcDst,
- Ipp32u srcdstStep,
- const Ipp8u* pAlpha,
- const Ipp8u* pBeta,
- const Ipp8u* pThresholds,
- const Ipp8u* pBS))
- IPPAPI(IppStatus, ippiFilterDeblockingLumaVerEdge_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingLumaVerEdgeMBAFF_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingLumaHorEdge_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingChromaVerEdge_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingChromaVerEdgeMBAFF_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingChromaHorEdge_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdge_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPP_DEPRECATED("This function is obsolete and not supported any more") \
- IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdgeMBAFF_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingChroma422HorEdge_H264_16u_C1IR, (
- const IppiFilterDeblock_16u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdge_H264_8u_C1IR, (
- const IppiFilterDeblock_8u * pDeblockInfo))
- IPP_DEPRECATED("This function is obsolete and not supported any more") \
- IPPAPI(IppStatus, ippiFilterDeblockingChroma422VerEdgeMBAFF_H264_8u_C1IR, (
- const IppiFilterDeblock_8u * pDeblockInfo))
- IPPAPI(IppStatus, ippiFilterDeblockingChroma422HorEdge_H264_8u_C1IR, (
- const IppiFilterDeblock_8u * pDeblockInfo))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateLuma_H264_8u_C1R
- // ippiInterpolateLumaTop_H264_8u_C1R
- // ippiInterpolateLumaBottom_H264_8u_C1R
- //
- // ippiInterpolateLuma_H264_16u_C1R
- // ippiInterpolateLumaTop_H264_16u_C1R
- // ippiInterpolateLumaBottom_H264_16u_C1R
- //
- // Purpose:
- // Performs interpolation for motion estimation of the luma component.
- //
- // Parameters:
- // pSrc - pointer to the source,
- // srcStep - step of the source buffer in bytes
- // pDst - pointer to destination (should be 16-bytes aligned),
- // dstStep - step of the destination buffer in bytes,
- // dx, dy - fractional parts of the motion vector in
- // 1/4 pel units (0, 1, 2, or 3),
- // outPixels - Number of pixels by which the data specified by pSrc reaches over the
- // frame top boundary.
- // roiSize - flag that specifies the dimensions of
- // the ROI(could be 16, 8 or 4 in each dimension).
- //
- // or
- //
- // interpolateInfo - pointer on IppVCInterpolate_16u structure.
- // outPixels - Number of pixels by which the data specified by pSrc reaches over the
- // frame top boundary.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsBadArg dx or dy is out of range [0, 3]
- // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, or 4
- */
- IPPAPI(IppStatus, ippiInterpolateLuma_H264_8u_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s dx,
- Ipp32s dy,
- IppiSize roiSize))
- IPPAPI(IppStatus, ippiInterpolateLumaTop_H264_8u_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s dx,
- Ipp32s dy,
- Ipp32s outPixels,
- IppiSize roiSize))
- IPPAPI(IppStatus, ippiInterpolateLumaBottom_H264_8u_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s dx,
- Ipp32s dy,
- Ipp32s outPixels,
- IppiSize roiSize))
- IPPAPI(IppStatus, ippiInterpolateLuma_H264_16u_C1R, (
- const IppVCInterpolate_16u * interpolateInfo))
- IPPAPI(IppStatus, ippiInterpolateLumaTop_H264_16u_C1R, (
- const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
- IPPAPI(IppStatus, ippiInterpolateLumaBottom_H264_16u_C1R, (
- const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
- IPPAPI(IppStatus, ippiInterpolateBlock_H264_8u_P2P1R, (
- const Ipp8u *pSrc1,
- const Ipp8u *pSrc2,
- Ipp8u *pDst,
- Ipp32u uWidth,
- Ipp32u uHeight,
- Ipp32s pitch))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateLumaBlock_H264_8u_P1R
- //
- // ippiInterpolateLumaBlock_H264_16u_P1R
- //
- // Purpose:
- // Performs interpolation for motion estimation of the luminance component.
- //
- // Parameters:
- // interpolateInfo - pointer to a structure having interpolation parameters
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, or 4
- */
- IPPAPI(IppStatus, ippiInterpolateLumaBlock_H264_8u_P1R, (const IppVCInterpolateBlock_8u *interpolateInfo))
- IPPAPI(IppStatus, ippiInterpolateLumaBlock_H264_16u_P1R, (const IppVCInterpolateBlock_16u *interpolateInfo))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateChroma_H264_8u_C1R
- // ippiInterpolateChromaTop_H264_8u_C1R
- // ippiInterpolateChromaBottom_H264_8u_C1R
- //
- // ippiInterpolateChroma_H264_16u_C1R
- // ippiInterpolateChromaTop_H264_16u_C1R
- // ippiInterpolateChromaBottom_H264_16u_C1R
- //
- // Purpose:
- // Performs interpolation for motion estimation of the chroma component.
- //
- // Parameters:
- // pSrc - pointer to the source,
- // srcStep - step of the source buffer in bytes
- // pDst - pointer to destination
- // dstStep - step of the destination buffer in bytes,
- // dx, dy - fractional parts of the motion vector in
- // 1/8 pel units (0, 1, .., 7),
- // outPixels - Number of pixels by which the data specified by pSrc reaches over the
- // frame top boundary.
- // roiSiaze - flag that specifies the dimensions of
- // the ROI(could be 16, 8, 4 or 2 in each dimension).
- //
- // or
- //
- // interpolateInfo - pointer on IppVCInterpolate_16u structure.
- // outPixels - Number of pixels by which the data specified by pSrc reaches over the
- // frame top boundary.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsBadArg dx or dy is out of range [0,7]
- // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2
- */
- IPPAPI(IppStatus, ippiInterpolateChroma_H264_8u_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s dx,
- Ipp32s dy,
- IppiSize roiSize))
- IPPAPI(IppStatus, ippiInterpolateChromaTop_H264_8u_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s dx,
- Ipp32s dy,
- Ipp32s outPixels,
- IppiSize roiSize))
- IPPAPI(IppStatus, ippiInterpolateChromaBottom_H264_8u_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s dx,
- Ipp32s dy,
- Ipp32s outPixels,
- IppiSize roiSize))
- IPPAPI(IppStatus, ippiInterpolateChroma_H264_16u_C1R, (
- const IppVCInterpolate_16u * interpolateInfo))
- IPPAPI(IppStatus, ippiInterpolateChromaTop_H264_16u_C1R, (
- const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
- IPPAPI(IppStatus, ippiInterpolateChromaBottom_H264_16u_C1R, (
- const IppVCInterpolate_16u * interpolateInfo, Ipp32s outPixels))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateChroma_H264_8u_C2P2R
- //
- // Purpose:
- // The function performs interpolation for motion estimation of the chrominance
- // component according H.264 standart. Clone of ippiInterpolateChroma_H264_8u_C1R,
- // but source image is chominance part of NV12 plane
- // NV12 Plane
- // YY YY YY YY
- // YY YY YY YY
- // UV UV UV UV - chominance part of NV12 plane.
- //
- // Parameters:
- // pSrcUV - pointer to the source (chrominance part of NV12 plane).
- // srcStep - step of the source buffer in bytes
- // pDstU - the pointer to the destination buffer for interpolated U coefficients
- // pDstV - the pointer to the destination buffer for interpolated V coefficients
- // dstStep - step of the destination U & V buffers in bytes,
- // dx, dy - fractional parts of the motion vector in
- // 1/8 pel units (0, 1, .., 7),
- // outPixels - Number of pixels by which the data specified by pSrc reaches over the
- // frame top boundary.
- // roi - value that specifies the dimensions of
- // the ROI(could be 16, 8, 4 or 2 in each dimension).
- */
- IPPAPI(IppStatus, ippiInterpolateChroma_H264_8u_C2P2R, (
- const Ipp8u *pSrcUV,
- Ipp32s srcStep,
- Ipp8u *pDstU,
- Ipp8u *pDstV,
- Ipp32s dstStep,
- Ipp32s dx,
- Ipp32s dy,
- IppiSize roi))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateChromaBlock_H264_8u_P2R
- //
- // ippiInterpolateChromaBlock_H264_16u_P2R
- //
- // Purpose:
- // Performs interpolation for motion estimation of the chrominance component.
- //
- // Parameters:
- // interpolateInfo - pointer to a structure having interpolation parameters
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2
- */
- IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_8u_P2R, (const IppVCInterpolateBlock_8u *interpolateInfo))
- IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_16u_P2R, (const IppVCInterpolateBlock_16u *interpolateInfo))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateChromaBlock_H264_8u_C2P2R
- //
- // Purpose:
- // The function performs interpolation for motion estimation of the chrominance
- // component according H.264 standart. Clone of ippiInterpolateChromaBlock_H264_8u_P2R,
- // but source image is chominance part of NV12 plane.
- // NV12 Plane
- // YY YY YY YY
- // YY YY YY YY
- // UV UV UV UV - chominance part of NV12 plane.
- //
- // Parameters:
- // interpolateInfo - pointer to a structure having interpolation parameters
- // Note:
- // (in the IppVCInterpolateBlock_8u structure)
- // pSrc[0] the pointer to the source block ( chrominance part of NV12 plane).
- // pSrc[1] ignored.
- // 0...UV UV UV UV
- // 1...UV UV UV UV
- // ...
- // 4...UV UV UV UV
- //
- // pDst[0] = pDstU - the pointer to the destination buffer for interpolated U coefficients.
- // pDst[1] = pDstV - the pointer to the destination buffer for interpolated V coefficients.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsSizeErr roi.width or roi.height is not equal to 16, 8, 4 or 2
- */
- IPPAPI(IppStatus, ippiInterpolateChromaBlock_H264_8u_C2P2R, (const IppVCInterpolateBlock_8u *interpolateInfo))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiWeightedAverage_H264_8u_C1IR
- //
- // Purpose:
- // Averages two blocks with weights (for weighted bi-directional
- // predictions) in accordance with 8.4.2.3.2 of the H.264 standard.
- // dst = Clip( ( w1*src1 + w2*src2 + (1<<(shift-1)) )>>shift + offset )
- //
- // Parameters:
- // pSrc1 - pointer to 1st source (output of preceding functions),
- // pSrc2Dst - pointer to 2nd source and result
- // srcDstStep - step value in bytes,
- // weight1, weight2 - weights,
- // shift - shift,
- // offset - offset,
- // roiSize - flag that specifies the dimensions of the ROI
- // (could be 16, 8 or 4 in each dimension).
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsStepErr srcDstStep is less than roi.width
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiWeightedAverage_H264_8u_C1IR, (
- const Ipp8u* pSrc1,
- Ipp8u* pSrc2Dst,
- Ipp32s srcDstStep,
- Ipp32s weight1,
- Ipp32s weight2,
- Ipp32s shift,
- Ipp32s offset,
- IppiSize roiSize))
- IPPAPI(IppStatus, ippiUniDirWeightBlock_H264_8u_C1R, (
- Ipp8u *pSrcDst,
- Ipp32u srcDstStep,
- Ipp32u ulog2wd,
- Ipp32s iWeight,
- Ipp32s iOffset,
- IppiSize roi
- ))
- IPPAPI(IppStatus, ippiUniDirWeightBlock_H264_8u_C1IR, (
- Ipp8u *pSrcDst,
- Ipp32u srcDstStep,
- Ipp32u ulog2wd,
- Ipp32s iWeight,
- Ipp32s iOffset,
- IppiSize roi
- ))
- IPPAPI(IppStatus, ippiBiDirWeightBlock_H264_8u_P2P1R,(
- const Ipp8u *pSrc1,
- const Ipp8u *pSrc2,
- Ipp8u *pDst,
- Ipp32u srcStep,
- Ipp32u dstStep,
- Ipp32u ulog2wd,
- Ipp32s iWeight1,
- Ipp32s iOffset1,
- Ipp32s iWeight2,
- Ipp32s iOffset2,
- IppiSize roi
- ))
- IPPAPI(IppStatus, ippiBiDirWeightBlockImplicit_H264_8u_P2P1R, (
- const Ipp8u *pSrc1,
- const Ipp8u *pSrc2,
- Ipp8u *pDst,
- Ipp32u srcStep,
- Ipp32u dstStep,
- Ipp32s iWeight1,
- Ipp32s iWeight2,
- IppiSize roi
- ))
- IPPAPI(IppStatus, ippiBidir_H264_16u_P2P1R, (
- const IppVCBidir_16u * bidirInfo))
- IPPAPI(IppStatus, ippiBidirWeightImplicit_H264_16u_P2P1R, (
- const IppVCBidir_16u * bidirInfo,
- Ipp32s iWeight1,
- Ipp32s iWeight2))
- IPPAPI(IppStatus, ippiBidirWeight_H264_16u_P2P1R, (
- const IppVCBidir_16u * bidirInfo,
- Ipp32u ulog2wd,
- Ipp32s iWeight1,
- Ipp32s iOffset1,
- Ipp32s iWeight2,
- Ipp32s iOffset2))
- IPPAPI(IppStatus, ippiUnidirWeight_H264_16u_IP2P1R, (
- Ipp16u *pSrcDst,
- Ipp32u srcDstStep,
- Ipp32u ulog2wd,
- Ipp32s iWeight,
- Ipp32s iOffset,
- IppiSize roi,
- Ipp32s bitDepth))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformPrediction_H264_8u16s_C1
- //
- // Purpose:
- //
- // Parameters:
- // pSrc - pointer to source,
- // step - source step in bytes,
- // pDst - pointer to destination
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiTransformPrediction_H264_8u16s_C1, (
- const Ipp8u *pSrc,
- Ipp32s step,
- Ipp16s *pDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDequantTransformResidual_SISP_H264_16s_C1I
- //
- // Purpose:
- //
- // Parameters:
- // pSrcDst - pointer to working data,
- // pPredictBlock -
- // pDC -
- // AC -
- // qp -
- // qs -
- // Switch -
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiDequantTransformResidual_SISP_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- const Ipp16s* pPredictBlock,
- const Ipp16s* pDC,
- Ipp32s AC,
- Ipp32s qp,
- Ipp32s qs,
- Ipp32s Switch))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformDequantChromaDC_SISP_H264_16s_C1I
- //
- // Purpose:
- // The function performs integer inverse transformation and
- // dequantization for 2x2 chroma DC coefficients.
- // It used for SI & SP frames.
- //
- // Parameters:
- // pSrcDst - pointer to working data,
- // pDCpredict -
- // qp -
- // qs -
- // Switch -
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiTransformDequantChromaDC_SISP_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- const Ipp16s* pDCpredict,
- Ipp32s qp,
- Ipp32s qs,
- Ipp32s Switch))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntraMB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Intra Luma macroblock
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current MB which will be reconstructed
- // srcdstYStep - plane step
- // pMBIntraTypes - pointer to intra types for each subblock
- // cbp4x4 - coded block pattern
- // QP - quantizer
- // edgeType - MB eadge type
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiReconstructLumaIntraMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcdstYStep,
- const IppIntra4x4PredMode_H264 *pMBIntraTypes,
- const Ipp32u cbp4x4,
- const Ipp32u QP,
- const Ipp8u edgeType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructChromaInterMB_H264_16s8u_P2R
- //
- // Purpose:
- // Reconstruct Inter Chroma macroblock
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstUPlane - pointer to current U plane which will be reconstructed
- // pSrcDstVPlane - pointer to current V plane which will be reconstructed
- // srcdstUVStep - plane step
- // cbp4x4 - coded block pattern
- // ChromaQP - chroma quantizer
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiReconstructChromaInterMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- const Ipp32u srcdstStep,
- const Ipp32u cbp4x4,
- const Ipp32u ChromaQP))
- IPPAPI(IppStatus, ippiReconstructLumaIntraHalfMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcdstYStep,
- IppIntra4x4PredMode_H264 *pMBIntraTypes,
- Ipp32u cbp4x2,
- Ipp32u QP,
- Ipp8u edgeType))
- IPPAPI(IppStatus, ippiReconstructChromaIntraHalfsMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32u srcdstUVStep,
- IppIntraChromaPredMode_H264 intra_chroma_mode,
- Ipp32u cbp4x4,
- Ipp32u ChromaQP,
- Ipp8u edge_type_top,
- Ipp8u edge_type_bottom))
- IPPAPI(IppStatus, ippiReconstructChromaIntraHalvesMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32u srcdstUVStep,
- IppIntraChromaPredMode_H264 intra_chroma_mode,
- Ipp32u cbp4x4,
- Ipp32u ChromaQP,
- Ipp8u edge_type_top,
- Ipp8u edge_type_bottom))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructChromaIntraMB_H264_16s8u_P2R
- //
- // Purpose:
- // Reconstruct Intra Chroma macroblock
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstUPlane - pointer to current U plane which will be reconstructed
- // pSrcDstVPlane - pointer to current V plane which will be reconstructed
- // srcdstUVStep - plane step
- // intra_chroma_mode - intra mode
- // cbp4x4 - coded block pattern
- // ChromaQP - chroma quantizer
- // edge_type - edge type
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiReconstructChromaIntraMB_H264_16s8u_P2R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- const Ipp32u srcdstUVStep,
- const IppIntraChromaPredMode_H264 intra_chroma_mode,
- const Ipp32u cbp4x4,
- const Ipp32u ChromaQP,
- const Ipp8u edge_type))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaInterMB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Inter Luma macroblock
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // srcdsYStep - plane step
- // cbp4x4 - coded block pattern
- // QP - quantizer
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiReconstructLumaInterMB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32u srcdstYStep,
- Ipp32u cbp4x4,
- Ipp32s QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntra16x16MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Intra 16x16 Luma macroblock
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // srcdstYStep - plane step
- // intra_luma_mode - intra mode
- // cbp4x4 - coded block pattern
- // QP - quantizer
- // edge_type - edge type
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiReconstructLumaIntra16x16MB_H264_16s8u_C1R, (Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32u srcdstYStep,
- const IppIntra16x16PredMode_H264 intra_luma_mode,
- const Ipp32u cbp4x4,
- const Ipp32u QP,
- const Ipp8u edge_type))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntra_16x16MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Intra 16x16 Luma macroblock for high profile
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // srcdstYStep - plane step
- // intra_luma_mode - intra mode
- // cbp4x4 - coded block pattern
- // QP - quantizer
- // edge_type - edge type
- // pQuantTable - pointer to quantization table
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructLumaIntra_16x16MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32u srcdstYStep,
- IppIntra16x16PredMode_H264 intra_luma_mode,
- Ipp32u cbp4x4,
- Ipp32u QP,
- Ipp8u edge_type,
- const Ipp16s *pQuantTable,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntra4x4MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Intra 4x4 Luma macroblock for high profile
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // srcdstYStep - plane step
- // pMBIntraTypes - pointer to intra types for each subblock
- // cbp4x4 - coded block pattern
- // QP - quantizer
- // edge_type - edge type
- // pQuantTable - pointer to quantization table
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructLumaIntra4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcdstYStep,
- IppIntra4x4PredMode_H264 *pMBIntraTypes,
- Ipp32u cbp4x4,
- Ipp32u QP,
- Ipp8u edgeType,
- const Ipp16s *pQuantTable,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaInter4x4MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Inter 4x4 Luma macroblock for high profile
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // srcdstYStep - plane step
- // cbp4x4 - coded block pattern
- // QP - quantizer
- // pQuantTable - pointer to quantization table
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructLumaInter4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32u srcdstYStep,
- Ipp32u cbp4x4,
- Ipp32s QP,
- const Ipp16s *pQuantTable,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructChromaInter4x4MB_H264_16s8u_P2R
- //
- // Purpose:
- // Reconstruct Inter Chroma 4x4 macroblock for high profile
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstUPlane - pointer to current U plane which will be reconstructed
- // pSrcDstVPlane - pointer to current V plane which will be reconstructed
- // srcdstUVStep - plane step
- // cbp4x4 - coded block pattern
- // chromaQPU - chroma quantizer for U plane
- // chromaQPV - chroma quantizer for V plane
- // edge_type - edge type
- // pQuantTableU - pointer to quantization table for U plane
- // pQuantTableV - pointer to quantization table for V plane
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructChromaInter4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32u srcdstUVStep,
- Ipp32u cbp4x4,
- Ipp32u chromaQPU,
- Ipp32u chromaQPV,
- const Ipp16s *pQuantTableU,
- const Ipp16s *pQuantTableV,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R
- //
- // Purpose:
- // Reconstruct Intra Chroma 4x4 macroblock for high profile
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstUPlane - pointer to current U plane which will be reconstructed
- // pSrcDstVPlane - pointer to current V plane which will be reconstructed
- // srcdstUVStep - plane step
- // intra_chroma_mode - intra mode
- // cbp4x4 - coded block pattern
- // edge_type - edge type
- // chromaQPU - chroma quantizer for U plane
- // chromaQPV - chroma quantizer for V plane
- // pQuantTableU - pointer to quantization table for U plane
- // pQuantTableV - pointer to quantization table for V plane
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
- //
- // Notes:
- */
- IPPAPI(IppStatus, ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32u srcdstUVStep,
- IppIntraChromaPredMode_H264 intra_chroma_mode,
- Ipp32u cbp4x4,
- Ipp32u chromaQPU,
- Ipp32u chromaQPV,
- Ipp8u edge_type,
- const Ipp16s *pQuantTableU,
- const Ipp16s *pQuantTableV,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntra8x8MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Intra 8x8 Luma macroblock for high profile
- //
- // Parameters:
- // ppSrcCoeff - pointer to 8x8 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // srcdstYStep - plane step
- // pMBIntraTypes - pointer to intra types for each subblock
- // cbp8x8 - coded block pattern
- // QP - quantizer
- // edge_type - edge type
- // pQuantTable - pointer to quantization table
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructLumaIntra8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcdstYStep,
- IppIntra8x8PredMode_H264 *pMBIntraTypes,
- Ipp32u cbp8x8,
- Ipp32u QP,
- Ipp8u edgeType,
- const Ipp16s *pQuantTable,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaInter8x8MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Inter 8x8 Luma macroblock for high profile
- //
- // Parameters:
- // ppSrcCoeff - pointer to 8x8 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // srcdstYStep - plane step
- // cbp8x8 - coded block pattern
- // QP - quantizer
- // pQuantTable - pointer to quantization table
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructLumaInter8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32u srcdstYStep,
- Ipp32u cbp8x8,
- Ipp32s QP,
- const Ipp16s *pQuantTable,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntraHalf4x4MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Intra 4x4 Luma macroblock for high profile in MBAFF mode
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // pMBIntraTypes - pointer to intra types for each subblock
- // cbp4x2 - coded block pattern
- // QP - quantizer
- // edge_type - edge type
- // pQuantTable - pointer to quantization table
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructLumaIntraHalf4x4MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcdstYStep,
- IppIntra4x4PredMode_H264 *pMBIntraTypes,
- Ipp32u cbp4x2,
- Ipp32u QP,
- Ipp8u edgeType,
- const Ipp16s *pQuantTable,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntraHalf8x8MB_H264_16s8u_C1R
- //
- // Purpose:
- // Reconstruct Intra 8x8 Luma macroblock for high profile in MBAFF mode
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstYPlane - pointer to current Y plane which will be reconstructed
- // pMBIntraTypes - pointer to intra types for each subblock
- // cbp8x2 - coded block pattern
- // QP - quantizer
- // edge_type - edge type
- // pQuantTable - pointer to quantization table
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiReconstructLumaIntraHalf8x8MB_H264_16s8u_C1R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcdstYStep,
- IppIntra8x8PredMode_H264 *pMBIntraTypes,
- Ipp32u cbp8x2,
- Ipp32u QP,
- Ipp8u edgeType,
- const Ipp16s *pQuantTable,
- Ipp8u bypass_flag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructChromaIntra4x4MB_H264_16s8u_P2R
- //
- // Purpose:
- // Reconstruct Intra Chroma 4x4 macroblock for high profile in MBAFF mode
- //
- // Parameters:
- // ppSrcCoeff - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pSrcDstUPlane - pointer to current U plane which will be reconstructed
- // pSrcDstVPlane - pointer to current V plane which will be reconstructed
- // srcdstUVStep - plane step
- // intra_chroma_mode - intra mode
- // cbp4x4 - coded block pattern
- // edge_type_top - edge type top
- // edge_type_bottom - edge type bottom
- // chromaQPU - chroma quantizer for U plane
- // chromaQPV - chroma quantizer for V plane
- // pQuantTableU - pointer to quantization table for U plane
- // pQuantTableV - pointer to quantization table for V plane
- // bypass_flag - enable lossless coding when qpprime_y is zero
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrcDst is NULL
- // ippStsOutOfRangeErr ChromaQP is less than 0 or greater than 39
- //
- // Notes:
- */
- IPPAPI(IppStatus, ippiReconstructChromaIntraHalfs4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32u srcdstUVStep,
- IppIntraChromaPredMode_H264 intra_chroma_mode,
- Ipp32u cbp4x4,
- Ipp32u chromaQPU,
- Ipp32u chromaQPV,
- Ipp8u edge_type_top,
- Ipp8u edge_type_bottom,
- const Ipp16s *pQuantTableU,
- const Ipp16s *pQuantTableV,
- Ipp8u bypass_flag))
- IPPAPI(IppStatus, ippiReconstructChromaIntraHalves4x4MB_H264_16s8u_P2R, (Ipp16s **ppSrcDstCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32u srcdstUVStep,
- IppIntraChromaPredMode_H264 intra_chroma_mode,
- Ipp32u cbp4x4,
- Ipp32u chromaQPU,
- Ipp32u chromaQPV,
- Ipp8u edge_type_top,
- Ipp8u edge_type_bottom,
- const Ipp16s *pQuantTableU,
- const Ipp16s *pQuantTableV,
- Ipp8u bypass_flag))
- IPPAPI(IppStatus, ippiReconstructChromaIntra4x4_H264High_32s16u_IP2R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
- IppIntraChromaPredMode_H264 intraChromaMode,
- Ipp32u edgeType))
- IPPAPI(IppStatus, ippiReconstructChromaIntraHalf4x4_H264High_32s16u_IP2R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
- IppIntraChromaPredMode_H264 intraChromaMode,
- Ipp32u edgeTypeTop,
- Ipp32u edgeTypeBottom))
- IPPAPI(IppStatus, ippiReconstructChromaInter4x4_H264High_32s16u_IP2R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo[2]))
- IPPAPI(IppStatus, ippiReconstructChroma422Intra4x4_H264High_32s16u_IP2R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
- IppIntraChromaPredMode_H264 intraChromaMode,
- Ipp32u edgeType,
- Ipp32u levelScaleDCU,
- Ipp32u levelScaleDCV))
- IPPAPI(IppStatus, ippiReconstructChroma422IntraHalf4x4_H264High_32s16u_IP2R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
- IppIntraChromaPredMode_H264 intraChromaMode,
- Ipp32u edgeTypeTop,
- Ipp32u edgeTypeBottom,
- Ipp32u levelScaleDCU,
- Ipp32u levelScaleDCV))
- IPPAPI(IppStatus, ippiReconstructChroma422Inter4x4_H264High_32s16u_IP2R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo[2],
- Ipp32u levelScaleDCU,
- Ipp32u levelScaleDCV))
- IPPAPI(IppStatus, ippiReconstructLumaIntra4x4_H264High_32s16u_IP1R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo,
- const IppIntra4x4PredMode_H264 *pMBIntraTypes,
- Ipp32s edgeType))
- IPPAPI(IppStatus, ippiReconstructLumaIntraHalf4x4_H264High_32s16u_IP1R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo,
- const IppIntra4x4PredMode_H264 *pMBIntraTypes,
- Ipp32u edgeType))
- IPPAPI(IppStatus, ippiReconstructLumaIntra8x8_H264High_32s16u_IP1R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo,
- IppIntra8x8PredMode_H264 *pMBIntraTypes,
- Ipp32u edgeType))
- IPPAPI(IppStatus, ippiReconstructLumaIntraHalf8x8_H264High_32s16u_IP1R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo,
- IppIntra8x8PredMode_H264 *pMBIntraTypes,
- Ipp32u edgeType))
- IPPAPI(IppStatus, ippiReconstructLumaIntra16x16_H264High_32s16u_IP1R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo,
- IppIntra16x16PredMode_H264 intraLumaMode,
- Ipp32u edgeType))
- IPPAPI(IppStatus, ippiReconstructLumaInter4x4_H264High_32s16u_IP1R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo))
- IPPAPI(IppStatus, ippiReconstructLumaInter8x8_H264High_32s16u_IP1R, (
- const IppiReconstructHighMB_32s16u * pReconstructInfo))
- IPPAPI(IppStatus, ippiReconstructChroma422Intra4x4_H264High_16s8u_IP2R, (
- const IppiReconstructHighMB_16s8u * pReconstructInfo[2],
- IppIntraChromaPredMode_H264 intraChromaMode,
- Ipp32u edgeType,
- Ipp32u levelScaleDCU,
- Ipp32u levelScaleDCV))
- IPPAPI(IppStatus, ippiReconstructChroma422IntraHalf4x4_H264High_16s8u_IP2R, (
- const IppiReconstructHighMB_16s8u * pReconstructInfo[2],
- IppIntraChromaPredMode_H264 intraChromaMode,
- Ipp32u edgeTypeTop,
- Ipp32u edgeTypeBottom,
- Ipp32u levelScaleDCU,
- Ipp32u levelScaleDCV))
- IPPAPI(IppStatus, ippiReconstructChroma422Inter4x4_H264High_16s8u_IP2R, (
- const IppiReconstructHighMB_16s8u * pReconstructInfo[2],
- Ipp32u levelScaleDCU,
- Ipp32u levelScaleDCV))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateBlock_H264_8u_P3P1R
- //
- // Purpose: interpolation block nHeight x nWidth
- //
- //
- // Parameters:
- // pSrc0 - pointer to first source
- // pSrc1 - pointer to second source
- // pDst - pointer to destination
- // nWidth - block width
- // nHeight - block height
- // iPitchSrc0 - first source pitch
- // iPitchSrc1 - second source pitch
- // iPitchDst - destination pitch
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc0 or pSrc1 or pDst is NULL
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiInterpolateBlock_H264_8u_P3P1R, (
- const Ipp8u *pSrc1,
- const Ipp8u *pSrc2,
- Ipp8u *pDst,
- Ipp32u uWidth,
- Ipp32u uHeight,
- Ipp32s iPitchSrc1,
- Ipp32s iPitchSrc2,
- Ipp32s iPitchDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiBiDirWeightBlock_H264_8u_P3P1R
- //
- // Purpose: Apply specified weighting and offset to all samples of the blocks,
- // and combine them.
- // Sw = clip( (S0*weight0 + S1*weight1 + round) >> (ulog2wd+1) +
- // ((offset0 + offset1 + 1)>>1) )
- //
- // Parameters:
- // pSrc1 - pointer to first source
- // pSrc2 - pointer to second source
- // pDst - pointer to destination
- // nWidth - block width
- // nHeight - block height
- // nSrcPitch1 - first source pitch
- // nSrcPitch2 - second source pitch
- // nDstPitch - destination pitch
- // ulog2wd - log2 weight denominator
- // iWeight1 - weight coefficient for first source
- // iOffset1 - offset for first source
- // iWeight2 - weight coefficient for second source
- // iOffset2 - offset for second source
- // roi - block size
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc1 or pSrc2 or pDst is NULL
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiBiDirWeightBlock_H264_8u_P3P1R,( const Ipp8u *pSrc1,
- const Ipp8u *pSrc2,
- Ipp8u *pDst,
- Ipp32u nSrcPitch1,
- Ipp32u nSrcPitch2,
- Ipp32u nDstPitch,
- Ipp32u ulog2wd,
- Ipp32s iWeight1,
- Ipp32s iOffset1,
- Ipp32s iWeight2,
- Ipp32s iOffset2,
- IppiSize roi
- ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiBiDirWeightBlockImplicit_H264_8u_P3P1R
- //
- // Purpose: Implicit bidir prediction weighting using simplified weighting with
- // no offsets.
- // Sw = clip((S0*weight0 + S1*weight1 + 32) >> 6))
- //
- // Parameters:
- // pDst - pointer to destination
- // nWidth - block width
- // nHeight - block height
- // nSrcPitch1 - first source pitch
- // nSrcPitch2 - second source pitch
- // nDstPitch - destination pitch
- // iWeight1 - weight coefficient for first source
- // iWeight2 - weight coefficient for second source
- // roi - block size
- //
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pSrc0 or pSrc1 or pDst is NULL
- // Notes:
- //
- */
- IPPAPI(IppStatus, ippiBiDirWeightBlockImplicit_H264_8u_P3P1R,(const Ipp8u *pSrc1,
- const Ipp8u *pSrc2,
- Ipp8u *pDst,
- Ipp32u nSrcPitch1,
- Ipp32u nSrcPitch2,
- Ipp32u nDstPitch,
- Ipp32s iWeight1,
- Ipp32s iWeight2,
- IppiSize roi
- ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCAVLCChromaDcCoeffs_H264_1u16s
- //
- // Purpose: Decode Chroma DC coefficients CAVLC coded
- //
- // Parameters:
- // ppBitStream - double pointer to current dword in bitstream(will be updated by function)
- // pOffset - pointer to offset in current dword(will be updated by function)
- // pNumCoeff - output number of coefficients
- // ppPosCoefbuf - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // pTblCoeffToken - chroma DC CoeffToken Table
- // ppTblTotalZerosCR - chroma DC TotalZeros Tables
- // ppTblRunBefore - RunBefore Tables
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr if a pointer is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiDecodeCAVLCChromaDcCoeffs_H264_1u16s, (Ipp32u **ppBitStream,
- Ipp32s *pOffset,
- Ipp16s *pNumCoeff,
- Ipp16s **ppDstCoeffs,
- const Ipp32s *pTblCoeffToken,
- const Ipp32s **ppTblTotalZerosCR,
- const Ipp32s **ppTblRunBefore))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeCAVLCCoeffs_H264_1u16s
- //
- // Purpose:
- // Decode any non Chroma DC coefficients CAVLC coded
- //
- // Parameters:
- // ppBitStream - double pointer to current dword in bitstream(will be updated by function)
- // pOffset - pointer to offset in current dword(will be updated by function)
- // pNumCoeff - output number of coefficients
- // ppPosCoefbuf - pointer to 4x4 block of coefficients, if it's non zero(will be update by function)
- // uVLCSelect - predictor on number of CoeffToken Table
- // uMaxNumCoeff - maximum coefficients in block(16 for Intra16x16, 15 for the rest)
- // pTblCoeffToken - CoeffToken Tables
- // ppTblTotalZeros - TotalZeros Tables
- // ppTblRunBefore - RunBefore Tables
- // pScanMatrix - inverse scan matrix for coefficients in block
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr if a pointer is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiDecodeCAVLCCoeffs_H264_1u16s, (Ipp32u **ppBitStream,
- Ipp32s *pOffset,
- Ipp16s *pNumCoeff,
- Ipp16s **ppDstCoeffs,
- Ipp32u uVLCSelect,
- Ipp16s uMaxNumCoeff,
- const Ipp32s **ppTblCoeffToken,
- const Ipp32s **ppTblTotalZeros,
- const Ipp32s **ppTblRunBefore,
- const Ipp32s *pScanMatrix))
- IPPAPI(IppStatus, ippiDecodeExpGolombOne_H264_1u16s, (Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp16s *pDst,
- Ipp8u isSigned))
- IPPAPI(IppStatus, ippiDecodeExpGolombOne_H264_1u32s, (Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp32s *pDst,
- Ipp32s isSigned))
- IPPAPI(IppStatus,ippiDecodeCAVLCChroma422DcCoeffs_H264_1u16s,(Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp16s *pNumCoeff,
- Ipp16s **ppDstCoeffs,
- const Ipp32s *pTblCoeffToken,
- const Ipp32s **ppTblTotalZerosCR,
- const Ipp32s **ppTblRunBefore))
- IPPAPI(IppStatus, ippiDecodeCAVLCCoeffs_H264_1u32s, (Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp16s *pNumCoeff,
- Ipp32s **ppDstCoeffs,
- Ipp32u uVLCSelect,
- Ipp16s uMaxNumCoeff,
- const Ipp32s **ppTblCoeffToken,
- const Ipp32s **ppTblTotalZeros,
- const Ipp32s **ppTblRunBefore,
- const Ipp32s *pScanMatrix))
- IPPAPI(IppStatus, ippiDecodeCAVLCChromaDcCoeffs_H264_1u32s, (Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp16s *pNumCoeff,
- Ipp32s **ppDstCoeffs,
- const Ipp32s *pTblCoeffToken,
- const Ipp32s **ppTblTotalZerosCR,
- const Ipp32s **ppTblRunBefore))
- IPPAPI(IppStatus, ippiDecodeCAVLCChroma422DcCoeffs_H264_1u32s,(Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp16s *pNumCoeff,
- Ipp32s **ppDstCoeffs,
- const Ipp32s *pTblCoeffToken,
- const Ipp32s **ppTblTotalZerosCR,
- const Ipp32s **ppTblRunBefore))
- IPPAPI(IppStatus, ippiExpandPlane_H264_8u_C1R, ( Ipp8u *StartPtr,
- Ipp32u uFrameWidth,
- Ipp32u uFrameHeight,
- Ipp32u uPitch,
- Ipp32u uPels,
- IppvcFrameFieldFlag uFrameFieldFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // H.264 Video Encoder Functions
- //////////////////////////////////////////////////////////////////////////// */
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsCAVLC_H264_16s
- // ippiEncodeCoeffsCAVLC_H264_32s
- //
- // Purpose: Calculates characteristics of 4X4 block for CAVLC encoding.
- //
- // Parameters:
- // pSrc Pointer to 4x4 block - array of size 16.
- // AC Flag, equal to zero in the cases of Luma Intra 16x16 AC block
- // or Chroma AC block, and is not equal to zero otherwise.
- // pScanMatrix Scan matrix for coefficients in block (array of size 16).
- // Count Position of the last non-zero block coefficient in the scanning sequence.
- // Traling_One The number of trailing ones transform coefficient levels
- // in a range[0;3]. This argument is calculated by the function.
- // Traling_One_Signs Code that describes signs of trailing ones.
- // (Trailing_One 1 - i)-bit in this code corresponds to a sign
- // of i-trailing one in the current block. In this code 1 indicates
- // negative value, 0 positive value. This argument is calculated
- // by the function.
- // NumOutCoeffs The number of non-zero coefficients in block (including trailing
- // ones). This argument is calculated by the function.
- // TotalZeros The number of zero coefficients in block (except trailing zeros). This
- // argument is calculated by the function.
- // pLevels Pointer to an array of size 16 that contains non-zero quantized
- // coefficients of the current block (except trailing ones) in reverse scan
- // matrix order.
- // pRuns Pointer to an array of size 16 that contains runs before non-zero
- // quantized coefficients (including trailing ones) of the current block in
- // reverse scan matrix order (except run before the first non-zero
- // coefficient in block, which can be calculated using TotalZeros).
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr if a pointer is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsCAVLC_H264_16s, (
- const Ipp16s *pSrc,
- Ipp8u AC,
- const Ipp32s *pScanMatrix,
- Ipp8u Count,
- Ipp8u *Trailing_Ones,
- Ipp8u *Trailing_One_Signs,
- Ipp8u *NumOutCoeffs,
- Ipp8u *TotalZeros,
- Ipp16s *Levels,
- Ipp8u *Runs))
- IPPAPI(IppStatus, ippiEncodeCoeffsCAVLC_H264_32s ,(
- const Ipp32s* pSrc,
- Ipp32s AC,
- const Ipp32s* pScanMatrix,
- Ipp32s Count,
- Ipp8u* Trailing_Ones,
- Ipp8u* Trailing_One_Signs,
- Ipp8u* NumOutCoeffs,
- Ipp8u* TotalZeroes,
- Ipp32s* Levels,
- Ipp8u* Runs))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeChromaDcCoeffsCAVLC_H264_16s
- //
- // Purpose: Calculates characteristics of 2X2 Chroma DC for CAVLC encoding.
- //
- // Parameters:
- // pSrc Pointer to 2x2 block - array of size 4.
- // Traling_One The number of trailing ones transform coefficient levels
- // in a range[0;3]. This argument is calculated by the function.
- // Traling_One_Signs Code that describes signs of trailing ones.
- // (Trailing_One 1 - i)-bit in this code corresponds to a sign
- // of i-trailing one in the current block. In this code 1 indicates
- // negative value, 0 positive value. This argument is calculated
- // by the function.
- // NumOutCoeffs The number of non-zero coefficients in block (including trailing
- // ones). This argument is calculated by the function.
- // TotalZeros The number of zero coefficients in block (except trailing zeros). This
- // argument is calculated by the function.
- // pLevels Pointer to an array of size 4 that contains non-zero quantized
- // coefficients of the current block (except trailing ones) in reverse scan
- // matrix order.
- // pRuns Pointer to an array of size 4 that contains runs before non-zero
- // quantized coefficients (including trailing ones) of the current block in
- // reverse scan matrix order (except run before the first non-zero
- // coefficient in block, which can be calculated using TotalZeros).
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr if a pointer is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiEncodeChromaDcCoeffsCAVLC_H264_16s, (
- const Ipp16s *pSrc,
- Ipp8u *pTrailingOnes,
- Ipp8u *pTrailingOneSigns,
- Ipp8u *pNumOutCoeffs,
- Ipp8u *pTotalZeros,
- Ipp16s *pLevels,
- Ipp8u *pRuns))
- /*
- // Name:
- // ippiTransformQuantChromaDC_H264_16s_C1I
- //
- // Purpose: This function performs forward transform (if it's necessary) and quantization
- // for 2x2 DC Croma block
- //
- // Parameters:
- // pSrcDst Pointer to 2x2 chroma DC block - source & destination array of size 4
- // pTBlock Pointer to 2x2 transformed chroma DC block - source or destination array of size 4
- // QPCroma Quantization parameter for chroma. It's in range [0,39]
- // NumLevels Pointer to value, which contains: a negative value of a number of non-zero
- // elements in block after quantization (in the case of the first quantized element
- // in block is not equal zero)
- // a number of non-zero elements in block after quantization (in the case of the
- // first quantized element in block is equal zero)
- // This value is calculated by function.
- // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
- // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0
- // if transforming process is not used.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QPCroma >39
- // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE
- */
- IPPAPI(IppStatus, ippiTransformQuantChromaDC_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp16s* pTBlock,
- Ipp32s QPCroma,
- Ipp8s* pNumLevels,
- Ipp8u intra,
- Ipp8u needTransform))
- /*
- // Name:
- // ippiTransformQuantLumaDC_H264_16s_C1I
- //
- // Purpose:
- // This function performs forward transform (if it's necessary) and quantization
- // for 4x4 DC Luma block.
- //
- // Parameters:
- // pSrcDst Pointer to 4x4 luma DC block - source & destination array of size 4
- // pTBlock Pointer to 4x4 transformed luma DC block - source or destination array of size 4
- // QP Quantization parameter for luma. It's in range [0,51]
- // NumLevels Pointer to value, which contains:
- // a negative value of a number of non-zero elements in block after
- // quantization (in the case of the first quantized element in block is not equal zero)
- // a number of non-zero elements in block after quantization (in the case
- // of the first quantized element in block is equal zero)
- // This value is calculated by function.
- // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
- // pScanMatrix Scan matrix for coefficients in block (array of size 16)
- // LastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function.
- //
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 or QP<0
- // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE
- */
- IPPAPI(IppStatus, ippiTransformQuantLumaDC_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp16s* pTBlock,
- Ipp32s QP,
- Ipp8s* pNumLevels,
- Ipp8u needTransform,
- const Ipp16s* pScanMatrix,
- Ipp8u* pLastCoeff))
- /*
- // Name:
- // ippiTransformQuantResidual_H264_16s_C1I
- //
- // Purpose:
- // This function performs forward transform and quantization for 4x4 residual block.
- //
- // Parameters:
- // pSrcDst Pointer to 4x4 residual block - source & destination array of size 16
- // QP Quantization parameter for luma or for chroma. It's in range [0,51] or [0,39]
- // NumLevels Pointer to value, which contains:
- // a negative value of a number of non-zero elements in block after quantization
- // (in the case of the first quantized element in block is not equal zero)
- // a number of non-zero elements in block after quantization (in the case
- // of the first quantized element in block is equal zero)
- // This value is calculated by function.
- // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
- // pScanMatrix Scan matrix for coefficients in block (array of size 16)
- // LastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function.
- //
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 or QP<0
- // ippStsScaleRangeErr if any coefficient after quantization > MAX_CAVLC_LEVEL_VALUE
- */
- IPPAPI(IppStatus, ippiTransformQuantResidual_H264_16s_C1I , (
- Ipp16s* pSrcDst,
- Ipp32s QP,
- Ipp8s* pNumLevels,
- Ipp8u intra,
- const Ipp16s* pScanMatrix,
- Ipp8u* pLastCoeff))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiYCrCb411ToYCbCr422_5MBDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_16x4x5MB_DV_16s8u_P3C2R
- //
- // Purpose:
- // Convert a YCrCb411 macro blocks to the YCbCr422 macro blocks.
- // Reduce size of dst image in 1/2/4/8 times accordingly.
- //
- // Parameters:
- // pSrc array of pointers to the five source macro blocks
- // pDst array of pointers to the five destination macro blocks
- // dstStep step for the destination image
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pSrc pDst is NULL
- */
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5] ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_16x4x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstPitch ) )
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiYCrCb411ToYCbCr422_EdgeDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_ZoomOut2_EdgeDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_ZoomOut4_EdgeDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_ZoomOut8_EdgeDV_16s8u_P3C2R
- // ippiYCrCb411ToYCbCr422_8x8MB_DV_16s8u_P3C2R
- //
- // Purpose:
- // Converts a YCrCb411 macro block to the YCbCr422 macro block at the right edge of destination image.
- // Reduce size of dst image in 1/2/4/8 times accordingly.
- //
- // Parameters:
- // pSrc pointer to the source macro block
- // pDst pointer to the destination macro block
- // dstStep step for the destination image
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pSrc pDst is NULL
- */
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut2_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut4_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_ZoomOut8_EdgeDV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb411ToYCbCr422_8x8MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc, Ipp8u* pDst, int dstPitch ) )
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiYCrCb420ToYCbCr422_5MBDV_16s8u_P3C2R
- // ippiYCrCb420ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R
- // ippiYCrCb420ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R
- // ippiYCrCb420ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R
- // ippiYCrCb420ToYCbCr422_8x8x5MB_DV_16s8u_P3C2R
- //
- // Purpose:
- // Convert a YCrCb420 macro blocks to the YCbCr422 macro blocks.
- // Reduce size of dst image in 1/2/4/8 times accordingly.
- //
- // Parameters:
- // pSrc array of pointers to the five source macro blocks
- // pDst array of pointers to the five destination macro blocks
- // dstStep step for the destination image
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pSrc pDst is NULL
- */
- IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb420ToYCbCr422_8x8x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstPitch ) )
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiYCrCb422ToYCbCr422_5MBDV_16s8u_P3C2R
- // ippiYCrCb422ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R
- // ippiYCrCb422ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R
- // ippiYCrCb422ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R
- // ippiYCrCb422ToYCbCr422_8x4x5MB_DV_16s8u_P3C2R
- // ippiYCrCb422ToYCbCr422_10HalvesMB16x8_DV100_16s8u_P3C2R
- //
- // Purpose:
- // Convert a YCrCb422 macro blocks to the YCbCr422 macro blocks.
- // Reduce size of dst image in 1/2/4/8 times accordingly.
- //
- // Parameters:
- // pSrc array of pointers to the five source macro blocks
- // pDst array of pointers to the five destination macro blocks
- // dstStep step for the destination image
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pSrc pDst is NULL
- */
- IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut2_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut4_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ))
- IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_ZoomOut8_5MBDV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5] ))
- IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_8x4x5MB_DV_16s8u_P3C2R,(const Ipp16s* pSrc[5], Ipp8u* pDst[5], int dstStep ) )
- IPPAPI(IppStatus, ippiYCrCb422ToYCbCr422_10HalvesMB16x8_DV100_16s8u_P3C2R, (const Ipp16s* pSrc, Ipp8u* pDst[10], int dstStep ) )
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDeinterlaceFilterTriangle_8u_C1R
- //
- // Purpose:
- // This function deinterlaces video plane.
- // The function performs triangle filtering of the image to remove interlacing
- // flicker effect that arises when analogue interlaced TV data is
- // viewed on a computer monitor.
- //
- // Parameters:
- // pSrc Pointer to the source video plane.
- // srcStep Step through the source video plane.
- // pDst Pointer to the destination video plane.
- // dstStep Step through the destination video plane.
- // roiSize Size of ROI. Height should be greater than 3.
- // centerWeight Weight of filtered pixel, must lie within the range from 0 to 256.
- // layout Plane layout, required when the plane is only a part of the frame.
- // Takes the following values:
- // IPP_UPPER for the first slice
- // IPP_CENTER for the middle slices
- // IPP_LOWER for the last slice
- // IPP_LOWER && IPP_UPPER && IPP_CENTER for the image that is not sliced.
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
- // ippStsSizeErr Indicates an error when roiSize has a field with zero or negative value.
- // ippStsBadArgErr Indicates invalid argument.
- */
- IPPAPI(IppStatus, ippiDeinterlaceFilterTriangle_8u_C1R, (
- const Ipp8u* pSrc,
- Ipp32s srcStep,
- Ipp8u* pDst,
- Ipp32s dstStep,
- IppiSize roiSize,
- Ipp32u centerWeight,
- Ipp32u layout))
- /* /////////////////////////////////////////////////////////////////////////////
- // General Color Conversion
- ///////////////////////////////////////////////////////////////////////////// */
- /* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiCbYCr422ToYCbCr420Rotate_8u_C2P3R
- // Purpose: Converts a 2-channel YUY2 image to the I420(IYUV) image
- // Return:
- // ippStsNoErr Ok
- // ippStsNullPtrErr One or more pointers are NULL
- // ippStsSizeErr if srcRoi.width < 2 || srcRoi.height < 2
- // ippStsDoubleSize If srcRoi.width and srcRoi.height are not multiples of 2,
- // the function reduces the values to the nearest multiples of 2.
- // Arguments:
- // pSrc pointer to the source image
- // srcStep step for the source image
- // pDst array of pointers to the components of the destination image
- // dstStep array of steps values for every component
- // srcRoi region of interest of src image to be processed, in pixels,
- // and roi of dst image you must calculate.
- // rotation rotation control parameter; must be of
- // the following pre-defined values:
- // IPPVC_ROTATE_90CCW, IPPVC_ROTATE_90CW,
- // IPPVC_ROTATE_180 or IPPVC_ROTATE_DISABLE,
- */
- IPPAPI(IppStatus,ippiCbYCr422ToYCbCr420_Rotate_8u_C2P3R,(const Ipp8u* pSrc, int srcStep, IppiSize srcRoi,Ipp8u *pDst[3], int dstStep[3],
- int rotation ))
- IPPAPI(IppStatus,ippiCbYCr422ToYCbCr420_Rotate_8u_P3R,(const Ipp8u* pSrc[3], int srcStep[3], IppiSize srcRoi,Ipp8u *pDst[3], int dstStep[3],
- int rotation ))
- /* ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
- // Name: ippiResizeCCRotate_8u_C2R
- // Description: synthesizes a low-resolution preview image for
- // high-resolution video or still capture applications.
- // combines scale reduction(2:1,4:1 or 8:1), color space
- // conversion and rotation into a a single function
- // Input Arguments:
- // pSrc pointer to the source image. Input byte ordering is Cb Y Cr Y.
- // srcStep step for the source image
- // pDst pointer to the destination image
- // dstStep step for the destination image
- // srcRoi region of interest of src image to be processed, in pixels,
- // and roi of dst image you must calculate.
- // zoomFactor parameter, indicating downscale factor, takes values 2, 4 or 8 for 2:1,4:1,and 8:1 downscale respectively.
- // interpolation type of interpolation to
- // perform resampling of the input image
- // The following are currently supported:
- // IPPI_INTER_NN nearest neighbor interpolation
- // IPPI_INTER_LINEAR linear interpolation
- // colorConversion color conversion control parameter,
- // must be set to one of the following
- // pre-defined values:
- // IPPVC_CbYCr422ToBGR565
- // IPPVC_CbYCr422ToBGR565
- // rotation rotation control parameter,must be of
- // the following pre-defined values:
- // IPPVC_ROTATE_90CCW, IPPVC_ROTATE_90CW,
- // IPPVC_ROTATE_180 or IPPVC_ROTATE_DISABLE,
- // Output Arguments: pDst pointer to the start of the buffer
- // containing the, resized, color-converted,
- // and rotated output image.
- //
- // Returns:
- // ippStsNoErr Ok
- // ippStsNullPtrErr one or more pointers are NULL
- // ippStsSizeErr srcRoi.width < zoomFactor
- // ippStsSizeErr srcRoi.height < zoomFactor
- // ippStsInterpolationErr invalid values of the interpolation control parameter.
- // ippStsResizeFactorErr invalid values of the zoomFactor control parameter.
- // ippStsBadArgErr invalid values of the rotation control parameter.
- // ippStsDoubleSize if srcRoi.width and srcRoi.height are not multiples of 2,
- // the function reduces the values to the nearest multiples of 2.
- */
- IPPAPI(IppStatus, ippiResizeCCRotate_8u_C2R,(const Ipp8u* pSrc, int srcStep, IppiSize srcRoi,
- Ipp16u *pDst,int dstStep, int zoomFactor,int interpolation,int colorConversion,int rotation ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiGenScaleLevel8x8_H264_8u16s_D2
- //
- // Purpose:
- // Performs quantization including 8x8 transform normalization
- //
- // Parameters:
- // pSrcInvScaleMatrix - Pointer to an original inverse scaling matrix for 8x8 transform.
- // SrcStep - Step of the pSrcInvScaleMatrix in bytes.
- // pDstInvScaleMatrix - Pointer to a destination inverse scaling matrix -- array of size 64.
- // pDstScaleMatrix - Pointer to a destination forward scaling matrix - array of size 64.
- // Qp_rem - Reminder from an integer division of quantization parameter by 6.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- // ippStsQPErr Qp_rem is less than 0 or greater than 5
- //
- */
- IPPAPI(IppStatus, ippiGenScaleLevel8x8_H264_8u16s_D2, (
- const Ipp8u *pSrcInvScaleMatrix,
- int SrcStep,
- Ipp16s *pDstInvScaleMatrix,
- Ipp16s *pDstScaleMatrix,
- int Qp_rem))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformLuma8x8Fwd_H264_16s_C1I
- //
- // Purpose:
- // Performs forward 8x8 transform for a 8x8 Luma block without normalization.
- //
- // Parameters:
- // pSrcDst - pointer to the initial 8x8 Luma block and resultant coefficients
- // (array of size 64).
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiTransformLuma8x8Fwd_H264_16s_C1I, (Ipp16s *pSrcDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantLuma8x8_H264_16s_C1
- // ippiQuantLuma8x8_H264_32s_C1
- //
- // Purpose:
- // Performs quantization including 8x8 transform normalization
- //
- // Parameters:
- // pSrc - Pointer to Luma block coefficients - array of size 64.
- // pDst - Pointer to quantized and normalized coefficients -
- // array of size 64.
- // Qp6 - Quantization parameter divided by 6
- // Intra - Flag, 1 if the slice is intra and 0 otherwise.
- // pScanMatrix - Pointer to a scan matrix for the coefficients in the block (array
- // of size 64)
- // pScaleLevels - Pointer to a scale level matrix taking into account 8x8 transform
- // normalization.
- // pNumLevels - Pointer to a value which contains:
- // - a negative value of a number of non-zero elements in block after
- // quantization (when the first quantized element in block is not equal
- // to zero),
- // - a number of non-zero elements in block after quantization (when
- // the first quantized element in block is equal to zero).
- // pLastCoeff - Position of the last (in order of pScanMatrix) non-zero coefficient
- // in block after quantization. This value is calculated by the function.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- // ippStsQPErr Qp6 is less than 0 or greater than 8
- //
- // NOTE:
- // pSrc and pDst will usually point to the same memory region!
- */
- IPPAPI(IppStatus, ippiQuantLuma8x8_H264_16s_C1, (
- const Ipp16s *pSrc,
- Ipp16s *pDst,
- int Qp6,
- int Intra,
- const Ipp16s *pScanMatrix,
- const Ipp16s *pScaleLevels,
- int *pNumLevels,
- int *pLastCoeff))
- IPPAPI(IppStatus, ippiQuantLuma8x8_H264_32s_C1, (
- const Ipp32s* pSrc,
- Ipp32s* pDst,
- Ipp32s Qp6,
- Ipp32s Intra,
- const Ipp16s* pScanMatrix,
- const Ipp16s* pScaleLevels,
- Ipp32s* pNumLevels,
- Ipp32s* pLastCoeff))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantLuma8x8Inv_H264_16s_C1I
- // ippiQuantInvLuma8x8_H264_32s_C1I
- //
- // Purpose:
- // Performs dequantization including inverse 8x8 transform normalization
- //
- // Parameters:
- // pSrcDst - Pointer to a Luma block coefficients - source and destination
- // array of size 64.
- // Qp6 - Quantization parameter divided by 6
- // pInvLevelScale - Pointer to an inverse scale levels matrix.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- // ippStsQPErr Qp6 is less than 0 or greater than 8 or
- //
- */
- IPPAPI(IppStatus, ippiQuantLuma8x8Inv_H264_16s_C1I, (
- Ipp16s *pSrcDst,
- int Qp6,
- const Ipp16s *pInvLevelScale))
- IPPAPI(IppStatus, ippiQuantInvLuma8x8_H264_32s_C1I, (
- Ipp32s* pSrcDst,
- Ipp32s Qp6,
- const Ipp16s* pInvLevelScale))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformLuma8x8InvAddPred_H264_16s8u_C1R
- //
- // Purpose:
- // Performs inverse 8x8 transform for a 8x8 Luma block with subsequent intra
- // prediction or motion compensation, coefficients are assumed to be pre-normalized.
- //
- // Parameters:
- // pPred - pointer to the reference 8x8 block, which is used for intra
- // prediction or motion compensation.
- // PredStep - reference frame step in bytes.
- // pSrcDst - pointer to the initial coefficients and buffer for the computations
- // (8x8 block) - array of size 64.
- // pDst - pointer to the destination 8x8 block.
- // DstStep - destination frame step in bytes.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- //
- */
- IPPAPI(IppStatus, ippiTransformLuma8x8InvAddPred_H264_16s8u_C1R, (
- const Ipp8u *pPred,
- int PredStep,
- Ipp16s *pSrcDst,
- Ipp8u *pDst,
- int DstStep))
- /*///////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantWeightBlockInv_DV_16s_C1I
- //
- // Purpose:
- // The function performs de quantization and de weighting at one block according to DV standard.
- //
- // Parameters:
- // pSrcDs - pointer to the source & destination 8x8 block.
- // pQuantInvTable - pointer to an array that contains values of quantification table for the
- current block.
- // pWeightInvTable - Pointer to an array that contains values of weight table for the current block.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- //
- */
- IPPAPI(IppStatus, ippiQuantWeightBlockInv_DV_16s_C1I, (
- Ipp16s *pSrcDst,
- const Ipp16s *pQuantInvTable,
- const Ipp16s *pWeightInvTable))
- /*///////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantWeightBlockInv_DV100_16s_C1I
- //
- // Purpose:
- // The function performs de quantization and de weighting at one block according to DV100 standard.
- //
- // Parameters:
- // pSrcDs - pointer to the source & destination 8x8 block.
- // pWeightInvTable - Pointer to an array that contains values of weight table for the current block.
- // quantValue - value of quantization parameter for the current block.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- //
- */
- IPPAPI(IppStatus, ippiQuantWeightBlockInv_DV100_16s_C1I, (
- Ipp16s *pSrcDst,
- const Ipp16s *pWeightInvTable,
- Ipp32s quantValue))
- /*///////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDCT8x4x2To4x4Inv_DV_16s_C1I
- //
- // Purpose: The function performs inverse discrete cosines transform at 2x4x8 block. After
- // that create block 4x4: first, values in rows are average in pairs;
- // second, values in columns are average in pairs too. And we got new values
- // of block 4x4.
- // Values calculated for new 4x4 block stored in series (in a row) in memory.
- //
- //
- // Parameters:
- // pSrcDst - pointer to the source & destination 2x4x8 block.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- //
- */
- IPPAPI(IppStatus, ippiDCT8x4x2To4x4Inv_DV_16s_C1I, (
- Ipp16s *pSrcDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransform8x8Inv_VC1_16s_C1R
- // ippiTransform4x8Inv_VC1_16s_C1R
- // ippiTransform8x4Inv_VC1_16s_C1R
- // ippiTransform4x4Inv_VC1_16s_C1R
- // ippiTransform8x8Inv_VC1_16s_C1IR
- // ippiTransform4x8Inv_VC1_16s_C1IR
- // ippiTransform8x4Inv_VC1_16s_C1IR
- // ippiTransform4x4Inv_VC1_16s_C1IR
- //
- // Purpose:
- // Performs inverse transform of 8x8/4x8/8x4/4x4 block according to VC-1
- // standard
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- // srcSizeNZ The size of top-left rectangle which contains non-zero
- // coefficients
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiTransform8x8Inv_VC1_16s_C1R, (
- const Ipp16s *pSrc,
- int srcStep,
- Ipp16s *pDst,
- int dstStep,
- IppiSize srcSizeNZ))
- IPPAPI(IppStatus, ippiTransform4x4Inv_VC1_16s_C1R, (
- const Ipp16s *pSrc,
- int srcStep,
- Ipp16s *pDst,
- int dstStep,
- IppiSize srcSizeNZ))
- IPPAPI(IppStatus, ippiTransform8x4Inv_VC1_16s_C1R, (
- const Ipp16s *pSrc,
- int srcStep,
- Ipp16s *pDst,
- int dstStep,
- IppiSize srcSizeNZ))
- IPPAPI(IppStatus, ippiTransform4x8Inv_VC1_16s_C1R, (
- const Ipp16s *pSrc,
- int srcStep,
- Ipp16s *pDst,
- int dstStep,
- IppiSize srcSizeNZ))
- IPPAPI(IppStatus, ippiTransform8x8Inv_VC1_16s_C1IR, (
- Ipp16s *pSrcDst,
- int srcDstStep,
- IppiSize srcSizeNZ))
- IPPAPI(IppStatus, ippiTransform4x4Inv_VC1_16s_C1IR, (
- Ipp16s *pSrcDst,
- int srcDstStep,
- IppiSize srcSizeNZ))
- IPPAPI(IppStatus, ippiTransform8x4Inv_VC1_16s_C1IR, (
- Ipp16s *pSrcDst,
- int srcDstStep,
- IppiSize srcSizeNZ))
- IPPAPI(IppStatus, ippiTransform4x8Inv_VC1_16s_C1IR, (
- Ipp16s *pSrcDst,
- int srcDstStep,
- IppiSize srcSizeNZ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateQPBilinear_VC1_8u_C1R
- //
- // Purpose:
- // Performs bilinear quarter-pel interpolation for NxM block in
- // accordance with 8.3.6.5.1 of VC-1 standard
- //
- // Parameters:
- // pParams Pointer to structure which contains parameters for interpolation:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- // dx, dy Fractional parts of the motion vector in 1/4 pel units
- // (0, 1, 2, or 3).
- // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8, 16x16
- // roundControl Frame level rounding control value as describe in section
- // 8.3.7 of of VC-1 standard
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiInterpolateQPBilinear_VC1_8u_C1R, (
- const IppVCInterpolate_8u* pParams))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateQPBilinear_VC1_8u_C2R
- //
- // Purpose:
- // Performs bilinear quarter-pel interpolation for NxM block in
- // accordance with 8.3.6.5.1 of VC-1 standard for NV12 chroma format
- //
- // Parameters:
- // pParams Pointer to structure which contains parameters for interpolation:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- // dx, dy Fractional parts of the motion vector in 1/4 pel units
- // (0, 1, 2, or 3).
- // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8
- // roundControl Frame level rounding control value as describe in section
- // 8.3.7 of of VC-1 standard
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiInterpolateQPBilinear_VC1_8u_C2R, (
- const IppVCInterpolate_8u* pParams))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateICBilinearBlock_VC1_8u_C1R
- //
- // Purpose:
- // Performs intensity compensation and bilinear quarter-pel interpolation for motion estimation of the
- // luma or chroma component using entire motion vector.
- //
- // Parameters:
- // interpolateInfo Pointer to an instance of the structure holding interpolation
- // parameters.
- // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame)
- // srcStep step of the reference frame
- // pDst pointer to destination MB
- // dstStep step of destination buffer
- // sizeFrame dimensions of the reference image planes
- // sizeBlock dimensions of the block to be interpolated. Maximum size is 16 in all dimensions.
- // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector
- // pointVectorQuarterPix quarter part of MV
- // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
- // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field.
- // If both pointers are equal to 0, no then Intensity Compensation is applied for this field.
- // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
- // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field
- //
- // OppositePadding flag that specified padding correspondence between current frame and reference frame.
- // fieldPrediction flag that specified Prediction type for current MB.
- // 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.
- // isPredBottom flag that specified type of reference field in case of interlace reference picture.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiInterpolateICBilinearBlock_VC1_8u_C1R,(
- const IppVCInterpolateBlockIC_8u* pParams))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateICBilinearBlock_VC1_8u_C2R
- //
- // Purpose:
- // Performs intensity compensation and bilinear quarter-pel interpolation for motion estimation of the
- // chroma component in NV12 format using entire motion vector.
- //
- // Parameters:
- // interpolateInfo Pointer to an instance of the structure holding interpolation
- // parameters.
- // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame)
- // srcStep step of the reference frame
- // pDst pointer to destination MB
- // dstStep step of destination buffer
- // sizeFrame dimensions of the reference image planes
- // sizeBlock dimensions of the block to be interpolated. Maximum size is 16x8 (in NV12 format, that means 8x8 for each chroma plane).
- // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector
- // pointVectorQuarterPix quarter part of MV
- // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
- // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field.
- // If both pointers are equal to 0, no then Intensity Compensation is applied for this field.
- // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
- // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field
- //
- // OppositePadding flag that specified padding correspondence between current frame and reference frame.
- // fieldPrediction flag that specified Prediction type for current MB.
- // 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.
- // isPredBottom flag that specified type of reference field in case of interlace reference picture.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiInterpolateICBilinearBlock_VC1_8u_C2R,(
- const IppVCInterpolateBlockIC_8u* pParams))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateQPBicubic_VC1_8u_C1R
- //
- // Purpose:
- // Performs bicubic quarter-pel interpolation for NxM block in
- // accordance with 8.3.6.5.2 of VC-1 standard
- //
- // Parameters:
- // pParams Pointer to structure which contains parameters for interpolation:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- // dx, dy Fractional parts of the motion vector in 1/4 pel units
- // (0, 1, 2, or 3).
- // roiSize BlockSize. It should be equal 4x4, 8x4, 8x8, 16x16
- // roundControl Frame level rounding control value as describe in section
- // 8.3.7 of of VC-1 standard
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiInterpolateQPBicubic_VC1_8u_C1R, (
- const IppVCInterpolate_8u* pParams))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateICBicubicBlock_VC1_8u_C1R
- //
- // Purpose:
- // Performs intensity compensation and bicubic quarter-pel interpolation for motion estimation of the
- // luma component using entire motion vector.
- //
- // Parameters:
- // interpolateInfo Pointer to an instance of the structure holding interpolation
- // parameters.
- // pSrc pointer to start of reference field (or pointer to start of reference frame in the case of reference frame)
- // srcStep step of the reference frame
- // pDst pointer to destination MB
- // dstStep step of destination buffer
- // sizeFrame dimensions of the reference image planes
- // sizeBlock dimensions of the block to be interpolated. Maximum size is 16 in all dimensions.
- // pointRefBlockPos position inside reference frame. Which was calculated as sum of current position and integer part of motion vector
- // pointVectorQuarterPix quarter part of MV
- // pLUTTop pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
- // and applied for pixels of top field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field.
- // If both pointers are equal to 0, no then Intensity Compensation is applied for this field.
- // pLUTBottom pointer to Intensity Compensation LUT table. This table is calculated in accordance 8.3.8 and 10.3.7 of [SMPTE 421M]
- // and applied for pixels of bottom field. If this pointer is equal to 0, then Intensity Compensation is not applied for this field
- //
- // OppositePadding flag that specified padding correspondence between current frame and reference frame.
- // fieldPrediction flag that specified Prediction type for current MB.
- // 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.
- // isPredBottom flag that specified type of reference field in case of interlace reference picture.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiInterpolateICBicubicBlock_VC1_8u_C1R, (
- const IppVCInterpolateBlockIC_8u* pParams))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSmoothingLuma_VerEdge_VC1_16s8u_C1R
- //
- // Purpose:
- // Performs smoothing filtering on the vertical edge (internal or external)
- // of the luma 16X16 macroblocks. (SMPTE 421M, 8.5)
- //
- // Parameters:
- // pSrcLeft Pointer to the first pixel of the column of the left top block of the left macroblock, from which the smoothing will start.
- // srcLeftStep Step for transfer to the next row in the left macroblock
- // pSrcRight Pointer to the first pixel of the top left block of the right macroblock
- // srcRightStep Step for transfer to the next row in the right macroblock
- // pDst Pointer to the first pixel of the right macroblock in the Y-Plane.
- // dstStep Y-plane step (in bytes).
- // fieldNeighbourFlag Indicates the field macroblock property(2 bits):
- // if (fieldNeighbourFlag & VC1_FIELD_LEFT_MB) - the left macroblock is field decoded
- // if (fieldNeighbourFlag & VC1_FIELD_RIGHT_MB) - the right macroblock is field decoded
- // edgeDisableFlag flag which indicates:
- // if (edgeDisableFlag & VC1_EDGE_HALF_1) then the upper vertical edge is disabled for smoothing
- // if (edgeDisableFlag & VC1_EDGE_HALF_2) then the bottom vertical edge is disabled for smoothing
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiSmoothingLuma_VerEdge_VC1_16s8u_C1R, (Ipp16s* pSrcLeft, Ipp32s srcLeftStep,
- Ipp16s* pSrcRight, Ipp32s srcRightStep,
- Ipp8u* pDst, Ipp32s dstStep,
- Ipp32u fieldNeighbourFlag,
- Ipp32u edgeDisableFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSmoothingLuma_HorEdge_VC1_16s8u_C1R
- //
- // Purpose:
- // Performs smoothing filtering on the horizontal edge (internal or external)
- // of the luma 16X16 macroblocks. (SMPTE 421M, 8.5)
- //
- // Parameters:
- // pSrcUpper The pointer to the first pixel of the left bottom block row of the upper macroblock, from which the smoothing will start
- // srcUpperStep Step for transfer to the next row in the upper macroblock
- // pSrcBottom Pointer to the first pixel of the top left block of the bottom macroblock
- // srcBottomStep Step for transfer to the next row in the bottom macroblock
- // pDst Pointer to the first pixel of the bottom macroblock in the Y-Plane.
- // dstStep Y-plane step (in bytes).
- // edgeDisableFlag flag which indicates:
- // if (edgeDisableFlag & VC1_EDGE_HALF_1) then the left horizontal edge is disabled for smoothing
- // if (edgeDisableFlag & VC1_EDGE_HALF_2) then the right horizontal edge is disabled for smoothing
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiSmoothingLuma_HorEdge_VC1_16s8u_C1R, (Ipp16s* pSrcUpper, Ipp32s srcUpperStep,
- Ipp16s* pSrcBottom, Ipp32s srcBottomStep,
- Ipp8u* pDst, Ipp32s dstStep,
- Ipp32u edgeDisableFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSmoothingChroma_HorEdge_VC1_16s8u_C1R
- //
- // Purpose:
- // Performs smoothing filtering on the horizontal edge (internal or external)
- // of the chroma 8x8 blocks. (SMPTE 421M, 8.5)
- //
- // Parameters:
- // pSrcUpper The pointer to the first pixel of the left bottom block row of the upper macroblock, from which the smoothing will start
- // srcUpperStep Step for transfer to the next row in the upper macroblock
- // pSrcBottom Pointer to the first pixel of the top left block of the bottom macroblock
- // srcBottomStep Step for transfer to the next row in the bottom macroblock
- // pDst Pointer to the first pixel of the bottom macroblock in the U- or V-Plane.
- // dstStep U- or V-plane step (in bytes).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiSmoothingChroma_HorEdge_VC1_16s8u_C1R, (Ipp16s* pSrcUpper, Ipp32s srcUpperStep,
- Ipp16s* pSrcBottom, Ipp32s srcBottomStep,
- Ipp8u* pDst, Ipp32s dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSmoothingChroma_HorEdge_VC1_16s8u_P2C2R
- //
- // Purpose:
- // Performs smoothing filtering on the horizontal edge (internal or external)
- // of the chroma 8x8 blocks in nv12 chroma format. (SMPTE 421M, 8.5)
- //
- // Parameters:
- // pSrcUpperU The pointer to the first pixel of the upper U block row
- // srcUpperStepU Step for transfer to the next row in the upper U block
- // pSrcBottomU Pointer to the first pixel of the top U block of the bottom macroblock
- // srcBottomStepU Step for transfer to the next row in the U bottom macroblock
- // pSrcUpperV The pointer to the first pixel of the upper V block row
- // srcUpperStepV Step for transfer to the next row in the upper V block
- // pSrcBottomV Pointer to the first pixel of the top V block of the bottom macroblock
- // srcBottomStepV Step for transfer to the next row in the V bottom macroblock
- // pDst Pointer to the first pixel of the bottom macroblock in the UV-Plane in nv12 format.
- // dstStep nv12 UV-plane step (in bytes).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus,ippiSmoothingChroma_HorEdge_VC1_16s8u_P2C2R,(Ipp16s* pSrcUpperU, Ipp32u srcUpperStepU,
- Ipp16s* pSrcBottomU, Ipp32u srcBottomStepU,
- Ipp16s* pSrcUpperV, Ipp32u srcUpperStepV,
- Ipp16s* pSrcBottomV, Ipp32u srcBottomStepV,
- Ipp8u* pDst, Ipp32u dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSmoothingChroma_VerEdge_VC1_16s8u_C1R
- //
- // Purpose:
- // Performs smoothing filtering on the vertical edge (internal or external)
- // of the chroma 8X8 blocks. (SMPTE 421M, 8.5)
- //
- // pSrcLeft Pointer to the first pixel of the column of the left block, from which the smoothing will start.
- // srcLeftStep Step for transfer to the next row in the left block
- // pSrcRight Pointer to the first pixel of the right block
- // srcRightStep Step for transfer to the next row in the right block
- // pDst Pointer to the first pixel of the right block in the U- or V-Plane.
- // dstStep U- or V-plane step (in bytes).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiSmoothingChroma_VerEdge_VC1_16s8u_C1R, (Ipp16s* pSrcLeft, Ipp32s srcLeftStep,
- Ipp16s* pSrcRight, Ipp32s srcRightStep,
- Ipp8u* pDst, Ipp32s dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSmoothingChroma_VerEdge_VC1_16s8u_P2C2R
- //
- // Purpose:
- // Performs smoothing filtering on the vertical edge (internal or external)
- // of the chroma 8X8 blocks in nv12 chroma format. (SMPTE 421M, 8.5)
- //
- // pSrcLeftU Pointer to the first pixel of the column of the left U difference block.
- // srcLeftStepU Step for transfer to the next row in the left U difference block
- // pSrcRightU Pointer to the first pixel of the right U difference block
- // srcRightStepU Step for transfer to the next row in the right U difference block
- // pSrcLeftV Pointer to the first pixel of the column of the left U difference block.
- // srcLeftStepV Step for transfer to the next row in the left U difference block
- // pSrcRightV Pointer to the first pixel of the right U difference block
- // srcRightStepV Step for transfer to the next row in the right U difference block
- // pDst Pointer to the first pixel of the right block in the UV-Plane in nv12 chroma format.
- // dstStep nv12 format UV-plane step (in bytes).
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus,ippiSmoothingChroma_VerEdge_VC1_16s8u_P2C2R, (Ipp16s* pSrcLeftU, Ipp32u srcLeftStepU,
- Ipp16s* pSrcRightU, Ipp32u srcRightStepU,
- Ipp16s* pSrcLeftV, Ipp32u srcLeftStepV,
- Ipp16s* pSrcRightV, Ipp32u srcRightStepV,
- Ipp8u* pDst, Ipp32u dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvIntraUniform_VC1_16s_C1IR
- // ippiQuantInvIntraNonuniform_VC1_16s_C1IR
- //
- // Purpose:
- // Performs uniform and nonuniform dequantization process of 8x8 intra block
- // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient
- // Quantization" specification SMPTE 421M)
- //
- // pSrcDst - the pointer to the source & destination block.
- // srcDstStep - the step of the source & destination block.
- // doubleQuant - dequant coefficient. It should be in the range [2,62]
- // 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.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr pSrcDst is NULL
- */
- IPPAPI(IppStatus, ippiQuantInvIntraUniform_VC1_16s_C1IR, (Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant, IppiSize* pDstSizeNZ))
- IPPAPI(IppStatus, ippiQuantInvIntraNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant, IppiSize* pDstSizeNZ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvInterUniform_VC1_16s_C1IR
- // ippiQuantInvInterNonuniform_VC1_16s_C1IR
- //
- // Purpose:
- // Performs uniform and nonuniform dequantization process of inter block
- // according to VC-1 standard
- //
- // pSrcDst - the pointer to the source & destination block.
- // srcDstStep - the step of the source & destination block.
- // doubleQuant - dequant coefficient. It should be in the range [2,62]
- // roiSize - the intra block size. It should be: 8x8, 8x4, 4x8 or 4x4.
- // 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.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr pSrcDst pointer is NULL
- // ippStsSizeErr width or height is not equal with 8 or 4
- */
- IPPAPI(IppStatus, ippiQuantInvInterUniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant, IppiSize roiSize,
- IppiSize* pDstSizeNZ))
- IPPAPI(IppStatus, ippiQuantInvInterNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant, IppiSize roiSize,
- IppiSize* pDstSizeNZ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvIntraUniform_VC1_16s_C1R
- // ippiQuantInvIntraNonuniform_VC1_16s_C1R
- //
- // Purpose:
- // Performs uniform and nonuniform dequantization process of 8x8 intra block
- // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient
- // Quantization" specification SMPTE 421M)
- //
- // pSrc - the pointer to the source block.
- // pDst - the pointer to the destination block.
- // srcStep - the step of the source block.
- // dstStep - the step of the destination block.
- // doubleQuant - dequant coefficient. It should be in the range [2,62]
- // 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.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiQuantInvIntraUniform_VC1_16s_C1R, (const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
- Ipp32s doubleQuant, IppiSize *pDstSizeNZ))
- IPPAPI(IppStatus, ippiQuantInvIntraNonuniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
- Ipp32s doubleQuant, IppiSize *pDstSizeNZ ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInvInterUniform_VC1_16s_C1R
- // ippiQuantInvInterNonuniform_VC1_16s_C1R
- //
- // Purpose:
- // Performs uniform and nonuniform dequantization process of inter block
- // according to VC-1 standard
- //
- // pSrc - the pointer to the source block.
- // pDst - the pointer to the destination block.
- // srcStep - the step of the source block.
- // dstStep - the step of the destination block.
- // doubleQuant - dequant coefficient. It should be in the range [2,62]
- // roiSize - the inter block size. It should be: 8x8, 8x4, 4x8 or 4x4
- // 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.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- // ippStsSizeErr width or height is not equal with 8 or 4
- */
- IPPAPI(IppStatus, ippiQuantInvInterUniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
- Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ))
- IPPAPI(IppStatus, ippiQuantInvInterNonuniform_VC1_16s_C1R,(const Ipp16s* pSrc, Ipp32s srcStep, Ipp16s* pDst, Ipp32s dstStep,
- Ipp32s doubleQuant, IppiSize roiSize, IppiSize* pDstSizeNZ))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingLuma_VerEdge_VC1_8u_C1IR
- // ippiFilterDeblockingLuma_HorEdge_VC1_8u_C1IR
- // ippiFilterDeblockingChroma_VerEdge_VC1_8u_C1IR
- // ippiFilterDeblockingChroma_HorEdge_VC1_8u_C1IR
- //
- // Purpose:
- // Luma deblocking functions perform deblocking filtering on the horizontal
- // and vertical edge (inner or external) of the luma 16x16 macroblock. (SMPTE 421M, 8.6)
- //
- // Chroma deblocking functions perform deblocking filtering on the horizontal
- // and vertical edge (inner or external) of the chroma 8x8 macroblock. (SMPTE 421M, 8.6)
- //
- // Parameters:
- // pSrcDst - Pointer to the first pixel of right block in the Y-Plane or U or V-Plane.
- // srcdstStep - Y-plane or U or V-Plane step (in bytes).
- // pQuant - Picture quantizer scale
- // EdgeDisableFlag - flag which indicates what part of block edge
- // is disabled for deblocking.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Input pointer is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingLuma_VerEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
- Ipp32s pQuant,
- Ipp32s srcdstStep,
- Ipp32s edgeDisabledFlag))
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
- Ipp32s pQuant,
- Ipp32s srcdstStep,
- Ipp32s edgeDisabledFlag))
- IPPAPI(IppStatus,ippiFilterDeblockingLuma_HorEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
- Ipp32s pQuant,
- Ipp32s srcdstStep,
- Ipp32s edgeDisabledFlag))
- IPPAPI(IppStatus,ippiFilterDeblockingChroma_HorEdge_VC1_8u_C1IR,(Ipp8u* pSrcDst,
- Ipp32s pQuant,
- Ipp32s srcdstStep,
- Ipp32s edgeDisabledFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingChroma_VerEdge_VC1_8u_C2IR
- // ippiFilterDeblockingChroma_HorEdge_VC1_8u_C2IR
- //
- // Purpose:
- //
- // Chroma deblocking functions perform deblocking filtering on the horizontal
- // and vertical edge (inner or external) of the chroma macroblock in NV12 format. (SMPTE 421M, 8.6)
- // 0 UV UV UV UV UV UV UV UV
- // 1 UV UV UV UV ... UV
- // ...
- // 7 UV UV UV UV UV UV UV UV
- // Parameters:
- // pSrcDst - Pointer to the first pixel of right block in the UV-Plane.
- // srcdstStep - UV-Plane step (in bytes).
- // pQuant - Picture quantizer scale
- // EdgeDisableFlag - flag which indicates what part of block edge
- // is disabled for deblocking.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr Input pointer is NULL
- */
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_VerEdge_VC1_8u_C2IR,(Ipp8u* pSrcDst,Ipp32u pQuant, Ipp32s srcdstStep,
- Ipp32u uEdgeDisabledFlag, Ipp32u vEdgeDisabledFlag))
- IPPAPI(IppStatus, ippiFilterDeblockingChroma_HorEdge_VC1_8u_C2IR,(Ipp8u* pSrcDst,Ipp32u pQuant, Ipp32s srcdstStep,
- Ipp32u uEdgeDisabledFlag, Ipp32u vEdgeDisabledFlag))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiRangeMapping_VC1_8u_C1R
- //
- // Purpose:
- // Performs range map transformation according to VC-1 standard (6.2.15.1)
- //
- // Parameters:
- // pSrc - the pointer to the source block. Block coefficient could be in the range [0, 255]
- // srcStep - the step of the source block
- // pDst - the pointer to the destination block.
- // dstStep - the step of the destination block
- // rangeMapParam - parameter for range map. It should be in the range [0, 7].
- // roiSize - size of source block.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- // ippStsOutOfRangeErr Indicates an error if rangeMapParam is out of the range [0,7].
- */
- IPPAPI(IppStatus, ippiRangeMapping_VC1_8u_C1R ,(Ipp8u* pSrc, Ipp32s srcStep,
- Ipp8u* pDst, Ipp32s dstStep,
- IppiSize roiSize, Ipp32s rangeMapParam))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantIntraUniform_VC1_16s_C1IR
- // ippiQuantIntraNonuniform_VC1_16s_C1IR
- //
- // Purpose:
- // Performs uniform and nonuniform quantization process of 8x8 intra block
- // according to VC-1 standard (8.1.2.8 "Inverse AC Coefficient
- // Quantization" specification SMPTE 421M)
- //
- // pSrcDst - the pointer to the source & destination block.
- // srcDstStep - the step of the source & destination block.
- // doubleQuant - dequant coefficient. It should be in the range [2,62]
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiQuantIntraUniform_VC1_16s_C1IR, (Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant))
- IPPAPI(IppStatus, ippiQuantIntraNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantInterUniform_VC1_16s_C1IR
- // ippiQuantInterNonuniform_VC1_16s_C1IR
- //
- // Purpose:
- // Performs uniform and nonuniform quantization process of inter block
- // according to VC-1 standard
- //
- // pSrcDst - the pointer to the source & destination block.
- // srcDstStep - the step of the source & destination block.
- // doubleQuant - dequant coefficient. It should be in the range [2,62]
- // roiSize - the intra block size. It should be: 8x8, 8x4, 4x8 or 4x4.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiQuantInterUniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant, IppiSize roiSize))
- IPPAPI(IppStatus, ippiQuantInterNonuniform_VC1_16s_C1IR,(Ipp16s* pSrcDst, Ipp32s srcDstStep,
- Ipp32s doubleQuant, IppiSize roiSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransform8x8Fwd_VC1_16s_C1R
- // ippiTransform4x8Fwd_VC1_16s_C1R
- // ippiTransform8x4Fwd_VC1_16s_C1R
- // ippiTransform4x4Fwd_VC1_16s_C1R
- // ippiTransform8x8Fwd_VC1_16s_C1IR
- // ippiTransform4x8Fwd_VC1_16s_C1IR
- // ippiTransform8x4Fwd_VC1_16s_C1IR
- // ippiTransform4x4Fwd_VC1_16s_C1IR
- //
- // Purpose:
- // Performs forward transform of 8x8/4x8/8x4/4x4 block according to VC-1
- // standard
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiTransform8x8Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
- Ipp16s *pDst, Ipp32s dstStep))
- IPPAPI(IppStatus, ippiTransform4x4Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
- Ipp16s *pDst, Ipp32s dstStep))
- IPPAPI(IppStatus, ippiTransform8x4Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
- Ipp16s *pDst, Ipp32s dstStep))
- IPPAPI(IppStatus, ippiTransform4x8Fwd_VC1_16s_C1R, (const Ipp16s *pSrc, Ipp32s srcStep,
- Ipp16s *pDst, Ipp32s dstStep))
- IPPAPI(IppStatus, ippiTransform8x8Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
- IPPAPI(IppStatus, ippiTransform4x4Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
- IPPAPI(IppStatus, ippiTransform8x4Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
- IPPAPI(IppStatus, ippiTransform4x8Fwd_VC1_16s_C1IR, (Ipp16s *pSrcDst, Ipp32s srcDstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiHadamard8x8Sum_VC1_8u16s
- // ippiHadamard8x8Sum_VC1_16s
- //
- // Purpose:
- // Performs Hadamard transform H S H, were H - 8x8 Hadamard matrix, S - source 8x8 block
- // and calculates the sum of absolute values of transformed coefficients
- // (*pSum) = SUM(ABS(pDst[0]), ABS(pDst[1]),..,ABS(pDst[63]))
- //
- // Parameters:
- // pSrc Pointer to the source block.
- // srcStep Step in bytes through the source plane.
- // pDst Pointer to the destination block of the transformed coefficients. dstStep has the fixed lenght of 16 bytes
- // pSum Pointer to the sum of absolute values of transformed coefficients.
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI(IppStatus, ippiHadamard8x8Sum_VC1_8u16s,(Ipp8u* pSrc, Ipp32u srcStep, Ipp16s* pDst, Ipp32s* pSum))
- IPPAPI(IppStatus, ippiHadamard8x8Sum_VC1_16s,(Ipp16s* pSrc, Ipp32u srcStep, Ipp16s* pDst, Ipp32s* pSum))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- //
- // ippiSub4x4_8u16s_C1R
- // ippiSub4x4_16u16s_C1R
- // ippiSub8x8_16u16s_C1R
- //
- // Purpose:
- // Subtract two blocks and store the result in the third block.
- //
- // Parameters:
- // pSrc1 Pointer to the first source block.
- // src1Step Step in bytes through the first source plane.
- // pSrc2 Pointer to the second source block.
- // src2Step Step in bytes through the second source plane.
- // pDst Pointer to the destination block.
- // dstStep Step in bytes through the destination plane
- //
- // Returns:
- // ippStsNoErr No error.
- // ippStsNullPtrErr At least one input pointer is NULL
- */
- IPPAPI( IppStatus, ippiSub4x4_8u16s_C1R, ( const Ipp8u* pSrc1,
- int src1Step,
- const Ipp8u* pSrc2,
- int src2Step,
- Ipp16s* pDst,
- int dstStep))
- IPPAPI( IppStatus, ippiSub4x4_16u16s_C1R, ( const Ipp16u* pSrc1,
- int src1Step,
- const Ipp16u* pSrc2,
- int src2Step,
- Ipp16s* pDst,
- int dstStep))
- IPPAPI( IppStatus, ippiSub8x8_16u16s_C1R, (const Ipp16u* pSrc1,
- Ipp32s src1Step,
- const Ipp16u* pSrc2,
- Ipp32s src2Step,
- Ipp16s* pDst,
- Ipp32s dstStep))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- //
- // ippiSAD16x16_16u32s_C1R
- //
- // Purpose:
- // Evaluates sum of absolute difference between current and reference
- // 16X16 blocks.
- //
- // Parameters:
- // pSrc Pointer to the current block of specified size.
- // srcStep Step of the current block, specifying width of the block in bytes.
- // pRef Pointer to the reference block of specified size.
- // refStep Step of the reference block, specifying width of the block in bytes.
- // pSAD Pointer to the destination integer.
- // mcType MC type IPPVC_MC_APX.
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
- // ippStsStepErr Indicates an error when srcCurStep or srcRefStep is less or equal to zero.
- */
- IPPAPI( IppStatus, ippiSAD16x16_16u32s_C1R, (const Ipp16u* pSrc,
- Ipp32s srcStep,
- const Ipp16u* pRef,
- Ipp32s refStep,
- Ipp32s* pSAD,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- //
- // ippiSAD4x4_16u32s_C1R
- //
- // Purpose:
- // Evaluates sum of absolute difference between current
- // and reference 4X4 blocks.
- //
- // Parameters:
- // pSrc Pointer to 4x4 block in the source plane.
- // srcStep Pitch of the source plane (in bytes).
- // pRef Pointer to 4x4 block in the reference plane.
- // refStep Pitch of the reference plane (in bytes).
- // pSAD Pointer to SAD value.
- // mcType MC type IPPVC_MC_APX; reserved and must be 0.
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
- */
- IPPAPI( IppStatus, ippiSAD4x4_16u32s_C1R, (const Ipp16u* pSrc,
- Ipp32s srcStep,
- const Ipp16u* pRef,
- Ipp32s refStep,
- Ipp32s* pSAD,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- //
- // ippiSAD8x8_16u32s_C1R,
- //
- // Purpose:
- // Evaluates sum of absolute difference between current
- // and reference 8X8 blocks.
- //
- // Parameters:
- // pSrcCur Pointer to 8x8 block in the source plane.
- // srcCurStep Pitch of the source plane (in bytes).
- // pSrcRef Pointer to 8x8 block in the reference plane.
- // srcRefStep Pitch of the reference plane (in bytes).
- // pDst Pointer to store SAD value.
- // mcType MC type IPPVC_MC_APX.
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error when at least one input pointer is NULL.
- */
- IPPAPI( IppStatus, ippiSAD8x8_16u32s_C1R, (const Ipp16u* pSrcCur,
- Ipp32s srcCurStep,
- const Ipp16u* pSrcRef,
- Ipp32s srcRefStep,
- Ipp32s* pDst,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformQuantFwd4x4_H264_16s_C1
- // ippiTransformQuantFwd4x4_H264_16s32s_C1
- //
- // Purpose:
- // This function performs forward transform and quantization for 4x4 residual block.
- //
- // Parameters:
- // pSrcDst Pointer to 4x4 residual block - source & destination array of size 16
- // QP Quantization parameter.
- // pNumCoeffs Pointer to value, which contains:
- // a negative value of a number of non-zero elements in block after quantization
- // (in the case of the first quantized element in block is not equal zero)
- // a number of non-zero elements in block after quantization (in the case
- // of the first quantized element in block is equal zero)
- // This value is calculated by function.
- // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
- // pScanMatrix Scan matrix for coefficients in block (array of size 16)
- // pLastCoeff Position of the last non-zero coefficient in block after quantization.
- // This value is calculated by function.
- // pScaleLevels pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 16s32s) or QP<0
- */
- IPPAPI(IppStatus, ippiTransformQuantFwd4x4_H264_16s_C1, (
- const Ipp16s *pSrc,
- Ipp16s *pDst,
- Ipp32s Qp6,
- Ipp32s *pNumCoeffs,
- Ipp32s Intra,
- const Ipp16s *pScanMatrix,
- Ipp32s *pLastCoeff,
- const Ipp16s *pScaleLevels))
- IPPAPI(IppStatus, ippiTransformQuantFwd4x4_H264_16s32s_C1, (
- const Ipp16s* pSrc,
- Ipp32s* pDst,
- Ipp32s QP,
- Ipp32s* pNumCoeffs,
- Ipp32s Intra,
- const Ipp16s* pScanMatrix,
- Ipp32s* pLastCoeff,
- const Ipp16s* pScaleLevels))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformQuantInvAddPred4x4_H264_16s_C1IR
- // ippiTransformQuantInvAddPred4x4_H264_32s_C1IR
- //
- // Purpose:
- // Places a DC coefficient (if any) to its place,
- // Performs dequantization, integer inverse transformation and
- // shift by 6 bits for 4x4 block of residuals
- // with subsequent intra prediction or motion
- // compensation.
- //
- //
- // Parameters:
- // pPred - pointer to the reference 4x4 block, which is used for intra
- // prediction or motion compensation.
- // predStep - reference frame step in bytes.
- // pSrcDst - pointer to the initial coefficients and resultant residuals (4x4
- // block) - array of size 16.
- // pDC - pointer to the DC coefficient. In the case of Intra 4x4
- // macroblock type pDC is set to NULL.
- // pDst - pointer to the destination 4x4 block.
- // dstStep - destination frame step in bytes.
- // QP - quantization parameter
- // AC - flag that is not equal to zero, if at least one AC coefficient
- // exists, and is equal to zero otherwise.
- // bitDepth - bit depth of pPred in range [1..14]
- // pScaleLevelsInv pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
- // bitDepth not in range [1..14]
- //
- */
- IPPAPI(IppStatus, ippiTransformQuantInvAddPred4x4_H264_16s_C1IR, (
- const Ipp8u* pPred,
- Ipp32s predStep,
- Ipp16s* pSrcDst,
- const Ipp16s* pDC,
- Ipp8u* pDst,
- Ipp32s dstStep,
- Ipp32s QP,
- Ipp32s AC,
- const Ipp16s* pScaleLevelsInv))
- IPPAPI(IppStatus, ippiTransformQuantInvAddPred4x4_H264_32s_C1IR, (
- const Ipp16u* pPred,
- Ipp32s predStep,
- Ipp32s* pSrcDst,
- const Ipp32s* pDC,
- Ipp16u* pDst,
- Ipp32s dstStep,
- Ipp32s QP,
- Ipp32s AC,
- Ipp32s bitDepth,
- const Ipp16s* pScaleLevelsInv))
- /*
- // Name:
- // ippiTransformQuantFwdLumaDC4x4_H264_16s_C1I
- // ippiTransformQuantFwdLumaDC4x4_H264_32s_C1I
- //
- // Purpose:
- // This function performs forward transform (if it's necessary) and quantization
- // for 4x4 DC Luma block.
- //
- // Parameters:
- // pDCBuf Pointer to 4x4 luma DC block - source & destination array of size 4
- // pTBuf Pointer to 4x4 transformed luma DC block - source or destination array of size 4
- // QP Quantization parameter for luma
- // pNumCoeffs Pointer to value, which contains:
- // a negative value of a number of non-zero elements in block after
- // quantization (in the case of the first quantized element in block is not equal zero)
- // a number of non-zero elements in block after quantization (in the case
- // of the first quantized element in block is equal zero)
- // This value is calculated by function.
- // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
- // pScanMatrix Scan matrix for coefficients in block (array of size 16)
- // pLastCoeff Position of the last non-zero coefficient in block after quantization. This value is calculated by function.
- // pScaleLevels pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
- */
- IPPAPI(IppStatus, ippiTransformQuantFwdLumaDC4x4_H264_16s_C1I, (
- Ipp16s* pDCBuf,
- Ipp16s* pTBuf,
- Ipp32s QP,
- Ipp32s* pNumCoeffs,
- Ipp32s NeedTransform,
- const Ipp16s* pScanMatrix,
- Ipp32s* LastCoeff,
- const Ipp16s* pScaleLevels))
- IPPAPI(IppStatus, ippiTransformQuantFwdLumaDC4x4_H264_32s_C1I, (
- Ipp32s* pDCBuf,
- Ipp32s* pQBuf,
- Ipp32s QP,
- Ipp32s* NumCoeffs,
- Ipp32s Intra,
- const Ipp16s* pScanMatrix,
- Ipp32s* pLastCoeff,
- const Ipp16s* pScaleLevels))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformQuantInvLumaDC4x4_H264_16s_C1I
- // ippiTransformQuantInvLumaDC4x4_H264_32s_C1I
- //
- // Purpose:
- // Perform integer inverse transformation and dequantization
- // for 4x4 luma DC coefficients,
- //
- // Parameters:
- // pSrcDst - pointer to initial coefficients and resultant DC,
- // QP - quantization parameter.
- // pScaleLevels pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
- */
- IPPAPI(IppStatus, ippiTransformQuantInvLumaDC4x4_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s QP,
- const Ipp16s* pScaleLevelsInv))
- IPPAPI(IppStatus, ippiTransformQuantInvLumaDC4x4_H264_32s_C1I, (
- Ipp32s* pSrcDst,
- Ipp32s QP,
- const Ipp16s* pScaleLevels))
- /*
- // Name:
- // ippiTransformQuantFwdChromaDC2x2_H264_16s_C1I
- // ippiTransformQuantFwdChromaDC2x2_H264_32s_C1I
- //
- // Purpose:
- // This function performs forward transform (if it's necessary) and quantization
- // for 2x2 DC chroma block.
- //
- // Parameters:
- // pDCBuf Pointer to 2x2 chroma DC block - source & destination array of size 4
- // pTBuf Pointer to 2x2 transformed chroma DC block - source or destination array of size 4
- // QP Quantization parameter for chroma
- // pNumCoeffs Pointer to value, which contains:
- // a negative value of a number of non-zero elements in block after
- // quantization (in the case of the first quantized element in block is not equal zero)
- // a number of non-zero elements in block after quantization (in the case
- // of the first quantized element in block is equal zero)
- // This value is calculated by function.
- // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
- // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
- // pScaleLevels pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
- */
- IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x2_H264_16s_C1I, (
- Ipp16s *pDCBuf,
- Ipp16s *pTBuf,
- Ipp32s QP,
- Ipp32s* pNumCoeffs,
- Ipp32s Intra,
- Ipp32s NeedTransform,
- const Ipp16s* pScaleLevels))
- IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x2_H264_32s_C1I, (
- Ipp32s* pSrcDst,
- Ipp32s* pTBlock,
- Ipp32s QPChroma,
- Ipp32s* NumCoeffs,
- Ipp32s Intra,
- Ipp32s NeedTransform,
- const Ipp16s* pScaleLevels))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformQuantInvChromaDCx2_H264_16s_C1I
- // ippiTransformQuantInvChromaDCx2_H264_32s_C1I
- //
- // Purpose:
- // Perform integer inverse transformation and dequantization
- // for 2x2 chroma DC coefficients,
- //
- // Parameters:
- // pSrcDst - pointer to initial coefficients and resultant DC,
- // QP - quantization parameter.
- // pScaleLevels pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
- */
- IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x2_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s QP,
- const Ipp16s *pScaleLevels))
- IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x2_H264_32s_C1I, (
- Ipp32s* pSrcDst,
- Ipp32s QP,
- const Ipp16s *pScaleLevels))
- /*
- // Name:
- // ippiTransformQuantFwdChromaDC2x4_H264_16s_C1I
- // ippiTransformQuantFwdChromaDC2x4_H264_32s_C1I
- //
- // Purpose:
- // This function performs forward transform (if it's necessary) and quantization
- // for 2x4 DC chroma block.
- //
- // Parameters:
- // pDCBuf Pointer to 2x4 chroma DC block - source & destination array of size 6
- // pTBuf Pointer to 2x4 transformed chroma DC block - source or destination array of size 6
- // QP Quantization parameter for chroma
- // pNumCoeffs Pointer to value, which contains:
- // a negative value of a number of non-zero elements in block after
- // quantization (in the case of the first quantized element in block is not equal zero)
- // a number of non-zero elements in block after quantization (in the case
- // of the first quantized element in block is equal zero)
- // This value is calculated by function.
- // Intra Flag that is equal 1 in the case of Intra slice, 0 otherwise.
- // NeedTransform Flag that is equal 1 if transforming process is used. This flag is equal 0 if transforming process is not used.
- // pScaleLevels pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
- */
- IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x4_H264_16s_C1I, (
- Ipp16s *pDCBuf,
- Ipp16s *pTBuf,
- Ipp32s QPChroma,
- Ipp32s* NumCoeffs,
- Ipp32s Intra,
- Ipp32s NeedTransform,
- const Ipp16s* pScaleLevels))
- IPPAPI(IppStatus, ippiTransformQuantFwdChromaDC2x4_H264_32s_C1I, (
- Ipp32s *pDCBuf,
- Ipp32s *pTBuf,
- Ipp32s QPChroma,
- Ipp32s* NumCoeffs,
- Ipp32s Intra,
- Ipp32s NeedTransform,
- const Ipp16s* pScaleLevels))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformQuantInvChromaDC2x4_H264_16s_C1I
- // ippiTransformQuantInvChromaDC2x4_H264_32s_C1I
- //
- // Purpose:
- // Perform integer inverse transformation and dequantization
- // for 2x4 chroma DC coefficients,
- //
- // Parameters:
- // pSrcDst - pointer to initial coefficients and resultant DC,
- // QP - quantization parameter.
- // pScaleLevels pointer to Scale levels, if NULL, default is applied
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- // ippStsOutOfRangeErr QP >51 (87 for 32s) or QP<0
- */
- IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x4_H264_16s_C1I, (
- Ipp16s* pSrcDst,
- Ipp32s QPChroma,
- const Ipp16s* pScaleLevels))
- IPPAPI(IppStatus, ippiTransformQuantInvChromaDC2x4_H264_32s_C1I, (
- Ipp32s *pSrcDst,
- Ipp32s QPChroma,
- const Ipp16s* pScaleLevelsInv))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiGenScaleLevel4x4_H264_8u16s_C1
- //
- // Purpose:
- // Performs generation of scale matrix
- //
- // Parameters:
- // pSrcScaleMatrix - Pointer to an original scaling matrix for 4x4 transform.
- // pDstInvScaleMatrix - Pointer to a destination inverse scaling matrix -- array of size 16.
- // pDstScaleMatrix - Pointer to a destination forward scaling matrix - array of size 16.
- // QpRem - Reminder from an integer division of quantization parameter by 6.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- // ippStsQPErr QpRem is less than 0 or greater than 5
- //
- */
- IPPAPI(IppStatus, ippiGenScaleLevel4x4_H264_8u16s_C1, (
- const Ipp8u *pSrcScaleMatrix,
- Ipp16s *pDstInvScaleMatrix,
- Ipp16s *pDstScaleMatrix,
- Ipp32s QpRem))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSAD16x16Blocks4x4_16u32u_C1R
- // ippiSAD16x16Blocks8x8_16u32u_C1R
- //
- // Purpose:
- // Evaluates partial sums of absolute differences
- // between current and reference 16X16 blocks.
- //
- // Parameters:
- // pSrc Pointer to 16x16 block in the source plane.
- // srcStep Pitch of the source plane (in bytes).
- // pRef Pointer to 16x16 block in the reference plane.
- // refStep Pitch of the reference plane (in bytes).
- // pDstSAD Pointer to array of size 16(for 4x4) or 4(for 8x8) to store SAD values.
- // mcType reserved and must be 0.
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- */
- IPPAPI(IppStatus, ippiSAD16x16Blocks4x4_16u32u_C1R, (
- const Ipp16u* pSrc,
- Ipp32s srcStep,
- const Ipp16u* pRef,
- Ipp32s refStep,
- Ipp32u* pDstSAD,
- Ipp32s mcType))
- IPPAPI(IppStatus, ippiSAD16x16Blocks8x8_16u32u_C1R, (
- const Ipp16u* pSrc,
- Ipp32s srcStep,
- const Ipp16u* pRef,
- Ipp32s refStep,
- Ipp32u* pDstSAD,
- Ipp32s mcType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSAD2x2xN_8u16u_C1R
- //
- // ippiSAD4x4xN_8u16u_C1R
- // ippiSAD4x4xNI_8u16u_C1R
- //
- // ippiSAD8x8xN_8u16u_C1R
- // ippiSAD8x8xNI_8u16u_C1R
- //
- // ippiSAD16x16xN_8u16u_C1R
- // ippiSAD16x16xNI_8u16u_C1R
- //
- // Purpose:
- // Evaluate series of sums of absolute differences
- // between current and reference blocks.
- //
- // Parameters:
- // pSrc Pointer to the current block in the source plane.
- // srcStep Pitch of the source plane (in bytes).
- // pRef Pointer to a block in the reference plane.
- // refStep Pitch of the reference plane (in bytes).
- // pSAD Pointer to array of size of numSAD to store SAD values.
- // numSAD Number of SAD values to evaluate. Should be product of 8.
- // pMinSADIndex Index of the lowest SAD value in the given array.
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsSizeErr numSAD is less than 8
- //
- */
- IPPAPI(IppStatus, ippiSAD2x2xN_8u16u_C1R, (
- const Ipp8u *pSrc,
- Ipp32s srcStep,
- const Ipp8u *pRef,
- Ipp32s refStep,
- Ipp16u *pSAD,
- Ipp32s numSAD))
- IPPAPI(IppStatus, ippiSAD4x4xN_8u16u_C1R, (
- const Ipp8u *pSrc,
- Ipp32s srcStep,
- const Ipp8u *pRef,
- Ipp32s refStep,
- Ipp16u *pSAD,
- Ipp32s numSAD))
- IPPAPI(IppStatus, ippiSAD4x4xNI_8u16u_C1R, (
- const Ipp8u *pSrc,
- Ipp32s srcStep,
- const Ipp8u *pRef,
- Ipp32s refStep,
- Ipp16u *pSAD,
- Ipp32s numSAD,
- Ipp32u *pMinSADIndex))
- IPPAPI(IppStatus, ippiSAD8x8xN_8u16u_C1R, (
- const Ipp8u *pSrc,
- Ipp32s srcStep,
- const Ipp8u *pRef,
- Ipp32s refStep,
- Ipp16u *pSAD,
- Ipp32s numSAD))
- IPPAPI(IppStatus, ippiSAD8x8xNI_8u16u_C1R, (
- const Ipp8u *pSrc,
- Ipp32s srcStep,
- const Ipp8u *pRef,
- Ipp32s refStep,
- Ipp16u *pSAD,
- Ipp32s numSAD,
- Ipp32u *pMinSADIndex))
- IPPAPI(IppStatus, ippiSAD16x16xN_8u16u_C1R, (
- const Ipp8u *pSrc,
- Ipp32s srcStep,
- const Ipp8u *pRef,
- Ipp32s refStep,
- Ipp16u *pSAD,
- Ipp32s numSAD))
- IPPAPI(IppStatus, ippiSAD16x16xNI_8u16u_C1R, (
- const Ipp8u *pSrc,
- Ipp32s srcStep,
- const Ipp8u *pRef,
- Ipp32s refStep,
- Ipp16u *pSAD,
- Ipp32s numSAD,
- Ipp32u *pMinSADIndex))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiSumsDiff16x16Blocks4x4_16u32s_C1R
- // ippiSumsDiff8x8Blocks4x4_16u32s_C1R
- //
- // Purpose:
- // These functions evaluates difference between current and reference 4x4 blocks
- // and calculates sums of 4x4 residual blocks elements
- // Parameters:
- // pSrc Pointer block in current plane
- // srcStep Step of the current plane, specifying width of the plane in bytes.
- // pPred Pointer to reference block
- // predStep Step of the reference plane, specifying width of the plane in bytes.
- // pSums Pointer to array that contains sums of 4x4 difference blocks coefficients.
- // The array's filled by function.
- // pDiff If it isn't zero, pointer to array that will contain a sequence of 4x4
- // residual blocks.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr one of the input pointers is NULL
- */
- IPPAPI(IppStatus, ippiSumsDiff16x16Blocks4x4_16u32s_C1R, (
- const Ipp16u* pSrc,
- Ipp32s srcStep,
- const Ipp16u* pPred,
- Ipp32s predStep,
- Ipp32s* pSums,
- Ipp16s* pDiff))
- IPPAPI(IppStatus, ippiSumsDiff8x8Blocks4x4_16u32s_C1R, (
- const Ipp16u* pSrc,
- Ipp32s srcStep,
- const Ipp16u* pPred,
- Ipp32s predStep,
- Ipp32s* pSums,
- Ipp16s* pDiff))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformFwdLuma8x8_H264_16s_C1
- // ippiTransformFwdLuma8x8_H264_16s32s_C1
- //
- // Purpose:
- // Performs forward 8x8 transform for a 8x8 Luma block without normalization.
- //
- // Parameters:
- // pSrc - pointer to the initial 8x8 Luma block and resultant coefficients
- // (array of size 64).
- // pDst - pointer to the resultant coefficients (array of size 64).
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr at least one of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiTransformFwdLuma8x8_H264_16s32s_C1, (
- const Ipp16s* pSrc,
- Ipp32s* pDst))
- IPPAPI(IppStatus, ippiTransformFwdLuma8x8_H264_16s_C1, (
- const Ipp16s* pSrc,
- Ipp16s* pDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformInvAddPredLuma8x8_H264_32s16u_C1R
- //
- // Purpose:
- // Performs inverse 8x8 transform for a 8x8 Luma block with subsequent intra
- // prediction or motion compensation, coefficients are assumed to be pre-normalized.
- //
- // Parameters:
- // pPred - pointer to the reference 8x8 block, which is used for intra
- // prediction or motion compensation.
- // predStep - reference frame step in bytes.
- // pSrcDst - pointer to the initial coefficients and buffer for the computations
- // (8x8 block) - array of size 64.
- // pDst - pointer to the destination 8x8 block.
- // dstStep - destination frame step in bytes.
- // bitDepth - bit depth of pPred in range [1..14]
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr pointers are NULL
- //
- */
- IPPAPI(IppStatus, ippiTransformInvAddPredLuma8x8_H264_32s16u_C1R, (
- const Ipp16u* pPred,
- Ipp32s predStep,
- Ipp32s* pSrcDst,
- Ipp16u* pDst,
- Ipp32s dstStep,
- Ipp32s bitDepth))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiEncodeCoeffsCAVLCChromaDC2x2_H264_32s
- // ippiEncodeCoeffsCAVLCChromaDC2x4_H264_16s
- // ippiEncodeCoeffsCAVLCChromaDC2x4_H264_32s
- //
- // Purpose: Calculates characteristics of 2x2 or 2X4 Chroma DC for CAVLC encoding.
- //
- // Parameters:
- // pSrc Pointer to 2x2 or 2x4 block - array of size 4 or 6.
- // pTraling_One The number of trailing ones transform coefficient levels
- // in a range[0;3]. This argument is calculated by the function.
- // pTraling_One_Signs Code that describes signs of trailing ones.
- // (Trailing_One 1 - i)-bit in this code corresponds to a sign
- // of i-trailing one in the current block. In this code 1 indicates
- // negative value, 0 positive value. This argument is calculated
- // by the function.
- // pNumOutCoeffs The number of non-zero coefficients in block (including trailing
- // ones). This argument is calculated by the function.
- // pTotalZeros The number of zero coefficients in block (except trailing zeros). This
- // argument is calculated by the function.
- // pLevels Pointer to an array of size 4 that contains non-zero quantized
- // coefficients of the current block (except trailing ones) in reverse scan
- // matrix order.
- // pRuns Pointer to an array of size 4 that contains runs before non-zero
- // quantized coefficients (including trailing ones) of the current block in
- // reverse scan matrix order (except run before the first non-zero
- // coefficient in block, which can be calculated using TotalZeros).
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr if a pointer is NULL
- //
- // Notes:
- // H.264 standard: JVT-G050. ITU-T Recommendation and
- // Final Draft International Standard of Joint Video Specification
- // (ITU-T Rec. H.264 | ISO/IEC 14496-10 AVC) March, 2003.
- */
- IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x2_H264_32s, (
- const Ipp32s* pSrc,
- Ipp8u* pTrailingOnes,
- Ipp8u* pTrailingOneSigns,
- Ipp8u* pNumOutCoeffs,
- Ipp8u* pTotalZeroes,
- Ipp32s* pLevels,
- Ipp8u* pRuns))
- IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x4_H264_16s, (
- const Ipp16s *pSrc,
- Ipp8u *pTrailing_Ones,
- Ipp8u *pTrailing_One_Signs,
- Ipp8u *pNumOutCoeffs,
- Ipp8u *pTotalZeros,
- Ipp16s *pLevels,
- Ipp8u *pRuns))
- IPPAPI(IppStatus, ippiEncodeCoeffsCAVLCChromaDC2x4_H264_32s, (
- const Ipp32s *pSrc,
- Ipp8u *pTrailing_Ones,
- Ipp8u *pTrailing_One_Signs,
- Ipp8u *pNumOutCoeffs,
- Ipp8u *pTotalZeros,
- Ipp32s *pLevels,
- Ipp8u *Runs))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiInterpolateLumaBlock_AVS_8u_P1R
- //
- // Purpose: Performs interpolation for motion estimation of the luminance component.
- //
- // Parameters:
- // interpolateInfo - pointer to a structure having interpolation parameters
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers in the interpolateInfo structure is NULL
- // ippStsSizeErr if roi.width or roi.height take values other than 16 or 8
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus, ippiInterpolateLumaBlock_AVS_8u_P1R,(const IppVCInterpolateBlock_8u *interpolateInfo))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiWeightPrediction_AVS_8u_C1R
- //
- // The function performs weighting of an interpolated block. The formulae is the following:
- // pDst[x] = (Ipp8u) Clip1(((pSrc[x] * scale + 16) >> 5) + shift);
- // where Clip1 is saturating to the Ipp8u range.
- //
- // Parameters:
- // pSrc source pointer to a block to weight
- // srcStep source block's step
- // pDst destination pointer to leave the weighted block
- // dstStep destination block's step
- // scale multiplication value
- // shift resulting shift
- // sizeBlock block size. Could be 16x16, 16x8, 8x16, 8x8
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers in the interpolateInfo structure is NULL
- // ippStsSizeErr if sizeBlock.width or sizeBlock.height take values other than 16 or 8
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus, ippiWeightPrediction_AVS_8u_C1R,(const Ipp8u *pSrc,
- Ipp32s srcStep,
- Ipp8u *pDst,
- Ipp32s dstStep,
- Ipp32u scale,
- Ipp32s shift,
- IppiSize sizeBlock))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaIntra_AVS_16s8u_C1R
- //
- // Reconstructs Intra Luma macroblock.
- //
- // Parameters:
- // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
- // pSrcDstYPlane pointer to the current macroblock that is reconstructed in Y-plane
- // srcDstYStep Y-Plane step
- // pMBIntraTypes array of Intra_8x8 luma prediction modes for each subblock
- // pSrcNumCoeffs array of indices of the last coefficient in each subblock
- // cbp8x8 coded block pattern
- // QP quantization parameter
- // edgeType specifies the availability of the macroblocks used for prediction
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
- // ippStsOutOfRangeErr QP is less than 0 or greater than 63
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus,ippiReconstructLumaIntra_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcDstYStep,
- const IppIntra8x8PredMode_AVS *pMBIntraTypes,
- const Ipp32s *pSrcNumCoeffs,
- Ipp32u cbp8x8, Ipp32u QP, Ipp32u edgeType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructLumaInter_AVS_16s8u_C1R
- //
- // Reconstructs Inter Luma macroblock.
- //
- // Parameters:
- // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
- // pSrcDstYPlane pointer to the current macroblock that is reconstructed in Y-plane
- // srcDstYStep Y-Plane step
- // pSrcNumCoeffs array of indices of the last coefficient in each subblock
- // cbp8x8 coded block pattern
- // QP quantization parameter
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
- // ippStsOutOfRangeErr QP is less than 0 or greater than 63
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus,ippiReconstructLumaInter_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstYPlane,
- Ipp32s srcDstYStep,
- const Ipp32s *pSrcNumCoeffs,
- Ipp32u cbp8x8, Ipp32u QP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructChromaIntra_AVS_16s8u_C1R
- //
- // Reconstructs Intra Chroma macroblock.
- //
- // Parameters:
- // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
- // pSrcDstUPlane pointer to the current macroblock that is reconstructed in U-plane
- // pSrcDstVPlane pointer to the current macroblock that is reconstructed in V-plane
- // srcDstUVStep chrominance planes step
- // predMode chrominance prediction mode for both subblock
- // pSrcNumCoeffs array of indices of the last coefficient in each subblock
- // cbp8x8 coded block pattern
- // chromaQP quantization parameter
- // edgeType specifies the availability of the macroblocks used for prediction
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus,ippiReconstructChromaIntra_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32s srcDstUVStep,
- const IppIntraChromaPredMode_AVS predMode,
- const Ipp32s *pSrcNumCoeffs,
- Ipp32u cbp8x8, Ipp32u chromaQP,
- Ipp32u edgeType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiReconstructChromaInter_AVS_16s8u_C1R
- //
- // Reconstructs Inter Chroma macroblock.
- //
- // Parameters:
- // ppSrcCoeff pointer to the order of 8x8 blocks of residual coefficients
- // pSrcDstUPlane pointer to the current macroblock that is reconstructed in U-plane
- // pSrcDstVPlane pointer to the current macroblock that is reconstructed in V-plane
- // srcDstUVStep chrominance planes step
- // pSrcNumCoeffs array of indices of the last coefficient in each subblock
- // cbp8x8 coded block pattern
- // chromaQP quantization parameter
- //
- // Returns:
- // ippStsNoErr Indicates no error.
- // ippStsNullPtrErr Indicates an error condition if at least one of the specified pointers is NULL.
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus,ippiReconstructChromaInter_AVS_16s8u_C1R,(Ipp16s **ppSrcCoeff,
- Ipp8u *pSrcDstUPlane,
- Ipp8u *pSrcDstVPlane,
- Ipp32s srcDstUVStep,
- const Ipp32s *pSrcNumCoeffs,
- Ipp32u cbp8x8, Ipp32u chromaQP))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingLuma_VerEdge_AVS_8u_C1IR
- // ippiFilterDeblockingLuma_HorEdge_AVS_8u_C1IR
- //
- // Purpose:
- // Perform deblocking filtering on the vertical and horizontal edges of the luma 16x16 macroblock
- //
- // Parameters:
- // pDeblockInfo - Pointer to deblocking parameters, where,
- // pSrcDstPlane - Pointer to the initial and resultant coefficients.
- // srcDstStep - Step of the array.
- // pAlpha - Array of size 2 of Alpha Thresholds.
- // pBeta - Array of size 2 of Beta Thresholds.
- // pThresholds - Array of size 2 of Thresholds.
- // pBs - Array of size 4 of BS parameters
- //
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus,ippiFilterDeblockingLuma_VerEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
- IPPAPI(IppStatus,ippiFilterDeblockingLuma_HorEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDeblockingChroma_VerEdge_AVS_8u_C1IR
- // ippiFilterDeblockingChroma_HorEdge_AVS_8u_C1IR
- //
- // Purpose:
- // Perform deblocking filtering on the vertical and horizontal edges of the chroma 8x8 macroblock
- //
- // Parameters:
- // pDeblockInfo - Pointer to deblocking parameters.
- // pSrcDstPlane - Pointer to the initial and resultant coefficients.
- // srcdstStep - Step of the array.
- // pAlpha - Array of size 1 of Alpha Thresholds.
- // pBeta - Array of size 1 of Beta Thresholds.
- // pThresholds - Array of size 1 of Thresholds.
- // pBs - Array of size 2 of BS parameters.
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus,ippiFilterDeblockingChroma_VerEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
- IPPAPI(IppStatus,ippiFilterDeblockingChroma_HorEdge_AVS_8u_C1IR,(const IppiFilterDeblock_8u *pDeblockInfo))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeLumaBlockIntra_AVS_1u16s
- // ippiDecodeLumaBlockInter_AVS_1u16s
- //
- // Purpose:
- // Decodes a luminance 8x8 block
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bit stream
- // pBitOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pNumCoeff Pointer to a variable to return the number of the last
- // decoded element in the block
- // pDstCoeffs Pointer to the decoded elements
- // scanType Type of reordering, can be 0 or 1
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiDecodeLumaBlockIntra_AVS_1u16s,(Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp32s *pNumCoeff,
- Ipp16s *pDstCoeffs,
- Ipp32u scanType))
- IPPAPI(IppStatus, ippiDecodeLumaBlockInter_AVS_1u16s,(Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp32s *pNumCoeff,
- Ipp16s *pDstCoeffs,
- Ipp32u scanType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDecodeChromaBlock_AVS_1u16s
- //
- // Purpose:
- // Decodes a chrominance 8x8 block
- //
- // Parameters:
- // ppBitStream Double pointer to the current position in the bit stream
- // pBitOffset Pointer to offset between the bit pointed by pBitStream
- // and the start of the code
- // pNumCoeff Pointer to a variable to return the number of the last
- // decoded element in the block
- // pDstCoeffs Pointer to the decoded elements
- // scanType Type of reordering, can be 0 or 1
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- */
- IPPAPI(IppStatus, ippiDecodeChromaBlock_AVS_1u16s,(Ipp32u **ppBitStream,
- Ipp32s *pBitOffset,
- Ipp32s *pNumCoeff,
- Ipp16s *pDstCoeffs,
- Ipp32u scanType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Deinterlacing filter functions
- // ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDeinterlaceMedianThreshold_8u_C1R
- //
- // Purpose:
- // Median deinterlacing with threshold.
- //
- // For each pixel (x, y) in the ROI:
- //
- // if ((y & 1) != fieldNum || ((y == 0 || y == size.height - 1) && bCopyBorder)) {
- // pDst[x + y * dstStep] = pSrc[x + y * srcStep];
- // } else {
- // m = MEDIAN(pSrc[x + (y - 1) * srcStep],
- // pSrc[x + y * srcStep],
- // pSrc[x + (y + 1) * srcStep]);
- // if (abs(m - pSrc[x + y * srcStep]) < threshold) {
- // pDst[x + y * dstStep] = pSrc[x + y * srcStep];
- // } else {
- // pDst[x + y * dstStep] = m;
- // }
- // }
- //
- // Parameters:
- // pSrc - Pointer to the source image.
- // srcStep - Step in bytes through the source image buffer.
- // pDst - Pointer to the destination image.
- // dstStep - Step in bytes through the destination image buffer.
- // size - Size of the ROI in pixels.
- // threshold - Threshold value.
- // fieldNum - Field to process, 0 or 1.
- // bCopyBorder - Non-zero means copy border line to destination,
- // zero value means process border line like internal lines.
- //
- // Returns:
- // ippStsNoErr Indicates no error. Any other value indicates an error or a warning.
- // ippStsNullPtrErr Indicates an error if one of the specified pointers is NULL.
- // ippStsStepErr Indicates an error condition if step through the source/destination image buffer has a zero or negative value.
- // ippStsSizeErr Indicates an error condition if size has a field with zero or negative
- //
- */
- IPPAPI(IppStatus, ippiDeinterlaceMedianThreshold_8u_C1R, (const Ipp8u *pSrc,
- int srcStep,
- Ipp8u *pDst,
- int dstStep,
- IppiSize size,
- int threshold,
- int fieldNum,
- int bCopyBorder))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDeinterlaceEdgeDetect_8u_C1R
- //
- // Purpose:
- // Generates image field using EdgeDetect filter.
- // For each pixel (x, y) in the ROI:
- //
- // if (((y == 0 && fieldNum == 0) || (y == size.height - 1 && fieldNum == 1)) && bCopyBound) {
- // pDst[x + y * dstStep] = pSrc[x + y * srcStep];
- // } else {
- // y0 = y + fieldNum - 1;
- // y1 = y + fieldNum;
- // pDst[x + y*dstStep] = (Ipp8u)EDGE_DETECT(pSrc[x - 1 + y0 * srcStep],
- // pSrc[x + y0 * srcStep],
- // pSrc[x + 1 + y0 * srcStep],
- // pSrc[x - 1 + y1 * srcStep],
- // pSrc[x + y1 * srcStep],
- // pSrc[x + 1 + y1 * srcStep]);
- // }
- //
- // EDGE_DETECT is:
- // int EDGE_DETECT(int a0, int a1, int a2, int b0, int b1, int b2) {
- // int d0 = abs(a0 - b2);
- // int d1 = abs(a1 - b1);
- // int d2 = abs(a2 - b0);
- // if (d0 < d1 && d0 < d2) {
- // return (a0 + b2 + 1) >> 1;
- // } else
- // if (d1 < d0 && d1 < d2) {
- // return (a1 + b1 + 1) >> 1;
- // } else {
- // return (a2 + b0 + 1) >> 1;
- // }
- // }
- //
- // Parameters:
- // pSrc - Pointer to the source image.
- // srcStep - Step in bytes through the source image buffer (field).
- // pDst - Pointer to the destination image.
- // dstStep - Step in bytes through the destination image buffer (field).
- // size - Size of the ROI in pixels.
- // fieldNum - Field to generate, 0 or 1.
- // bCopyBorder - Non-zero means copy border line to destination, zero
- // value means process border line like internal lines.
- //
- // Returns:
- // ippStsNoErr Indicates no error. Any other value indicates an error or a warning.
- // ippStsNullPtrErr Indicates an error if one of the specified pointers is NULL.
- // ippStsStepErr Indicates an error condition if step through the source/destination image buffer has a zero or negative value.
- // ippStsSizeErr Indicates an error condition if size has a field with zero or negative value.
- //
- */
- IPPAPI(IppStatus, ippiDeinterlaceEdgeDetect_8u_C1R, (const Ipp8u *pSrc,
- int srcStep,
- Ipp8u *pDst,
- int dstStep,
- IppiSize size,
- int fieldNum,
- int bCopyBorder))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDeinterlaceMotionAdaptive_8u_C1
- //
- // Purpose:
- // Motion adaptive de-interlacing filter. Requires 4 input frames.
- //
- // Parameters:
- // pSrc - pointer to array of pointers to frames - 4 source plane pointers from subsequent frames
- // srcStep - distance between source plane rows, in bytes
- // pDst - pointer to destination plane
- // dstStep - distance between destination plane rows, in bytes
- // planeSize - size of the image plane in pixels
- // threshold - (default value: 12) tradeoff between flickering and residual combing
- // artifacts. Decrease the value of the threshold to reduce combing artifacts
- // on moving objects, but the flickering on the static region is increased.
- // Zero value corresponds to the bob-deinterlacing
- // topFirst - [range is 0, 1] - defines the field order of the videosequence.
- // Usage:
- // isTopFirst = 0 for bottom field first (bff);
- // isTopFirst = 1 for top field first (tff).
- // topField - [range is 0, 1] - defines the destination field that will be used to store processed interpolated field
- // copyField - [range is 0, 1] - copy unprocessed field from the source frame to the destination
- // artifactProtection - [range is 0, 1] - sets of the additional artifact protection, to suppress distortion.
- //
- // Returns:
- // ippStsNoErr Indicates no error. Any other value indicates an error or a warning.
- // ippStsSizeErr Incorrect input roiSize of the image
- // ippStsNullPtrErr Incorrect memory address
- //
- */
- IPPAPI(IppStatus, ippiDeinterlaceMotionAdaptive_8u_C1, (const Ipp8u *pSrcPlane[4],
- int srcStep,
- Ipp8u *pDst,
- int dstStep,
- IppiSize planeSize,
- int threshold,
- int topFirst,
- int topField,
- int copyField,
- int artifactProtection))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDeinterlaceBlendInitAlloc_8u_C1
- //
- // Purpose:
- // Initialization of parameters, allocation of internal temporary buffer
- //
- // Parameters:
- // planeSize - size of the image plane in pixels
- // blendThresh - array of 2 thresholds to determine "alpha" coefficients;
- // must be 0 <= blendThresh[0] <= blendThresh[1] <= 255
- // blendConstants - array of 2 values for "alpha";
- // blendConstants[i] corresponds to blendTresh[i],
- // must be 0.0 <= blendConstants[i] <= 1.0 for i=0,1
- // ppState - pointer to pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer
- //
- // Returns:
- // ippStsOk No error, Ok
- // ippStsSizeErr Incorrect input size of the image
- // ippStsNullPtrErr Incorrect memory address
- // ippStsMemAllocErr Memory allocation error
- //
- */
- IPPAPI(IppStatus, ippiDeinterlaceBlendInitAlloc_8u_C1, (IppiSize planeSize,
- int blendThresh[2],
- double blendConstants[2],
- IppiDeinterlaceBlendState_8u_C1 **ppState))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDeinterlaceBlend_8u_C1
- //
- // Purpose:
- // Motion adaptive de-interlacing filter. Requires 3 input frames: previous, current, next.
- //
- // Parameters:
- // pSrcPlane - array of pointers to frames: [previous,
- // current, next] - 3 source plane pointers
- // srcStep - distance between source plane rows, in bytes
- // pDst - pointer to destination plane
- // dstStep - distance between destination plane rows, in bytes
- // planeSize - size of the image plane in pixels
- // topFirst - [range is 0, 1] - defines the field order of the videosequence.
- // Usage:
- // topFirst = 0 for bottom field first (bff);
- // topFirst = 1 for top field first (tff).
- // topField - [range is 0, 1] - defines the destination field that will be used to store processed interpolated field
- // copyField - [range is 0, 1] - copy unprocessed field from the source frame to the destination
- // pState - pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer
- //
- // Returns:
- // ippStsOk No error, Ok
- // ippStsSizeErr Incorrect input size of the image
- // ippStsNullPtrErr Incorrect memory address
- //
- */
- IPPAPI(IppStatus, ippiDeinterlaceBlend_8u_C1, (const Ipp8u *pSrcPlane[3],
- int srcStep,
- Ipp8u *pDst,
- int dstStep,
- IppiSize planeSize,
- int topFirst,
- int topField,
- int copyField,
- IppiDeinterlaceBlendState_8u_C1 *pState))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDeinterlaceBlendFree_8u_C1
- //
- // Purpose:
- // Free of memory, allocated by init function.
- //
- // Parameters:
- // pState - pointer to an instance of the IppiDeinterlaceBlendState_8u_C1 structure, containing temporary buffer
- //
- // Returns:
- // ippStsOk No error, Ok
- // ippStsNullPtrErr Incorrect memory address
- //
- */
- IPPAPI(IppStatus, ippiDeinterlaceBlendFree_8u_C1, (IppiDeinterlaceBlendState_8u_C1 *pState))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDenoiseSmooth_8u_C1R
- //
- // Purpose:
- // Perform Spatial Noise Reduction filtering.
- // Algorithm uses conception spatial smoothing. Effective to smooth flat area.
- //
- // Parameters:
- // pSrc - pointer to source image origin
- // srcStep - distance in bytes between starts of consecutive lines in the source image.
- // pDst - pointer to destination image origin
- // dstStep - Distance in bytes between starts of consecutive lines in the destination image
- // size - size of the source image in pixels.
- // roi - Region of interest in the source image (of the IppiRest type).
- // Destination image has the same ROI
- // threshold - parameter of denoise algorithm describes what is detected as detail and
- // so keep from removing. Increasing of this parameter enlarges the filtration area.
- // pWorkBuffer- pointer to the external work buffer, has to be 2*(roi.height*roi.width)
- //
- //
- // Returns:
- // ippStsOk No error, Ok
- // ippStsSizeErr Incorrect input size of the image or ROI
- // ippStsNullPtrErr Incorrect memory address
- //
- */
- IPPAPI(IppStatus, ippiFilterDenoiseSmooth_8u_C1R, (const Ipp8u* pSrc,
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- IppiSize size,
- IppiRect roi,
- int threshold,
- Ipp8u* pWorkBuffer))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDenoiseAdaptiveInitAlloc_8u_C1
- //
- // Purpose:
- // Creates and initializes denoise specification structure.
- //
- // Parameters:
- // ppState - Pointer to pointer to the analysis specification structure to be created
- // roiSize - Size of the source image ROI in pixels which will be processed.
- // maskSize - parameter defines the region, which is used in current pixel transformation.
- //
- // Returns:
- // ippStsOk Indicates no error. Any other value indicates an error
- // ippStsSizeErr Indicates an error condition if roiSize or maskSize have a field with zero or
- // negative value
- // ippStsNullPtrErr Indicates an error when the specified
- // pointer is NULL
- // ippStsMemAllocErr Indicates an error when no memory is allocated.
- //
- */
- IPPAPI(IppStatus, ippiFilterDenoiseAdaptiveInitAlloc_8u_C1, (IppiDenoiseAdaptiveState_8u_C1 **ppState,
- IppiSize roiSize,
- IppiSize maskSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDenoiseAdaptive_8u_C1R
- //
- // Purpose:
- // Perform Spatio-Temporal Adaptive Noise Reduction filtering.
- // The filter operates with previous, current and next frames
- //
- // Parameters:
- // pSrcPlane - array of pointers to frame:
- // pSrcPlane[0] - point to previous source image origin
- // pSrcPlane[1] - point to current source image origin
- // pSrcPlane[2] - point to next source image origin
- // srcStep - distance in bytes between starts of consecutive lines in the source image.
- // pDst - pointer to destination image origin
- // dstStep - Distance in bytes between starts of consecutive lines in the destination image
- // size - size of the source image in pixels. Destination image has the same size.
- // roi - Region of interest in the source image (of the IppiRect type).
- // Destination image has the same ROI.
- // maskSize - Size of the mask in pixels.
- // threshold - parameter of denoise algorithm describes what is detected as detail
- // and so keep from removing
- // blurType - type of blurring of noised pixel. Possible modes are
- // IPPVC_NOISE_BLUR0,
- // IPPVC_NOISE_BLUR1,
- // IPPVC_NOISE_BLUR2,
- // IPPVC_NOISE_BLUR3. See details in description.
- // pState - Pointer to the IppiDenoiseAdaptiveState_8u_C1 specification structure
- //
- // Returns:
- // ippStsOk No error, Ok
- // ippStsSizeErr Incorrect input size of the image origin or roi.
- // ippStsNullPtrErr Incorrect memory address
- //
- */
- IPPAPI(IppStatus, ippiFilterDenoiseAdaptive_8u_C1R, (const Ipp8u* pSrcPlane[3],
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- IppiSize size,
- IppiRect roi,
- IppiSize maskSize,
- int threshold,
- IppvcNoiseBlurFlag blurFlag,
- IppiDenoiseAdaptiveState_8u_C1 *pState))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDenoiseAdaptiveFree
- //
- // Purpose:
- // Closes denoise specification structure.
- //
- // Parameters:
- // pState - Pointer to the denoise specification structure to be closed.
- //
- // Returns:
- // ippStsNoErr Indicates no error
- // ippStsNullPtrErr Indicates an error when the specified pointer is NULL.
- //
- */
- IPPAPI(IppStatus, ippiFilterDenoiseAdaptiveFree_8u_C1, (IppiDenoiseAdaptiveState_8u_C1 *pState))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDenoiseMosquitoInitAlloc_8u_C1
- //
- // Purpose:
- // Creates and initializes denoise specification structure.
- //
- // Parameters:
- // ppState - Pointer to pointer to the analysis specification structure to be created
- // roiSize - Size of the ROI in pixels.
- //
- // Returns:
- // ippStsOk Indicates no error. Any other value indicates an error
- // ippStsSizeErr Indicates an error condition if size has a field with zero or
- // negative value
- // ippStsNullPtrErr Indicates an error when the specified
- // pointer is NULL
- // ippStsMemAllocErr Indicates an error when no memory is allocated.
- //
- */
- IPPAPI(IppStatus, ippiFilterDenoiseMosquitoInitAlloc_8u_C1, (IppiDenoiseMosquitoState_8u_C1 **ppState, IppiSize roiSize))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDenoiseMosquitoFree
- //
- // Purpose:
- // Closes denoise specification structure.
- //
- // Parameters:
- // pState - Pointer to the denoise specification structure to be closed.
- //
- // Returns:
- // ippStsNoErr Indicates no error
- // ippStsNullPtrErr Indicates an error when the specified pointer is NULL.
- //
- */
- IPPAPI(IppStatus, ippiFilterDenoiseMosquitoFree_8u_C1, (IppiDenoiseMosquitoState_8u_C1 *pState))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiFilterDenoiseMosquito_8u_C1R
- //
- // Purpose:
- // Perform Spatio-Temporal Motion Adaptive Mosquito Noise Reduction filtering
- //
- // Parameters:
- // pSrcPlane - array of pointers to source image origin plane
- // pSrcPlane[0] - point to previous source image origin
- // pSrcPlane[1] - point to current source image origin
- // srcStep - distance in bytes between starts of consecutive lines in the source image.
- // pDst - pointer to destination image origin
- // dstStep - Distance in bytes between starts of consecutive lines in the destination image
- // size - size of the source image in pixels. Destination image has the same size.
- // roi - Region of interest in the source image (of the IppiRest type)
- // pState - Pointer to the denoise specification structure
- //
- // Returns:
- // ippStsOk No error, Ok
- // ippStsSizeErr Incorrect input size of the image or ROI
- // ippStsNullPtrErr Incorrect memory address
- //
- */
- IPPAPI(IppStatus, ippiFilterDenoiseMosquito_8u_C1R, (const Ipp8u *pSrcPlane[2],
- int srcStep,
- Ipp8u* pDst,
- int dstStep,
- IppiSize size,
- IppiRect roi,
- IppiDenoiseMosquitoState_8u_C1 *pState))
- /* CAST */
- IPPAPI(IppStatus, ippiFilterDenoiseCASTInit, (IppDenoiseCAST *pInParam))
- IPPAPI(IppStatus,ippiFilterDenoiseCASTYUV422_8u_C2R,(const Ipp8u* pSrcCur, const Ipp8u* pSrcPrev, int srcStep,
- const Ipp8u* pSrcEdge, int srcEdgeStep,
- IppiSize srcRoiSize,
- Ipp8u* pDst, int dstStep,
- Ipp8u* pHistoryWeight, IppDenoiseCAST *pInParam))
- IPPAPI(IppStatus, ippiFilterDenoiseCAST_8u_C1R, (const Ipp8u* pSrcCur, const Ipp8u* pSrcPrev, int srcStep,
- const Ipp8u* pSrcEdge, int srcEdgeStep,
- IppiSize srcRoiSize,
- Ipp8u* pDst, int dstStep,
- Ipp8u* pHistoryWeight, IppDenoiseCAST *pInParam))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformResidual4x4Fwd_H264_16s_C1
- // ippiTransformResidual4x4Fwd_H264_32s_C1
- //
- // The function performs forward h264 transform on the block of 4x4.
- //
- // Parameters:
- // pSrc - pointer to a source block
- // pDst - pointer to a destination block
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- */
- IPPAPI(IppStatus, ippiTransformResidual4x4Fwd_H264_16s_C1, (const Ipp16s *pSrc,
- Ipp16s *pDst))
- IPPAPI(IppStatus, ippiTransformResidual4x4Fwd_H264_32s_C1, (const Ipp32s *pSrc,
- Ipp32s *pDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformResidual4x4Inv_H264_16s_C1
- // ippiTransformResidual4x4Inv_H264_32s_C1
- //
- // The function performs inverse h264 transform on the block of 4x4.
- //
- // Parameters:
- // pSrc - pointer to a source block
- // pDst - pointer to a destination block
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- //
- */
- IPPAPI(IppStatus, ippiTransformResidual4x4Inv_H264_16s_C1, (const Ipp16s *pSrc,
- Ipp16s *pDst))
- IPPAPI(IppStatus, ippiTransformResidual4x4Inv_H264_32s_C1, (const Ipp32s *pSrc,
- Ipp32s *pDst))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiTransformQuant8x8Fwd_AVS_16s_C1
- //
- // The function performs AVS forward transform and forward quantization on
- // on the block of 8x8.
- //
- // Parameters:
- // pSrc - pointer to a source block.
- // pDst - pointer to a destination block.
- // pNumCoeffs - pointer to a variable to return number of coefficients
- // in the regular scan order.
- // QP - quantization parameter.
- // roundMode - flag specifies the round mode. 1 means rounding for intra blocks,
- // all others mean rounding for inter block.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 63
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus, ippiTransformQuant8x8Fwd_AVS_16s_C1, (const Ipp16s *pSrc,
- Ipp16s *pDst,
- Ipp32u *pNumCoeffs,
- Ipp32u QP,
- Ipp32u roundMode))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDisassembleLumaIntra_AVS_16s8u_C1R
- //
- // The function performs disassembling of AVS luminance macroblock 16x16.
- // The function performs the following step over every block 8x8 of the
- // macroblock:
- // finds the best prediction mode in pDstPlane for a block and saves
- // the mode into appropriate position in pPredModes array.
- // gets the residual between the predicted block and corresponding
- // block in pSrcPlane
- // does forward transformation and quantization of the residual and save
- // it to ppDstCoeff buffer, incrementing ppDstCoeff pointer and sets
- // the appropriate bit into the variable pointed by pLumaCBP. When block has
- // the zero residual after quantization, the pointer ppDstCoeff and variable
- // pointed by pLumaCBP are non changing.
- // performs the backward quantization, transforming of the residual and
- // adds to the predicted data in pDstPlane
- //
- // Parameters:
- // pSrcPlane - pointer to a source block.
- // srcStep - step of the source plane
- // pDstPLane - pointer to a destination block.
- // dstStep - step of the destination plane
- // ppDstCoeff - pointer to pointer to a buffer for coefficients
- // pPredModes - pointer to array of 4 to store prediction modes of blocks
- // pLumaCBP - pointer to a variable to return final CBP of the macroblock
- // QP - quantization parameter.
- // edgeType - flags of available neighbours.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 63
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus, ippiDisassembleLumaIntra_AVS_16s8u_C1R, (const Ipp8u *pSrcPlane, Ipp32s srcStep,
- Ipp8u *pDstPlane, Ipp32s dstStep,
- Ipp16s **ppDstCoeff,
- IppIntra8x8PredMode_AVS *pPredModes,
- Ipp32u *pLumaCBP,
- Ipp32u QP,
- Ipp32u edgeType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiDisassembleChroma420Intra_AVS_16s8u_C1R
- //
- // The function performs disassembling of AVS chrominance 420 macroblock 8x8
- // The function performs the following step over every block 8x8 of the
- // macroblock:
- // finds the best prediction mode in pDstPlane for a block and saves
- // the mode into appropriate position in pPredModes array.
- // gets the residual between the predicted block and corresponding
- // block in pSrcPlane
- // does forward transformation and quantization of the residual and save
- // it to ppDstCoeff buffer, incrementing ppDstCoeff pointer and sets
- // the appropriate bit into the variable pointed by pChromaCBP. When block
- // has the zero residual after quantization, the pointer ppDstCoeff and
- // variable pointed by pChromaCBP are non changing.
- // performs the backward quantization, transforming of the residual and
- // adds to the predicted data in pDstPlane
- //
- // Parameters:
- // pSrcPlane - array of pointers pointer to a source block.
- // srcStep - step of the source plane
- // pDstPLane - array of pointer to a destination block.
- // dstStep - step of the destination plane
- // ppDstCoeff - pointer to pointer to a buffer for coefficients
- // pPredMode - pointer to a variable to store prediction mode of blocks
- // pChromaCBP - pointer to a variable to return final CBP of the macroblock
- // chromaQP - quantization parameter.
- // edgeType - flags of available neighbours.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr One of the pointers is NULL
- // ippStsOutOfRangeErr QP is less than 0 or greater than 51
- //
- // Notes:
- // AVS China standard : GB/T 20090.2 - 2006
- //
- */
- IPPAPI(IppStatus, ippiDisassembleChroma420Intra_AVS_16s8u_C1R, (const Ipp8u *pSrcPlane[2], Ipp32s srcStep,
- Ipp8u *pDstPlane[2], Ipp32s dstStep,
- Ipp16s **ppDstCoeff,
- IppIntraChromaPredMode_AVS *pPredMode,
- Ipp32u *pChromaCBP, Ipp32u chromaQP, Ipp32u edgeType))
- /* ///////////////////////////////////////////////////////////////////////////
- // Name:
- // ippiQuantizeResidual4x4Fwd_H264_16s_C1
- // ippiQuantizeResidual4x4Fwd_H264_16s32s_C1
- // ippiQuantizeResidual4x4Fwd_H264_32s_C1
- //
- // Purpose:
- // These functions perform forward quantization for 4x4 residual block.
- //
- // Parameters:
- // pSrc Source array of size 16
- // pDst Destination array of size 16
- // pNumNonZeros Number of non-zero coefficients after the quantization
- // process
- // pLastNonZeros Ordinal number of last non-zero coefficient after the
- // quantization process in scan order
- // pQuantTable Pointer to a quantizing matrix, if NULL, the default one
- // is applied
- // pScanMatrix Scan matrix for coefficients in block (array of size 16)
- // QP Quantization parameter.
- // roundMode Flag that is equal 1 in the case of Intra slice, 0 otherwise.
- //
- // Returns:
- // ippStsNoErr No error
- // ippStsNullPtrErr A pointer is NULL
- // ippStsOutOfRangeErr QP > 51 (87 for 32s) or QP < 0
- */
- IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_16s_C1, (const Ipp16s *pSrc,
- Ipp16s *pDst,
- Ipp32u *pNumNonZeros,
- Ipp32u *pLastNonZero,
- const Ipp16s *pQuantTable,
- const Ipp16s *pScanMatrix,
- Ipp32s QP,
- Ipp32s roundMode))
- IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_16s32s_C1, (const Ipp16s *pSrc,
- Ipp16s *pDst,
- Ipp32u *pNumNonZeros,
- Ipp32u *pLastNonZero,
- const Ipp32s *pQuantTable,
- const Ipp16s *pScanMatrix,
- Ipp32s QP,
- Ipp32s roundMode))
- IPPAPI(IppStatus, ippiQuantizeResidual4x4Fwd_H264_32s_C1, (const Ipp32s *pSrc,
- Ipp32s *pDst,
- Ipp32u *pNumNonZeros,
- Ipp32u *pLastNonZero,
- const Ipp32s *pQuantTable,
- const Ipp16s *pScanMatrix,
- Ipp32s QP,
- Ipp32s roundMode))
- #if defined __cplusplus
- }
- #endif
- #if defined (_IPP_STDCALL_CDECL)
- #undef _IPP_STDCALL_CDECL
- #define __stdcall __cdecl
- #endif
- #endif /* __IPPVC_H__ */
- /* End of file ippvc.h*/
|