ippj.h 209 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261
  1. /* ///////////////////////////////////////////////////////////////////////////
  2. //
  3. // INTEL CORPORATION PROPRIETARY INFORMATION
  4. // This software is supplied under the terms of a license agreement or
  5. // nondisclosure agreement with Intel Corporation and may not be copied
  6. // or disclosed except in accordance with the terms of that agreement.
  7. // Copyright(c) 1999-2009 Intel Corporation. All Rights Reserved.
  8. //
  9. // Intel(R) Integrated Performance Primitives
  10. // JPEG Processing (ippJP)
  11. //
  12. */
  13. #if !defined( __IPPJ_H__ ) || defined( _OWN_BLDPCS )
  14. #define __IPPJ_H__
  15. #if defined (_WIN32_WCE) && defined (_M_IX86) && defined (__stdcall)
  16. #define _IPP_STDCALL_CDECL
  17. #undef __stdcall
  18. #endif
  19. #ifndef __IPPDEFS_H__
  20. #include "ippdefs.h"
  21. #endif
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #if !defined( _OWN_BLDPCS )
  26. /* ///////////////////////////////////////////////////////////////////////////
  27. // Name:
  28. // IppiEncodeHuffmanSpec
  29. //
  30. // Purpose:
  31. // Encoder Huffman table in fast-to-use format
  32. //
  33. // Notes:
  34. //
  35. */
  36. struct EncodeHuffmanSpec;
  37. typedef struct EncodeHuffmanSpec IppiEncodeHuffmanSpec;
  38. /* ///////////////////////////////////////////////////////////////////////////
  39. // Name:
  40. // IppiDecodeHuffmanSpec
  41. //
  42. // Purpose:
  43. // Decoder Huffman table in fast-to-use format
  44. //
  45. // Notes:
  46. //
  47. */
  48. struct DecodeHuffmanSpec;
  49. typedef struct DecodeHuffmanSpec IppiDecodeHuffmanSpec;
  50. /* ///////////////////////////////////////////////////////////////////////////
  51. // Name:
  52. // IppiEncodeHuffmanState
  53. //
  54. // Purpose:
  55. // Huffman encoder state
  56. //
  57. // Notes:
  58. //
  59. */
  60. struct EncodeHuffmanState;
  61. typedef struct EncodeHuffmanState IppiEncodeHuffmanState;
  62. /* ///////////////////////////////////////////////////////////////////////////
  63. // Name:
  64. // IppiDecodeHuffmanState
  65. //
  66. // Purpose:
  67. // Huffman decoder state
  68. //
  69. // Notes:
  70. //
  71. */
  72. struct DecodeHuffmanState;
  73. typedef struct DecodeHuffmanState IppiDecodeHuffmanState;
  74. /* ///////////////////////////////////////////////////////////////////////////
  75. // Name:
  76. // IppiEncodeState_JPEG2K
  77. //
  78. // Purpose:
  79. // State structure for JPEG2000 entropy encoder
  80. //
  81. // Notes:
  82. //
  83. */
  84. struct iEncodeState_JPEG2K;
  85. typedef struct iEncodeState_JPEG2K IppiEncodeState_JPEG2K;
  86. /* ///////////////////////////////////////////////////////////////////////////
  87. // Name:
  88. // IppiDecodeCBProgrState_JPEG2K
  89. //
  90. // Purpose:
  91. // State structure for JPEG2000 entropy decoder
  92. //
  93. // Notes:
  94. //
  95. */
  96. struct iDecodeCBProgrState_JPEG2K;
  97. typedef struct iDecodeCBProgrState_JPEG2K IppiDecodeCBProgrState_JPEG2K;
  98. /* ///////////////////////////////////////////////////////////////////////////
  99. // Name:
  100. // IppiWTFilterFirst
  101. //
  102. // Purpose:
  103. // Enumerator of relative positions of high-pass and low-pass filters
  104. // for JPEG 2000 wavelet transforms.
  105. //
  106. // Notes:
  107. //
  108. */
  109. typedef enum
  110. {
  111. ippWTFilterFirstLow,
  112. ippWTFilterFirstHigh
  113. } IppiWTFilterFirst;
  114. /* ///////////////////////////////////////////////////////////////////////////
  115. // Name:
  116. // IppiWTSubband
  117. //
  118. // Purpose:
  119. // Enumerator of wavelet transform subband
  120. // for JPEG 2000 entropy coder.
  121. //
  122. // ippWTSubbandLxLy - low-pass filtered along x and y directions,
  123. // ippWTSubbandLxHy - low-pass filtered along x
  124. // and high-pass filtered along y direction,
  125. // ippWTSubbandHxLy - high-pass filtered along x
  126. // and low-pass filtered along y direction,
  127. // ippWTSubbandHxHy - high-pass filtered by x and y directions.
  128. //
  129. // Notes:
  130. //
  131. */
  132. typedef enum
  133. {
  134. ippWTSubbandLxLy,
  135. ippWTSubbandLxHy,
  136. ippWTSubbandHxLy,
  137. ippWTSubbandHxHy
  138. } IppiWTSubband;
  139. /* ///////////////////////////////////////////////////////////////////////////
  140. // Name:
  141. // IppiMQTermination
  142. //
  143. // Purpose:
  144. // Enumerator of MQ encoder termination types.
  145. // It used in JPEG2000 entropy coding functions.
  146. //
  147. // ippMQTermSimple - simple termination
  148. // (some extra bytes can be placed),
  149. // ippMQTermNearOptimal - very good termination mode,
  150. // ippMQTermPredictable - termination mode used for
  151. // predictable error resilience
  152. //
  153. // Notes:
  154. //
  155. */
  156. typedef enum
  157. {
  158. ippMQTermSimple,
  159. ippMQTermNearOptimal,
  160. ippMQTermPredictable
  161. } IppiMQTermination;
  162. /* ///////////////////////////////////////////////////////////////////////////
  163. // Name:
  164. // IppiMQRateAppr
  165. //
  166. // Purpose:
  167. // Enumerator of MQ padding approximation in rate-distortion estimation.
  168. // It used in JPEG2000 entropy coding functions.
  169. //
  170. // ippMQRateApprGood - non-optimal approximation,
  171. // rate can be overestimated a little.
  172. //
  173. // Notes: only one approximation model implemented at the moment
  174. //
  175. */
  176. typedef enum
  177. {
  178. ippMQRateApprGood
  179. } IppiMQRateAppr;
  180. /* ///////////////////////////////////////////////////////////////////////////
  181. // Name:
  182. //
  183. // Purpose:
  184. // Enumerator of JPEG2000 entropy coder end decoder code style flags.
  185. //
  186. // Notes:
  187. // IPP_JPEG2K_VERTICALLY_CAUSAL_CONTEXT
  188. // - vertically causal context will be formed,
  189. // IPP_JPEG2K_SELECTIVE_MQ_BYPASS
  190. // - selective MQ coding bypassing will be used (i.e. raw coding
  191. // will be used for some passes),
  192. // IPP_JPEG2K_TERMINATE_ON_EVERY_PASS
  193. // - terminate MQ coder on every pass,
  194. // IPP_JPEG2K_RESETCTX_ON_EVERY_PASS
  195. // - reset MQ coder context on every pass,
  196. // IPP_JPEG2K_USE_SEGMENTATION_SYMBOLS
  197. // - use segmentation symbol sequence for error resilence,
  198. // IPP_JPEG2K_LOSSLESS_MODE
  199. // - inform about the use of lossless wavelet transforms
  200. // in rate-distortion estimation,
  201. // IPP_JPEG2K_DEC_DO_NOT_CLEAR_CB
  202. // - do not clear codeblock data before decoding,
  203. // IPP_JPEG2K_DEC_DO_NOT_RESET_LOW_BITS
  204. // - do not reset low-order bits after decoding,
  205. // IPP_JPEG2K_DEC_DO_NOT_CLEAR_SFBUFFER
  206. // - do not clear buffer before decoding to keep previous
  207. // significance state information.
  208. // IPP_JPEG2K_DEC_CHECK_PRED_TERM
  209. // - check predictable termination during decoding,
  210. // if it is not right 'damage in codeblock' error
  211. // code will be generated.
  212. // This flag should be used only in predictable
  213. // termination mode.
  214. //
  215. */
  216. enum
  217. {
  218. IPP_JPEG2K_VERTICALLY_CAUSAL_CONTEXT = 1,
  219. IPP_JPEG2K_SELECTIVE_MQ_BYPASS = 1 << 1,
  220. IPP_JPEG2K_TERMINATE_ON_EVERY_PASS = 1 << 2,
  221. IPP_JPEG2K_RESETCTX_ON_EVERY_PASS = 1 << 3,
  222. IPP_JPEG2K_USE_SEGMENTATION_SYMBOLS = 1 << 4,
  223. IPP_JPEG2K_LOSSLESS_MODE = 1 << 5,
  224. IPP_JPEG2K_DEC_CONCEAL_ERRORS = 1 << 16,
  225. IPP_JPEG2K_DEC_DO_NOT_CLEAR_CB = 1 << 17,
  226. IPP_JPEG2K_DEC_DO_NOT_RESET_LOW_BITS = 1 << 18,
  227. IPP_JPEG2K_DEC_DO_NOT_CLEAR_SFBUFFER = 1 << 19,
  228. IPP_JPEG2K_DEC_CHECK_PRED_TERM = 1 << 20
  229. };
  230. /* ///////////////////////////////////////////////////////////////////////////
  231. // Name:
  232. //
  233. // Purpose:
  234. // Enumerator of lossless JPEG predictors
  235. //
  236. */
  237. enum
  238. {
  239. PRED1 = 1,
  240. PRED2 = 2,
  241. PRED3 = 3,
  242. PRED4 = 4,
  243. PRED5 = 5,
  244. PRED6 = 6,
  245. PRED7 = 7
  246. };
  247. #endif /* _OWN_BLDPCS */
  248. /* ///////////////////////////////////////////////////////////////////////////
  249. // Miscelenauos functions
  250. /////////////////////////////////////////////////////////////////////////// */
  251. /* ///////////////////////////////////////////////////////////////////////////
  252. // Name:
  253. // ippjGetLibVersion
  254. //
  255. // Purpose:
  256. // get the library version
  257. //
  258. // Parameters:
  259. //
  260. // Returns:
  261. // pointer to structure describing version of the ippj library
  262. //
  263. // Notes:
  264. // don't free the pointer to IppLibraryVersion
  265. */
  266. IPPAPI( const IppLibraryVersion*, ippjGetLibVersion, (void) )
  267. /* ///////////////////////////////////////////////////////////////////////////
  268. // Huffman Encoding Functions (Baseline)
  269. /////////////////////////////////////////////////////////////////////////// */
  270. /* ///////////////////////////////////////////////////////////////////////////
  271. // Name:
  272. // ippiEncodeHuffmanRawTableInit_JPEG_8u
  273. //
  274. // Purpose:
  275. // Build Huffman "raw" table from counted statistics of
  276. // Huffman symbols for 8-bit precision
  277. //
  278. // Parameters:
  279. // pStatistics - pointer to array of 256 int,
  280. // with the one entry for each of possible huffman symbol.
  281. // pListBits - pointer to array of 16 bytes.
  282. // pListVals - pointer to array of 256 bytes.
  283. //
  284. // Returns:
  285. // IppStatus
  286. //
  287. // Notes:
  288. // pListBits represents list of BITS and pListVals represent list
  289. // of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
  290. */
  291. IPPAPI(IppStatus, ippiEncodeHuffmanRawTableInit_JPEG_8u, (
  292. const int pStatistics[256],
  293. Ipp8u* pListBits,
  294. Ipp8u* pListVals))
  295. /* ///////////////////////////////////////////////////////////////////////////
  296. // Name:
  297. // ippiEncodeHuffmanSpecGetBufSize_JPEG_8u
  298. //
  299. // Purpose:
  300. // get size of IppjEncodeHuffmanSpec struct
  301. //
  302. // Parameters:
  303. // size - where write size of buffer
  304. //
  305. // Returns:
  306. // IppStatus
  307. //
  308. // Notes:
  309. //
  310. */
  311. IPPAPI(IppStatus, ippiEncodeHuffmanSpecGetBufSize_JPEG_8u, (
  312. int* size))
  313. /* ///////////////////////////////////////////////////////////////////////////
  314. // Name:
  315. // ippiEncodeHuffmanSpecInit_JPEG_8u
  316. //
  317. // Purpose:
  318. // Build Huffman table for encoder
  319. // in fast-to-use format from "raw" Huffman table
  320. //
  321. // Parameters:
  322. // pListBits - pointer to array of 16 bytes.
  323. // pListVals - pointer to array of up to 256 bytes.
  324. // pEncHuffSpec - pointer to Huffman table to be initialized
  325. //
  326. // Returns:
  327. // IppStatus
  328. //
  329. // Notes:
  330. // pListBits represents list of BITS and pListVals represent list
  331. // of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
  332. */
  333. IPPAPI(IppStatus, ippiEncodeHuffmanSpecInit_JPEG_8u, (
  334. const Ipp8u* pListBits,
  335. const Ipp8u* pListVals,
  336. IppiEncodeHuffmanSpec* pEncHuffSpec))
  337. /* ///////////////////////////////////////////////////////////////////////////
  338. // Name:
  339. // ippiEncodeHuffmanSpecInitAlloc_JPEG_8u
  340. //
  341. // Purpose:
  342. // Allocate memory and build Huffman table for encoder
  343. // in fast-to-use format from "raw" Huffman table
  344. //
  345. // Parameters:
  346. // pListBits - pointer to array of 16 bytes.
  347. // pListVals - pointer to array of up to 256 bytes.
  348. // ppEncHuffSpec - pointer to pointer on Huffman table
  349. // to be allocated and initialized
  350. //
  351. // Returns:
  352. // IppStatus
  353. //
  354. // Notes:
  355. // pListBits represents list of BITS and pListVals represent
  356. // list of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
  357. */
  358. IPPAPI(IppStatus, ippiEncodeHuffmanSpecInitAlloc_JPEG_8u, (
  359. const Ipp8u* pListBits,
  360. const Ipp8u* pListVals,
  361. IppiEncodeHuffmanSpec** ppEncHuffSpec))
  362. /* ///////////////////////////////////////////////////////////////////////////
  363. // Name:
  364. // ippiEncodeHuffmanSpecFree_JPEG_8u
  365. //
  366. // Purpose:
  367. // Free memory for encoder Huffman table
  368. //
  369. // Parameters:
  370. // pEncHuffSpec - pointer to Huffman table
  371. //
  372. // Returns:
  373. // IppStatus
  374. //
  375. // Notes:
  376. //
  377. */
  378. IPPAPI(IppStatus, ippiEncodeHuffmanSpecFree_JPEG_8u, (
  379. IppiEncodeHuffmanSpec* pEncHuffSpec))
  380. /* ///////////////////////////////////////////////////////////////////////////
  381. // Name:
  382. // ippiEncodeHuffmanStateGetBufSize_JPEG_8u
  383. //
  384. // Purpose:
  385. // get size of IppiEncoderHuffmanState struct
  386. //
  387. // Parameters:
  388. // size - where write size of buffer
  389. //
  390. // Returns:
  391. // IppStatus
  392. //
  393. // Notes:
  394. //
  395. */
  396. IPPAPI(IppStatus, ippiEncodeHuffmanStateGetBufSize_JPEG_8u, (
  397. int* size))
  398. /* ///////////////////////////////////////////////////////////////////////////
  399. // Name:
  400. // ippiEncodeHuffmanStateInit_JPEG_8u
  401. //
  402. // Purpose:
  403. // Build EncHuffState struct for encoder
  404. //
  405. // Parameters:
  406. // pEncHuffState - pointer to EncHuffState struct to be initialized
  407. //
  408. // Returns:
  409. // IppStatus
  410. //
  411. // Notes:
  412. //
  413. */
  414. IPPAPI(IppStatus, ippiEncodeHuffmanStateInit_JPEG_8u, (
  415. IppiEncodeHuffmanState* pEncHuffState))
  416. /* ///////////////////////////////////////////////////////////////////////////
  417. // Name:
  418. // ippiEncodeHuffmanStateInitAlloc_JPEG_8u
  419. //
  420. // Purpose:
  421. // Allocate memory and build EncHuffState struct for encoder
  422. //
  423. // Parameters:
  424. // ppEncHuffState - pointer to pointer on EncHuffState struct
  425. // to be allocated and initialized
  426. //
  427. // Returns:
  428. // IppStatus
  429. //
  430. // Notes:
  431. //
  432. */
  433. IPPAPI(IppStatus, ippiEncodeHuffmanStateInitAlloc_JPEG_8u, (
  434. IppiEncodeHuffmanState** ppEncHuffState))
  435. /* ///////////////////////////////////////////////////////////////////////////
  436. // Name:
  437. // ippiEncodeHuffmanStateFree_JPEG_8u
  438. //
  439. // Purpose:
  440. // Free memory for encoder EncHuffState struct
  441. //
  442. // Parameters:
  443. // pEncHuffState - pointer to EncHuffState struct
  444. //
  445. // Returns:
  446. // IppStatus
  447. //
  448. // Notes:
  449. //
  450. */
  451. IPPAPI(IppStatus, ippiEncodeHuffmanStateFree_JPEG_8u, (
  452. IppiEncodeHuffmanState* pEncHuffState))
  453. /* ///////////////////////////////////////////////////////////////////////////
  454. // Name:
  455. // ippiEncodeHuffman8x8_JPEG_16s1u_C1
  456. //
  457. // Purpose:
  458. // Huffman encode 8x8 block of quantized DCT coefs
  459. //
  460. // Parameters:
  461. // pSrc pointer to 8x8 block of quantized DCT coefficients
  462. // pDst pointer to output JPEG bitstream
  463. // dstLenBytes bitstream length, in bytes
  464. // pDstCurrPos pointer to current byte offset in buffer (in/out)
  465. // pLastDC pointer to last DC coefficient from previous block of
  466. // the same color component (in/out)
  467. // pEncHuffState pointer to Huffman state struct
  468. // pDcTable pointer to Huffman DC table
  469. // pAcTable pointer to Huffman AC table
  470. // bFlushState if non zero - only flush any pending bits
  471. // from IppiEncodeHuffmanState to bitstream
  472. //
  473. // Returns:
  474. // IppStatus
  475. //
  476. // Notes:
  477. // set bFlushState to 1, after processing all MCUs in scan, to
  478. // flush any pending bits from IppiEncodeHuffmanState to bitstream
  479. // Encoding perform as defined in ISO/IEC 10918-1.
  480. // Appendix A - Requirements and guidelines,
  481. // Annex F, F.1.2 - Baseline Huffman encoding procedures.
  482. */
  483. IPPAPI(IppStatus, ippiEncodeHuffman8x8_JPEG_16s1u_C1, (
  484. const Ipp16s* pSrc,
  485. Ipp8u* pDst,
  486. int dstLenBytes,
  487. int* pDstCurrPos,
  488. Ipp16s* pLastDC,
  489. const IppiEncodeHuffmanSpec* pDcTable,
  490. const IppiEncodeHuffmanSpec* pAcTable,
  491. IppiEncodeHuffmanState* pEncHuffState,
  492. int bFlushState))
  493. /* ///////////////////////////////////////////////////////////////////////////
  494. // Name:
  495. // ippiEncodeHuffman8x8_Direct_JPEG_16s1u_C1
  496. //
  497. // Purpose:
  498. // Huffman encode 8x8 block of quantized DCT coefs
  499. //
  500. // Parameters:
  501. // pSrc pointer to 8x8 block of quantized DCT coefficients
  502. // pDst pointer to output JPEG bitstream
  503. // pDstBitsLen bitstream length, in bits (in/out)
  504. // pLastDC pointer to last DC coefficient from previous block of
  505. // the same color component (in/out)
  506. // pDcTable pointer to Huffman DC table
  507. // pAcTable pointer to Huffman AC table
  508. //
  509. // Returns:
  510. // IppStatus
  511. //
  512. // Notes:
  513. // Encoding perform as defined in ISO/IEC 10918-1.
  514. // Appendix A - Requirements and guidelines,
  515. // Annex F, F.1.2 - Baseline Huffman encoding procedures.
  516. */
  517. IPPAPI(IppStatus, ippiEncodeHuffman8x8_Direct_JPEG_16s1u_C1, (
  518. const Ipp16s* pSrc,
  519. Ipp8u* pDst,
  520. int* pDstBitsLen,
  521. Ipp16s* pLastDC,
  522. const IppiEncodeHuffmanSpec* pDcTable,
  523. const IppiEncodeHuffmanSpec* pAcTable))
  524. /* ///////////////////////////////////////////////////////////////////////////
  525. // Name:
  526. // ippiGetHuffmanStatistics8x8_JPEG_16s_C1
  527. //
  528. // Purpose:
  529. // Calculate statistics of huffman values
  530. //
  531. // Parameters:
  532. // pSrc - pointer to 8x8 block of quantized DCT coefficients
  533. // pDcStatistics - pointer to 256 elements array
  534. // pAcStatistics - pointer to 256 elements array
  535. // pLastDC - pointer to DC coefficient from previous 8x8 block
  536. //
  537. // Returns:
  538. // IppStatus
  539. //
  540. // Notes:
  541. //
  542. */
  543. IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_JPEG_16s_C1, (
  544. const Ipp16s* pSrc,
  545. int pDcStatistics[256],
  546. int pAcStatistics[256],
  547. Ipp16s* pLastDC))
  548. /* ///////////////////////////////////////////////////////////////////////////
  549. // Huffman Encoding Functions (Progressive)
  550. /////////////////////////////////////////////////////////////////////////// */
  551. /* ///////////////////////////////////////////////////////////////////////////
  552. // Name:
  553. // ippiGetHuffmanStatistics8x8_DCFirst_JPEG_16s_C1
  554. //
  555. // Purpose:
  556. // Calculate statistics of huffman values, progressive coding,
  557. // first scan
  558. //
  559. // Parameters:
  560. // pSrc - pointer to 8x8 block of quantized DCT coefficients
  561. // pDcStatistics - pointer to 256 elements array
  562. // pLastDC - pointer to DC coefficient from previous 8x8 block
  563. // Al - successive approximation bit position low
  564. //
  565. // Returns:
  566. // IppStatus
  567. //
  568. // Notes:
  569. //
  570. */
  571. IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_DCFirst_JPEG_16s_C1, (
  572. const Ipp16s* pSrc,
  573. int pDcStatistics[256],
  574. Ipp16s* pLastDC,
  575. int Al))
  576. /* ///////////////////////////////////////////////////////////////////////////
  577. // Name:
  578. // ippiGetHuffmanStatistics8x8_ACFirst_JPEG_16s_C1
  579. //
  580. // Purpose:
  581. // Calculate statistics of huffman values, progressive coding,
  582. // first scan
  583. //
  584. // Parameters:
  585. // pSrc - pointer to 8x8 block of quantized DCT coefficients
  586. // pAcStatistics - pointer to 256 elements array
  587. // Ss - start of spectral selection
  588. // Se - end of spectral selection
  589. // Al - successive approximation bit position low
  590. // pEncHuffState - huffman encoder state
  591. // bFlushState - set to 1, after processing all MCUs
  592. // to flush EOB counter
  593. //
  594. // Returns:
  595. // IppStatus
  596. //
  597. // Notes:
  598. //
  599. */
  600. IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_ACFirst_JPEG_16s_C1, (
  601. const Ipp16s* pSrc,
  602. int pAcStatistics[256],
  603. int Ss,
  604. int Se,
  605. int Al,
  606. IppiEncodeHuffmanState* pEncHuffState,
  607. int bFlushState))
  608. /* ///////////////////////////////////////////////////////////////////////////
  609. // Name:
  610. // ippiGetHuffmanStatistics8x8_ACRefine_JPEG_16s_C1
  611. //
  612. // Purpose:
  613. // Calculate statistics of huffman values, progressive coding,
  614. // next scans
  615. //
  616. // Parameters:
  617. // pSrc - pointer to 8x8 block of quantized DCT coefficients
  618. // pAcStatistics - pointer to 256 elements array
  619. // Ss - start of spectral selection
  620. // Se - end of spectral selection
  621. // Al - successive approximation bit position low
  622. // pEncHuffState - huffman encoder state
  623. // bFlushState - set to 1, after processing all MCUs
  624. // to flush EOB counter
  625. //
  626. // Returns:
  627. // IppStatus
  628. //
  629. // Notes:
  630. //
  631. */
  632. IPPAPI(IppStatus, ippiGetHuffmanStatistics8x8_ACRefine_JPEG_16s_C1, (
  633. const Ipp16s* pSrc,
  634. int pAcStatistics[256],
  635. int Ss,
  636. int Se,
  637. int Al,
  638. IppiEncodeHuffmanState* pEncHuffState,
  639. int bFlushState))
  640. /* ///////////////////////////////////////////////////////////////////////////
  641. // Name:
  642. // ippiEncodeHuffman8x8_DCFirst_JPEG_16s1u_C1
  643. //
  644. // Purpose:
  645. // huffman encode DC coefficient from 8x8 block of quantized
  646. // DCT coefficients. Progressive coding, first scan
  647. //
  648. // Parameters:
  649. // pSrc - pointer to 8x8 block of quantized DCT coefficients
  650. // pDst - pointer to output bitstream
  651. // dstLenBytes - length of bitstream buffer
  652. // pDstCurrPos - corrent byte position in bitstream buffer
  653. // pLastDC - pointer to DC coefficient from previous 8x8 block
  654. // Al - successive approximation bit position low
  655. // pDcTable - pointer to DC huffman table
  656. // pEncHuffState - pointer to encoder huffman state
  657. // bFlushState - set to 1, after processing all MCUs
  658. // to flush any pending bits from state
  659. //
  660. // Returns:
  661. // IppStatus
  662. //
  663. // Notes:
  664. // Encoding perform as defined in ISO/IEC 10918-1.
  665. // Appendix A - Requirements and guidelines,
  666. // Annex G, G.1.2 - Progressive encoding procedures with Huffman.
  667. */
  668. IPPAPI(IppStatus, ippiEncodeHuffman8x8_DCFirst_JPEG_16s1u_C1, (
  669. const Ipp16s* pSrc,
  670. Ipp8u* pDst,
  671. int dstLenBytes,
  672. int* pDstCurrPos,
  673. Ipp16s* pLastDC,
  674. int Al,
  675. const IppiEncodeHuffmanSpec* pDcTable,
  676. IppiEncodeHuffmanState* pEncHuffState,
  677. int bFlushState))
  678. /* ///////////////////////////////////////////////////////////////////////////
  679. // Name:
  680. // ippiEncodeHuffman8x8_DCRefine_JPEG_16s1u_C1
  681. //
  682. // Purpose:
  683. // huffman encode DC coefficient from 8x8 block of quantized
  684. // DCT coefficients. Progressive coding, next scans
  685. //
  686. // Parameters:
  687. // pSrc - pointer to 8x8 block of quantized DCT coefficients
  688. // pDst - pointer to output bitstream
  689. // dstLenBytes - length of bitstream
  690. // pDstCurrPos - current byte position in bitstream
  691. // Al - successive approximation bit position low
  692. // pEncHuffState - pointer to encoder huffman state
  693. // bFlushState - set to 1, after processing all MCUs
  694. // to flush any pending bits from state
  695. //
  696. // Returns:
  697. // IppStatus
  698. //
  699. // Notes:
  700. // Encoding perform as defined in ISO/IEC 10918-1.
  701. // Appendix A - Requirements and guidelines,
  702. // Annex G, G.1.2 - Progressive encoding procedures with Huffman.
  703. */
  704. IPPAPI(IppStatus, ippiEncodeHuffman8x8_DCRefine_JPEG_16s1u_C1, (
  705. const Ipp16s* pSrc,
  706. Ipp8u* pDst,
  707. int dstLenBytes,
  708. int* pDstCurrPos,
  709. int Al,
  710. IppiEncodeHuffmanState* pEncHuffState,
  711. int bFlushState))
  712. /* ///////////////////////////////////////////////////////////////////////////
  713. // Name:
  714. // ippiEncodeHuffman8x8_ACFirst_JPEG_16s1u_C1
  715. //
  716. // Purpose:
  717. // huffman encode AC coefficients from 8x8 block of quantized
  718. // DCT coefficients. Progressive coding, first scan
  719. //
  720. // Parameters:
  721. // pSrc - pointer to 8x8 block of quantized DCT coefficients
  722. // pDst - pointer to output bitstream buffer
  723. // dstLenBytes - length of bitstream buffer
  724. // pDstCurrPos - current byte position in bitstream buffer
  725. // Ss - start of spectral selection
  726. // Se - end of spectral selection
  727. // Al - successive approximation bit position low
  728. // pAcTable - pointer to encoder haffman AC table
  729. // pEncHuffState - pointer encoder huffman state
  730. // bFlushState - set to 1, after processing all MCUs
  731. // to flush any pending bits from state
  732. //
  733. // Returns:
  734. // IppStatus
  735. //
  736. // Notes:
  737. // Encoding perform as defined in ISO/IEC 10918-1.
  738. // Appendix A - Requirements and guidelines,
  739. // Annex G, G.1.2 - Progressive encoding procedures with Huffman.
  740. */
  741. IPPAPI(IppStatus, ippiEncodeHuffman8x8_ACFirst_JPEG_16s1u_C1, (
  742. const Ipp16s* pSrc,
  743. Ipp8u* pDst,
  744. int dstLenBytes,
  745. int* pDstCurrPos,
  746. int Ss,
  747. int Se,
  748. int Al,
  749. const IppiEncodeHuffmanSpec* pAcTable,
  750. IppiEncodeHuffmanState* pEncHuffState,
  751. int bFlushState))
  752. /* ///////////////////////////////////////////////////////////////////////////
  753. // Name:
  754. // ippiEncodeHuffman8x8_ACRefine_JPEG_16s1u_C1
  755. //
  756. // Purpose:
  757. // huffman encode AC coefficients from 8x8 block of quantized
  758. // DCT coefficients. Progressive coding, next scans
  759. //
  760. // Parameters:
  761. // pSrc - pointer to 8x8 block of quantized DCT coefficeints
  762. // pDst - pointer to output bitstream buffer
  763. // dstLenBytes - length of bitstream buffer
  764. // pDstCurrPos - current byte position in bitstream buffer
  765. // Ss - start of spectral selection
  766. // Se - end of spectral selection
  767. // Al - successive approximation bit position low
  768. // pAcTable - pointer to encoder huffman AC table
  769. // pEncHuffState - pointer to encoder huffman state
  770. // bFlushState - set to 1, after processing all MCUs
  771. // to flush any pending bits from state
  772. //
  773. // Returns:
  774. // IppStatus
  775. //
  776. // Notes:
  777. // Encoding perform as defined in ISO/IEC 10918-1.
  778. // Appendix A - Requirements and guidelines,
  779. // Annex G, G.1.2 - Progressive encoding procedures with Huffman.
  780. */
  781. IPPAPI(IppStatus, ippiEncodeHuffman8x8_ACRefine_JPEG_16s1u_C1, (
  782. const Ipp16s* pSrc,
  783. Ipp8u* pDst,
  784. int dstLenBytes,
  785. int* pDstCurrPos,
  786. int Ss,
  787. int Se,
  788. int Al,
  789. const IppiEncodeHuffmanSpec* pAcTable,
  790. IppiEncodeHuffmanState* pEncHuffState,
  791. int bFlushState))
  792. /* ///////////////////////////////////////////////////////////////////////////
  793. // Huffman Encoding Functions (Lossless)
  794. /////////////////////////////////////////////////////////////////////////// */
  795. /* ///////////////////////////////////////////////////////////////////////////
  796. // Name:
  797. // ippiEncodeHuffmanOne_JPEG_16s1u_C1
  798. //
  799. // Purpose:
  800. // Huffman encode one lossless coefs
  801. //
  802. // Parameters:
  803. // pSrc pointer to input differences
  804. // pDst pointer to output JPEG bitstream
  805. // nDstLenBytes bitstream length, in bytes
  806. // pDstCurrPos pointer to current offset in buffer in bytes (in/out)
  807. // pEncHuffTable pointer to huffman lossless table
  808. // pEncHuffState pointer to Huffman state struct
  809. // bFlushState
  810. //
  811. // Returns:
  812. // IppStatus
  813. //
  814. // Notes:
  815. //
  816. */
  817. IPPAPI(IppStatus, ippiEncodeHuffmanOne_JPEG_16s1u_C1, (
  818. const Ipp16s* pSrc,
  819. Ipp8u* pDst,
  820. int nDstLenBytes,
  821. int* pDstCurrPos,
  822. const IppiEncodeHuffmanSpec* pEncHuffTable,
  823. IppiEncodeHuffmanState* pEncHuffState,
  824. int bFlushState))
  825. /* ///////////////////////////////////////////////////////////////////////////
  826. // Name:
  827. // ippiEncodeHuffmanRow_JPEG_16s1u_P4C1
  828. //
  829. // Purpose:
  830. // Huffman encode mcu row
  831. //
  832. // Parameters:
  833. // pSrc pointer to input differences
  834. // pDst pointer to output JPEG bitstream
  835. // nDstLenBytes bitstream length, in bytes
  836. // pDstCurrPos pointer to current offset in buffer in bytes (in/out)
  837. // pEncHuffTable pointer to huffman lossless table
  838. // pEncHuffState pointer to Huffman state struct
  839. // bFlushState
  840. //
  841. // Returns:
  842. // IppStatus
  843. //
  844. // Notes:
  845. //
  846. */
  847. IPPAPI(IppStatus, ippiEncodeHuffmanRow_JPEG_16s1u_P4C1, (
  848. const Ipp16s* pSrc[4],
  849. int nSrcLen,
  850. int nSrcRows,
  851. Ipp8u* pDst,
  852. int nDstLenBytes,
  853. int* pDstCurrPos,
  854. const IppiEncodeHuffmanSpec* pEncHuffTable[4],
  855. IppiEncodeHuffmanState* pEncHuffState,
  856. int bFlushState))
  857. /* ///////////////////////////////////////////////////////////////////////////
  858. // Name:
  859. // ippiGetHuffmanStatisticsOne_JPEG_16s_C1
  860. //
  861. // Purpose:
  862. // count statistics for huffman values for particular differences
  863. //
  864. // Parameters:
  865. // pSrc pointer to input differences
  866. // pHuffStatistics pointer to accumulated huffman values statistics
  867. //
  868. // Returns:
  869. // IppStatus
  870. //
  871. // Notes:
  872. //
  873. */
  874. IPPAPI(IppStatus, ippiGetHuffmanStatisticsOne_JPEG_16s_C1, (
  875. const Ipp16s* pSrc,
  876. int pHuffStatistics[256]))
  877. /* ///////////////////////////////////////////////////////////////////////////
  878. // Huffman Decoding Functions (Baseline)
  879. /////////////////////////////////////////////////////////////////////////// */
  880. /* ///////////////////////////////////////////////////////////////////////////
  881. // Name:
  882. // ippiDecodeHuffmanSpecGetBufSize_JPEG_8u
  883. //
  884. // Purpose:
  885. // get size of IppiDecodeHuffmanSpec struct
  886. //
  887. // Parameters:
  888. // size - where write size of buffer
  889. //
  890. // Returns:
  891. // IppStatus
  892. //
  893. // Notes:
  894. //
  895. */
  896. IPPAPI(IppStatus, ippiDecodeHuffmanSpecGetBufSize_JPEG_8u, (
  897. int* size))
  898. /* ///////////////////////////////////////////////////////////////////////////
  899. // Name:
  900. // ippiDecodeHuffmanSpecInit_JPEG_8u
  901. //
  902. // Purpose:
  903. // Build Huffman table for decoder in fast-to-use format
  904. // from "raw" Huffman table
  905. //
  906. // Parameters:
  907. // pListBits - pointer to array of 16 bytes.
  908. // pListVals - pointer to array of up to 256 bytes.
  909. // pDecHuffSpec - pointer to Huffman table to be initialized
  910. //
  911. // Returns:
  912. // IppStatus
  913. //
  914. // Notes:
  915. // pListBits represents list of BITS and pListVals represent
  916. // list of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
  917. */
  918. IPPAPI(IppStatus, ippiDecodeHuffmanSpecInit_JPEG_8u, (
  919. const Ipp8u* pListBits,
  920. const Ipp8u* pListVals,
  921. IppiDecodeHuffmanSpec* pDecHuffSpec))
  922. /* ///////////////////////////////////////////////////////////////////////////
  923. // Name:
  924. // ippiDecodeHuffmanSpecInitAlloc_JPEG_8u
  925. //
  926. // Purpose:
  927. // Build Huffman table for decoder in fast-to-use format
  928. // from raw Huffman table
  929. //
  930. // Parameters:
  931. // pListBits - pointer to array of 16 bytes.
  932. // pListVals - pointer to array of up to 256 bytes.
  933. // ppDecHuffSpec - pointer to pointer on Huffman table
  934. // to be allocated and initialized
  935. //
  936. // Returns:
  937. // IppStatus
  938. //
  939. // Notes:
  940. // pListBits represents list of BITS and pListVals represent
  941. // list of HUFFVAL, as specified in ISO/IEC 10918-1, Figure B.7
  942. */
  943. IPPAPI(IppStatus, ippiDecodeHuffmanSpecInitAlloc_JPEG_8u, (
  944. const Ipp8u* pListBits,
  945. const Ipp8u* pListVals,
  946. IppiDecodeHuffmanSpec** ppDecHuffSpec))
  947. /* ///////////////////////////////////////////////////////////////////////////
  948. // Name:
  949. // ippiDecodeHuffmanSpecFree_JPEG_8u
  950. //
  951. // Purpose:
  952. // Free memory for decoder Huffman table
  953. //
  954. // Parameters:
  955. // pDecHuffSpec - pointer to Huffman table
  956. //
  957. // Returns:
  958. // IppStatus
  959. //
  960. // Notes:
  961. //
  962. */
  963. IPPAPI(IppStatus, ippiDecodeHuffmanSpecFree_JPEG_8u, (
  964. IppiDecodeHuffmanSpec* pDecHuffSpec))
  965. /* ///////////////////////////////////////////////////////////////////////////
  966. // Name:
  967. // ippiDecodeHuffmanStateGetBufSize_JPEG_8u
  968. //
  969. // Purpose:
  970. // get size of IppiDecodeHuffmanState struct
  971. //
  972. // Parameters:
  973. // size - where write size of buffer
  974. //
  975. // Returns:
  976. // IppStatus
  977. //
  978. // Notes:
  979. //
  980. */
  981. IPPAPI(IppStatus, ippiDecodeHuffmanStateGetBufSize_JPEG_8u, (
  982. int* size))
  983. /* ///////////////////////////////////////////////////////////////////////////
  984. // Name:
  985. // ippiDecodeHuffmanStateInit_JPEG_8u
  986. //
  987. // Purpose:
  988. // Build IppiDecodeHuffmanState struct for decoder
  989. //
  990. // Parameters:
  991. // pDecHuffState - pointer to IppiDecodeHuffmanState struct
  992. // to be initialized
  993. //
  994. // Returns:
  995. // IppStatus
  996. //
  997. // Notes:
  998. //
  999. */
  1000. IPPAPI(IppStatus, ippiDecodeHuffmanStateInit_JPEG_8u, (
  1001. IppiDecodeHuffmanState* pDecHuffState))
  1002. /* ///////////////////////////////////////////////////////////////////////////
  1003. // Name:
  1004. // ippiDecodeHuffmanStateInitAlloc_JPEG_8u
  1005. //
  1006. // Purpose:
  1007. // Allocate memory and build DecHuffState struct for encoder
  1008. //
  1009. // Parameters:
  1010. // ppDecHuffState - pointer to pointer on EncHuffState struct
  1011. // to be allocated and initialized
  1012. //
  1013. // Returns:
  1014. // IppStatus
  1015. //
  1016. // Notes:
  1017. //
  1018. */
  1019. IPPAPI(IppStatus, ippiDecodeHuffmanStateInitAlloc_JPEG_8u, (
  1020. IppiDecodeHuffmanState** ppDecHuffState))
  1021. /* ///////////////////////////////////////////////////////////////////////////
  1022. // Name:
  1023. // ippiDecodeHuffmanStateFree_JPEG_8u
  1024. //
  1025. // Purpose:
  1026. // Free memory for decoder DecHuffState struct
  1027. //
  1028. // Parameters:
  1029. // pDecHuffState - pointer to IppiDecodeHuffmanState struct
  1030. //
  1031. // Returns:
  1032. // IppStatus
  1033. //
  1034. // Notes:
  1035. //
  1036. */
  1037. IPPAPI(IppStatus, ippiDecodeHuffmanStateFree_JPEG_8u, (
  1038. IppiDecodeHuffmanState* pDecHuffState))
  1039. /* ///////////////////////////////////////////////////////////////////////////
  1040. // Name:
  1041. // ippiDecodeHuffman8x8_JPEG_1u16s_C1
  1042. //
  1043. // Purpose:
  1044. // Huffman decode 8x8 block of quantized DCT coefficients
  1045. //
  1046. // Parameters:
  1047. // pSrc pointer to input JPEG bitstream
  1048. // srcLenBytes bitstream length, in bytes
  1049. // pSrcCurrPos pointer to current byte offset in buffer (in/out)
  1050. // pDst pointer to output 8x8 block of quantized DCT coefficients
  1051. // pLastDC pointer to last DC coefficients from preivious block
  1052. // of the same color component
  1053. // pMarker where to store marker which can be found
  1054. // pDcTable pointer to huffman DC table
  1055. // pAcTable pointer to huffman AC table
  1056. // pDecHuffState pointer to Huffman state struct
  1057. //
  1058. // Returns:
  1059. // IppStatus
  1060. //
  1061. // Notes:
  1062. // Decoding perform as specified in ISO/IEC 10918-1,
  1063. // Appendix A - Requirements and guidelines,
  1064. // Annex F, F.2.2 - Baseline Huffman Decoding procedures
  1065. */
  1066. IPPAPI(IppStatus, ippiDecodeHuffman8x8_JPEG_1u16s_C1, (
  1067. const Ipp8u* pSrc,
  1068. int srcLenBytes,
  1069. int* pSrcCurrPos,
  1070. Ipp16s* pDst,
  1071. Ipp16s* pLastDC,
  1072. int* pMarker,
  1073. const IppiDecodeHuffmanSpec* pDcTable,
  1074. const IppiDecodeHuffmanSpec* pAcTable,
  1075. IppiDecodeHuffmanState* pDecHuffState))
  1076. /* ///////////////////////////////////////////////////////////////////////////
  1077. // Name:
  1078. // ippiDecodeHuffman8x8_Direct_JPEG_1u16s_C1
  1079. //
  1080. // Description:
  1081. // Huffman decode 8x8 block of quantized DCT coefficients
  1082. //
  1083. // Parameters:
  1084. // pSrc pointer to input JPEG bitstream
  1085. // pSrcBitsLen the number of bits in bitstream (in/out)
  1086. // pDst pointer to output 8x8 block of quantized
  1087. // DCT coefficients
  1088. // pLastDC pointer to last DC coefficients from preivious
  1089. // block of the same color component
  1090. // pMarker where to store marker which can be found
  1091. // pPrefetchedBits prefetch buffer which contain the bits decoded
  1092. // in the last time
  1093. // pNumValidPrefetchedBits number of valid bits in prefetch buffer
  1094. // pDcTable pointer to huffman DC table
  1095. // pAcTable pointer to huffman AC table
  1096. //
  1097. // Note:
  1098. // 1. pDCPred shall be 0 in initial or after each restart interval
  1099. // 2. pMarker shall be 0 in initial or after it was processed
  1100. // 3. pNumValidPrefetchedBits shall be 0 in following case
  1101. // 1) Initial.
  1102. // 2) After each restart interval.
  1103. // 3) After each marker.
  1104. //
  1105. // Returns:
  1106. // IppStatus
  1107. */
  1108. IPPAPI(IppStatus, ippiDecodeHuffman8x8_Direct_JPEG_1u16s_C1, (
  1109. const Ipp8u* pSrc,
  1110. int* pSrcBitsLen,
  1111. Ipp16s* pDst,
  1112. Ipp16s* pLastDC,
  1113. int* pMarker,
  1114. Ipp32u* pPrefetchedBits,
  1115. int* pNumValidPrefetchedBits,
  1116. const IppiDecodeHuffmanSpec* pDcTable,
  1117. const IppiDecodeHuffmanSpec* pAcTable))
  1118. /* ///////////////////////////////////////////////////////////////////////////
  1119. // Huffman Decoding Functions (Progressive)
  1120. /////////////////////////////////////////////////////////////////////////// */
  1121. /* ///////////////////////////////////////////////////////////////////////////
  1122. // Name:
  1123. // ippiDecodeHuffman8x8_DCFirst_JPEG_1u16s_C1
  1124. //
  1125. // Purpose:
  1126. // Huffman decode DC coefficient of 8x8 block of quantized DCT coefficients
  1127. //
  1128. // Parameters:
  1129. // pSrc pointer to input JPEG bitstream
  1130. // srcLenBytes bitstream length, in bytes
  1131. // pSrcCurrPos pointer to current byte offset in buffer (in/out)
  1132. // pDst pointer to output 8x8 block of quantized DCT coefficients
  1133. // pLastDC pointer to last DC coefficients from preivious block
  1134. // of the same color component
  1135. // pMarker where to store JPEG marker
  1136. // Al Approximation bit position low
  1137. // pDcTable pointer to huffman DC table
  1138. // pDecHuffState pointer to Huffman state struct
  1139. //
  1140. // Returns:
  1141. // IppStatus
  1142. //
  1143. // Notes:
  1144. // Decoding perform as defined in ISO/IEC 10918-1.
  1145. // Appendix A - Requirements and guidelines,
  1146. // Annex G, G.2 - Progressive decoding of the DCT.
  1147. */
  1148. IPPAPI(IppStatus, ippiDecodeHuffman8x8_DCFirst_JPEG_1u16s_C1, (
  1149. const Ipp8u* pSrc,
  1150. int srcLenBytes,
  1151. int* pSrcCurrPos,
  1152. Ipp16s* pDst,
  1153. Ipp16s* pLastDC,
  1154. int* pMarker,
  1155. int Al,
  1156. const IppiDecodeHuffmanSpec* pDcTable,
  1157. IppiDecodeHuffmanState* pDecHuffState))
  1158. /* ///////////////////////////////////////////////////////////////////////////
  1159. // Name:
  1160. // ippiDecodeHuffman8x8_DCRefine_JPEG_1u16s_C1
  1161. //
  1162. // Purpose:
  1163. // Refine DC coefficient of 8x8 block of quantized DCT coefficients
  1164. //
  1165. // Parameters:
  1166. // pSrc pointer to input JPEG bitstream
  1167. // srcLenBytes bitstream length, in bytes
  1168. // pSrcCurrPos pointer to current byte offset in buffer (in/out)
  1169. // pDst pointer to output 8x8 block of quantized DCT coefficients
  1170. // pMarker where to store JPEG marker
  1171. // Al Approximation bit position low
  1172. // pDecHuffState pointer to Huffman state struct
  1173. //
  1174. // Returns:
  1175. // IppStatus
  1176. //
  1177. // Notes:
  1178. // Decoding perform as defined in ISO/IEC 10918-1.
  1179. // Appendix A - Requirements and guidelines,
  1180. // Annex G, G.2 - Progressive decoding of the DCT.
  1181. */
  1182. IPPAPI(IppStatus, ippiDecodeHuffman8x8_DCRefine_JPEG_1u16s_C1, (
  1183. const Ipp8u* pSrc,
  1184. int srcLenBytes,
  1185. int* pSrcCurrPos,
  1186. Ipp16s* pDst,
  1187. int* pMarker,
  1188. int Al,
  1189. IppiDecodeHuffmanState* pDecHuffState))
  1190. /* ///////////////////////////////////////////////////////////////////////////
  1191. // Name:
  1192. // ippiDecodeHuffman8x8_ACFirst_JPEG_1u16s_C1
  1193. //
  1194. // Purpose:
  1195. // Huffman decode AC coefficient of 8x8 block of quantized DCT coefficients
  1196. //
  1197. // Parameters:
  1198. // pSrc pointer to input JPEG bitstream
  1199. // srcLenBytes bitstream length, in bytes
  1200. // pSrcCurrPos pointer to current byte offset in buffer (in/out)
  1201. // pDst pointer to output 8x8 block of quantized DCT coefficients
  1202. // pMarker where to store JPEG marker
  1203. // Ss spectral selection start
  1204. // Se spectral selection end
  1205. // Al Approximation bit position low
  1206. // pAcTable pointer to huffman AC table
  1207. // pDecHuffState pointer to Huffman state struct
  1208. //
  1209. // Returns:
  1210. // IppStatus
  1211. //
  1212. // Notes:
  1213. // Decoding perform as defined in ISO/IEC 10918-1.
  1214. // Appendix A - Requirements and guidelines,
  1215. // Annex G, G.2 - Progressive decoding of the DCT.
  1216. */
  1217. IPPAPI(IppStatus, ippiDecodeHuffman8x8_ACFirst_JPEG_1u16s_C1, (
  1218. const Ipp8u* pSrc,
  1219. int srcLenBytes,
  1220. int* pSrcCurrPos,
  1221. Ipp16s* pDst,
  1222. int* pMarker,
  1223. int Ss,
  1224. int Se,
  1225. int Al,
  1226. const IppiDecodeHuffmanSpec* pAcTable,
  1227. IppiDecodeHuffmanState* pDecHuffState))
  1228. /* ///////////////////////////////////////////////////////////////////////////
  1229. // Name:
  1230. // ippiDecodeHuffman8x8_ACRefine_JPEG_1u16s_C1
  1231. //
  1232. // Purpose:
  1233. // Refine AC coefficients of 8x8 block of quantized DCT coefficients
  1234. //
  1235. // Parameters:
  1236. // pSrc pointer to input JPEG bitstream
  1237. // srcLenBytes bitstream length, in bytes
  1238. // pSrcCurrPos pointer to current byte offset in buffer (in/out)
  1239. // pDst pointer to output 8x8 block of quantized DCT coefficients
  1240. // pMarker where to store JPEG marker
  1241. // Ss spectral selection start
  1242. // Se spectral selection end
  1243. // Al Approximation bit position low
  1244. // pAcTable Huffman AC table
  1245. // pDecHuffState pointer to Huffman state struct
  1246. //
  1247. // Returns:
  1248. // IppStatus
  1249. //
  1250. // Notes:
  1251. // Decoding perform as defined in ISO/IEC 10918-1.
  1252. // Appendix A - Requirements and guidelines,
  1253. // Annex G, G.2 - Progressive decoding of the DCT.
  1254. */
  1255. IPPAPI(IppStatus, ippiDecodeHuffman8x8_ACRefine_JPEG_1u16s_C1, (
  1256. const Ipp8u* pSrc,
  1257. int srcLenBytes,
  1258. int* pSrcCurrPos,
  1259. Ipp16s* pDst,
  1260. int* pMarker,
  1261. int Ss,
  1262. int Se,
  1263. int Al,
  1264. const IppiDecodeHuffmanSpec* pAcTable,
  1265. IppiDecodeHuffmanState* pDecHuffState))
  1266. /* ///////////////////////////////////////////////////////////////////////////
  1267. // Huffman Decoding Functions (Lossless)
  1268. /////////////////////////////////////////////////////////////////////////// */
  1269. /* ///////////////////////////////////////////////////////////////////////////
  1270. // Name:
  1271. // ippiDecodeHuffmanOne_JPEG_1u16s_C1
  1272. //
  1273. // Purpose:
  1274. // Huffman decode one lossless coefs
  1275. //
  1276. // Parameters:
  1277. // pSrc pointer to input JPEG bitstream
  1278. // nSrcLenBytes bitstream length, in bytes
  1279. // pSrcCurrPos pointer to current offset in buffer in bytes (in/out)
  1280. // pDst pointer to decoded difference
  1281. // pMarker where to store JPEG marker
  1282. // pDecHuffTable pointer to huffman table
  1283. // pDecHuffState pointer to Huffman state struct
  1284. //
  1285. // Returns:
  1286. // IppStatus
  1287. //
  1288. // Notes:
  1289. //
  1290. */
  1291. IPPAPI(IppStatus, ippiDecodeHuffmanOne_JPEG_1u16s_C1, (
  1292. const Ipp8u* pSrc,
  1293. int nSrcLenBytes,
  1294. int* pSrcCurrPos,
  1295. Ipp16s* pDst,
  1296. int* pMarker,
  1297. const IppiDecodeHuffmanSpec* pDecHuffTable,
  1298. IppiDecodeHuffmanState* pDecHuffState))
  1299. /* ///////////////////////////////////////////////////////////////////////////
  1300. // Name:
  1301. // ippiDecodeHuffmanRow_JPEG_1u16s_C1P4
  1302. //
  1303. // Purpose:
  1304. // Huffman decode row of lossless coefficents
  1305. //
  1306. // Parameters:
  1307. // pSrc pointer to input JPEG bitstream
  1308. // nSrcLenBytes bitstream length, in bytes
  1309. // pSrcCurrPos pointer to current offset in buffer in bytes (in/out)
  1310. // pDst pointer to decoded difference
  1311. // nDstLen number of mcus in row
  1312. // nDstRows number of rows (actually color channels)
  1313. // pMarker where to store JPEG marker
  1314. // pDecHuffTable pointer to huffman table
  1315. // pDecHuffState pointer to Huffman state struct
  1316. //
  1317. // Returns:
  1318. // IppStatus
  1319. //
  1320. // Notes:
  1321. //
  1322. */
  1323. IPPAPI(IppStatus, ippiDecodeHuffmanRow_JPEG_1u16s_C1P4, (
  1324. const Ipp8u* pSrc,
  1325. int nSrcLenBytes,
  1326. int* pSrcCurrPos,
  1327. Ipp16s* pDst[4],
  1328. int nDstLen,
  1329. int nDstRows,
  1330. int* pMarker,
  1331. const IppiDecodeHuffmanSpec* pDecHuffTable[4],
  1332. IppiDecodeHuffmanState* pDecHuffState))
  1333. /* ///////////////////////////////////////////////////////////////////////////
  1334. // Quantization Functions for encoder
  1335. /////////////////////////////////////////////////////////////////////////// */
  1336. /* ///////////////////////////////////////////////////////////////////////////
  1337. // Name:
  1338. // ippiQuantFwdRawTableInit_JPEG_8u
  1339. //
  1340. // Purpose:
  1341. // Adjust raw quantization table according quality factor
  1342. //
  1343. // Parameters:
  1344. // pQuantRawTable - pointer to "raw" Quantization table
  1345. // qualityFactor - JPEG quality factor (valid range 1...100)
  1346. //
  1347. // Returns:
  1348. // IppStatus
  1349. //
  1350. // Notes:
  1351. // "raw" quantization table is array of 64 bytes (Q0..Q63), as specified
  1352. // in ISO/IEC 10918-1, Figure B.6
  1353. */
  1354. IPPAPI(IppStatus, ippiQuantFwdRawTableInit_JPEG_8u, (
  1355. Ipp8u* pQuantRawTable,
  1356. int qualityFactor))
  1357. /* ///////////////////////////////////////////////////////////////////////////
  1358. // Name:
  1359. // ippiQuantFwdTableInit_JPEG_8u16u
  1360. //
  1361. // Purpose:
  1362. // Build 8-bit precision Quantization table for encoder
  1363. // in fast-to-use format from "raw" Quantization table
  1364. //
  1365. // Parameters:
  1366. // pQuantRawTable - pointer to "raw" Quantization table
  1367. // pQuantFwdTable - pointer to Quantization table to be initialized
  1368. //
  1369. // Returns:
  1370. // IppStatus
  1371. //
  1372. // Notes:
  1373. // "raw" quantization table is array of 64 bytes (Q0..Q63), as specified
  1374. // in ISO/IEC 10918-1, Figure B.6 in zigzag order
  1375. */
  1376. IPPAPI(IppStatus, ippiQuantFwdTableInit_JPEG_8u16u, (
  1377. const Ipp8u* pQuantRawTable,
  1378. Ipp16u* pQuantFwdTable))
  1379. /* ///////////////////////////////////////////////////////////////////////////
  1380. // Name:
  1381. // ippiQuantFwd8x8_JPEG_16s_C1I
  1382. //
  1383. // Purpose:
  1384. // quantize 8x8 block of DCT coefficients
  1385. //
  1386. // Parameters:
  1387. // pSrcDst - pointer to 8x8 block of DCT coefs
  1388. // pQuantFwdTable - pointer to Quantization table
  1389. //
  1390. // Returns:
  1391. // IppStatus
  1392. //
  1393. // Notes:
  1394. // Quantization is defined in ISO/IEC 10918-1,
  1395. // Appendix A - Requrements and guidelines,
  1396. // Annex A, A.3.4 DCT coefficient quantization and dequantization.
  1397. */
  1398. IPPAPI(IppStatus, ippiQuantFwd8x8_JPEG_16s_C1I, (
  1399. Ipp16s* pSrcDst,
  1400. const Ipp16u* pQuantFwdTable))
  1401. /* ///////////////////////////////////////////////////////////////////////////
  1402. // Quantization Functions for decoder
  1403. /////////////////////////////////////////////////////////////////////////// */
  1404. /* ///////////////////////////////////////////////////////////////////////////
  1405. // Name:
  1406. // ippiQuantInvTableInit_JPEG_8u16u
  1407. //
  1408. // Purpose:
  1409. // Build Quantization table for decoder in fast-to-use format
  1410. // from "raw" Quantization table
  1411. //
  1412. // Parameters:
  1413. // pQuantRawTable - pointer to "raw" Quantization table
  1414. // pQuantInvTable - pointer to Quantization table to be initialized
  1415. //
  1416. // Returns:
  1417. // IppStatus
  1418. //
  1419. // Notes:
  1420. // "raw" quantization table is array of 64 bytes (Q0..Q63), as specified
  1421. // in ISO/IEC 10918-1, Figure B.6 in zigzag order
  1422. */
  1423. IPPAPI(IppStatus, ippiQuantInvTableInit_JPEG_8u16u, (
  1424. const Ipp8u* pQuantRawTable,
  1425. Ipp16u* pQuantInvTable))
  1426. /* ///////////////////////////////////////////////////////////////////////////
  1427. // Name:
  1428. // ippiQuantInv8x8_JPEG_16s_C1I
  1429. //
  1430. // Purpose:
  1431. // dequantize 8x8 block of DCT coefficients
  1432. //
  1433. // Parameters:
  1434. // pSrcDst - pointer to 8x8 block of DCT coefficients
  1435. // pQuantInvTable - pointer to Quantization table
  1436. //
  1437. // Returns:
  1438. // IppStatus
  1439. //
  1440. // Notes:
  1441. // Dequantization is defined in ISO/IEC 10918-1,
  1442. // Appendix A - Requrements and guidelines,
  1443. // Annex A, A.3.4 DCT coefficient quantization and dequantization.
  1444. */
  1445. IPPAPI(IppStatus, ippiQuantInv8x8_JPEG_16s_C1I, (
  1446. Ipp16s* pSrcDst,
  1447. const Ipp16u* pQuantInvTable))
  1448. /* ///////////////////////////////////////////////////////////////////////////
  1449. // Functions for color conversion for encoder
  1450. /////////////////////////////////////////////////////////////////////////// */
  1451. /* ///////////////////////////////////////////////////////////////////////////
  1452. // Name:
  1453. // ippiRGBToY_JPEG_8u_P3C1R
  1454. //
  1455. // Purpose:
  1456. // RGB to Y color conversion
  1457. //
  1458. // Parameter:
  1459. // pSrcRGB pointer to pointers to the input data.
  1460. // pSrc[0] is pointer to RR..RR plane
  1461. // pSrc[1] is pointer to GG..GG plane, and
  1462. // pSrc[2] is pointer to BB..BB plane
  1463. // srcStep line offset in input data
  1464. // pDstY pointer to the output data YY..YY
  1465. // dstStep line offset in output data
  1466. // roiSize ROI size
  1467. //
  1468. // Returns:
  1469. // IppStatus
  1470. //
  1471. // Notes:
  1472. // Y = 0.299*R + 0.587*G + 0.114*B
  1473. */
  1474. IPPAPI(IppStatus, ippiRGBToY_JPEG_8u_P3C1R, (
  1475. const Ipp8u* pSrcRGB[3],
  1476. int srcStep,
  1477. Ipp8u* pDstY,
  1478. int dstStep,
  1479. IppiSize roiSize))
  1480. /* ///////////////////////////////////////////////////////////////////////////
  1481. // Name:
  1482. // ippiRGBToY_JPEG_8u_C3C1R
  1483. //
  1484. // Purpose:
  1485. // RGB to Y color conversion
  1486. //
  1487. // Parameter:
  1488. // pSrcRGB pointer to the input data RGBRGB...RGBRGB
  1489. // srcStep line offset in input data
  1490. // pDstY pointer to the output data YY..YY
  1491. // dstStep line offset in output data
  1492. // roiSize ROI size
  1493. //
  1494. // Returns:
  1495. // IppStatus
  1496. //
  1497. // Notes:
  1498. // Y = 0.299*R + 0.587*G + 0.114*B
  1499. //
  1500. */
  1501. IPPAPI(IppStatus, ippiRGBToY_JPEG_8u_C3C1R, (
  1502. const Ipp8u* pSrcRGB,
  1503. int srcStep,
  1504. Ipp8u* pDstY,
  1505. int dstStep,
  1506. IppiSize roiSize))
  1507. /* ///////////////////////////////////////////////////////////////////////////
  1508. // Name:
  1509. // ippiBGRToY_JPEG_8u_C3C1R
  1510. //
  1511. // Purpose:
  1512. // BGR to Y color conversion
  1513. //
  1514. // Parameter:
  1515. // pSrcBGR pointer to the input data BGRBGR...BGRBGR
  1516. // srcStep line offset in input data
  1517. // pDstY pointer to the output data YY..YY
  1518. // dstStep line offset in output data
  1519. // roiSize ROI size
  1520. //
  1521. // Returns:
  1522. // IppStatus
  1523. //
  1524. // Notes:
  1525. // Y = 0.299*R + 0.587*G + 0.114*B
  1526. //
  1527. */
  1528. IPPAPI(IppStatus, ippiBGRToY_JPEG_8u_C3C1R, (
  1529. const Ipp8u* pSrcBGR,
  1530. int srcStep,
  1531. Ipp8u* pDstY,
  1532. int dstStep,
  1533. IppiSize roiSize))
  1534. /* ///////////////////////////////////////////////////////////////////////////
  1535. // Name:
  1536. // ippiRGBToYCbCr_JPEG_8u_P3R
  1537. //
  1538. // Purpose:
  1539. // RGB to YCbCr color conversion
  1540. //
  1541. // Parameter:
  1542. // pSrcRGB pointer to pointers to the input data.
  1543. // pSrc[0] is pointer to RR..RR plane
  1544. // pSrc[1] is pointer to GG..GG plane, and
  1545. // pSrc[2] is pointer to BB..BB plane
  1546. // srcStep line offset in input data
  1547. // pDstYCbCr pointer to pointers to the output data.
  1548. // pDst[0] is pointer to YY..YY plane
  1549. // pDst[1] is pointer to CbCb..CbCb plane, and
  1550. // pDst[2] is pointer to CrCr..CrCr plane
  1551. // dstStep line offset in output data
  1552. // roiSize ROI size
  1553. //
  1554. // Returns:
  1555. // IppStatus
  1556. //
  1557. // Notes:
  1558. // Y = 0.29900*R + 0.58700*G + 0.11400*B
  1559. // Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128
  1560. // Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128
  1561. */
  1562. IPPAPI(IppStatus, ippiRGBToYCbCr_JPEG_8u_P3R, (
  1563. const Ipp8u* pSrcRGB[3],
  1564. int srcStep,
  1565. Ipp8u* pDstYCbCr[3],
  1566. int dstStep,
  1567. IppiSize roiSize))
  1568. /* ///////////////////////////////////////////////////////////////////////////
  1569. // Name:
  1570. // ippiRGBToYCbCr_JPEG_8u_C3P3R
  1571. //
  1572. // Purpose:
  1573. // RGB to YCbCr color conversion
  1574. //
  1575. // Parameter:
  1576. // pSrcRGB pointer to input data RGBRGB..RGBRGB
  1577. // srcStep line offset in input data
  1578. // pDstYCbCr pointer to pointers to the output data.
  1579. // pDstYCbCr[0] is pointer to YY..YY plane
  1580. // pDstYCbCr[1] is pointer to CbCb..CbCb plane, and
  1581. // pDstYCbCr[2] is pointer to CrCr..CrCr plane
  1582. // dstStep line offset in output data
  1583. // roiSize ROI size
  1584. //
  1585. // Returns:
  1586. // IppStatus
  1587. //
  1588. // Notes:
  1589. // Y = 0.29900*R + 0.58700*G + 0.11400*B
  1590. // Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128
  1591. // Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128
  1592. */
  1593. IPPAPI(IppStatus, ippiRGBToYCbCr_JPEG_8u_C3P3R, (
  1594. const Ipp8u* pSrcRGB,
  1595. int srcStep,
  1596. Ipp8u* pDstYCbCr[3],
  1597. int dstStep,
  1598. IppiSize roiSize))
  1599. /* ///////////////////////////////////////////////////////////////////////////
  1600. // Name:
  1601. // ippiBGRToYCbCr_JPEG_8u_C3P3R
  1602. //
  1603. // Purpose:
  1604. // BGR to YCbCr color conversion
  1605. //
  1606. // Parameter:
  1607. // pSrcBGR pointer to input data BGRBGR..BGRBGR
  1608. // srcStep line offset in input data
  1609. // pDstYCbCr pointer to pointers to the output data.
  1610. // pDstYCbCr[0] is pointer to YY..YY plane
  1611. // pDstYCbCr[1] is pointer to CbCb..CbCb plane, and
  1612. // pDstYCbCr[2] is pointer to CrCr..CrCr plane
  1613. // dstStep line offset in output data
  1614. // roiSize ROI size
  1615. //
  1616. // Returns:
  1617. // IppStatus
  1618. //
  1619. // Notes:
  1620. // the color conversion equations:
  1621. // Y = 0.29900*R + 0.58700*G + 0.11400*B
  1622. // Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
  1623. // Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
  1624. */
  1625. IPPAPI(IppStatus, ippiBGRToYCbCr_JPEG_8u_C3P3R, (
  1626. const Ipp8u* pSrcBGR,
  1627. int srcStep,
  1628. Ipp8u* pDstYCbCr[3],
  1629. int dstStep,
  1630. IppiSize roiSize))
  1631. /* ///////////////////////////////////////////////////////////////////////////
  1632. // Name:
  1633. // ippiRGB555ToYCbCr_JPEG_16u8u_C3P3R
  1634. //
  1635. // Purpose:
  1636. // RGB555 to YCbCr color convert
  1637. //
  1638. // Parameter:
  1639. // pSrcRGB pointer to input data
  1640. // srcStep line offset in input data
  1641. // pDstYCbCr pointer to pointers to output data
  1642. // dstStep line offset in output data
  1643. // roiSize ROI size
  1644. //
  1645. // Returns:
  1646. // IppStatus
  1647. //
  1648. // Notes:
  1649. // the color conversion equations:
  1650. // Y = 0.29900*R + 0.58700*G + 0.11400*B
  1651. // Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
  1652. // Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
  1653. //
  1654. // pixel format
  1655. // 15 8 7 0
  1656. // |xbbbbbgg|gggrrrrr|
  1657. //
  1658. */
  1659. IPPAPI(IppStatus, ippiRGB555ToYCbCr_JPEG_16u8u_C3P3R, (
  1660. const Ipp16u* pSrcRGB,
  1661. int srcStep,
  1662. Ipp8u* pDstYCbCr[3],
  1663. int dstStep,
  1664. IppiSize roiSize))
  1665. /* ///////////////////////////////////////////////////////////////////////////
  1666. // Name:
  1667. // ippiBGR555ToYCbCr_JPEG_16u8u_C3P3R
  1668. //
  1669. // Purpose:
  1670. // BGR555 to YCbCr color convert
  1671. //
  1672. // Parameter:
  1673. // pSrcBGR pointer to input data
  1674. // srcStep line offset in input data
  1675. // pDstYCbCr pointer to pointers to output data
  1676. // dstStep line offset in output data
  1677. // roiSize ROI size
  1678. //
  1679. // Returns:
  1680. // IppStatus
  1681. //
  1682. // Notes:
  1683. // the color conversion equations:
  1684. // Y = 0.29900*R + 0.58700*G + 0.11400*B
  1685. // Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
  1686. // Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
  1687. //
  1688. // pixel format
  1689. // 15 8 7 0
  1690. // |xrrrrrgg|gggbbbbb|
  1691. //
  1692. */
  1693. IPPAPI(IppStatus, ippiBGR555ToYCbCr_JPEG_16u8u_C3P3R, (
  1694. const Ipp16u* pSrcBGR,
  1695. int srcStep,
  1696. Ipp8u* pDstYCbCr[3],
  1697. int dstStep,
  1698. IppiSize roiSize))
  1699. /* ///////////////////////////////////////////////////////////////////////////
  1700. // Name:
  1701. // ippiRGB565ToYCbCr_JPEG_16u8u_C3P3R
  1702. //
  1703. // Purpose:
  1704. // RGB565 to YCbCr color convert
  1705. //
  1706. // Parameter:
  1707. // pSrcRGB pointer to input data
  1708. // srcStep line offset in input data
  1709. // pDstYCbcr pointer to pointers to output data
  1710. // dstStep line offset in output data
  1711. // roiSize ROI size
  1712. //
  1713. // Returns:
  1714. // IppStatus
  1715. //
  1716. // Notes:
  1717. // the color conversion equations:
  1718. // Y = 0.29900*R + 0.58700*G + 0.11400*B
  1719. // Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
  1720. // Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
  1721. //
  1722. // pixel format
  1723. // 15 8 7 0
  1724. // |rrrrrggg|gggbbbbb|
  1725. //
  1726. */
  1727. IPPAPI(IppStatus, ippiRGB565ToYCbCr_JPEG_16u8u_C3P3R, (
  1728. const Ipp16u* pSrcRGB,
  1729. int srcStep,
  1730. Ipp8u* pDstYCbCr[3],
  1731. int dstStep,
  1732. IppiSize roiSize))
  1733. /* ///////////////////////////////////////////////////////////////////////////
  1734. // Name:
  1735. // ippiBGR565ToYCbCr_JPEG_16u8u_C3P3R
  1736. //
  1737. // Purpose:
  1738. // BGR565 to YCbCr color convert
  1739. //
  1740. // Parameter:
  1741. // pSrcBGR pointer to input data
  1742. // srcStep line offset in input data
  1743. // pDstYCbCr pointer to pointers to output data
  1744. // dstStep line offset in output data
  1745. // roiSize ROI size
  1746. //
  1747. // Returns:
  1748. // IppStatus
  1749. //
  1750. // Notes:
  1751. // the color conversion equations:
  1752. // Y = 0.29900*R + 0.58700*G + 0.11400*B
  1753. // Cb = -0.16874*R - 0.33126*G + 0.50000*B + 128.0
  1754. // Cr = 0.50000*R - 0.41869*G - 0.08131*B + 128.0
  1755. //
  1756. // pixel format
  1757. // 15 8 7 0
  1758. // |bbbbbggg|gggrrrrr|
  1759. //
  1760. */
  1761. IPPAPI(IppStatus, ippiBGR565ToYCbCr_JPEG_16u8u_C3P3R, (
  1762. const Ipp16u* pSrc,
  1763. int srcStep,
  1764. Ipp8u* pDst[3],
  1765. int dstStep,
  1766. IppiSize roiSize))
  1767. /* ///////////////////////////////////////////////////////////////////////////
  1768. // Name:
  1769. // ippiCMYKToYCCK_JPEG_8u_P4R
  1770. //
  1771. // Purpose:
  1772. // CMYK to YCCK color conversion
  1773. //
  1774. // Parameter:
  1775. // pSrcCMYK pointer to pointers to the input data.
  1776. // pSrc[0] is pointer to CC..CC plane
  1777. // pSrc[1] is pointer to MM..MM plane, and
  1778. // pSrc[2] is pointer to YY..YY plane
  1779. // pSrc[3] is pointer to KK..KK plane
  1780. // srcStep line offset in input data
  1781. // pDstYCCK pointer to pointers to output arrays
  1782. // pDst[0] is pointer to YY..YY plane
  1783. // pDst[1] is pointer to CC..CC plane, and
  1784. // pDst[2] is pointer to CC..CC plane
  1785. // pDst[3] is pointer to KK..KK plane
  1786. // dstStep line offset in output data
  1787. // roiSize ROI size
  1788. //
  1789. // Returns:
  1790. // IppStatus
  1791. //
  1792. // Notes:
  1793. // This version handles Adobe-style CMYK->YCCK conversion,
  1794. // where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
  1795. // while K (black) channel is unchanged.
  1796. */
  1797. IPPAPI(IppStatus, ippiCMYKToYCCK_JPEG_8u_P4R, (
  1798. const Ipp8u* pSrcCMYK[4],
  1799. int srcStep,
  1800. Ipp8u* pDstYCCK[4],
  1801. int dstStep,
  1802. IppiSize roiSize))
  1803. /* ///////////////////////////////////////////////////////////////////////////
  1804. // Name:
  1805. // ippiCMYKToYCCK_JPEG_8u_C4P4R
  1806. //
  1807. // Purpose:
  1808. // CMYK to YCCK color conversion
  1809. //
  1810. // Parameter:
  1811. // pSrcCMYK pointer to input data CMYKCMYK..CMYKCMYK
  1812. // srcStep line offset in input data
  1813. // pDstYCCK pointer to pointers to output arrays
  1814. // pDst[0] is pointer to YY..YY plane
  1815. // pDst[1] is pointer to CC..CC plane, and
  1816. // pDst[2] is pointer to CC..CC plane
  1817. // pDst[3] is pointer to KK..KK plane
  1818. // dstStep line offset in output data
  1819. // roiSize ROI size
  1820. //
  1821. // Returns:
  1822. // IppStatus
  1823. //
  1824. // Notes:
  1825. // This version handles Adobe-style CMYK->YCCK conversion,
  1826. // where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
  1827. // while K (black) channel is unchanged.
  1828. */
  1829. IPPAPI(IppStatus, ippiCMYKToYCCK_JPEG_8u_C4P4R, (
  1830. const Ipp8u* pSrcCMYK,
  1831. int srcStep,
  1832. Ipp8u* pDstYCCK[4],
  1833. int dstStep,
  1834. IppiSize roiSize))
  1835. /* ///////////////////////////////////////////////////////////////////////////
  1836. // Shift level functions for encoder/decoder
  1837. /////////////////////////////////////////////////////////////////////////// */
  1838. /* ///////////////////////////////////////////////////////////////////////////
  1839. // Name:
  1840. // ippiSub128_JPEG_8u16s_C1R
  1841. //
  1842. // Purpose:
  1843. // convert image data from unsigned 8-bit integer to signed 16-bit
  1844. //
  1845. // Parameter:
  1846. // pSrc pointer to input data
  1847. // srcStep line offset in input data
  1848. // pDst pointer to output data
  1849. // dstStep line offset in output data
  1850. // roiSize ROI size
  1851. //
  1852. // Returns:
  1853. // IppStatus
  1854. //
  1855. // Notes:
  1856. // Level Shift is defined in ISO/IEC 10918-1,
  1857. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  1858. */
  1859. IPPAPI(IppStatus, ippiSub128_JPEG_8u16s_C1R, (
  1860. const Ipp8u* pSrc,
  1861. int srcStep,
  1862. Ipp16s* pDst,
  1863. int dstStep,
  1864. IppiSize roiSize))
  1865. /* ///////////////////////////////////////////////////////////////////////////
  1866. // Name:
  1867. // ippiAdd128_JPEG_16s8u_C1R
  1868. //
  1869. // Purpose:
  1870. // convert image data from signed 16-bit to unsigned 8-bit integer
  1871. //
  1872. // Parameter:
  1873. // pSrc pointer to input data
  1874. // srcStep line offset in input data
  1875. // pDst pointer to output data
  1876. // dstStep line offset in output data
  1877. // roiSize ROI size
  1878. //
  1879. // Returns:
  1880. // IppStatus
  1881. //
  1882. // Notes:
  1883. // Level Shift is defined in ISO/IEC 10918-1,
  1884. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  1885. */
  1886. IPPAPI(IppStatus, ippiAdd128_JPEG_16s8u_C1R, (
  1887. const Ipp16s* pSrc,
  1888. int srcStep,
  1889. Ipp8u* pDst,
  1890. int dstStep,
  1891. IppiSize roiSize))
  1892. /* ///////////////////////////////////////////////////////////////////////////
  1893. // Downsampling functions for encoder
  1894. /////////////////////////////////////////////////////////////////////////// */
  1895. /* ///////////////////////////////////////////////////////////////////////////
  1896. // Name:
  1897. // ippiSampleDownH2V1_JPEG_8u_C1R
  1898. //
  1899. // Purpose:
  1900. // Sample down by horizontal 2:1
  1901. //
  1902. // Parameters:
  1903. // pSrc - pointer to source data to be sampled down
  1904. // srcStep - line offset in input data
  1905. // srcSize - ROI size
  1906. // pDst - pointer to sampled down output data
  1907. // dstStep - line offset in input data
  1908. // dstSize - ROI size
  1909. //
  1910. // Returns:
  1911. // IppStatus
  1912. //
  1913. // Notes:
  1914. //
  1915. */
  1916. IPPAPI(IppStatus, ippiSampleDownH2V1_JPEG_8u_C1R, (
  1917. const Ipp8u* pSrc,
  1918. int srcStep,
  1919. IppiSize srcRoiSize,
  1920. Ipp8u* pDst,
  1921. int dstStep,
  1922. IppiSize dstRoiSize))
  1923. /* ///////////////////////////////////////////////////////////////////////////
  1924. // Name:
  1925. // ippiSampleDownH2V2_JPEG_8u_C1R
  1926. //
  1927. // Purpose:
  1928. // Sample down by horizontal 2:1 and vertical 2:1
  1929. //
  1930. // Parameters:
  1931. // pSrc - pointer to source data to be sampled down
  1932. // srcStep - line offset in input data
  1933. // srcSize - ROI size
  1934. // pDst - pointer to sampled down output data
  1935. // dstStep - line offset in input data
  1936. // dstSize - ROI size
  1937. //
  1938. // Returns:
  1939. // IppStatus
  1940. //
  1941. // Notes:
  1942. //
  1943. */
  1944. IPPAPI(IppStatus, ippiSampleDownH2V2_JPEG_8u_C1R, (
  1945. const Ipp8u* pSrc,
  1946. int srcStep,
  1947. IppiSize srcRoiSize,
  1948. Ipp8u* pDst,
  1949. int dstStep,
  1950. IppiSize dstRoiSize))
  1951. /* ///////////////////////////////////////////////////////////////////////////
  1952. // Name:
  1953. // ippiSampleDownRowH2V1_Box_JPEG_8u_C1
  1954. //
  1955. // Purpose:
  1956. // Sample down by horizontal 2:1
  1957. //
  1958. // Parameters:
  1959. // pSrc - pointer to source row
  1960. // srcWidth - width of source row
  1961. // pDst - pointer to sampled down output row
  1962. //
  1963. // Returns:
  1964. // IppStatus
  1965. //
  1966. // Notes:
  1967. // Downsampling is performed as simple "Box" filter
  1968. */
  1969. IPPAPI(IppStatus, ippiSampleDownRowH2V1_Box_JPEG_8u_C1, (
  1970. const Ipp8u* pSrc,
  1971. int srcWidth,
  1972. Ipp8u* pDst))
  1973. /* ///////////////////////////////////////////////////////////////////////////
  1974. // Name:
  1975. // ippiSampleDownRowH2V2_Box_JPEG_8u_C1
  1976. //
  1977. // Purpose:
  1978. // Sample down by horizontal 2:1 and vertical 2:1
  1979. //
  1980. // Parameters:
  1981. // pSrc1 - pointer to the source row
  1982. // pSrc2 - pointer to the next(adjacent) row
  1983. // srcWidth - width of source rows
  1984. // pDst - pointer to sampled down output row
  1985. //
  1986. // Returns:
  1987. // IppStatus
  1988. //
  1989. // Notes:
  1990. // Downsampling is performed as simple "Box" filter
  1991. */
  1992. IPPAPI(IppStatus, ippiSampleDownRowH2V2_Box_JPEG_8u_C1, (
  1993. const Ipp8u* pSrc1,
  1994. const Ipp8u* pSrc2,
  1995. int srcWidth,
  1996. Ipp8u* pDst))
  1997. /* ///////////////////////////////////////////////////////////////////////////
  1998. // Upsampling functions for decoder
  1999. /////////////////////////////////////////////////////////////////////////// */
  2000. /* ///////////////////////////////////////////////////////////////////////////
  2001. // Name:
  2002. // ippiSampleUpH2V1_JPEG_8u_C1R
  2003. //
  2004. // Purpose:
  2005. // sample up horizontally 1:2
  2006. //
  2007. // Parameters:
  2008. // pSrc - pointer to source data to be sampled up
  2009. // srcStep - line offset in input data
  2010. // srcSize - ROI size
  2011. // pDst - pointer to sampled up output data
  2012. // dstStep - line offset in input data
  2013. // dstSize - ROI size
  2014. //
  2015. // Returns:
  2016. // IppStatus
  2017. //
  2018. // Notes:
  2019. // Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel),
  2020. // so we need leftmost and rightmost values outside the data boundary.
  2021. */
  2022. IPPAPI(IppStatus, ippiSampleUpH2V1_JPEG_8u_C1R, (
  2023. const Ipp8u* pSrc,
  2024. int srcStep,
  2025. IppiSize srcRoiSize,
  2026. Ipp8u* pDst,
  2027. int dstStep,
  2028. IppiSize dstRoiSize))
  2029. /* ///////////////////////////////////////////////////////////////////////////
  2030. // Name:
  2031. // ippiSampleUpH2V2_JPEG_8u_C1R
  2032. //
  2033. // Purpose:
  2034. // sample up horizontally 1:2 and vertically 1:2
  2035. //
  2036. // Parameters:
  2037. // pSrc - pointer to source data to be sampled up
  2038. // srcStep - line offset in input data
  2039. // srcSize - ROI size
  2040. // pDst - pointer to sampled up output data
  2041. // dstStep - line offset in input data
  2042. // dstSize - ROI size
  2043. //
  2044. // Returns:
  2045. // IppStatus
  2046. //
  2047. // Notes:
  2048. // Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel),
  2049. // so we need leftmost and rightmost, bottommost and topmost values
  2050. // outside the data boundary.
  2051. */
  2052. IPPAPI(IppStatus, ippiSampleUpH2V2_JPEG_8u_C1R, (
  2053. const Ipp8u* pSrc,
  2054. int srcStep,
  2055. IppiSize srcRoiSize,
  2056. Ipp8u* pDst,
  2057. int dstStep,
  2058. IppiSize dstRoiSize))
  2059. /* ///////////////////////////////////////////////////////////////////////////
  2060. // Name:
  2061. // ippiSampleUpRowH2V1_Triangle_JPEG_8u_C1
  2062. //
  2063. // Purpose:
  2064. // sample up horizontally 1:2
  2065. //
  2066. // Parameters:
  2067. // pSrc - pointer to the source row
  2068. // srcWidth - width of source row
  2069. // pDst - pointer to sampled up output row
  2070. //
  2071. // Returns:
  2072. // IppStatus
  2073. //
  2074. // Notes:
  2075. // Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel)
  2076. */
  2077. IPPAPI(IppStatus, ippiSampleUpRowH2V1_Triangle_JPEG_8u_C1, (
  2078. const Ipp8u* pSrc,
  2079. int srcWidth,
  2080. Ipp8u* pDst))
  2081. /* ///////////////////////////////////////////////////////////////////////////
  2082. // Name:
  2083. // ippiSampleUpRowH2V2_Triangle_JPEG_8u_C1
  2084. //
  2085. // Purpose:
  2086. // sample up horizontally 1:2 and vertically 1:2
  2087. //
  2088. // Parameters:
  2089. // pSrc1 - pointer to the source row
  2090. // pSrc2 - pointer to the next(adjacent) source row
  2091. // srcWidth - width of source rows
  2092. // pDst - pointer to sampled up output row
  2093. //
  2094. // Returns:
  2095. // IppStatus
  2096. //
  2097. // Notes:
  2098. // Triangle filter used there (3/4 * nearer pixel + 1/4 * further pixel),
  2099. */
  2100. IPPAPI(IppStatus, ippiSampleUpRowH2V2_Triangle_JPEG_8u_C1, (
  2101. const Ipp8u* pSrc1,
  2102. const Ipp8u* pSrc2,
  2103. int srcWidth,
  2104. Ipp8u* pDst))
  2105. /* ///////////////////////////////////////////////////////////////////////////
  2106. // Sampling and color conversion functions for encoder
  2107. /////////////////////////////////////////////////////////////////////////// */
  2108. /* ///////////////////////////////////////////////////////////////////////////
  2109. // Name:
  2110. // ippiRGBToYCbCr444LS_MCU_8u16s_C3P3R
  2111. //
  2112. // Purpose:
  2113. // RGB to YCbCr color conversion, 444 downsampling and level shift (-128)
  2114. // This routine handles one 1:1:1 MCU of interleaved RGB data
  2115. // (lines separated by srcStep) and generates a full color converted MCU
  2116. // (i.e., one 8x8 luminance block and two 8x8 chrominance blocks).
  2117. //
  2118. // Input data is in the order:
  2119. // RGB,RGB,...,RGB
  2120. // 0 8 srcStep
  2121. // 0 +-------+-------------------+
  2122. // | | |
  2123. // | | |
  2124. // | | |
  2125. // 8 +-------+-------------------+
  2126. //
  2127. // Output data is in the order:
  2128. // Y block, Cb block, Cr block
  2129. //
  2130. // 0 8 0 8 0 8
  2131. // 0 +-------+ +-------+ +-------+
  2132. // | | | | | |
  2133. // | Y | | Cb | | Cr |
  2134. // | | | | | |
  2135. // 8 +-------+ +-------+ +-------+
  2136. //
  2137. // Parameter:
  2138. // pSrcRGB pointer to input data, RGBRGB..RGBRGB
  2139. // srcStep line offset in input data
  2140. // pDstMCU pointer to output MCU.
  2141. //
  2142. // Returns:
  2143. // IppStatus
  2144. //
  2145. // Notes:
  2146. // the color conversion equations:
  2147. // Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
  2148. // Cb = -0.16874*R - 0.33126*G + 0.50000*B
  2149. // Cr = 0.50000*R - 0.41869*G - 0.08131*B
  2150. // Level Shift is defined in ISO/IEC 10918-1,
  2151. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  2152. */
  2153. IPPAPI(IppStatus, ippiRGBToYCbCr444LS_MCU_8u16s_C3P3R, (
  2154. const Ipp8u* pSrcRGB,
  2155. int srcStep,
  2156. Ipp16s* pDstMCU[3]))
  2157. /* ///////////////////////////////////////////////////////////////////////////
  2158. // Name:
  2159. // ippiRGBToYCbCr422LS_MCU_8u16s_C3P3R
  2160. //
  2161. // Purpose:
  2162. // RGB to YCbCr color conversion, 422 downsampling and level shift (-128)
  2163. // This routine handles one 4:2:2 MCU of interleaved RGB data
  2164. // (lines separated by srcStep) and generates a full color converted MCU
  2165. // (i.e., two 8x8 luminance blocks and two 8x8 chrominance blocks).
  2166. //
  2167. // Input data is in the order:
  2168. // RGB,RGB,...,RGB
  2169. //
  2170. // 0 15 srcStep
  2171. // 0 +---------------+-------+
  2172. // | | |
  2173. // | | |
  2174. // | | |
  2175. // 8 +---------------+-------+
  2176. //
  2177. // Output data is in the order:
  2178. // Y1 block, Y2 block, Cb block, Cr block.
  2179. //
  2180. // 0 8 15 0 8 0 8
  2181. // 0 +-------+-------+ 0 +-------+ +-------+
  2182. // | | | | | | |
  2183. // | Y1 | Y2 | | Cb | | Cr |
  2184. // | | | | | | |
  2185. // 8 +-------+-------+ 8 +-------+ +-------+
  2186. //
  2187. // Downsampling is done via averaging. For the above example,
  2188. // the Cb and Cr blocks would each use an average of 2 pixels
  2189. // horizonatally to get 1 pixel into the output blocks.
  2190. //
  2191. // Parameter:
  2192. // pSrcRGB pointer to input data
  2193. // srcStep line offset in input data
  2194. // pDstMCU pointer to output array
  2195. //
  2196. // Returns:
  2197. // IppStatus
  2198. //
  2199. // Notes:
  2200. // the color conversion equations:
  2201. // Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
  2202. // Cb = -0.16874*R - 0.33126*G + 0.50000*B
  2203. // Cr = 0.50000*R - 0.41869*G - 0.08131*B
  2204. // Level Shift is defined in ISO/IEC 10918-1,
  2205. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  2206. */
  2207. IPPAPI(IppStatus, ippiRGBToYCbCr422LS_MCU_8u16s_C3P3R, (
  2208. const Ipp8u* pSrcRGB,
  2209. int srcStep,
  2210. Ipp16s* pDstMCU[3]))
  2211. /* ///////////////////////////////////////////////////////////////////////////
  2212. // Name:
  2213. // ippiRGBToYCbCr411LS_MCU_8u16s_C3P3R
  2214. //
  2215. // Purpose:
  2216. // RGB to YCbCr color conversion, 411 downsampling and level shift (-128)
  2217. // This routine handles one 4:1:1 MCU of interleaved RGB data
  2218. // (lines separated by srcStep) and generates a full color converted MCU
  2219. // (i.e., four 8x8 luminance blocks and two 8x8 chrominance blocks).
  2220. //
  2221. // Input data is in the order:
  2222. // RGB,RGB,...,RGB
  2223. //
  2224. // 0 15 srcStep
  2225. // 0 +---------------+-------+
  2226. // | | |
  2227. // | | |
  2228. // | | |
  2229. // | | |
  2230. // | | |
  2231. // | | |
  2232. // | | |
  2233. // 15 +---------------+-------+
  2234. //
  2235. // Output data is in the order:
  2236. // Y1 block, Y2 block, Y3 block, Y4 block,
  2237. // Cb block, Cr block,
  2238. //
  2239. // 0 8 15 0 8 0 8
  2240. // 0 +-------+--------+ +--------+ +--------+
  2241. // | | | | | | |
  2242. // | Y1 | Y2 | | Cb | | Cr |
  2243. // | | | | | | |
  2244. // 8 +-------+--------+ +--------+ +--------+
  2245. // | | |
  2246. // | Y3 | Y4 |
  2247. // | | |
  2248. // 15 +-------+--------+
  2249. //
  2250. // Downsampling is done via averaging. For the above example,
  2251. // the Cb and Cr blocks would each use an average of 4 pixels
  2252. // to get 1 pixel into the output blocks.
  2253. //
  2254. // Parameter:
  2255. // pSrcRGB pointer to input data
  2256. // srcStep line offset in input data
  2257. // pDstMCU pointer to output array
  2258. //
  2259. // Returns:
  2260. // IppStatus
  2261. //
  2262. // Notes:
  2263. // the color conversion equations:
  2264. // Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
  2265. // Cb = -0.16874*R - 0.33126*G + 0.50000*B
  2266. // Cr = 0.50000*R - 0.41869*G - 0.08131*B
  2267. // Level Shift is defined in ISO/IEC 10918-1,
  2268. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  2269. */
  2270. IPPAPI(IppStatus, ippiRGBToYCbCr411LS_MCU_8u16s_C3P3R, (
  2271. const Ipp8u* pSrcRGB,
  2272. int srcStep,
  2273. Ipp16s* pDstMCU[3]))
  2274. /* ///////////////////////////////////////////////////////////////////////////
  2275. // Name:
  2276. // ippiBGRToYCbCr444LS_MCU_8u16s_C3P3R
  2277. //
  2278. // Purpose:
  2279. // BGR to YCbCr color conversion, 444 downsampling and level shift (-128)
  2280. // This routine handles one 1:1:1 MCU of interleaved BGR data
  2281. // (lines separated by srcStep) and generates a full color converted MCU
  2282. // (i.e., one 8x8 luminance block and two 8x8 chrominance blocks).
  2283. //
  2284. // Input data is in the order:
  2285. // BGR,BGR,...,BGR
  2286. // 0 8 srcStep
  2287. // 0 +-------+-------------------+
  2288. // | | |
  2289. // | | |
  2290. // | | |
  2291. // 8 +-------+-------------------+
  2292. //
  2293. // Output data is in the order:
  2294. // Y block, Cb block, Cr block
  2295. //
  2296. // 0 8 0 8 0 8
  2297. // 0 +-------+ +-------+ +-------+
  2298. // | | | | | |
  2299. // | Y | | Cb | | Cr |
  2300. // | | | | | |
  2301. // 8 +-------+ +-------+ +-------+
  2302. //
  2303. // Parameter:
  2304. // pSrcBGR pointer to input data, RGBRGB..RGBRGB
  2305. // srcStep line offset in input data
  2306. // pDstMCU pointer to output MCU.
  2307. //
  2308. // Returns:
  2309. // IppStatus
  2310. //
  2311. // Notes:
  2312. // the color conversion equations:
  2313. // Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
  2314. // Cb = -0.16874*R - 0.33126*G + 0.50000*B
  2315. // Cr = 0.50000*R - 0.41869*G - 0.08131*B
  2316. // Level Shift is defined in ISO/IEC 10918-1,
  2317. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  2318. */
  2319. IPPAPI(IppStatus, ippiBGRToYCbCr444LS_MCU_8u16s_C3P3R, (
  2320. const Ipp8u* pSrcBGR,
  2321. int srcStep,
  2322. Ipp16s* pDstMCU[3]))
  2323. /* ///////////////////////////////////////////////////////////////////////////
  2324. // Name:
  2325. // ippiBGRToYCbCr422LS_MCU_8u16s_C3P3R
  2326. //
  2327. // Purpose:
  2328. // BGR to YCbCr color conversion, 422 downsampling and level shift (-128)
  2329. // This routine handles one 4:2:2 MCU of interleaved BGR data
  2330. // (lines separated by srcStep) and generates a full color converted MCU
  2331. // (i.e., two 8x8 luminance blocks and two 8x8 chrominance blocks).
  2332. //
  2333. // Input data is in the order:
  2334. // BGR,BGR,...,BGR
  2335. //
  2336. // 0 15 srcStep
  2337. // 0 +---------------+-------+
  2338. // | | |
  2339. // | | |
  2340. // | | |
  2341. // 8 +---------------+-------+
  2342. //
  2343. // Output data is in the order:
  2344. // Y1 block, Y2 block, Cb block, Cr block.
  2345. //
  2346. // 0 8 15 0 8 0 8
  2347. // 0 +-------+-------+ 0 +-------+ +-------+
  2348. // | | | | | | |
  2349. // | Y1 | Y2 | | Cb | | Cr |
  2350. // | | | | | | |
  2351. // 8 +-------+-------+ 8 +-------+ +-------+
  2352. //
  2353. // Downsampling is done via averaging. For the above example,
  2354. // the Cb and Cr blocks would each use an average of 2 pixels
  2355. // horizonatally to get 1 pixel into the output blocks.
  2356. //
  2357. // Parameter:
  2358. // pSrcBGR pointer to input data
  2359. // srcStep line offset in input data
  2360. // pDstMCU pointer to output array
  2361. //
  2362. // Returns:
  2363. // IppStatus
  2364. //
  2365. // Notes:
  2366. // the color conversion equations:
  2367. // Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
  2368. // Cb = -0.16874*R - 0.33126*G + 0.50000*B
  2369. // Cr = 0.50000*R - 0.41869*G - 0.08131*B
  2370. // Level Shift is defined in ISO/IEC 10918-1,
  2371. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  2372. */
  2373. IPPAPI(IppStatus, ippiBGRToYCbCr422LS_MCU_8u16s_C3P3R, (
  2374. const Ipp8u* pSrcBGR,
  2375. int srcStep,
  2376. Ipp16s* pDstMCU[3]))
  2377. /* ///////////////////////////////////////////////////////////////////////////
  2378. // Name:
  2379. // ippiBGRToYCbCr411LS_MCU_8u16s_C3P3R
  2380. //
  2381. // Purpose:
  2382. // BGR to YCbCr color conversion, 411 downsampling and level shift (-128)
  2383. // This routine handles one 4:1:1 MCU of interleaved BGR data
  2384. // (lines separated by srcStep) and generates a full color converted MCU
  2385. // (i.e., four 8x8 luminance blocks and two 8x8 chrominance blocks).
  2386. //
  2387. // Input data is in the order:
  2388. // BGR,BGR,...,BGR
  2389. //
  2390. // 0 15 srcStep
  2391. // 0 +---------------+-------+
  2392. // | | |
  2393. // | | |
  2394. // | | |
  2395. // | | |
  2396. // | | |
  2397. // | | |
  2398. // | | |
  2399. // 15 +---------------+-------+
  2400. //
  2401. // Output data is in the order:
  2402. // Y1 block, Y2 block, Y3 block, Y4 block,
  2403. // Cb block, Cr block,
  2404. //
  2405. // 0 8 15 0 8 0 8
  2406. // 0 +-------+--------+ +--------+ +--------+
  2407. // | | | | | | |
  2408. // | Y1 | Y2 | | Cb | | Cr |
  2409. // | | | | | | |
  2410. // 8 +-------+--------+ +--------+ +--------+
  2411. // | | |
  2412. // | Y3 | Y4 |
  2413. // | | |
  2414. // 15 +-------+--------+
  2415. //
  2416. // Downsampling is done via averaging. For the above example,
  2417. // the Cb and Cr blocks would each use an average of 4 pixels
  2418. // to get 1 pixel into the output blocks.
  2419. //
  2420. // Parameter:
  2421. // pSrcBGR pointer to input data
  2422. // srcStep line offset in input data
  2423. // pDstMCU pointer to output array
  2424. //
  2425. // Returns:
  2426. // IppStatus
  2427. //
  2428. // Notes:
  2429. // the color conversion equations:
  2430. // Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
  2431. // Cb = -0.16874*R - 0.33126*G + 0.50000*B
  2432. // Cr = 0.50000*R - 0.41869*G - 0.08131*B
  2433. // Level Shift is defined in ISO/IEC 10918-1,
  2434. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  2435. */
  2436. IPPAPI(IppStatus, ippiBGRToYCbCr411LS_MCU_8u16s_C3P3R, (
  2437. const Ipp8u* pSrcBGR,
  2438. int srcStep,
  2439. Ipp16s* pDstMCU[3]))
  2440. /* ///////////////////////////////////////////////////////////////////////////
  2441. // Name:
  2442. // ippiSampleDown444LS_MCU_8u16s_C3P3R
  2443. //
  2444. // Purpose:
  2445. // No color conversion, 444 downsampling and level shift (-128)
  2446. // This routine handles one 1:1:1 MCU of interleaved data
  2447. // (lines separated by srcStep) and generates a full MCU
  2448. // (i.e., one 8x8 block of Ch1 and two 8x8 blocks of Ch2 and Ch3).
  2449. //
  2450. // Input data is in the order:
  2451. // Ch1Ch2Ch3,...,Ch1Ch2Ch3
  2452. // 0 8 srcStep
  2453. // 0 +-------+-------------------+
  2454. // | | |
  2455. // | | |
  2456. // | | |
  2457. // 8 +-------+-------------------+
  2458. //
  2459. // Output data is in the order:
  2460. // Ch1 block, Ch2 block, Ch3 block
  2461. //
  2462. // 0 8 0 8 0 8
  2463. // 0 +-------+ +-------+ +-------+
  2464. // | | | | | |
  2465. // | | | | | |
  2466. // | | | | | |
  2467. // 8 +-------+ +-------+ +-------+
  2468. //
  2469. // Parameter:
  2470. // pSrc pointer to input data
  2471. // srcStep line offset in input data
  2472. // pDstMCU pointer to output MCU.
  2473. //
  2474. // Returns:
  2475. // IppStatus
  2476. //
  2477. // Notes:
  2478. // Level Shift is defined in ISO/IEC 10918-1,
  2479. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  2480. */
  2481. IPPAPI(IppStatus, ippiSampleDown444LS_MCU_8u16s_C3P3R, (
  2482. const Ipp8u* pSrc,
  2483. int srcStep,
  2484. Ipp16s* pDstMCU[3]))
  2485. /* ///////////////////////////////////////////////////////////////////////////
  2486. // Name:
  2487. // ippiSampleDown422LS_MCU_8u16s_C3P3R
  2488. //
  2489. // Purpose:
  2490. // No color conversion, 422 downsampling and level shift (-128)
  2491. // This routine handles one 4:2:2 MCU of interleaved data
  2492. // (lines separated by srcStep) and generates a full MCU
  2493. // (i.e., two 8x8 blocks of Ch1 and two 8x8 blocks of Ch2 and Ch3).
  2494. //
  2495. // Input data is in the order:
  2496. // Ch1Ch2Ch3,,...,Ch1Ch2Ch3
  2497. //
  2498. // 0 15 srcStep
  2499. // 0 +---------------+-------+
  2500. // | | |
  2501. // | | |
  2502. // | | |
  2503. // 8 +---------------+-------+
  2504. //
  2505. // Output data is in the order:
  2506. // Ch1 block, Ch1 block, Ch2 block, Ch3 block.
  2507. //
  2508. // 0 8 15 0 8 0 8
  2509. // 0 +-------+-------+ 0 +-------+ +-------+
  2510. // | | | | | | |
  2511. // | | | | | | |
  2512. // | | | | | | |
  2513. // 8 +-------+-------+ 8 +-------+ +-------+
  2514. //
  2515. // Downsampling is done via averaging. For the above example,
  2516. // the Cb and Cr blocks would each use an average of 2 pixels
  2517. // horizonatally to get 1 pixel into the output blocks.
  2518. //
  2519. // Parameter:
  2520. // pSrc pointer to input data
  2521. // srcStep line offset in input data
  2522. // pDstMCU pointer to output array
  2523. //
  2524. // Returns:
  2525. // IppStatus
  2526. //
  2527. // Notes:
  2528. // Level Shift is defined in ISO/IEC 10918-1,
  2529. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  2530. */
  2531. IPPAPI(IppStatus, ippiSampleDown422LS_MCU_8u16s_C3P3R, (
  2532. const Ipp8u* pSrc,
  2533. int srcStep,
  2534. Ipp16s* pDstMCU[3]))
  2535. /* ///////////////////////////////////////////////////////////////////////////
  2536. // Name:
  2537. // ippiSampleDown411LS_MCU_8u16s_C3P3R
  2538. //
  2539. // Purpose:
  2540. // No color conversion, 411 downsampling and level shift (-128)
  2541. // This routine handles one 4:1:1 MCU of interleaved data
  2542. // (lines separated by srcStep) and generates a full MCU
  2543. // (i.e., four 8x8 blocks of Ch1 and two 8x8 blocks of Ch2 and Ch3).
  2544. //
  2545. // Input data is in the order:
  2546. // Ch1Ch2Ch3,,...,Ch1Ch2Ch3
  2547. //
  2548. // 0 15 srcStep
  2549. // 0 +---------------+-------+
  2550. // | | |
  2551. // | | |
  2552. // | | |
  2553. // | | |
  2554. // | | |
  2555. // | | |
  2556. // | | |
  2557. // 15 +---------------+-------+
  2558. //
  2559. // Output data is in the order:
  2560. // Ch1 block, Ch1 block, Ch1 block, Ch1 block,
  2561. // Ch2 block, Ch3 block,
  2562. //
  2563. // 0 8 15 0 8 0 8
  2564. // 0 +-------+--------+ +--------+ +--------+
  2565. // | | | | | | |
  2566. // | ch1 | ch1 | | ch2 | | ch3 |
  2567. // | | | | | | |
  2568. // 8 +-------+--------+ +--------+ +--------+
  2569. // | | |
  2570. // | ch1 | ch1 |
  2571. // | | |
  2572. // 15 +-------+--------+
  2573. //
  2574. // Downsampling is done via averaging. For the above example,
  2575. // the Ch2 and Ch3 blocks would each use an average of 4 pixels
  2576. // to get 1 pixel into the output blocks.
  2577. //
  2578. // Parameter:
  2579. // pSrc pointer to input data
  2580. // srcStep line offset in input data
  2581. // pDstMCU pointer to output array
  2582. //
  2583. // Returns:
  2584. // IppStatus
  2585. //
  2586. // Notes:
  2587. // Level Shift is defined in ISO/IEC 10918-1,
  2588. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  2589. */
  2590. IPPAPI(IppStatus, ippiSampleDown411LS_MCU_8u16s_C3P3R, (
  2591. const Ipp8u* pSrc,
  2592. int srcStep,
  2593. Ipp16s* pDstMCU[3]))
  2594. /* ///////////////////////////////////////////////////////////////////////////
  2595. // Name:
  2596. // ippiSplit422LS_MCU_8u16s_C2P3R
  2597. //
  2598. // Purpose:
  2599. // No color conversion, no up-sampling,
  2600. // only pixel to planar transformation and level shift (+128)
  2601. // for one MCU
  2602. //
  2603. // Parameter:
  2604. // pSrc pointer to input data
  2605. // srcStep line offset in output data
  2606. // pDstMCU pointer to pointers to output data
  2607. //
  2608. // Returns:
  2609. // IppStatus
  2610. //
  2611. // Notes:
  2612. */
  2613. IPPAPI(IppStatus,ippiSplit422LS_MCU_8u16s_C2P3R,(
  2614. const Ipp8u* pSrc,
  2615. int srcStep,
  2616. Ipp16s* pDstMCU[3]))
  2617. /* ///////////////////////////////////////////////////////////////////////////
  2618. // Name:
  2619. // ippiCMYKToYCCK444LS_MCU_8u16s_C4P4R
  2620. //
  2621. // Purpose:
  2622. // CMYK to YCCK color conversion, 444 downsampling and level shift (-128)
  2623. // This routine handles one 1:1:1:1 MCU of interleaved CMYK data
  2624. // (lines separated by srcStep) and generates a full color converted MCU
  2625. // (one 8x8 luminance block, two 8x8 chrominance blocks
  2626. // and one 8x8 alpha block).
  2627. //
  2628. // Input data is in the order:
  2629. // CMYK,CMYK,...,CMYK
  2630. //
  2631. // 0 8 srcStep
  2632. // 0 +-------+--------------+
  2633. // | | |
  2634. // | | |
  2635. // | | |
  2636. // 8 +-------+--------------+
  2637. //
  2638. // Output data is in the order:
  2639. // Y block, Cb block, Cr block, K block.
  2640. //
  2641. // 0 8 0 8 0 8 0 8
  2642. // 0 +-------+ +-------+ +-------+ +-------+
  2643. // | | | | | | | |
  2644. // | Y | | Cb | | Cr | | K |
  2645. // | | | | | | | |
  2646. // 8 +-------+ +-------+ +-------+ +-------+
  2647. //
  2648. // Parameter:
  2649. // pSrcCMYK pointer to input data
  2650. // srcStep line offset in input data
  2651. // pDstYCCK pointer to output array
  2652. //
  2653. // Returns:
  2654. // IppStatus
  2655. //
  2656. // Notes:
  2657. // This version handles Adobe-style CMYK->YCCK conversion,
  2658. // where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
  2659. // while K (black) channel is unchanged.
  2660. // Level Shift is defined in ISO/IEC 10918-1,
  2661. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  2662. */
  2663. IPPAPI(IppStatus, ippiCMYKToYCCK444LS_MCU_8u16s_C4P4R, (
  2664. const Ipp8u* pSrcCMYK,
  2665. int srcStep,
  2666. Ipp16s* pDstYCCK[4]))
  2667. /* ///////////////////////////////////////////////////////////////////////////
  2668. // Name:
  2669. // ippiCMYKToYCCK422LS_MCU_8u16s_C4P4R
  2670. //
  2671. // Purpose:
  2672. // CMYK to YCCK color conversion, 4224 downsampling and level shift (-128)
  2673. // This routine handles one "partial" 4:2:2:4 MCU of interleaved
  2674. // RGBA_FPX DIB data (lines separated by lineoffset) and generates
  2675. // a full color converted MCU (i.e., two 8x8 luminance blocks
  2676. // and two 4x8 chrominance blocks and two 8x8 alpha blocks).
  2677. //
  2678. // Input data is in the order:
  2679. // CMYK,CMYK,...,CMYK
  2680. //
  2681. // 0 15 srcStep
  2682. // 0 +---------------+-------+
  2683. // | | |
  2684. // | | |
  2685. // | | |
  2686. // 8 +---------------+-------+
  2687. //
  2688. // Output data is in the order:
  2689. // Y1 block, Y2 block, Cb block, Cr block, K1 block, K2 block.
  2690. //
  2691. // 0 8 15 0 8 0 8 0 8 15
  2692. // 0 +-------+-------+ +-------+ +--------+ +-------+-------+
  2693. // | | | | | | | | | |
  2694. // | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
  2695. // | | | | | | | | | |
  2696. // 8 +-------+-------+ +-------+ +--------+ +-------+-------+
  2697. //
  2698. // Downsampling is done via averaging. For the above example,
  2699. // the Cb and Cr blocks would each use an average of 2 pixels horizonatally
  2700. // to get 1 pixel into the output blocks.
  2701. //
  2702. // Parameter:
  2703. // pSrcCMYK pointer to input data
  2704. // srcStep line offset in input data
  2705. // pDstYCCK pointer to output array
  2706. //
  2707. // Returns:
  2708. // IppStatus
  2709. //
  2710. // Notes:
  2711. // This version handles Adobe-style CMYK->YCCK conversion,
  2712. // where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
  2713. // while K (black) channel is unchanged.
  2714. // Level Shift is defined in ISO/IEC 10918-1,
  2715. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  2716. */
  2717. IPPAPI(IppStatus, ippiCMYKToYCCK422LS_MCU_8u16s_C4P4R, (
  2718. const Ipp8u* pSrcCMYK,
  2719. int srcStep,
  2720. Ipp16s* pDstYCCK[4]))
  2721. /* ///////////////////////////////////////////////////////////////////////////
  2722. // Name:
  2723. // ippiCMYKToYCCK411LS_MCU_8u16s_C4P4R
  2724. //
  2725. // Purpose:
  2726. // CMYK to YCCK color conversion, 4114 downsampling and level shift (-128)
  2727. // This routine handles one 4:1:1:4 MCU of interleaved CMYK data
  2728. // (lines separated by srcStep) and generates a full color converted MCU
  2729. // (i.e., four 8x8 luminance blocks and two 8x8 chrominance blocks
  2730. // and four 8x8 alpha blocks).
  2731. //
  2732. // Input data is in the order:
  2733. // CMYK,CMYK,...,CMYK
  2734. //
  2735. // 0 15 srcStep
  2736. // 0 +---------------+-------+
  2737. // | | |
  2738. // | | |
  2739. // | | |
  2740. // | | |
  2741. // | | |
  2742. // | | |
  2743. // | | |
  2744. // 15 +---------------+-------+
  2745. //
  2746. // Output data is in the order:
  2747. // Y1 block, Y2 block, Y3 block, Y4 block,
  2748. // Cb block, Cr block,
  2749. // K1 block, K2 block, K3 block, K4 block.
  2750. //
  2751. // 0 8 15 0 8 0 8 0 8 15
  2752. // 0 +-------+--------+ +--------+ +--------+ +-------+--------+
  2753. // | | | | | | | | | |
  2754. // | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
  2755. // | | | | | | | | | |
  2756. // 8 +-------+--------+ +--------+ +--------+ +-------+--------+
  2757. // | | | | | |
  2758. // | Y3 | Y4 | | K3 | K4 |
  2759. // | | | | | |
  2760. // 15 +-------+--------+ +-------+--------+
  2761. //
  2762. // Downsampling is done via averaging. For the above example,
  2763. // the Cb and Cr blocks would each use an average of 4 pixels
  2764. // to get 1 pixel into the output blocks.
  2765. //
  2766. // Parameter:
  2767. // pSrcCMYK pointer to input data
  2768. // srcStep line offset in input data
  2769. // pDstYCCK pointer to output array
  2770. //
  2771. // Returns:
  2772. // IppStatus
  2773. //
  2774. // Notes:
  2775. // This version handles Adobe-style CMYK->YCCK conversion,
  2776. // where R = 1-C, G = 1-M, and B = 1-Y are converted to YCbCr,
  2777. // while K (black) channel is unchanged.
  2778. // Level Shift is defined in ISO/IEC 10918-1,
  2779. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  2780. */
  2781. IPPAPI(IppStatus, ippiCMYKToYCCK411LS_MCU_8u16s_C4P4R, (
  2782. const Ipp8u* pSrcCMYK,
  2783. int srcStep,
  2784. Ipp16s* pDstYCCK[4]))
  2785. /* ///////////////////////////////////////////////////////////////////////////
  2786. // Name:
  2787. // ippiBGR555ToYCbCr444LS_MCU_16u16s_C3P3R
  2788. // ippiBGR555ToYCbCr422LS_MCU_16u16s_C3P3R
  2789. // ippiBGR555ToYCbCr411LS_MCU_16u16s_C3P3R
  2790. // ippiBGR565ToYCbCr444LS_MCU_16u16s_C3P3R
  2791. // ippiBGR565ToYCbCr422LS_MCU_16u16s_C3P3R
  2792. // ippiBGR565ToYCbCr411LS_MCU_16u16s_C3P3R
  2793. //
  2794. // Purpose:
  2795. // Color conversions, down-sampling and level shift (-128) for one MCU
  2796. //
  2797. // Parameter:
  2798. // pSrcBGR pointer to input data
  2799. // srcStep line offset in input data
  2800. // pDstMCU pointer to pointers to output data
  2801. //
  2802. // Returns:
  2803. // IppStatus
  2804. //
  2805. // Notes:
  2806. // the color conversion equations:
  2807. // Y = 0.29900*R + 0.58700*G + 0.11400*B - 128
  2808. // Cb = -0.16874*R - 0.33126*G + 0.50000*B
  2809. // Cr = 0.50000*R - 0.41869*G - 0.08131*B
  2810. //
  2811. // BGR555 format
  2812. // 15 8 7 0
  2813. // |xrrrrrgg|gggbbbbb|
  2814. //
  2815. // BGR565 format
  2816. // 15 8 7 0
  2817. // |rrrrrggg|gggbbbbb|
  2818. //
  2819. */
  2820. IPPAPI(IppStatus, ippiBGR555ToYCbCr444LS_MCU_16u16s_C3P3R, (
  2821. const Ipp16u* pSrcBGR,
  2822. int srcStep,
  2823. Ipp16s* pDstMCU[3]))
  2824. IPPAPI(IppStatus, ippiBGR555ToYCbCr422LS_MCU_16u16s_C3P3R, (
  2825. const Ipp16u* pSrcBGR,
  2826. int srcStep,
  2827. Ipp16s* pDstMCU[3]))
  2828. IPPAPI(IppStatus, ippiBGR555ToYCbCr411LS_MCU_16u16s_C3P3R, (
  2829. const Ipp16u* pSrcBGR,
  2830. int srcStep,
  2831. Ipp16s* pDstMCU[3]))
  2832. IPPAPI(IppStatus, ippiBGR565ToYCbCr444LS_MCU_16u16s_C3P3R, (
  2833. const Ipp16u* pSrcBGR,
  2834. int srcStep,
  2835. Ipp16s* pDstMCU[3]))
  2836. IPPAPI(IppStatus, ippiBGR565ToYCbCr422LS_MCU_16u16s_C3P3R, (
  2837. const Ipp16u* pSrcBGR,
  2838. int srcStep,
  2839. Ipp16s* pDstMCU[3]))
  2840. IPPAPI(IppStatus, ippiBGR565ToYCbCr411LS_MCU_16u16s_C3P3R, (
  2841. const Ipp16u* pSrcBGR,
  2842. int srcStep,
  2843. Ipp16s* pDstMCU[3]))
  2844. /* ///////////////////////////////////////////////////////////////////////////
  2845. // Functions for color conversion for decoder
  2846. /////////////////////////////////////////////////////////////////////////// */
  2847. /* ///////////////////////////////////////////////////////////////////////////
  2848. // Name:
  2849. // ippiYCbCrToRGB_JPEG_8u_P3R
  2850. //
  2851. // Purpose:
  2852. // YCbCr to RGB color conversion
  2853. //
  2854. // Parameter:
  2855. // pSrcYCbCr pointer to pointers on input data.
  2856. // pSrc[0] pointer to YY..YY
  2857. // pSrc[1] pointer to CbCb..CbCb
  2858. // pSrc[2] pointer to CrCr..CrCr
  2859. // srcStep line offset in input data
  2860. // pDstRGB pointer to pointers to output arrays
  2861. // pDst[0] pointer to RR..RR
  2862. // pDst[1] pointer to GG..GG
  2863. // pDst[2] pointer to BB..BB
  2864. // dstStep line offset in output data
  2865. // roiSize ROI size
  2866. //
  2867. // Returns:
  2868. // IppStatus
  2869. //
  2870. // Notes:
  2871. // R = Y + 1.40200*Cr - 179.456
  2872. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  2873. // B = Y + 1.77200*Cb - 226.816
  2874. */
  2875. IPPAPI(IppStatus, ippiYCbCrToRGB_JPEG_8u_P3R, (
  2876. const Ipp8u* pSrcYCbCr[3],
  2877. int srcStep,
  2878. Ipp8u* pDstRGB[3],
  2879. int dstStep,
  2880. IppiSize roiSize))
  2881. /* ///////////////////////////////////////////////////////////////////////////
  2882. // Name:
  2883. // ippiYCbCrToRGB_JPEG_8u_P3C3R
  2884. //
  2885. // Purpose:
  2886. // YCbCr to RGB color conversion
  2887. //
  2888. // Parameter:
  2889. // pSrcYCbCr pointer to pointers to input data
  2890. // pSrcYCbCr[0] pointer to YY..YY
  2891. // pSrcYCbCr[1] pointer to CbCb..CbCb
  2892. // pSrcYCbCr[2] pointer to CrCr..CrCr
  2893. // srcStep line offset in input data
  2894. // pDstRGB pointer to output array RGBRGB..RGBRGB
  2895. // dstStep line offset in output data
  2896. // roiSize ROI size
  2897. //
  2898. // Returns:
  2899. // IppStatus
  2900. //
  2901. // Notes:
  2902. // R = Y + 1.40200*Cr - 179.456
  2903. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  2904. // B = Y + 1.77200*Cb - 226.816
  2905. */
  2906. IPPAPI(IppStatus, ippiYCbCrToRGB_JPEG_8u_P3C3R, (
  2907. const Ipp8u* pSrcYCbCr[3],
  2908. int srcStep,
  2909. Ipp8u* pDstRGB,
  2910. int dstStep,
  2911. IppiSize roiSize))
  2912. /* ///////////////////////////////////////////////////////////////////////////
  2913. // Name:
  2914. // ippiYCbCrToBGR_JPEG_8u_P3C3R
  2915. //
  2916. // Purpose:
  2917. // YCbCr to BGR color conversion
  2918. //
  2919. // Parameter:
  2920. // pSrcYCbCr pointer to pointers to input data
  2921. // pSrcYCbCr[0] pointer to YY..YY
  2922. // pSrcYCbCr[1] pointer to CbCb..CbCb
  2923. // pSrcYCbCr[2] pointer to CrCr..CrCr
  2924. // srcStep line offset in input data
  2925. // pDstBGR pointer to output array BGRBGR..BGRBGR
  2926. // dstStep line offset in output data
  2927. // roiSize ROI size
  2928. //
  2929. // Returns:
  2930. // IppStatus
  2931. //
  2932. // Notes:
  2933. // R = Y + 1.40200*Cr - 179.456
  2934. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  2935. // B = Y + 1.77200*Cb - 226.816
  2936. */
  2937. IPPAPI(IppStatus, ippiYCbCrToBGR_JPEG_8u_P3C3R, (
  2938. const Ipp8u* pSrcYCbCr[3],
  2939. int srcStep,
  2940. Ipp8u* pDstBGR,
  2941. int dstStep,
  2942. IppiSize roiSize))
  2943. /* ///////////////////////////////////////////////////////////////////////////
  2944. // Name:
  2945. // ippiYCbCr422ToRGB_JPEG_8u_C2C3R
  2946. //
  2947. // Purpose:
  2948. // YCbCr to RGB 4:2:2 up-sampling and color conversion
  2949. //
  2950. // Parameter:
  2951. // pSrc pointer to input YUY2 data (Y0 Cb0 Y1 Cr0 ..)
  2952. // srcStep line offset in input data
  2953. // pDst pointer to output array RGBRGB..RGBRGB
  2954. // dstStep line offset in output data
  2955. // roiSize ROI size
  2956. //
  2957. // Returns:
  2958. // IppStatus
  2959. //
  2960. // Notes:
  2961. // width should even number
  2962. // color convertion implemented according the following equations
  2963. // R = Y + 1.40200*Cr - 179.456
  2964. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  2965. // B = Y + 1.77200*Cb - 226.816
  2966. */
  2967. IPPAPI(IppStatus, ippiYCbCr422ToRGB_JPEG_8u_C2C3R, (
  2968. const Ipp8u* pSrc,
  2969. int srcStep,
  2970. Ipp8u* pDst,
  2971. int dstStep,
  2972. IppiSize roiSize))
  2973. /* ///////////////////////////////////////////////////////////////////////////
  2974. // Name:
  2975. // ippiYCbCrToRGB555_JPEG_8u16u_P3C3R
  2976. //
  2977. // Purpose:
  2978. // YCbCr to RGB555 color conversation
  2979. //
  2980. // Parameter:
  2981. // pSrcYCbCr pointer to pointers to input data
  2982. // srcStep line offset in input data
  2983. // pDstRGB pointer to output data
  2984. // dstStep line offset in output data
  2985. // roiSize ROI size
  2986. //
  2987. // Returns:
  2988. // IppStatus
  2989. //
  2990. // Notes:
  2991. // the color conversion equations:
  2992. // R = Y + 1.40200*Cr - 179.456
  2993. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  2994. // B = Y + 1.77200*Cb - 226.816
  2995. //
  2996. // RGB555 format
  2997. // 15 8 7 0
  2998. // |xbbbbbgg|gggrrrrr|
  2999. //
  3000. */
  3001. IPPAPI(IppStatus, ippiYCbCrToRGB555_JPEG_8u16u_P3C3R, (
  3002. const Ipp8u* pSrcYCbCr[3],
  3003. int srcStep,
  3004. Ipp16u* pDstRGB,
  3005. int dstStep,
  3006. IppiSize roiSize))
  3007. /* ///////////////////////////////////////////////////////////////////////////
  3008. // Name:
  3009. // ippiYCbCrToBGR555_JPEG_8u16u_P3C3R
  3010. //
  3011. // Purpose:
  3012. // YCbCr to BGR555 color conversation
  3013. //
  3014. // Parameter:
  3015. // pSrcYCbCr pointer to pointers to input data
  3016. // srcStep line offset in input data
  3017. // pDstBGR pointer to output data
  3018. // dstStep line offset in output data
  3019. // roiSize ROI size
  3020. //
  3021. // Returns:
  3022. // IppStatus
  3023. //
  3024. // Notes:
  3025. // the color conversion equations:
  3026. // R = Y + 1.40200*Cr - 179.456
  3027. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  3028. // B = Y + 1.77200*Cb - 226.816
  3029. //
  3030. // BGR555 format
  3031. // 15 8 7 0
  3032. // |xrrrrrgg|gggbbbbb|
  3033. //
  3034. */
  3035. IPPAPI(IppStatus, ippiYCbCrToBGR555_JPEG_8u16u_P3C3R, (
  3036. const Ipp8u* pSrcYCbCr[3],
  3037. int srcStep,
  3038. Ipp16u* pDstBGR,
  3039. int dstStep,
  3040. IppiSize roiSize))
  3041. /* ///////////////////////////////////////////////////////////////////////////
  3042. // Name:
  3043. // ippiYCbCrToRGB565_JPEG_8u16u_P3C3R
  3044. //
  3045. // Purpose:
  3046. // YCbCr to RGB565 color conversation
  3047. //
  3048. // Parameter:
  3049. // pSrcYCbCr pointer to pointers to input data
  3050. // srcStep line offset in input data
  3051. // pDstRGB pointer to output data
  3052. // dstStep line offset in output data
  3053. // roiSize ROI size
  3054. //
  3055. // Returns:
  3056. // IppStatus
  3057. //
  3058. // Notes:
  3059. // the color conversion equations:
  3060. // R = Y + 1.40200*Cr - 179.456
  3061. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  3062. // B = Y + 1.77200*Cb - 226.816
  3063. //
  3064. // RGB565 format
  3065. // 15 8 7 0
  3066. // |bbbbbggg|gggrrrrr|
  3067. //
  3068. */
  3069. IPPAPI(IppStatus, ippiYCbCrToRGB565_JPEG_8u16u_P3C3R, (
  3070. const Ipp8u* pSrcYCbCr[3],
  3071. int srcStep,
  3072. Ipp16u* pDstRGB,
  3073. int dstStep,
  3074. IppiSize roiSize))
  3075. /* ///////////////////////////////////////////////////////////////////////////
  3076. // Name:
  3077. // ippiYCbCrToBGR565_JPEG_8u16u_P3C3R
  3078. //
  3079. // Purpose:
  3080. // YCbCr to BGR565 color conversation
  3081. //
  3082. // Parameter:
  3083. // pSrcYCbCr pointer to pointers to input data
  3084. // srcStep line offset in input data
  3085. // pDstBGR pointer to output data
  3086. // dstStep line offset in output data
  3087. // roiSize ROI size
  3088. //
  3089. // Returns:
  3090. // IppStatus
  3091. //
  3092. // Notes:
  3093. // the color conversion equations:
  3094. // R = Y + 1.40200*Cr - 179.456
  3095. // G = Y - 0.34414*Cb - 0.71414*Cr + 135.45984
  3096. // B = Y + 1.77200*Cb - 226.816
  3097. //
  3098. // BGR565 format
  3099. // 15 8 7 0
  3100. // |rrrrrggg|gggbbbbb|
  3101. //
  3102. */
  3103. IPPAPI(IppStatus, ippiYCbCrToBGR565_JPEG_8u16u_P3C3R, (
  3104. const Ipp8u* pSrcYCbCr[3],
  3105. int srcStep,
  3106. Ipp16u* pDstBGR,
  3107. int dstStep,
  3108. IppiSize roiSize))
  3109. /* ///////////////////////////////////////////////////////////////////////////
  3110. // Name:
  3111. // ippiYCCKToCMYK_JPEG_8u_P4R
  3112. //
  3113. // Purpose:
  3114. // YCCK to CMYK color conversion
  3115. //
  3116. // Parameter:
  3117. // pSrcYCCK pointer to pointers to input data
  3118. // pSrc[0] pointer to YY..YY
  3119. // pSrc[1] pointer to CC..CC
  3120. // pSrc[2] pointer to CC..CC
  3121. // pSrc[3] pointer to KK..KK
  3122. // srcStep line offset in input data
  3123. // pDstCMYK pointer to pointers to output arrays
  3124. // pDst[0] pointer to CC..CC
  3125. // pDst[1] pointer to MM..MM
  3126. // pDst[2] pointer to YY..YY
  3127. // pDst[3] pointer to KK..KK
  3128. // dstStep line offset in output data
  3129. // roiSize ROI size
  3130. //
  3131. // Returns:
  3132. // IppStatus
  3133. //
  3134. // Notes:
  3135. // This version handles Adobe-style YCCK->CMYK conversion,
  3136. // Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
  3137. // while K (black) channel is unchanged.
  3138. */
  3139. IPPAPI(IppStatus, ippiYCCKToCMYK_JPEG_8u_P4R, (
  3140. const Ipp8u* pSrcYCCK[4],
  3141. int srcStep,
  3142. Ipp8u* pDstCMYK[4],
  3143. int dstStep,
  3144. IppiSize roiSize))
  3145. /* ///////////////////////////////////////////////////////////////////////////
  3146. // Name:
  3147. // ippiYCCKToCMYK_JPEG_8u_P4C4R
  3148. //
  3149. // Purpose:
  3150. // YCCK to CMYK color conversion
  3151. //
  3152. // Parameter:
  3153. // pSrcYCCK pointer to pointers to input data
  3154. // pSrc[0] pointer to YY..YY
  3155. // pSrc[1] pointer to CC..CC
  3156. // pSrc[2] pointer to CC..CC
  3157. // pSrc[3] pointer to KK..KK
  3158. // srcStep line offset in input data
  3159. // pDstCMYK pointer to output array CMYKCMYK..CMYKCMYK
  3160. // dstStep line offset in output data
  3161. // roiSize ROI size
  3162. //
  3163. // Returns:
  3164. // IppStatus
  3165. //
  3166. // Notes:
  3167. // This version handles Adobe-style YCCK->CMYK conversion,
  3168. // Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
  3169. // while K (black) channel is unchanged.
  3170. */
  3171. IPPAPI(IppStatus, ippiYCCKToCMYK_JPEG_8u_P4C4R, (
  3172. const Ipp8u* pSrcYCCK[4],
  3173. int srcStep,
  3174. Ipp8u* pDstCMYK,
  3175. int dstStep,
  3176. IppiSize roiSize))
  3177. /* ///////////////////////////////////////////////////////////////////////////
  3178. // Sampling and color conversion functions for decoder
  3179. /////////////////////////////////////////////////////////////////////////// */
  3180. /* ///////////////////////////////////////////////////////////////////////////
  3181. // Name:
  3182. // ippiYCbCr444ToRGBLS_MCU_16s8u_P3C3R
  3183. //
  3184. // Purpose:
  3185. //
  3186. // This procedure implements the 1:1:1 upsampling and
  3187. // color space conversion from YCbCr to RGB color space
  3188. //
  3189. // Input data is in the order:
  3190. // Y block, Cb block, Cr block
  3191. //
  3192. // 0 8 0 8 0 8
  3193. // 0 +-------+ +-------+ +-------+
  3194. // | | | | | |
  3195. // | Y | | Cb | | Cr |
  3196. // | | | | | |
  3197. // 8 +-------+ +-------+ +-------+
  3198. //
  3199. // Output data is in the order:
  3200. // RGB,RGB,...,RGB
  3201. // 0 8 dstStep
  3202. // 0 +-------+-------------------+
  3203. // | | |
  3204. // | | |
  3205. // | | |
  3206. // 8 +-------+-------------------+
  3207. //
  3208. // Parameter:
  3209. // pSrcMCU pointer to input data
  3210. // pDstRGB pointer to pointers to output arrays
  3211. // dstStep line offset in output data
  3212. //
  3213. // Returns:
  3214. // IppStatus
  3215. //
  3216. // Notes:
  3217. // the color conversion equations (including level shift +128):
  3218. // R = Y + 1.40200*Cr + 128
  3219. // G = Y - 0.34414*Cb - 0.71414*Cr + 128
  3220. // B = Y + 1.77200*Cb + 128
  3221. // up-sampling is just box filter
  3222. // Level Shift is defined in ISO/IEC 10918-1,
  3223. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3224. */
  3225. IPPAPI(IppStatus, ippiYCbCr444ToRGBLS_MCU_16s8u_P3C3R, (
  3226. const Ipp16s* pSrcMCU[3],
  3227. Ipp8u* pDstRGB,
  3228. int dstStep))
  3229. /* ///////////////////////////////////////////////////////////////////////////
  3230. // Name:
  3231. // ippiYCbCr422ToRGBLS_MCU_16s8u_P3C3R
  3232. //
  3233. // Purpose:
  3234. //
  3235. // Performs upsampling and YCbCr->RGB color conversion,
  3236. // and output data formatting of DCT output blocks,
  3237. // for a subset of a 4:2:2 MCU.
  3238. //
  3239. // Input data is in the order:
  3240. // Y1 block, Y2 block, Cb block, Cr block.
  3241. //
  3242. // 0 8 15 0 8 0 8
  3243. // 0 +-------+-------+ 0 +-------+ +-------+
  3244. // | | | | | | |
  3245. // | Y1 | Y2 | | Cb | | Cr |
  3246. // | | | | | | |
  3247. // 8 +-------+-------+ 8 +-------+ +-------+
  3248. //
  3249. // Output data is in the order:
  3250. // RGB,RGB,...,RGB
  3251. //
  3252. // 0 15 dstStep
  3253. // 0 +---------------+-------+
  3254. // | | |
  3255. // | | |
  3256. // | | |
  3257. // 8 +---------------+-------+
  3258. //
  3259. // Parameter:
  3260. // pSrcMCU pointer to input data
  3261. // pDstRGB pointer to pointers to output arrays
  3262. // dstStep line offset in output data
  3263. //
  3264. // Returns:
  3265. // IppStatus
  3266. //
  3267. // Notes:
  3268. // the color conversion equations (including level shift +128):
  3269. // R = Y + 1.40200*Cr + 128
  3270. // G = Y - 0.34414*Cb - 0.71414*Cr + 128
  3271. // B = Y + 1.77200*Cb + 128
  3272. // up-sampling is just box filter
  3273. // Level Shift is defined in ISO/IEC 10918-1,
  3274. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3275. */
  3276. IPPAPI(IppStatus, ippiYCbCr422ToRGBLS_MCU_16s8u_P3C3R, (
  3277. const Ipp16s* pSrcMCU[3],
  3278. Ipp8u* pDstRGB,
  3279. int dstStep))
  3280. /* ///////////////////////////////////////////////////////////////////////////
  3281. // Name:
  3282. // ippiYCbCr411ToRGBLS_MCU_16s8u_P3C3R
  3283. //
  3284. // Purpose:
  3285. //
  3286. // Performs upsampling and YCbCr->RGB color conversion,
  3287. // and output data formatting of DCT output blocks,
  3288. // for a subset of a 4:1:1 MCU.
  3289. //
  3290. // Input data is in the order:
  3291. // Y1 block, Y2 block, Y3 block, Y4 block,
  3292. // Cb block, Cr block,
  3293. //
  3294. // 0 8 15 0 8 0 8
  3295. // 0 +-------+--------+ +--------+ +--------+
  3296. // | | | | | | |
  3297. // | Y1 | Y2 | | Cb | | Cr |
  3298. // | | | | | | |
  3299. // 8 +-------+--------+ +--------+ +--------+
  3300. // | | |
  3301. // | Y3 | Y4 |
  3302. // | | |
  3303. // 15 +-------+--------+
  3304. //
  3305. // Output data is in the order:
  3306. // RGB,RGB,...,RGB
  3307. //
  3308. // 0 15 dstStep
  3309. // 0 +---------------+-------+
  3310. // | | |
  3311. // | | |
  3312. // | | |
  3313. // | | |
  3314. // | | |
  3315. // | | |
  3316. // | | |
  3317. // 15 +---------------+-------+
  3318. //
  3319. // Parameter:
  3320. // pSrcMCU pointer to input data
  3321. // pDstRGB pointer to pointers to output arrays
  3322. // dstStep line offset in output data
  3323. //
  3324. // Returns:
  3325. // IppStatus
  3326. //
  3327. // Notes:
  3328. // the color conversion equations (including level shift +128):
  3329. // R = Y + 1.40200*Cr + 128
  3330. // G = Y - 0.34414*Cb - 0.71414*Cr + 128
  3331. // B = Y + 1.77200*Cb + 128
  3332. // up-sampling is just box filter
  3333. // Level Shift is defined in ISO/IEC 10918-1,
  3334. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3335. */
  3336. IPPAPI(IppStatus, ippiYCbCr411ToRGBLS_MCU_16s8u_P3C3R, (
  3337. const Ipp16s* pSrcMCU[3],
  3338. Ipp8u* pDstRGB,
  3339. int dstStep))
  3340. /* ///////////////////////////////////////////////////////////////////////////
  3341. // Name:
  3342. // ippiYCbCr444ToBGRLS_MCU_16s8u_P3C3R
  3343. //
  3344. // Purpose:
  3345. //
  3346. // This procedure implements the 1:1:1 upsampling and
  3347. // color space conversion from YCbCr to BGR color space
  3348. //
  3349. // Input data is in the order:
  3350. // Y block, Cb block, Cr block
  3351. //
  3352. // 0 8 0 8 0 8
  3353. // 0 +-------+ +-------+ +-------+
  3354. // | | | | | |
  3355. // | Y | | Cb | | Cr |
  3356. // | | | | | |
  3357. // 8 +-------+ +-------+ +-------+
  3358. //
  3359. // Output data is in the order:
  3360. // BGR,BGR,...,BGR
  3361. // 0 8 dstStep
  3362. // 0 +-------+-------------------+
  3363. // | | |
  3364. // | | |
  3365. // | | |
  3366. // 8 +-------+-------------------+
  3367. //
  3368. // Parameter:
  3369. // pSrcMCU pointer to input data
  3370. // pDstBGR pointer to pointers to output arrays
  3371. // dstStep line offset in output data
  3372. //
  3373. // Returns:
  3374. // IppStatus
  3375. //
  3376. // Notes:
  3377. // the color conversion equations (including level shift +128):
  3378. // R = Y + 1.40200*Cr + 128
  3379. // G = Y - 0.34414*Cb - 0.71414*Cr + 128
  3380. // B = Y + 1.77200*Cb + 128
  3381. // up-sampling is just box filter
  3382. // Level Shift is defined in ISO/IEC 10918-1,
  3383. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3384. */
  3385. IPPAPI(IppStatus, ippiYCbCr444ToBGRLS_MCU_16s8u_P3C3R, (
  3386. const Ipp16s* pSrcMCU[3],
  3387. Ipp8u* pDstBGR,
  3388. int dstStep))
  3389. /* ///////////////////////////////////////////////////////////////////////////
  3390. // Name:
  3391. // ippiYCbCr422ToBGRLS_MCU_16s8u_P3C3R
  3392. //
  3393. // Purpose:
  3394. //
  3395. // Performs upsampling and YCbCr->BGR color conversion,
  3396. // and output data formatting of DCT output blocks,
  3397. // for a subset of a 4:2:2 MCU.
  3398. //
  3399. // Input data is in the order:
  3400. // Y1 block, Y2 block, Cb block, Cr block.
  3401. //
  3402. // 0 8 15 0 8 0 8
  3403. // 0 +-------+-------+ 0 +-------+ +-------+
  3404. // | | | | | | |
  3405. // | Y1 | Y2 | | Cb | | Cr |
  3406. // | | | | | | |
  3407. // 8 +-------+-------+ 8 +-------+ +-------+
  3408. //
  3409. // Output data is in the order:
  3410. // BGR,BGR,...,BGR
  3411. //
  3412. // 0 15 dstStep
  3413. // 0 +---------------+-------+
  3414. // | | |
  3415. // | | |
  3416. // | | |
  3417. // 8 +---------------+-------+
  3418. //
  3419. // Parameter:
  3420. // pSrcMCU pointer to input data
  3421. // pDstBGR pointer to pointers to output arrays
  3422. // dstStep line offset in output data
  3423. //
  3424. // Returns:
  3425. // IppStatus
  3426. //
  3427. // Notes:
  3428. // the color conversion equations (including level shift +128):
  3429. // R = Y + 1.40200*Cr + 128
  3430. // G = Y - 0.34414*Cb - 0.71414*Cr + 128
  3431. // B = Y + 1.77200*Cb + 128
  3432. // up-sampling is just box filter
  3433. // Level Shift is defined in ISO/IEC 10918-1,
  3434. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3435. */
  3436. IPPAPI(IppStatus, ippiYCbCr422ToBGRLS_MCU_16s8u_P3C3R, (
  3437. const Ipp16s* pSrcMCU[3],
  3438. Ipp8u* pDstBGR,
  3439. int dstStep))
  3440. /* ///////////////////////////////////////////////////////////////////////////
  3441. // Name:
  3442. // ippiYCbCr411ToBGRLS_MCU_16s8u_P3C3R
  3443. //
  3444. // Purpose:
  3445. //
  3446. // Performs upsampling and YCbCr->BGR color conversion,
  3447. // and output data formatting of DCT output blocks,
  3448. // for a subset of a 4:1:1 MCU.
  3449. //
  3450. // Input data is in the order:
  3451. // Y1 block, Y2 block, Y3 block, Y4 block,
  3452. // Cb block, Cr block,
  3453. //
  3454. // 0 8 15 0 8 0 8
  3455. // 0 +-------+--------+ +--------+ +--------+
  3456. // | | | | | | |
  3457. // | Y1 | Y2 | | Cb | | Cr |
  3458. // | | | | | | |
  3459. // 8 +-------+--------+ +--------+ +--------+
  3460. // | | |
  3461. // | Y3 | Y4 |
  3462. // | | |
  3463. // 15 +-------+--------+
  3464. //
  3465. // Output data is in the order:
  3466. // BGR,BGR,...,BGR
  3467. //
  3468. // 0 15 dstStep
  3469. // 0 +---------------+-------+
  3470. // | | |
  3471. // | | |
  3472. // | | |
  3473. // | | |
  3474. // | | |
  3475. // | | |
  3476. // | | |
  3477. // 15 +---------------+-------+
  3478. //
  3479. // Parameter:
  3480. // pSrcMCU pointer to input data
  3481. // pDstBGR pointer to pointers to output arrays
  3482. // dstStep line offset in output data
  3483. //
  3484. // Returns:
  3485. // IppStatus
  3486. //
  3487. // Notes:
  3488. // the color conversion equations (including level shift +128):
  3489. // R = Y + 1.40200*Cr + 128
  3490. // G = Y - 0.34414*Cb - 0.71414*Cr + 128
  3491. // B = Y + 1.77200*Cb + 128
  3492. // up-sampling is just box filter
  3493. // Level Shift is defined in ISO/IEC 10918-1,
  3494. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3495. */
  3496. IPPAPI(IppStatus, ippiYCbCr411ToBGRLS_MCU_16s8u_P3C3R, (
  3497. const Ipp16s* pSrcMCU[3],
  3498. Ipp8u* pDstBGR,
  3499. int dstStep))
  3500. /* ///////////////////////////////////////////////////////////////////////////
  3501. // Name:
  3502. // ippiYCbCr444ToBGR555LS_MCU_16s16u_P3C3R
  3503. // ippiYCbCr422ToBGR555LS_MCU_16s16u_P3C3R
  3504. // ippiYCbCr411ToBGR555LS_MCU_16s16u_P3C3R
  3505. // ippiYCbCr444ToBGR565LS_MCU_16s16u_P3C3R
  3506. // ippiYCbCr422ToBGR565LS_MCU_16s16u_P3C3R
  3507. // ippiYCbCr411ToBGR565LS_MCU_16s16u_P3C3R
  3508. //
  3509. // Purpose:
  3510. // Color conversions, up-sampling and level shift (+128) for one MCU
  3511. //
  3512. // Parameter:
  3513. // pSrcYCbCr pointer to pointers to input data
  3514. // pDstMCU pointer to output data
  3515. // dstStep line offset in output data
  3516. //
  3517. // Returns:
  3518. // IppStatus
  3519. //
  3520. // Notes:
  3521. // the color conversion equations (including level shift +128):
  3522. // R = Y + 1.40200*Cr + 128
  3523. // G = Y - 0.34414*Cb - 0.71414*Cr + 128
  3524. // B = Y + 1.77200*Cb + 128
  3525. // up-sampling is just box filter
  3526. //
  3527. // BGR555 format
  3528. // 15 8 7 0
  3529. // |xrrrrrgg|gggbbbbb|
  3530. //
  3531. // BGR565 format
  3532. // 15 8 7 0
  3533. // |rrrrrggg|gggbbbbb|
  3534. //
  3535. */
  3536. IPPAPI(IppStatus, ippiYCbCr444ToBGR555LS_MCU_16s16u_P3C3R, (
  3537. const Ipp16s* pSrcMCU[3],
  3538. Ipp16u* pDstBGR,
  3539. int dstStep))
  3540. IPPAPI(IppStatus, ippiYCbCr422ToBGR555LS_MCU_16s16u_P3C3R, (
  3541. const Ipp16s* pSrcMCU[3],
  3542. Ipp16u* pDstBGR,
  3543. int dstStep))
  3544. IPPAPI(IppStatus, ippiYCbCr411ToBGR555LS_MCU_16s16u_P3C3R, (
  3545. const Ipp16s* pSrcMCU[3],
  3546. Ipp16u* pDstBGR,
  3547. int dstStep))
  3548. IPPAPI(IppStatus, ippiYCbCr444ToBGR565LS_MCU_16s16u_P3C3R, (
  3549. const Ipp16s* pSrcMCU[3],
  3550. Ipp16u* pDstBGR,
  3551. int dstStep))
  3552. IPPAPI(IppStatus, ippiYCbCr422ToBGR565LS_MCU_16s16u_P3C3R, (
  3553. const Ipp16s* pSrcMCU[3],
  3554. Ipp16u* pDstBGR,
  3555. int dstStep))
  3556. IPPAPI(IppStatus, ippiYCbCr411ToBGR565LS_MCU_16s16u_P3C3R, (
  3557. const Ipp16s* pSrcMCU[3],
  3558. Ipp16u* pDstBGR,
  3559. int dstStep))
  3560. /* ///////////////////////////////////////////////////////////////////////////
  3561. // Name:
  3562. // ippiSampleUp444LS_MCU_16s8u_P3C3R
  3563. //
  3564. // Purpose:
  3565. //
  3566. // This procedure implements the 1:1:1 upsampling.
  3567. // No color conversion is performed.
  3568. //
  3569. // Input data is in the order:
  3570. // C1 block, C2 block, C3 block
  3571. //
  3572. // 0 8 0 8 0 8
  3573. // 0 +-------+ +-------+ +-------+
  3574. // | | | | | |
  3575. // | C1 | | C2 | | C3 |
  3576. // | | | | | |
  3577. // 8 +-------+ +-------+ +-------+
  3578. //
  3579. // Output data is in the order:
  3580. // C1C2C3,C1C2C3,...,C1C2C3
  3581. // 0 8 dstStep
  3582. // 0 +-------+-------------------+
  3583. // | | |
  3584. // | | |
  3585. // | | |
  3586. // 8 +-------+-------------------+
  3587. //
  3588. // Parameter:
  3589. // pSrcMCU pointer to input data
  3590. // pDst pointer to pointers to output arrays
  3591. // dstStep line offset in output data
  3592. //
  3593. // Returns:
  3594. // IppStatus
  3595. //
  3596. // Notes:
  3597. //
  3598. // Level Shift is defined in ISO/IEC 10918-1,
  3599. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3600. */
  3601. IPPAPI(IppStatus, ippiSampleUp444LS_MCU_16s8u_P3C3R, (
  3602. const Ipp16s* pSrcMCU[3],
  3603. Ipp8u* pDst,
  3604. int dstStep))
  3605. /* ///////////////////////////////////////////////////////////////////////////
  3606. // Name:
  3607. // ippiSampleUp422LS_MCU_16s8u_P3C3R
  3608. //
  3609. // Purpose:
  3610. //
  3611. // Performs upsampling and output data
  3612. // formatting of DCT output blocks,
  3613. // for a subset of a 4:2:2 MCU. No color conversion
  3614. // is performed.
  3615. //
  3616. // Input data is in the order:
  3617. // C1 1th block, C1 2th block, C2 block, C3 block.
  3618. //
  3619. // 0 8 15 0 8 0 8
  3620. // 0 +-------+-------+ 0 +-------+ +-------+
  3621. // | | | | | | |
  3622. // | | | | | | |
  3623. // | | | | | | |
  3624. // 8 +-------+-------+ 8 +-------+ +-------+
  3625. //
  3626. // Output data is in the order:
  3627. // C1C2C3,C1C2C3,...,C1C2C3
  3628. //
  3629. // 0 15 dstStep
  3630. // 0 +---------------+-------+
  3631. // | | |
  3632. // | | |
  3633. // | | |
  3634. // 8 +---------------+-------+
  3635. //
  3636. // Parameter:
  3637. // pSrcMCU pointer to input data
  3638. // pDst pointer to pointers to output arrays
  3639. // dstStep line offset in output data
  3640. //
  3641. // Returns:
  3642. // IppStatus
  3643. //
  3644. // Notes:
  3645. // up-sampling is just box filter
  3646. // Level Shift is defined in ISO/IEC 10918-1,
  3647. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3648. */
  3649. IPPAPI(IppStatus, ippiSampleUp422LS_MCU_16s8u_P3C3R, (
  3650. const Ipp16s* pSrcMCU[3],
  3651. Ipp8u* pDst,
  3652. int dstStep))
  3653. /* ///////////////////////////////////////////////////////////////////////////
  3654. // Name:
  3655. // ippiSampleUp411LS_MCU_16s8u_P3C3R
  3656. //
  3657. // Purpose:
  3658. //
  3659. // Performs upsampling and output data
  3660. // formatting of DCT output blocks,
  3661. // for a subset of a 4:1:1 MCU. No color conversion
  3662. // is performed.
  3663. //
  3664. // Input data is in the order:
  3665. // C1 1th block, C1 2th block, C1 3th block, C1 4th block,
  3666. // C2 block, C3 block,
  3667. //
  3668. // 0 8 15 0 8 0 8
  3669. // 0 +-------+--------+ +--------+ +--------+
  3670. // | | | | | | |
  3671. // | | | | | | |
  3672. // | | | | | | |
  3673. // 8 +-------+--------+ +--------+ +--------+
  3674. // | | |
  3675. // | | |
  3676. // | | |
  3677. // 15 +-------+--------+
  3678. //
  3679. // Output data is in the order:
  3680. // C1C2C3,C1C2C3,...,C1C2C3
  3681. //
  3682. // 0 15 dstStep
  3683. // 0 +---------------+-------+
  3684. // | | |
  3685. // | | |
  3686. // | | |
  3687. // | | |
  3688. // | | |
  3689. // | | |
  3690. // | | |
  3691. // 15 +---------------+-------+
  3692. //
  3693. // Parameter:
  3694. // pSrcMCU pointer to input data
  3695. // pDst pointer to pointers to output arrays
  3696. // dstStep line offset in output data
  3697. //
  3698. // Returns:
  3699. // IppStatus
  3700. //
  3701. // Notes:
  3702. // up-sampling is just box filter
  3703. // Level Shift is defined in ISO/IEC 10918-1,
  3704. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  3705. */
  3706. IPPAPI(IppStatus, ippiSampleUp411LS_MCU_16s8u_P3C3R, (
  3707. const Ipp16s* pSrcMCU[3],
  3708. Ipp8u* pDst,
  3709. int dstStep))
  3710. /* ///////////////////////////////////////////////////////////////////////////
  3711. // Name:
  3712. // ippiJoin422LS_MCU_16s8u_P3C2R
  3713. //
  3714. // Purpose:
  3715. //
  3716. // Performs planar to pixel conversion,
  3717. // preserving 422 sampling, for a subset of a 4:2:2 MCU.
  3718. //
  3719. // Input data is in the order:
  3720. // Y1 block, Y2 block, Cb block, Cr block.
  3721. //
  3722. // 0 8 15 0 8 0 8
  3723. // 0 +-------+-------+ 0 +-------+ +-------+
  3724. // | | | | | | |
  3725. // | Y1 | Y2 | | Cb | | Cr |
  3726. // | | | | | | |
  3727. // 8 +-------+-------+ 8 +-------+ +-------+
  3728. //
  3729. // Output data is in the order:
  3730. // YCbYCr,YCbYCr,...,YCbYCr
  3731. //
  3732. // 0 15 dstStep
  3733. // 0 +---------------+-------+
  3734. // | | |
  3735. // | | |
  3736. // | | |
  3737. // 8 +---------------+-------+
  3738. //
  3739. // Parameter:
  3740. // pSrcMCU pointer to the array of pointers to input data
  3741. // pDst pointer to output data
  3742. // dstStep line offset in output data
  3743. //
  3744. // Returns:
  3745. // IppStatus
  3746. //
  3747. // Notes:
  3748. */
  3749. IPPAPI(IppStatus, ippiJoin422LS_MCU_16s8u_P3C2R, (
  3750. const Ipp16s* pSrcMCU[3],
  3751. Ipp8u* pDst,
  3752. int dstStep))
  3753. /* ///////////////////////////////////////////////////////////////////////////
  3754. // Name:
  3755. // ippiYCCK444ToCMYKLS_MCU_16s8u_P4C4R
  3756. //
  3757. // Purpose:
  3758. //
  3759. // This procedure implements the 1:1:1:1 upsampling and
  3760. // color space conversion from YCCK to CMYK color space
  3761. //
  3762. // Input data is in the order:
  3763. // Y block, Cb block, Cr block, K block.
  3764. //
  3765. // 0 8 0 8 0 8 0 8
  3766. // 0 +-------+ +-------+ +-------+ +-------+
  3767. // | | | | | | | |
  3768. // | Y | | Cb | | Cr | | K |
  3769. // | | | | | | | |
  3770. // 8 +-------+ +-------+ +-------+ +-------+
  3771. //
  3772. // Output data is in the order:
  3773. // CMYK,CMYK,...,CMYK
  3774. //
  3775. // 0 8 dstStep
  3776. // 0 +-------+--------------+
  3777. // | | |
  3778. // | | |
  3779. // | | |
  3780. // 8 +-------+--------------+
  3781. //
  3782. // Parameter:
  3783. // pSrcMCU pointer to input data
  3784. // pDstCMYK pointer to pointers to output arrays
  3785. // dstStep line offset in output data
  3786. //
  3787. // Returns:
  3788. // IppStatus
  3789. //
  3790. // Notes:
  3791. // This version handles Adobe-style YCCK->CMYK conversion,
  3792. // Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
  3793. // while K (black) channel is unchanged.
  3794. // Level Shift is defined in ISO/IEC 10918-1,
  3795. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3796. */
  3797. IPPAPI(IppStatus, ippiYCCK444ToCMYKLS_MCU_16s8u_P4C4R, (
  3798. const Ipp16s* pSrcMCU[4],
  3799. Ipp8u* pDstCMYK,
  3800. int dstStep))
  3801. /* ///////////////////////////////////////////////////////////////////////////
  3802. // Name:
  3803. // ippiYCCK422ToCMYKLS_MCU_16s8u_P4C4R
  3804. //
  3805. // Purpose:
  3806. //
  3807. // Performs upsampling and YCbCr->RGB color conversion,
  3808. // and output data formatting of DCT output blocks,
  3809. // for a subset of a 4:2:2:4 MCU.
  3810. //
  3811. // Input data is in the order:
  3812. // Y1 block, Y2 block, Cb block, Cr block, K1 block, K2 block.
  3813. //
  3814. // 0 8 15 0 8 0 8 0 8 15
  3815. // 0 +-------+-------+ +-------+ +--------+ +-------+-------+
  3816. // | | | | | | | | | |
  3817. // | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
  3818. // | | | | | | | | | |
  3819. // 8 +-------+-------+ +-------+ +--------+ +-------+-------+
  3820. //
  3821. // Output data is in the order:
  3822. // CMYK,CMYK,...,CMYK
  3823. //
  3824. // 0 15 dstStep
  3825. // 0 +---------------+-------+
  3826. // | | |
  3827. // | | |
  3828. // | | |
  3829. // 8 +---------------+-------+
  3830. //
  3831. // Parameter:
  3832. // pSrcMCU pointer to input data
  3833. // pDstCMYK pointer to pointers to output arrays
  3834. // dstStep line offset in output data
  3835. //
  3836. // Returns:
  3837. // IppStatus
  3838. //
  3839. // Notes:
  3840. // This version handles Adobe-style YCCK->CMYK conversion,
  3841. // Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
  3842. // while K (black) channel is unchanged.
  3843. // Level Shift is defined in ISO/IEC 10918-1,
  3844. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3845. */
  3846. IPPAPI(IppStatus, ippiYCCK422ToCMYKLS_MCU_16s8u_P4C4R, (
  3847. const Ipp16s* pSrcMCU[4],
  3848. Ipp8u* pDstCMYK,
  3849. int dstStep))
  3850. /* ///////////////////////////////////////////////////////////////////////////
  3851. // Name:
  3852. // ippiYCCK411ToCMYKLS_MCU_16s8u_P4C4R
  3853. //
  3854. // Purpose:
  3855. //
  3856. // Performs upsampling and YCbCr->RGB color conversion,
  3857. // and output data formatting of DCT output blocks,
  3858. // for a subset of a 4:1:1:4 MCU.
  3859. //
  3860. // Input data is in the order:
  3861. // Y1 block, Y2 block, Y3 block, Y4 block,
  3862. // Cb block, Cr block,
  3863. // K1 block, K2 block, K3 block, K4 block.
  3864. //
  3865. // 0 8 15 0 8 0 8 0 8 15
  3866. // 0 +-------+--------+ +--------+ +--------+ +-------+--------+
  3867. // | | | | | | | | | |
  3868. // | Y1 | Y2 | | Cb | | Cr | | K1 | K2 |
  3869. // | | | | | | | | | |
  3870. // 8 +-------+--------+ +--------+ +--------+ +-------+--------+
  3871. // | | | | | |
  3872. // | Y3 | Y4 | | K3 | K4 |
  3873. // | | | | | |
  3874. // 15 +-------+--------+ +-------+--------+
  3875. //
  3876. // Output data is in the order:
  3877. // CMYK,CMYK,...,CMYK
  3878. //
  3879. // 0 15 dstStep
  3880. // 0 +---------------+-------+
  3881. // | | |
  3882. // | | |
  3883. // | | |
  3884. // | | |
  3885. // | | |
  3886. // | | |
  3887. // | | |
  3888. // 15 +---------------+-------+
  3889. //
  3890. // Parameter:
  3891. // pSrcMCU pointer to input data
  3892. // pDstCMYK pointer to pointers to output arrays
  3893. // dstStep line offset in output data
  3894. //
  3895. // Returns:
  3896. // IppStatus
  3897. //
  3898. // Notes:
  3899. // This version handles Adobe-style YCCK->CMYK conversion,
  3900. // Where YCbCr are converted to R = 1-C, G = 1-M, B = 1-Y,
  3901. // while K (black) channel is unchanged.
  3902. // Level Shift is defined in ISO/IEC 10918-1,
  3903. // Appendix A - Requirements and guidelines, Annex A, A.3.1 - Level Shift.
  3904. */
  3905. IPPAPI(IppStatus, ippiYCCK411ToCMYKLS_MCU_16s8u_P4C4R, (
  3906. const Ipp16s* pSrcMCU[4],
  3907. Ipp8u* pDstCMYK,
  3908. int dstStep))
  3909. /* ///////////////////////////////////////////////////////////////////////////
  3910. // DCT + Quantization + Level Shift Functions for encoder
  3911. /////////////////////////////////////////////////////////////////////////// */
  3912. /* ///////////////////////////////////////////////////////////////////////////
  3913. // Name:
  3914. // ippiDCTQuantFwd8x8LS_JPEG_8u16s_C1R
  3915. //
  3916. // Purpose:
  3917. // Forward DCT transform, quantization and level shift
  3918. //
  3919. // Parameter:
  3920. // pSrc - pointer to source color component data
  3921. // srcStep - line offset for source data
  3922. // pDst - pointer to output 8x8 block
  3923. // of quantized DCT coefficients
  3924. // pQuantFwdTable - pointer to Quantization table
  3925. //
  3926. // Returns:
  3927. // IppStatus
  3928. //
  3929. // Notes:
  3930. // DCT is defined in ISO/IEC 10918-1,
  3931. // Appendix A - Requrements and guidelines, Annex A, A.3.3 FDCT and IDCT.
  3932. // Quantization is defined in ISO/IEC 10918-1,
  3933. // Appendix A - Requrements and guidelines,
  3934. // Annex A, A.3.4 DCT coefficient quantization and dequantization.
  3935. // Level Shift is defined in ISO/IEC 10918-1,
  3936. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  3937. */
  3938. IPPAPI(IppStatus, ippiDCTQuantFwd8x8LS_JPEG_8u16s_C1R, (
  3939. const Ipp8u* pSrc,
  3940. int srcStep,
  3941. Ipp16s* pDst,
  3942. const Ipp16u* pQuantFwdTable))
  3943. /* ///////////////////////////////////////////////////////////////////////////
  3944. // Name:
  3945. // ippiDCTQuantFwd8x8LS_JPEG_16u16s_C1R
  3946. //
  3947. // Purpose:
  3948. // Forward DCT transform, quantization and level shift
  3949. // for 12-bit data
  3950. //
  3951. // Parameter:
  3952. // pSrc - pointer to source color component data
  3953. // srcStep - line offset for source data
  3954. // pDst - pointer to output 8x8 block
  3955. // of quantized DCT coefficients
  3956. // pQuantFwdTable - pointer to Quantization table
  3957. //
  3958. // Returns:
  3959. // IppStatus
  3960. */
  3961. IPPAPI(IppStatus, ippiDCTQuantFwd8x8LS_JPEG_16u16s_C1R, (
  3962. const Ipp16u* pSrc,
  3963. int srcStep,
  3964. Ipp16s* pDst,
  3965. const Ipp32f* pQuantFwdTable))
  3966. /* ///////////////////////////////////////////////////////////////////////////
  3967. // DCT + Quantization Functions for encoder
  3968. /////////////////////////////////////////////////////////////////////////// */
  3969. /* ///////////////////////////////////////////////////////////////////////////
  3970. // Name:
  3971. // ippiDCTQuantFwd8x8_JPEG_16s_C1
  3972. //
  3973. // Purpose:
  3974. // Forward DCT transform and quantization
  3975. //
  3976. // Parameter:
  3977. // pSrc - pointer to source 8x8 block
  3978. // pDst - pointer to output 8x8 block
  3979. // pQuantFwdTable - pointer to Quantization table
  3980. //
  3981. // Returns:
  3982. // IppStatus
  3983. //
  3984. // Notes:
  3985. //
  3986. */
  3987. IPPAPI(IppStatus, ippiDCTQuantFwd8x8_JPEG_16s_C1, (
  3988. const Ipp16s* pSrc,
  3989. Ipp16s* pDst,
  3990. const Ipp16u* pQuantFwdTable))
  3991. /* ///////////////////////////////////////////////////////////////////////////
  3992. // Name:
  3993. // ippiDCTQuantFwd8x8_JPEG_16s_C1I
  3994. //
  3995. // Purpose:
  3996. // Forward DCT transform and quantization
  3997. //
  3998. // Parameter:
  3999. // pSrcDst - pointer to 8x8 block
  4000. // pQuantFwdTable - pointer to Quantization table
  4001. //
  4002. // Returns:
  4003. // IppStatus
  4004. //
  4005. // Notes:
  4006. //
  4007. */
  4008. IPPAPI(IppStatus, ippiDCTQuantFwd8x8_JPEG_16s_C1I, (
  4009. Ipp16s* pSrcDst,
  4010. const Ipp16u* pQuantFwdTable))
  4011. /* ///////////////////////////////////////////////////////////////////////////
  4012. // DCT + Dequantization + Level Shift Functions for decoder
  4013. /////////////////////////////////////////////////////////////////////////// */
  4014. /* ///////////////////////////////////////////////////////////////////////////
  4015. // Name:
  4016. // ippiDCTQuantInv8x8LS_JPEG_16s8u_C1R
  4017. // ippiDCTQuantInv8x8LS_4x4_JPEG_16s8u_C1R
  4018. // ippiDCTQuantInv8x8LS_2x2_JPEG_16s8u_C1R
  4019. // ippiDCTQuantInv8x8LS_1x1_JPEG_16s8u_C1R
  4020. //
  4021. // Purpose:
  4022. // Inverse DCT transform, de-quantization and level shift for
  4023. // 1) the whole 8x8 block
  4024. // 2) top-left 4x4 quadrant, in case when rest of coefs are zero
  4025. // 3) top-left 2x2 part of 8x8 block, in case when rest of coefs are zero
  4026. // 4) only DC coef is not zero in 8x8 block
  4027. //
  4028. //
  4029. // Parameter:
  4030. // pSrc - pointer to input 8x8 block of quantized DCT coefficients
  4031. // pDst - pointer to output color component data
  4032. // dstStep - line offset for destination data
  4033. // pQuantInvTable - pointer to Quantization table
  4034. //
  4035. // Returns:
  4036. // IppStatus
  4037. //
  4038. // Notes:
  4039. // DCT is defined in ISO/IEC 10918-1,
  4040. // Appendix A - Requrements and guidelines, Annex A, A.3.3 FDCT and IDCT.
  4041. // Quantization is defined in ISO/IEC 10918-1,
  4042. // Appendix A - Requrements and guidelines,
  4043. // Annex A, A.3.4 DCT coefficient quantization and dequantization.
  4044. // Level Shift is defined in ISO/IEC 10918-1,
  4045. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  4046. */
  4047. IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_JPEG_16s8u_C1R, (
  4048. const Ipp16s* pSrc,
  4049. Ipp8u* pDst,
  4050. int dstStep,
  4051. const Ipp16u* pQuantInvTable))
  4052. IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_4x4_JPEG_16s8u_C1R,(
  4053. const Ipp16s* pSrc,
  4054. Ipp8u* pDst,
  4055. int dstStep,
  4056. const Ipp16u* pQuantInvTable))
  4057. IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_2x2_JPEG_16s8u_C1R,(
  4058. const Ipp16s* pSrc,
  4059. Ipp8u* pDst,
  4060. int dstStep,
  4061. const Ipp16u* pQuantInvTable))
  4062. IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_1x1_JPEG_16s8u_C1R,(
  4063. const Ipp16s* pSrc,
  4064. Ipp8u* pDst,
  4065. int dstStep,
  4066. const Ipp16u* pQuantInvTable))
  4067. /* ///////////////////////////////////////////////////////////////////////////
  4068. // Name:
  4069. // ippiDCTQuantInv8x8To2x2LS_JPEG_16s8u_C1R
  4070. // ippiDCTQuantInv8x8To4x4LS_JPEG_16s8u_C1R
  4071. //
  4072. // Purpose:
  4073. // Inverse DCT transform, de-quantization and level shift and
  4074. // DCT downsampling for 1/2 and 1/4 scale factor
  4075. //
  4076. //
  4077. // Parameter:
  4078. // pSrc - pointer to input 8x8 block of quantized DCT coefficients
  4079. // pDst - pointer to output color component data
  4080. // dstStep - line offset for destination data
  4081. // pQuantInvTable - pointer to Quantization table
  4082. //
  4083. // Returns:
  4084. // IppStatus
  4085. //
  4086. // Notes:
  4087. // DCT is defined in ISO/IEC 10918-1,
  4088. // Appendix A - Requrements and guidelines, Annex A, A.3.3 FDCT and IDCT.
  4089. // Quantization is defined in ISO/IEC 10918-1,
  4090. // Appendix A - Requrements and guidelines,
  4091. // Annex A, A.3.4 DCT coefficient quantization and dequantization.
  4092. // Level Shift is defined in ISO/IEC 10918-1,
  4093. // Appendix A - Requrements and guidelines, Annex A, A.3.1 - Level Shift.
  4094. */
  4095. IPPAPI(IppStatus, ippiDCTQuantInv8x8To4x4LS_JPEG_16s8u_C1R,(
  4096. const Ipp16s* pSrc,
  4097. Ipp8u* pDst,
  4098. int dstStep,
  4099. const Ipp16u* pQuantInvTable))
  4100. IPPAPI(IppStatus, ippiDCTQuantInv8x8To2x2LS_JPEG_16s8u_C1R,(
  4101. const Ipp16s* pSrc,
  4102. Ipp8u* pDst,
  4103. int dstStep,
  4104. const Ipp16u* pQuantInvTable))
  4105. /* ///////////////////////////////////////////////////////////////////////////
  4106. // Name:
  4107. // ippiDCTQuantInv8x8LS_JPEG_16s16u_C1R
  4108. //
  4109. // Purpose:
  4110. // Inverse DCT transform, de-quantization and level shift
  4111. // for 12-bit data
  4112. //
  4113. // Parameter:
  4114. // pSrc - pointer to input 8x8 block of quantized DCT coefficients
  4115. // pDst - pointer to output color component data
  4116. // dstStep - line offset for destination data
  4117. // pQuantInvTable - pointer to Quantization table
  4118. //
  4119. // Returns:
  4120. // IppStatus
  4121. */
  4122. IPPAPI(IppStatus, ippiDCTQuantInv8x8LS_JPEG_16s16u_C1R, (
  4123. const Ipp16s* pSrc,
  4124. Ipp16u* pDst,
  4125. int dstStep,
  4126. const Ipp32f* pQuantInvTable))
  4127. /* ///////////////////////////////////////////////////////////////////////////
  4128. // DCT + DeQuantization Functions for decoder
  4129. /////////////////////////////////////////////////////////////////////////// */
  4130. /* ///////////////////////////////////////////////////////////////////////////
  4131. // Name:
  4132. // ippiDCTQuantInv8x8_JPEG_16s_C1
  4133. //
  4134. // Purpose:
  4135. // Inverse DCT transform and de-quantization
  4136. //
  4137. // Parameter:
  4138. // pSrc - pointer to source 8x8 block
  4139. // pDst - pointer to output 8x8 block
  4140. // pQuantInvTable - pointer to Quantization table
  4141. //
  4142. // Returns:
  4143. // IppStatus
  4144. //
  4145. // Notes:
  4146. //
  4147. */
  4148. IPPAPI(IppStatus, ippiDCTQuantInv8x8_JPEG_16s_C1, (
  4149. const Ipp16s* pSrc,
  4150. Ipp16s* pDst,
  4151. const Ipp16u* pQuantInvTable))
  4152. /* ///////////////////////////////////////////////////////////////////////////
  4153. // Name:
  4154. // ippiDCTQuantInv8x8_JPEG_16s_C1I
  4155. //
  4156. // Purpose:
  4157. // Inverse DCT transform and de-quantization
  4158. //
  4159. // Parameter:
  4160. // pSrcDst - pointer to 8x8 block
  4161. // pQuantInvTable - pointer to Quantization table
  4162. //
  4163. // Returns:
  4164. // IppStatus
  4165. //
  4166. // Notes:
  4167. //
  4168. */
  4169. IPPAPI(IppStatus, ippiDCTQuantInv8x8_JPEG_16s_C1I, (
  4170. Ipp16s* pSrcDst,
  4171. const Ipp16u* pQuantInvTable))
  4172. /* ///////////////////////////////////////////////////////////////////////////
  4173. // lossless JPEG specific functions
  4174. /////////////////////////////////////////////////////////////////////////// */
  4175. /* ///////////////////////////////////////////////////////////////////////////
  4176. // Name:
  4177. // ippiDiffPredFirstRow_JPEG_16s_C1
  4178. //
  4179. // Purpose:
  4180. // differenciate row
  4181. //
  4182. // Parameters:
  4183. // pSrc - pointer to input row of samples
  4184. // pDst - pointer to output row of differences
  4185. // width - width, in elements
  4186. // P - precision of samples, in bits
  4187. // Pt - point transform parameter
  4188. //
  4189. // Returns:
  4190. // IppStatus
  4191. //
  4192. // Notes:
  4193. //
  4194. */
  4195. IPPAPI(IppStatus, ippiDiffPredFirstRow_JPEG_16s_C1, (
  4196. const Ipp16s* pSrc,
  4197. Ipp16s* pDst,
  4198. int width,
  4199. int P,
  4200. int Pt))
  4201. /* ///////////////////////////////////////////////////////////////////////////
  4202. // Name:
  4203. // ippiDiffPredRow_JPEG_16s_C1
  4204. //
  4205. // Purpose:
  4206. // differenciate row
  4207. //
  4208. // Parameters:
  4209. // pSrc - pointer to input row of samples
  4210. // pPrevRow - pointer to previous input row of samples
  4211. // pDst - pointer to output row of differences
  4212. // width - width, in elements
  4213. // predictor - predictor
  4214. // Pt - point transform parameter
  4215. //
  4216. // Returns:
  4217. // IppStatus
  4218. //
  4219. // Notes:
  4220. //
  4221. */
  4222. IPPAPI(IppStatus, ippiDiffPredRow_JPEG_16s_C1, (
  4223. const Ipp16s* pSrc,
  4224. const Ipp16s* pPrevRow,
  4225. Ipp16s* pDst,
  4226. int width,
  4227. int predictor))
  4228. /* ///////////////////////////////////////////////////////////////////////////
  4229. // Name:
  4230. // ippiReconstructPredFirstRow_JPEG_16s_C1
  4231. //
  4232. // Purpose:
  4233. // undifference row
  4234. //
  4235. // Parameters:
  4236. // pSrc - pointer to input row of differences
  4237. // pDst - pointer to output row of samples
  4238. // width - width, in elements
  4239. // P - precision of samples, in bits
  4240. // Pt - point transform parameter
  4241. //
  4242. // Returns:
  4243. // IppStatus
  4244. //
  4245. // Notes:
  4246. //
  4247. */
  4248. IPPAPI(IppStatus, ippiReconstructPredFirstRow_JPEG_16s_C1, (
  4249. const Ipp16s* pSrc,
  4250. Ipp16s* pDst,
  4251. int width,
  4252. int P,
  4253. int Pt))
  4254. /* ///////////////////////////////////////////////////////////////////////////
  4255. // Name:
  4256. // ippiReconstructPredRow_JPEG_16s_C1
  4257. //
  4258. // Purpose:
  4259. // undifference row
  4260. //
  4261. // Parameters:
  4262. // pSrc - pointer to input row of differences
  4263. // pPrevRow - pointer to previous row of reconstructed samples
  4264. // pDst - pointer to output row of samples
  4265. // width - width, in elements
  4266. // predictor - predictor
  4267. // Pt - point transform parameter
  4268. //
  4269. // Returns:
  4270. // IppStatus
  4271. //
  4272. // Notes:
  4273. //
  4274. */
  4275. IPPAPI(IppStatus, ippiReconstructPredRow_JPEG_16s_C1, (
  4276. const Ipp16s* pSrc,
  4277. const Ipp16s* pPrevRow,
  4278. Ipp16s* pDst,
  4279. int width,
  4280. int predictor))
  4281. /* ///////////////////////////////////////////////////////////////////////////
  4282. // JPEG 2000 specific functions
  4283. /////////////////////////////////////////////////////////////////////////// */
  4284. /* ///////////////////////////////////////////////////////////////////////////
  4285. // Name:
  4286. // ippiWTFwdRow_B53_JPEG2K_16s_C1R,
  4287. // ippiWTFwdRow_B53_JPEG2K_32s_C1R
  4288. //
  4289. // Purpose:
  4290. // Performs forward wavelet transform on image rows
  4291. // (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
  4292. //
  4293. // Parameters:
  4294. // pSrc - pointer to source image;
  4295. // srcStep - step in bytes to each next line of source image ROI;
  4296. // pDstLow - pointer to low frequency component image ROI;
  4297. // dstLowStep - step in bytes to each next line
  4298. // of low frequency component image;
  4299. // pDstHigh - pointer to high frequency component image ROI;
  4300. // dstHighStep - step in bytes to each next line
  4301. // of high frequency component image;
  4302. // dstRoiSize - ROI size for destination images.
  4303. // phase - relative position of high-pass and low-pass filters.
  4304. //
  4305. // Returns:
  4306. // ippStsNoErr - Ok;
  4307. // ippStsNullPtrErr - some of pointers are NULL;
  4308. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4309. //
  4310. // Notes:
  4311. // Not any fixed borders extension (wrap, symm.) will be applied!
  4312. // Source image must have valid and accessible horizontal border data
  4313. // outside of ROI.
  4314. //
  4315. // Only the same ROI sizes for destination images are supported.
  4316. //
  4317. // Source ROI size should be calculated by the following rule:
  4318. // srcRoiSize.width = 2 * dstRoiSize.width;
  4319. // srcRoiSize.height = dstRoiSize.height.
  4320. //
  4321. // If phase is ippWTFilterFirstLow, it's required to apply
  4322. // left border of width 2 and right border of width 1.
  4323. // If phase is ippWTFilterFirstHigh, it's required to apply
  4324. // left border of width 1 and right border of width 2.
  4325. //
  4326. */
  4327. IPPAPI(IppStatus, ippiWTFwdRow_B53_JPEG2K_16s_C1R, (
  4328. const Ipp16s* pSrc,
  4329. int srcStep,
  4330. Ipp16s* pDstLow,
  4331. int dstLowStep,
  4332. Ipp16s* pDstHigh,
  4333. int dstHighStep,
  4334. IppiSize dstRoiSize,
  4335. IppiWTFilterFirst phase))
  4336. IPPAPI(IppStatus, ippiWTFwdRow_B53_JPEG2K_32s_C1R, (
  4337. const Ipp32s* pSrc,
  4338. int srcStep,
  4339. Ipp32s* pDstLow,
  4340. int dstLowStep,
  4341. Ipp32s* pDstHigh,
  4342. int dstHighStep,
  4343. IppiSize dstRoiSize,
  4344. IppiWTFilterFirst phase))
  4345. /* ///////////////////////////////////////////////////////////////////////////
  4346. // Name:
  4347. // ippiWTFwdCol_B53_JPEG2K_16s_C1R,
  4348. // ippiWTFwdCol_B53_JPEG2K_32s_C1R
  4349. //
  4350. // Purpose:
  4351. // Performs forward wavelet transform on image columns
  4352. // (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
  4353. //
  4354. // Parameters:
  4355. // pSrc - pointer to source image;
  4356. // srcStep - step in bytes to each next line of source image ROI;
  4357. // pDstLow - pointer to low frequency component image ROI;
  4358. // dstLowStep - step in bytes to each next line
  4359. // of low frequency component image;
  4360. // pDstHigh - pointer to high frequency component image ROI;
  4361. // dstHighStep - step in bytes to each next line
  4362. // of high frequency component image;
  4363. // dstRoiSize - ROI size for destination images.
  4364. // phase - relative position of high-pass and low-pass filters.
  4365. //
  4366. // Returns:
  4367. // ippStsNoErr - Ok;
  4368. // ippStsNullPtrErr - some of pointers are NULL;
  4369. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4370. //
  4371. // Notes:
  4372. // Not any fixed borders extension (wrap, symm.) will be applied!
  4373. // Source image must have valid and accessible horizontal border data
  4374. // outside of ROI.
  4375. //
  4376. // Only the same ROI sizes for destination images are supported.
  4377. //
  4378. // Source ROI size should be calculated by the following rule:
  4379. // srcRoiSize.width = dstRoiSize.width;
  4380. // srcRoiSize.height = 2 * dstRoiSize.height.
  4381. //
  4382. // If phase is ippWTFilterFirstLow, it's required to apply
  4383. // top border of width 2 and bottom border of width 1.
  4384. // If phase is ippWTFilterFirstHigh, it's required to apply
  4385. // top border of width 1 and bottom border of width 2.
  4386. //
  4387. */
  4388. IPPAPI(IppStatus, ippiWTFwdCol_B53_JPEG2K_16s_C1R, (
  4389. const Ipp16s* pSrc,
  4390. int srcStep,
  4391. Ipp16s* pDstLow,
  4392. int dstLowStep,
  4393. Ipp16s* pDstHigh,
  4394. int dstHighStep,
  4395. IppiSize dstRoiSize,
  4396. IppiWTFilterFirst phase))
  4397. IPPAPI(IppStatus, ippiWTFwdCol_B53_JPEG2K_32s_C1R, (
  4398. const Ipp32s* pSrc,
  4399. int srcStep,
  4400. Ipp32s* pDstLow,
  4401. int dstLowStep,
  4402. Ipp32s* pDstHigh,
  4403. int dstHighStep,
  4404. IppiSize dstRoiSize,
  4405. IppiWTFilterFirst phase))
  4406. /* ///////////////////////////////////////////////////////////////////////////
  4407. // Name:
  4408. // ippiWTFwdColLift_B53_JPEG2K_16s_C1
  4409. // ippiWTFwdColLift_B53_JPEG2K_32s_C1
  4410. //
  4411. // Purpose:
  4412. // Low-level function for row-scan-based 2D WT implementation.
  4413. // to perform single step of forward wavelet transform on image columns
  4414. // (reversible 5,3 filter bank for JPEG 2000 lossless mode),
  4415. //
  4416. //
  4417. // Parameters:
  4418. // pSrc0 - pointer to source image row #0;
  4419. // pSrc1 - pointer to source image row #1;
  4420. // pSrc2 - pointer to source image row #2;
  4421. //
  4422. // pDstLow0 - pointer to low frequency component row #0;
  4423. // pSrcHigh0 - pointer to high frequency component row #0;
  4424. // pDstHigh1 - pointer to high frequency component row #1;
  4425. //
  4426. // width - width of rows.
  4427. //
  4428. // Returns:
  4429. // ippStsNoErr - Ok;
  4430. // ippStsNullPtrErr - some of pointers are NULL;
  4431. // ippStsSizeErr - the width rows is less or equal zero.
  4432. //
  4433. // Notes:
  4434. //
  4435. // For each row point this function calculates:
  4436. // pDstHigh1[i] = pSrc1[i] - FLOOR( (pSrc0 [i] + pSrc2 [i] ) / 2 );
  4437. // pDstLow0 [i] = pSrc0[i] + FLOOR( (pSrcHigh0[i] + pDstHigh1[i] + 2) / 4 );
  4438. //
  4439. */
  4440. IPPAPI(IppStatus, ippiWTFwdColLift_B53_JPEG2K_16s_C1, (
  4441. const Ipp16s* pSrc0,
  4442. const Ipp16s* pSrc1,
  4443. const Ipp16s* pSrc2,
  4444. Ipp16s* pDstLow0,
  4445. const Ipp16s* pSrcHigh0,
  4446. Ipp16s* pDstHigh1,
  4447. int width))
  4448. IPPAPI(IppStatus, ippiWTFwdColLift_B53_JPEG2K_32s_C1, (
  4449. const Ipp32s* pSrc0,
  4450. const Ipp32s* pSrc1,
  4451. const Ipp32s* pSrc2,
  4452. Ipp32s* pDstLow0,
  4453. const Ipp32s* pSrcHigh0,
  4454. Ipp32s* pDstHigh1,
  4455. int width))
  4456. /* ///////////////////////////////////////////////////////////////////////////
  4457. // Name:
  4458. // ippiWTInvRow_B53_JPEG2K_16s_C1R,
  4459. // ippiWTInvRow_B53_JPEG2K_32s_C1R
  4460. //
  4461. // Purpose:
  4462. // Performs inverse wavelet transform on image rows
  4463. // (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
  4464. //
  4465. // Parameters:
  4466. // pSrcLow - pointer to low frequency component image ROI;
  4467. // srcLowStep - step in bytes to each next line
  4468. // of low frequency component image;
  4469. // pSrcHigh - pointer to high frequency component image ROI;
  4470. // srcHighStep - step in bytes to each next line
  4471. // of high frequency component image;
  4472. // srcRoiSize - step in bytes to each next line
  4473. // of high frequency component image;
  4474. // pDst - destination image ROI;
  4475. // dstStep - step in bytes to each next line
  4476. // of source image ROI;
  4477. // phase - relative position of high-pass and low-pass filters.
  4478. //
  4479. // Returns:
  4480. // ippStsNoErr - Ok;
  4481. // ippStsNullPtrErr - some of pointers are NULL;
  4482. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4483. //
  4484. // Notes:
  4485. // Not any fixed borders extension (wrap, symm.) will be applied!
  4486. // Source images must have valid and accessible horizontal border data
  4487. // outside of ROI.
  4488. //
  4489. // Only the same ROI sizes for source images are supported.
  4490. //
  4491. // Destinageion ROI size should be calculated by the following rule:
  4492. // dstRoiSize.width = 2 * dstRoiSize.width;
  4493. // dstRoiSize.height = dstRoiSize.height.
  4494. //
  4495. // For low frequency component:
  4496. // if phase is ippWTFilterFirstLow, it's required to apply
  4497. // left border of width 0 and right border of width 1.
  4498. // If phase is ippWTFilterFirstHigh, it's required to apply
  4499. // left border of width 1 and right border of width 0.
  4500. // For high frequency component it's always required to have
  4501. // left and right border of equal width 1.
  4502. //
  4503. */
  4504. IPPAPI(IppStatus, ippiWTInvRow_B53_JPEG2K_16s_C1R, (
  4505. const Ipp16s* pSrcLow,
  4506. int srcLowStep,
  4507. const Ipp16s* pSrcHigh,
  4508. int srcHighStep,
  4509. IppiSize srcRoiSize,
  4510. Ipp16s* pDst,
  4511. int dstStep,
  4512. IppiWTFilterFirst phase))
  4513. IPPAPI(IppStatus, ippiWTInvRow_B53_JPEG2K_32s_C1R, (
  4514. const Ipp32s* pSrcLow,
  4515. int srcLowStep,
  4516. const Ipp32s* pSrcHigh,
  4517. int srcHighStep,
  4518. IppiSize srcRoiSize,
  4519. Ipp32s* pDst,
  4520. int dstStep,
  4521. IppiWTFilterFirst phase))
  4522. /* ///////////////////////////////////////////////////////////////////////////
  4523. // Name:
  4524. // ippiWTInvCol_B53_JPEG2K_16s_C1R,
  4525. // ippiWTInvCol_B53_JPEG2K_32s_C1R
  4526. //
  4527. // Purpose:
  4528. // Performs inverse wavelet transform on image columns
  4529. // (biorthogonal 5,3 filter bank for JPEG 2000 lossless mode).
  4530. //
  4531. // Parameters:
  4532. // pSrcLow - pointer to low frequency component image ROI;
  4533. // srcLowStep - step in bytes to each next line
  4534. // of low frequency component image;
  4535. // pSrcHigh - pointer to high frequency component image ROI;
  4536. // srcHighStep - step in bytes to each next line
  4537. // of high frequency component image;
  4538. // srcRoiSize - step in bytes to each next line
  4539. // of high frequency component image;
  4540. // pDst - destination image ROI;
  4541. // dstStep - step in bytes to each next line
  4542. // of source image ROI;
  4543. // phase - relative position of high-pass and low-pass filters.
  4544. //
  4545. // Returns:
  4546. // ippStsNoErr - Ok;
  4547. // ippStsNullPtrErr - any of the pointers is NULL;
  4548. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4549. //
  4550. // Notes:
  4551. // Not any fixed borders extension (wrap, symm.) will be applied!
  4552. // Source images must have valid and accessible horizontal border data
  4553. // outside of ROI.
  4554. //
  4555. // Only the same ROI sizes for source images are supported.
  4556. //
  4557. // Destination ROI size should be calculated by the following rule:
  4558. // dstRoiSize.width = dstRoiSize.width;
  4559. // dstRoiSize.height = dstRoiSize.height * 2.
  4560. //
  4561. // For low frequency component:
  4562. // if phase is ippWTFilterFirstLow, it's required to apply
  4563. // left border of width 0 and right border of width 1.
  4564. // If phase is ippWTFilterFirstHigh, it's required to apply
  4565. // left border of width 1 and right border of width 0.
  4566. // For high frequency component it's always required to have
  4567. // left and right border of equal width 1.
  4568. //
  4569. */
  4570. IPPAPI(IppStatus, ippiWTInvCol_B53_JPEG2K_16s_C1R, (
  4571. const Ipp16s* pSrcLow,
  4572. int srcLowStep,
  4573. const Ipp16s* pSrcHigh,
  4574. int srcHighStep,
  4575. IppiSize srcRoiSize,
  4576. Ipp16s* pDst,
  4577. int dstStep,
  4578. IppiWTFilterFirst phase))
  4579. IPPAPI(IppStatus, ippiWTInvCol_B53_JPEG2K_32s_C1R, (
  4580. const Ipp32s* pSrcLow,
  4581. int srcLowStep,
  4582. const Ipp32s* pSrcHigh,
  4583. int srcHighStep,
  4584. IppiSize srcRoiSize,
  4585. Ipp32s* pDst,
  4586. int dstStep,
  4587. IppiWTFilterFirst phase))
  4588. /* ///////////////////////////////////////////////////////////////////////////
  4589. // Name:
  4590. // ippiWTInvColLift_B53_JPEG2K_16s_C1
  4591. // ippiWTInvColLift_B53_JPEG2K_32s_C1
  4592. //
  4593. // Purpose:
  4594. // Low-level function for row-scan-based 2D WT implementation.
  4595. // to perform single step of inverse wavelet transform on image columns
  4596. // (reversible 5,3 filter bank for JPEG 2000 lossless mode),
  4597. //
  4598. //
  4599. // Parameters:
  4600. //
  4601. // pSrcLow0 - pointer to low frequency component row #0;
  4602. // pSrcHigh0 - pointer to high frequency component row #0;
  4603. // pSrcHigh1 - pointer to high frequency component row #1;
  4604. //
  4605. // pSrc0 - pointer to reconstructed image row #0;
  4606. // pDst1 - pointer to reconstructed image row #1;
  4607. // pDst2 - pointer to reconstructed image row #2;
  4608. // width - width of rows.
  4609. //
  4610. // Returns:
  4611. // ippStsNoErr - Ok;
  4612. // ippStsNullPtrErr - some of pointers are NULL;
  4613. // ippStsSizeErr - the width rows is less or equal zero.
  4614. //
  4615. // Notes:
  4616. //
  4617. // For each row point this function calculates:
  4618. // pDst2[i] = pSrcLow0[i] - FLOOR( (pSrcHigh0[i] + pSrcHigh1[i] + 2) / 4 );
  4619. // pDst1[i] = highRow0[i] + FLOOR( (pSrc0 [i] + pDst2 [i] ) / 2 );
  4620. //
  4621. */
  4622. IPPAPI(IppStatus, ippiWTInvColLift_B53_JPEG2K_16s_C1, (
  4623. const Ipp16s* pSrcLow0,
  4624. const Ipp16s* pSrcHigh0,
  4625. const Ipp16s* pSrcHigh1,
  4626. const Ipp16s* pSrc0,
  4627. Ipp16s* pDst1,
  4628. Ipp16s* pDst2,
  4629. int width))
  4630. IPPAPI(IppStatus, ippiWTInvColLift_B53_JPEG2K_32s_C1, (
  4631. const Ipp32s* pSrcLow0,
  4632. const Ipp32s* pSrcHigh0,
  4633. const Ipp32s* pSrcHigh1,
  4634. const Ipp32s* pSrc0,
  4635. Ipp32s* pDst1,
  4636. Ipp32s* pDst2,
  4637. int width))
  4638. /* ///////////////////////////////////////////////////////////////////////////
  4639. // Name:
  4640. // ippiWTFwdRow_D97_JPEG2K_16s_C1R
  4641. // ippiWTFwdRow_D97_JPEG2K_32s_C1R
  4642. // ippiWTFwdRow_D97_JPEG2K_32f_C1R
  4643. //
  4644. // Purpose:
  4645. // Performs forward wavelet transform on image rows
  4646. // (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
  4647. //
  4648. // Parameters:
  4649. // pSrc - pointer to source image;
  4650. // srcStep - step in bytes to each next line of source image ROI;
  4651. // pDstLow - pointer to low frequency component image ROI;
  4652. // dstLowStep - step in bytes to each next line
  4653. // of low frequency component image;
  4654. // pDstHigh - pointer to high frequency component image ROI;
  4655. // dstHighStep - step in bytes to each next line
  4656. // of high frequency component image;
  4657. // dstRoiSize - ROI size for destination images.
  4658. // phase - relative position of high-pass and low-pass filters.
  4659. //
  4660. // Returns:
  4661. // ippStsNoErr - Ok;
  4662. // ippStsNullPtrErr - some of pointers are NULL;
  4663. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4664. //
  4665. // Notes:
  4666. // Not any fixed borders extension (wrap, symm.) will be applied!
  4667. // Source image must have valid and accessible horizontal border data
  4668. // outside of ROI.
  4669. //
  4670. // Only the same ROI sizes for destination images are supported.
  4671. //
  4672. // Source ROI size should be calculated by the following rule:
  4673. // srcRoiSize.width = 2 * dstRoiSize.width;
  4674. // srcRoiSize.height = dstRoiSize.height.
  4675. //
  4676. // If phase is ippWTFilterFirstLow, it's required to apply
  4677. // left border of width 4 and right border of width 3.
  4678. // If phase is ippWTFilterFirstHigh, it's required to apply
  4679. // left border of width 3 and right border of width 4.
  4680. //
  4681. */
  4682. IPPAPI(IppStatus, ippiWTFwdRow_D97_JPEG2K_16s_C1R, (
  4683. const Ipp16s* pSrc,
  4684. int srcStep,
  4685. Ipp16s* pDstLow,
  4686. int dstLowStep,
  4687. Ipp16s* pDstHigh,
  4688. int dstHighStep,
  4689. IppiSize dstRoiSize,
  4690. IppiWTFilterFirst phase))
  4691. IPPAPI(IppStatus, ippiWTFwdRow_D97_JPEG2K_32s_C1R, (
  4692. const Ipp32s* pSrc,
  4693. int srcStep,
  4694. Ipp32s* pDstLow,
  4695. int dstLowStep,
  4696. Ipp32s* pDstHigh,
  4697. int dstHighStep,
  4698. IppiSize dstRoiSize,
  4699. IppiWTFilterFirst phase))
  4700. IPPAPI(IppStatus, ippiWTFwdRow_D97_JPEG2K_32f_C1R, (
  4701. const Ipp32f* pSrc,
  4702. int srcStep,
  4703. Ipp32f* pDstLow,
  4704. int dstLowStep,
  4705. Ipp32f* pDstHigh,
  4706. int dstHighStep,
  4707. IppiSize dstRoiSize,
  4708. IppiWTFilterFirst phase))
  4709. /* ///////////////////////////////////////////////////////////////////////////
  4710. // Name:
  4711. // ippiWTFwdCol_D97_JPEG2K_32f_C1R
  4712. //
  4713. // Purpose:
  4714. // Performs forward wavelet transform on image columns
  4715. // (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
  4716. //
  4717. // Parameters:
  4718. // pSrc - pointer to source image;
  4719. // srcStep - step in bytes to each next line of source image ROI;
  4720. // pDstLow - pointer to low frequency component image ROI;
  4721. // dstLowStep - step in bytes to each next line
  4722. // of low frequency component image;
  4723. // pDstHigh - pointer to high frequency component image ROI;
  4724. // dstHighStep - step in bytes to each next line
  4725. // of high frequency component image;
  4726. // dstRoiSize - ROI size for destination images.
  4727. // phase - relative position of high-pass and low-pass filters.
  4728. //
  4729. // Returns:
  4730. // ippStsNoErr - Ok;
  4731. // ippStsNullPtrErr - some of pointers are NULL;
  4732. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4733. //
  4734. // Notes:
  4735. // Not any fixed borders extension (wrap, symm.) will be applied!
  4736. // Source image must have valid and accessible horizontal border data
  4737. // outside of ROI.
  4738. //
  4739. // Only the same ROI sizes for destination images are supported.
  4740. //
  4741. // Source ROI size should be calculated by the following rule:
  4742. // srcRoiSize.width = dstRoiSize.width;
  4743. // srcRoiSize.height = 2 * dstRoiSize.height.
  4744. //
  4745. // If phase is ippWTFilterFirstLow, it's required to apply
  4746. // top border of width 4 and bottom border of width 3.
  4747. // If phase is ippWTFilterFirstHigh, it's required to apply
  4748. // top border of width 3 and bottom border of width 4.
  4749. //
  4750. */
  4751. IPPAPI(IppStatus, ippiWTFwdCol_D97_JPEG2K_32f_C1R, (
  4752. const Ipp32f* pSrc,
  4753. int srcStep,
  4754. Ipp32f* pDstLow,
  4755. int dstLowStep,
  4756. Ipp32f* pDstHigh,
  4757. int dstHighStep,
  4758. IppiSize dstRoiSize,
  4759. IppiWTFilterFirst phase))
  4760. /* ///////////////////////////////////////////////////////////////////////////
  4761. // Name:
  4762. // ippiWTFwdColLift_D97_JPEG2K_16s_C1
  4763. // ippiWTFwdColLift_D97_JPEG2K_32s_C1
  4764. // ippiWTFwdColLift_D97_JPEG2K_32f_C1
  4765. //
  4766. // Purpose:
  4767. // Low-level function for row-scan-based 2D WT implementation.
  4768. // to perform single step of forward wavelet transform on image columns
  4769. // (reversible 5,3 filter bank for JPEG 2000 lossless mode),
  4770. //
  4771. //
  4772. // Parameters:
  4773. // pSrc0 - pointer to source image row #0;
  4774. // pSrc1 - pointer to source image row #1;
  4775. // pSrc2 - pointer to source image row #2;
  4776. //
  4777. // pSrcDstLow0 - pointer to low frequency component row #0;
  4778. // pDstLow1 - pointer to low frequency component row #1;
  4779. // pSrcDstHigh0 - pointer to high frequency component row #0;
  4780. // pSrcDstHigh1 - pointer to high frequency component row #1;
  4781. // pDstHigh2 - pointer to high frequency component row #2;
  4782. //
  4783. // width - width of rows.
  4784. //
  4785. // Returns:
  4786. // ippStsNoErr - Ok;
  4787. // ippStsNullPtrErr - some of pointers are NULL;
  4788. // ippStsSizeErr - the width rows is less or equal zero.
  4789. //
  4790. // Notes:
  4791. //
  4792. // For each row point this function calculates:
  4793. // pDstHigh2 [i] = pSrc1[i] + ALPHA * (pSrc0 [i] + pSrc2 [i]);
  4794. // pDstLow1 [i] = pSrc0[i] + BETA * (pSrcDstHigh1[i] + pDstHigh2[i]);
  4795. // pSrcDstHigh1[i] += GAMMA * (pSrcDstLow0 [i] + pDstLow1 [i]);
  4796. // pSrcDstLow0 [i] += DELTA * (pSrcDstHigh0[i] + pSrcDstHigh1[i]);
  4797. // pSrcDstLow0 [i] *= K;
  4798. // pSrcDstHigh0[i] *= 1. / K;
  4799. //
  4800. */
  4801. IPPAPI(IppStatus, ippiWTFwdColLift_D97_JPEG2K_16s_C1, (
  4802. const Ipp16s* pSrc0,
  4803. const Ipp16s* pSrc1,
  4804. const Ipp16s* pSrc2,
  4805. Ipp16s* pSrcDstLow0,
  4806. Ipp16s* pDstLow1,
  4807. Ipp16s* pSrcDstHigh0,
  4808. Ipp16s* pSrcDstHigh1,
  4809. Ipp16s* pDstHigh2,
  4810. int width))
  4811. IPPAPI(IppStatus, ippiWTFwdColLift_D97_JPEG2K_32s_C1, (
  4812. const Ipp32s* pSrc0,
  4813. const Ipp32s* pSrc1,
  4814. const Ipp32s* pSrc2,
  4815. Ipp32s* pSrcDstLow0,
  4816. Ipp32s* pDstLow1,
  4817. Ipp32s* pSrcDstHigh0,
  4818. Ipp32s* pSrcDstHigh1,
  4819. Ipp32s* pDstHigh2,
  4820. int width))
  4821. IPPAPI(IppStatus, ippiWTFwdColLift_D97_JPEG2K_32f_C1, (
  4822. const Ipp32f* pSrc0,
  4823. const Ipp32f* pSrc1,
  4824. const Ipp32f* pSrc2,
  4825. Ipp32f* pSrcDstLow0,
  4826. Ipp32f* pDstLow1,
  4827. Ipp32f* pSrcDstHigh0,
  4828. Ipp32f* pSrcDstHigh1,
  4829. Ipp32f* pDstHigh2,
  4830. int width))
  4831. /* ///////////////////////////////////////////////////////////////////////////
  4832. // Name:
  4833. // ippiWTInvRow_D97_JPEG2K_16s_C1R,
  4834. // ippiWTInvRow_D97_JPEG2K_32s_C1R,
  4835. // ippiWTInvRow_D97_JPEG2K_32f_C1R
  4836. //
  4837. // Purpose:
  4838. // Performs inverse wavelet transform on image rows
  4839. // (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
  4840. //
  4841. // Parameters:
  4842. // pSrcLow - pointer to low frequency component image ROI;
  4843. // srcLowStep - step in bytes to each next line
  4844. // of low frequency component image;
  4845. // pSrcHigh - pointer to high frequency component image ROI;
  4846. // srcHighStep - step in bytes to each next line
  4847. // of high frequency component image;
  4848. // srcRoiSize - step in bytes to each next line
  4849. // of high frequency component image;
  4850. // pDst - destination image ROI;
  4851. // dstStep - step in bytes to each next line
  4852. // of source image ROI;
  4853. // phase - relative position of high-pass and low-pass filters.
  4854. //
  4855. // Returns:
  4856. // ippStsNoErr - Ok;
  4857. // ippStsNullPtrErr - some of pointers are NULL;
  4858. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4859. //
  4860. // Notes:
  4861. // Not any fixed borders extension (wrap, symm.) will be applied!
  4862. // Source images must have valid and accessible horizontal border data
  4863. // outside of ROI.
  4864. //
  4865. // Only the same ROI sizes for source images are supported.
  4866. //
  4867. // Destinageion ROI size should be calculated by the following rule:
  4868. // dstRoiSize.width = 2 * dstRoiSize.width;
  4869. // dstRoiSize.height = dstRoiSize.height.
  4870. //
  4871. // For low frequency component:
  4872. // if phase is ippWTFilterFirstLow, it's required to apply
  4873. // left border of width 1 and right border of width 2.
  4874. // If phase is ippWTFilterFirstHigh, it's required to apply
  4875. // left border of width 2 and right border of width 1.
  4876. // For high frequency component it's always required to have
  4877. // left and right border of equal width 2.
  4878. //
  4879. */
  4880. IPPAPI(IppStatus, ippiWTInvRow_D97_JPEG2K_16s_C1R, (
  4881. const Ipp16s* pSrcLow,
  4882. int srcLowStep,
  4883. const Ipp16s* pSrcHigh,
  4884. int srcHighStep,
  4885. IppiSize srcRoiSize,
  4886. Ipp16s* pDst,
  4887. int dstStep,
  4888. IppiWTFilterFirst phase))
  4889. IPPAPI(IppStatus, ippiWTInvRow_D97_JPEG2K_32s_C1R, (
  4890. const Ipp32s* pSrcLow,
  4891. int srcLowStep,
  4892. const Ipp32s* pSrcHigh,
  4893. int srcHighStep,
  4894. IppiSize srcRoiSize,
  4895. Ipp32s* pDst,
  4896. int dstStep,
  4897. IppiWTFilterFirst phase))
  4898. IPPAPI(IppStatus, ippiWTInvRow_D97_JPEG2K_32f_C1R, (
  4899. const Ipp32f* pSrcLow,
  4900. int srcLowStep,
  4901. const Ipp32f* pSrcHigh,
  4902. int srcHighStep,
  4903. IppiSize srcRoiSize,
  4904. Ipp32f* pDst,
  4905. int dstStep,
  4906. IppiWTFilterFirst phase))
  4907. /* ///////////////////////////////////////////////////////////////////////////
  4908. // Name:
  4909. // ippiWTInvCol_D97_JPEG2K_32f_C1R
  4910. //
  4911. // Purpose:
  4912. // Performs inverse wavelet transform on image columns
  4913. // (Cohen-Daubechies-Feauveau 9,7 filter bank for JPEG 2000 lossy mode).
  4914. //
  4915. // Parameters:
  4916. // pSrcLow - pointer to low frequency component image ROI;
  4917. // srcLowStep - step in bytes to each next line
  4918. // of low frequency component image;
  4919. // pSrcHigh - pointer to high frequency component image ROI;
  4920. // srcHighStep - step in bytes to each next line
  4921. // of high frequency component image;
  4922. // srcRoiSize - step in bytes to each next line
  4923. // of high frequency component image;
  4924. // pDst - destination image ROI;
  4925. // dstStep - step in bytes to each next line
  4926. // of source image ROI;
  4927. // phase - relative position of high-pass and low-pass filters.
  4928. //
  4929. // Returns:
  4930. // ippStsNoErr - Ok;
  4931. // ippStsNullPtrErr - any of the pointers is NULL;
  4932. // ippStsSizeErr - the width or height of ROI is less or equal zero;
  4933. //
  4934. // Notes:
  4935. // Not any fixed borders extension (wrap, symm.) will be applied!
  4936. // Source images must have valid and accessible horizontal border data
  4937. // outside of ROI.
  4938. //
  4939. // Only the same ROI sizes for source images are supported.
  4940. //
  4941. // Destination ROI size should be calculated by the following rule:
  4942. // dstRoiSize.width = dstRoiSize.width;
  4943. // dstRoiSize.height = dstRoiSize.height * 2.
  4944. //
  4945. // For low frequency component:
  4946. // if phase is ippWTFilterFirstLow, it's required to apply
  4947. // left border of width 1 and right border of width 2.
  4948. // If phase is ippWTFilterFirstHigh, it's required to apply
  4949. // top border of width 2 and bottom border of width 1.
  4950. // For high frequency component it's always required to have
  4951. // left and right border of equal width 2.
  4952. //
  4953. */
  4954. IPPAPI(IppStatus, ippiWTInvCol_D97_JPEG2K_32f_C1R, (
  4955. const Ipp32f* pSrcLow,
  4956. int srcLowStep,
  4957. const Ipp32f* pSrcHigh,
  4958. int srcHighStep,
  4959. IppiSize srcRoiSize,
  4960. Ipp32f* pDst,
  4961. int dstStep,
  4962. IppiWTFilterFirst phase))
  4963. /* ///////////////////////////////////////////////////////////////////////////
  4964. // Name:
  4965. // ippiWTInvColLift_D97_JPEG2K_16s_C1
  4966. // ippiWTInvColLift_D97_JPEG2K_32s_C1
  4967. // ippiWTInvColLift_D97_JPEG2K_32f_C1
  4968. //
  4969. // Purpose:
  4970. // Low-level function for row-scan-based 2D WT implementation.
  4971. // to perform single step of forward wavelet transform on image columns
  4972. // (reversible 5,3 filter bank for JPEG 2000 lossless mode),
  4973. //
  4974. //
  4975. // Parameters:
  4976. // pSrcLow0 - pointer to low frequency component row #0;
  4977. // pSrcHigh0 - pointer to high frequency component row #0;
  4978. // pSrcHigh1 - pointer to high frequency component row #1;
  4979. //
  4980. // pSrc0 - pointer to reconstructed image row #0;
  4981. // pSrcDst1 - pointer to reconstructed image row #1;
  4982. // pSrcDst2 - pointer to reconstructed image row #2;
  4983. // pDst3 - pointer to reconstructed image row #3;
  4984. // pDst4 - pointer to reconstructed image row #4;
  4985. //
  4986. // width - width of rows.
  4987. //
  4988. // Returns:
  4989. // ippStsNoErr - Ok;
  4990. // ippStsNullPtrErr - some of pointers are NULL;
  4991. // ippStsSizeErr - the width rows is less or equal zero.
  4992. //
  4993. // Notes:
  4994. //
  4995. // For each row point this function calculates:
  4996. // pDst4 [i] = pSrcLow0 [i] * K - DELTA * 1. / K * (pSrcHigh0[i] + pSrcHigh1[i]);
  4997. // pDst3 [i] = pSrcHigh0[i] * 1. / K - GAMMA * (pSrcDst2 [i] + pDst4 [i]);
  4998. // pSrcDst2[i] -= BETA * (pSrcDst1[i] + pDst3 [i]);
  4999. // pSrcDst1[i] -= ALPHA * (pSrc0 [i] + pSrcDst2[i]);
  5000. //
  5001. */
  5002. IPPAPI(IppStatus, ippiWTInvColLift_D97_JPEG2K_16s_C1, (
  5003. const Ipp16s* pSrcLow0,
  5004. const Ipp16s* pSrcHigh0,
  5005. const Ipp16s* pSrcHigh1,
  5006. const Ipp16s* pSrc0,
  5007. Ipp16s* pSrcDst1,
  5008. Ipp16s* pSrcDst2,
  5009. Ipp16s* pDst3,
  5010. Ipp16s* pDst4,
  5011. int width))
  5012. IPPAPI(IppStatus, ippiWTInvColLift_D97_JPEG2K_32s_C1, (
  5013. const Ipp32s* pSrcLow0,
  5014. const Ipp32s* pSrcHigh0,
  5015. const Ipp32s* pSrcHigh1,
  5016. const Ipp32s* pSrc0,
  5017. Ipp32s* pSrcDst1,
  5018. Ipp32s* pSrcDst2,
  5019. Ipp32s* pDst3,
  5020. Ipp32s* pDst4,
  5021. int width))
  5022. IPPAPI(IppStatus, ippiWTInvColLift_D97_JPEG2K_32f_C1, (
  5023. const Ipp32f* pSrcLow0,
  5024. const Ipp32f* pSrcHigh0,
  5025. const Ipp32f* pSrcHigh1,
  5026. const Ipp32f* pSrc0,
  5027. Ipp32f* pSrcDst1,
  5028. Ipp32f* pSrcDst2,
  5029. Ipp32f* pDst3,
  5030. Ipp32f* pDst4,
  5031. int width))
  5032. /* ///////////////////////////////////////////////////////////////////////////
  5033. // Name:
  5034. // ippiWTGetBufSize_B53_JPEG2K_16s_C1IR,
  5035. // ippiWTGetBufSize_B53_JPEG2K_32s_C1IR
  5036. //
  5037. // Purpose:
  5038. // Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
  5039. //
  5040. // Parameters:
  5041. // pTileRect - pointer to tile rectangle structure
  5042. // pSize - pointer to variable to write size of buffer
  5043. //
  5044. // Returns:
  5045. // IppStatus
  5046. //
  5047. // Notes:
  5048. //
  5049. */
  5050. IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_16s_C1IR, (
  5051. const IppiRect* pTileRect,
  5052. int* pSize))
  5053. IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_32s_C1IR, (
  5054. const IppiRect* pTileRect,
  5055. int* pSize))
  5056. /* ///////////////////////////////////////////////////////////////////////////
  5057. // Name:
  5058. // ippiWTFwd_B53_JPEG2K_16s_C1IR,
  5059. // ippiWTFwd_B53_JPEG2K_32s_C1IR
  5060. //
  5061. // Purpose:
  5062. // JPEG2000 tile-oriented forward wavelet transforms.
  5063. //
  5064. // Parameters:
  5065. // pSrcDstTile - pointer to image buffer
  5066. // srcDstStep - step in bytes to each next line of image buffer
  5067. // pTileRect - pointer to tile rectangle structure
  5068. // pBuffer - pointer to work buffer
  5069. //
  5070. // Returns:
  5071. // IppStatus
  5072. //
  5073. // Notes:
  5074. //
  5075. */
  5076. IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_16s_C1IR, (
  5077. Ipp16s* pSrcDstTile,
  5078. int srcDstStep,
  5079. const IppiRect* pTileRect,
  5080. Ipp8u* pBuffer))
  5081. IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_32s_C1IR, (
  5082. Ipp32s* pSrcDstTile,
  5083. int srcDstStep,
  5084. const IppiRect* pTileRect,
  5085. Ipp8u* pBuffer))
  5086. /* ///////////////////////////////////////////////////////////////////////////
  5087. // Name:
  5088. // ippiWTInv_B53_JPEG2K_16s_C1IR,
  5089. // ippiWTInv_B53_JPEG2K_32s_C1IR
  5090. //
  5091. // Purpose:
  5092. // JPEG2000 tile-oriented forward wavelet transforms.
  5093. //
  5094. // Parameters:
  5095. // pSrcDstTile - pointer to image buffer
  5096. // srcDstStep - step in bytes to each next line of image buffer
  5097. // pTileRect - pointer to tile rectangle structure
  5098. // pBuffer - pointer to work buffer
  5099. //
  5100. // Returns:
  5101. // IppStatus
  5102. //
  5103. // Notes:
  5104. //
  5105. */
  5106. IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_16s_C1IR, (
  5107. Ipp16s* pSrcDstTile,
  5108. int srcDstStep,
  5109. const IppiRect* pTileRect,
  5110. Ipp8u* pBuffer))
  5111. IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_32s_C1IR, (
  5112. Ipp32s* pSrcDstTile,
  5113. int srcDstStep,
  5114. const IppiRect* pTileRect,
  5115. Ipp8u* pBuffer))
  5116. /* ///////////////////////////////////////////////////////////////////////////
  5117. // Name:
  5118. // ippiWTGetBufSize_D97_JPEG2K_16s_C1IR,
  5119. // ippiWTGetBufSize_D97_JPEG2K_32s_C1IR
  5120. //
  5121. // Purpose:
  5122. // Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
  5123. //
  5124. // Parameters:
  5125. // pTileRect - pointer to tile rectangle structure
  5126. // pSize - pointer to variable to write size of buffer
  5127. //
  5128. // Returns:
  5129. // IppStatus
  5130. //
  5131. // Notes:
  5132. //
  5133. */
  5134. IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_16s_C1IR, (
  5135. const IppiRect* pTileRect,
  5136. int* pSize))
  5137. IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_32s_C1IR, (
  5138. const IppiRect* pTileRect,
  5139. int* pSize))
  5140. /* ///////////////////////////////////////////////////////////////////////////
  5141. // Name:
  5142. // ippiWTFwd_D97_JPEG2K_16s_C1IR,
  5143. // ippiWTFwd_D97_JPEG2K_32s_C1IR
  5144. //
  5145. // Purpose:
  5146. // JPEG2000 tile-oriented forward wavelet transforms.
  5147. //
  5148. // Parameters:
  5149. // pSrcDstTile - pointer to image buffer
  5150. // srcDstStep - step in bytes to each next line of image buffer
  5151. // pTileRect - pointer to tile rectangle structure
  5152. // pBuffer - pointer to work buffer
  5153. //
  5154. // Returns:
  5155. // IppStatus
  5156. //
  5157. // Notes:
  5158. //
  5159. */
  5160. IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_16s_C1IR, (
  5161. Ipp16s* pSrcDstTile,
  5162. int srcDstStep,
  5163. const IppiRect* pTileRect,
  5164. Ipp8u* pBuffer))
  5165. IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_32s_C1IR, (
  5166. Ipp32s* pSrcDstTile,
  5167. int srcDstStep,
  5168. const IppiRect* pTileRect,
  5169. Ipp8u* pBuffer))
  5170. /* ///////////////////////////////////////////////////////////////////////////
  5171. // Name:
  5172. // ippiWTInv_D97_JPEG2K_16s_C1IR,
  5173. // ippiWTInv_D97_JPEG2K_32s_C1IR
  5174. //
  5175. // Purpose:
  5176. // JPEG2000 tile-oriented forward wavelet transforms.
  5177. //
  5178. // Parameters:
  5179. // pSrcDstTile - pointer to image buffer
  5180. // srcDstStep - step in bytes to each next line of image buffer
  5181. // pTileRect - pointer to tile rectangle structure
  5182. // pBuffer - pointer to work buffer
  5183. //
  5184. // Returns:
  5185. // IppStatus
  5186. //
  5187. // Notes:
  5188. //
  5189. */
  5190. IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_16s_C1IR, (
  5191. Ipp16s* pSrcDstTile,
  5192. int srcDstStep,
  5193. const IppiRect* pTileRect,
  5194. Ipp8u* pBuffer))
  5195. IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_32s_C1IR, (
  5196. Ipp32s* pSrcDstTile,
  5197. int srcDstStep,
  5198. const IppiRect* pTileRect,
  5199. Ipp8u* pBuffer))
  5200. /* ///////////////////////////////////////////////////////////////////////////
  5201. // Name:
  5202. // ippiWTGetBufSize_B53_JPEG2K_16s_C1R,
  5203. // ippiWTGetBufSize_B53_JPEG2K_32s_C1R
  5204. //
  5205. // Purpose:
  5206. // Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
  5207. //
  5208. // Parameters:
  5209. // pTileRect - pointer to tile rectangle structure
  5210. // pSize - pointer to variable to write size of buffer
  5211. //
  5212. // Returns:
  5213. // IppStatus
  5214. //
  5215. // Notes:
  5216. //
  5217. */
  5218. IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_16s_C1R, (
  5219. const IppiRect* pTileRect,
  5220. int* pSize))
  5221. IPPAPI(IppStatus, ippiWTGetBufSize_B53_JPEG2K_32s_C1R, (
  5222. const IppiRect* pTileRect,
  5223. int* pSize))
  5224. /* ///////////////////////////////////////////////////////////////////////////
  5225. // Name:
  5226. // ippiWTFwd_B53_JPEG2K_16s_C1R,
  5227. // ippiWTFwd_B53_JPEG2K_32s_C1R
  5228. //
  5229. // Purpose:
  5230. // JPEG2000 tile-oriented forward wavelet transforms.
  5231. //
  5232. // Parameters:
  5233. // pSrc - pointer to source image buffer
  5234. // srcStep - step in bytes to each next line of source image buffer
  5235. // pTileRect - pointer to tile rectangle structure
  5236. // pDst[4] - pointer to destination image
  5237. // for each component (in order LxLy, LxHy, HxLy, HxHy)
  5238. // dstStep[4] - step in bytes to each next line
  5239. // for each destination image buffer
  5240. // pBuffer - pointer to buffer
  5241. //
  5242. // Returns:
  5243. // IppStatus
  5244. //
  5245. // Notes:
  5246. //
  5247. */
  5248. IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_16s_C1R, (
  5249. const Ipp16s* pSrc,
  5250. int srcStep,
  5251. const IppiRect* pTileRect,
  5252. Ipp16s* pDst[4],
  5253. int dstStep[4],
  5254. Ipp8u* pBuffer))
  5255. IPPAPI(IppStatus, ippiWTFwd_B53_JPEG2K_32s_C1R, (
  5256. const Ipp32s* pSrc,
  5257. int srcStep,
  5258. const IppiRect* pTileRect,
  5259. Ipp32s* pDst[4],
  5260. int dstStep[4],
  5261. Ipp8u* pBuffer))
  5262. /* ///////////////////////////////////////////////////////////////////////////
  5263. // Name:
  5264. // ippiWTInv_B53_JPEG2K_16s_C1R,
  5265. // ippiWTInv_B53_JPEG2K_32s_C1R
  5266. //
  5267. // Purpose:
  5268. // JPEG2000 tile-oriented forward wavelet transforms.
  5269. //
  5270. // Parameters:
  5271. // pSrc[4] - pointer to source image
  5272. // for each component (in order LxLy, LxHy, HxLy, HxHy)
  5273. // srcStep[4] - step in bytes to each next line
  5274. // for each source image buffer
  5275. // pDst - pointer to destination image buffer
  5276. // srcStep - step in bytes to each next line of destination image buffer
  5277. // pTileRect - pointer to tile rectangle structure
  5278. // pBuffer - pointer to buffer
  5279. //
  5280. // Returns:
  5281. // IppStatus
  5282. //
  5283. // Notes:
  5284. //
  5285. */
  5286. IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_16s_C1R, (
  5287. const Ipp16s* pSrc[4],
  5288. int srcStep[4],
  5289. Ipp16s* pDst,
  5290. int dstStep,
  5291. const IppiRect* pTileRect,
  5292. Ipp8u* pBuffer))
  5293. IPPAPI(IppStatus, ippiWTInv_B53_JPEG2K_32s_C1R, (
  5294. const Ipp32s* pSrc[4],
  5295. int srcStep[4],
  5296. Ipp32s* pDst,
  5297. int dstStep,
  5298. const IppiRect* pTileRect,
  5299. Ipp8u* pBuffer))
  5300. /* ///////////////////////////////////////////////////////////////////////////
  5301. // Name:
  5302. // ippiWTGetBufSize_D97_JPEG2K_16s_C1R,
  5303. // ippiWTGetBufSize_D97_JPEG2K_32s_C1R
  5304. //
  5305. // Purpose:
  5306. // Return size of buffer for JPEG2000 tile-oriented wavelet transforms.
  5307. //
  5308. // Parameters:
  5309. // pTileRect - pointer to tile rectangle structure
  5310. // pSize - pointer to variable to write size of buffer
  5311. //
  5312. // Returns:
  5313. // IppStatus
  5314. //
  5315. // Notes:
  5316. //
  5317. */
  5318. IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_16s_C1R, (
  5319. const IppiRect* pTileRect,
  5320. int* pSize))
  5321. IPPAPI(IppStatus, ippiWTGetBufSize_D97_JPEG2K_32s_C1R, (
  5322. const IppiRect* pTileRect,
  5323. int* pSize))
  5324. /* ///////////////////////////////////////////////////////////////////////////
  5325. // Name:
  5326. // ippiWTFwd_D97_JPEG2K_16s_C1R,
  5327. // ippiWTFwd_D97_JPEG2K_32s_C1R
  5328. //
  5329. // Purpose:
  5330. // JPEG2000 tile-oriented forward wavelet transforms.
  5331. //
  5332. // Parameters:
  5333. // pSrc - pointer to source image buffer
  5334. // srcStep - step in bytes to each next line of source image buffer
  5335. // pDst[4] - pointer to destination image
  5336. // for each component (in order LxLy, LxHy, HxLy, HxHy)
  5337. // dstStep[4] - step in bytes to each next line
  5338. // for each destination image buffer
  5339. // pTileRect - pointer to tile rectangle structure
  5340. // pBuffer - pointer to buffer
  5341. //
  5342. // Returns:
  5343. // IppStatus
  5344. //
  5345. // Notes:
  5346. //
  5347. */
  5348. IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_16s_C1R, (
  5349. const Ipp16s* pSrc,
  5350. int srcStep,
  5351. const IppiRect* pTileRect,
  5352. Ipp16s* pDst[4],
  5353. int dstStep[4],
  5354. Ipp8u* pBuffer))
  5355. IPPAPI(IppStatus, ippiWTFwd_D97_JPEG2K_32s_C1R, (
  5356. const Ipp32s* pSrc,
  5357. int srcStep,
  5358. const IppiRect* pTileRect,
  5359. Ipp32s* pDst[4],
  5360. int dstStep[4],
  5361. Ipp8u* pBuffer))
  5362. /* ///////////////////////////////////////////////////////////////////////////
  5363. // Name:
  5364. // ippiWTInv_D97_JPEG2K_16s_C1R
  5365. // ippiWTInv_D97_JPEG2K_32s_C1R
  5366. //
  5367. // Purpose:
  5368. // JPEG2000 tile-oriented forward wavelet transforms.
  5369. //
  5370. // Parameters:
  5371. // pSrc[4] - pointer to source image
  5372. // for each component (in order LxLy, LxHy, HxLy, HxHy)
  5373. // srcStep[4] - step in bytes to each next line
  5374. // for each source image buffer
  5375. // pDst - pointer to destination image buffer
  5376. // srcStep - step in bytes to each next line of destination image buffer
  5377. // pTileRect - pointer to tile rectangle structure
  5378. // pBuffer - pointer to buffer
  5379. //
  5380. // Returns:
  5381. // IppStatus
  5382. //
  5383. // Notes:
  5384. //
  5385. */
  5386. IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_16s_C1R, (
  5387. const Ipp16s* pSrc[4],
  5388. int srcStep[4],
  5389. Ipp16s* pDst,
  5390. int dstStep,
  5391. const IppiRect* pTileRect,
  5392. Ipp8u* pBuffer))
  5393. IPPAPI(IppStatus, ippiWTInv_D97_JPEG2K_32s_C1R, (
  5394. const Ipp32s* pSrc[4],
  5395. int srcStep[4],
  5396. Ipp32s* pDst,
  5397. int dstStep,
  5398. const IppiRect* pTileRect,
  5399. Ipp8u* pBuffer))
  5400. /* ///////////////////////////////////////////////////////////////////////////
  5401. // Name:
  5402. // ippiEncodeInitAlloc_JPEG2K
  5403. //
  5404. // Purpose:
  5405. // Allocate and initialize entropy encoder state structure.
  5406. //
  5407. // Parameters:
  5408. // pState - pointer to the variable that returns the pointer
  5409. // to the allocated and initialized encoder state structure,
  5410. // codeBlockMaxSize - maximal size of codeblock for coding.
  5411. //
  5412. // Returns:
  5413. // ippStsNoErr - Ok,
  5414. // ippStsSizeErr - error in size of codeblock,
  5415. // ippStsMemAllocErr - no memory to allocate state structure.
  5416. //
  5417. */
  5418. IPPAPI(IppStatus, ippiEncodeInitAlloc_JPEG2K, (
  5419. IppiEncodeState_JPEG2K** pState,
  5420. IppiSize codeBlockMaxSize))
  5421. /* ///////////////////////////////////////////////////////////////////////////
  5422. // Name:
  5423. // ippiEncodeFree_JPEG2K
  5424. //
  5425. // Purpose:
  5426. // Free and deallocate entropy encoder state structure.
  5427. //
  5428. // Parameters:
  5429. // pState - pointer to allocated and initialized encoder state structure,
  5430. //
  5431. // Returns:
  5432. // ippStsNoErr - Ok,
  5433. // ippStsNullPtrErr - Pointer to the context structure is NULL;
  5434. // ippStsContextMatchErr - Mismatch context structure.
  5435. //
  5436. */
  5437. IPPAPI(IppStatus, ippiEncodeFree_JPEG2K, (
  5438. IppiEncodeState_JPEG2K* pState))
  5439. /* ///////////////////////////////////////////////////////////////////////////
  5440. // Name:
  5441. // ippiEncodeLoadCodeBlock_JPEG2K_32s_C1R
  5442. //
  5443. // Purpose:
  5444. // First coding procedure that prepare data for coding.
  5445. //
  5446. // Parameters:
  5447. // pSrc - pointer to source codeblock,
  5448. // srcStep - step in bytes to each next line of codeblock,
  5449. // codeBlockSize - size of codeblock,
  5450. // pState - pointer to allocated and initialized
  5451. // encoder state structure,
  5452. // subband - subband that is represented by codeblock,
  5453. // magnBits - magnitude (non fractional) bits
  5454. // in integer representation,
  5455. // codeStyleFlags - options for coding,
  5456. // mqTermType - termination mode for MQ coder,
  5457. // mqRateAppr - rate estimation model,
  5458. // pSfBits - pointer to variable that returns a number of significant bit planes,
  5459. // pNOfPasses - pointer to variable that returns a number of coding passes,
  5460. // pNOfTermPasses - pointer to variable that returns a number of terminated coding passes.
  5461. //
  5462. // Returns:
  5463. // ippStsNoErr - Ok,
  5464. // ippStsNullPtrErr - any of the pointers is NULL,
  5465. // ippStsSizeErr - error in size of codeblock,
  5466. // ippStsContextMatchErr - Mismatch context structure.
  5467. //
  5468. // Notes:
  5469. // As an example if maximum value of source pixels is 0xA (binary 1010),
  5470. // then sfBits should return 4 significant bits. The higher bits will not
  5471. // be coded.
  5472. //
  5473. // Only significant non-fractional bits
  5474. // in integer representation will be coded.
  5475. // magnBits passes a number of non-fractional bits.
  5476. // For example, if magnBits = 11,
  5477. // the 20 (31-11) least-significant bits will not be coded.
  5478. //
  5479. */
  5480. IPPAPI(IppStatus, ippiEncodeLoadCodeBlock_JPEG2K_32s_C1R, (
  5481. const Ipp32s* pSrc,
  5482. int srcStep,
  5483. IppiSize codeBlockSize,
  5484. IppiEncodeState_JPEG2K* pState,
  5485. IppiWTSubband subband,
  5486. int magnBits,
  5487. IppiMQTermination mqTermType,
  5488. IppiMQRateAppr mqRateAppr,
  5489. int codeStyleFlags,
  5490. int* pSfBits,
  5491. int* pNOfPasses,
  5492. int* pNOfTermPasses))
  5493. /* ///////////////////////////////////////////////////////////////////////////
  5494. // Name:
  5495. // ippiEncodeStoreBits_JPEG2K_1u_C1R
  5496. //
  5497. // Purpose:
  5498. // Second coding procedure that forms output stream.
  5499. //
  5500. // Parameters:
  5501. // pDst - pointer to destination data buffer,
  5502. // pDstLen - pointer to destination buffer length,
  5503. // pState - pointer to allocated and initialized
  5504. // encoder state structure,
  5505. // pIsNotFinish - pointer to variable that indicates finishing of coding.
  5506. //
  5507. // Returns:
  5508. // ippStsNoErr - Ok,
  5509. // ippStsNullPtrErr - any of pointers is NULL,
  5510. // ippStsSizeErr - size of buffer less or equal 0,
  5511. // ippStsContextMatchErr - Mismatch context structure.
  5512. //
  5513. // Notes:
  5514. // dstLen parameter used both for reading and writing,
  5515. // it should be passed to function with valid buffer length
  5516. // and it will be returned with used (filled) buffer length.
  5517. // The function can be used on the following manner:
  5518. //
  5519. // int isNotFinish = 1;
  5520. // while(isNotFinish)
  5521. // {
  5522. // int len = BUFFER_LEN;
  5523. // ippiEncodeStoreBits_JPEG2K_1u(buffer, &len, state, &isNotFinish);
  5524. // // writing_append(writing_obj, (char*)buffer, len);
  5525. // }
  5526. //
  5527. //
  5528. */
  5529. IPPAPI(IppStatus, ippiEncodeStoreBits_JPEG2K_1u, (
  5530. Ipp8u* pDst,
  5531. int* pDstLen,
  5532. IppiEncodeState_JPEG2K* pState,
  5533. int* pIsNotFinish))
  5534. /* ///////////////////////////////////////////////////////////////////////////
  5535. // Name:
  5536. // ippiEncodeGetPassTermLen_JPEG2K
  5537. //
  5538. // Purpose:
  5539. // Return the length of the terminated coding pass with a given
  5540. // terminated pass number.
  5541. //
  5542. // Parameters:
  5543. // pState - pointer to allocated and initialized
  5544. // encoder state structure,
  5545. // passNumber - pass number,
  5546. // pPassLen - pointer to variable to return pass length.
  5547. //
  5548. //
  5549. // Returns:
  5550. // ippStsNoErr - Ok,
  5551. // ippStsNullPtrErr - any of pointers is NULL,
  5552. // ippStsContextMatchErr - mismatch context structure,
  5553. // ippStsJPEG2KBadPassNumber - pass number exceeds allowed boundaries.
  5554. //
  5555. */
  5556. IPPAPI(IppStatus, ippiEncodeGetTermPassLen_JPEG2K, (
  5557. IppiEncodeState_JPEG2K* pState,
  5558. int passNumber,
  5559. int* pPassLen))
  5560. /* ///////////////////////////////////////////////////////////////////////////
  5561. // Name:
  5562. // ippiEncodeGetRate_JPEG2K
  5563. //
  5564. // Purpose:
  5565. // Return the esimated target bit-rate for a given pass number.
  5566. //
  5567. // Parameters:
  5568. // pState - pointer to allocated and initialized encoder state structure,
  5569. // passNumber - pass number,
  5570. // pRate - pointer to the variable that returns esimated rate.
  5571. //
  5572. //
  5573. // Returns:
  5574. // ippStsNoErr - Ok,
  5575. // ippStsNullPtrErr - any of pointers is NULL,
  5576. // ippStsContextMatchErr - mismatch context structure,
  5577. // ippStsJPEG2KBadPassNumber - pass number exceeds allowed boundaries.
  5578. //
  5579. */
  5580. IPPAPI(IppStatus, ippiEncodeGetRate_JPEG2K, (
  5581. IppiEncodeState_JPEG2K* pState,
  5582. int passNumber,
  5583. int* pRate))
  5584. /* ///////////////////////////////////////////////////////////////////////////
  5585. // Name:
  5586. // ippiEncodeGetDist_JPEG2K
  5587. //
  5588. // Purpose:
  5589. // Return the esimated distortion for a given pass number.
  5590. //
  5591. // Parameters:
  5592. // pState - pointer to allocated and initialized encoder state structure,
  5593. // passNumber - pass number,
  5594. // pDist - pointer to the variable that returns esimated distortion.
  5595. //
  5596. //
  5597. // Returns:
  5598. // ippStsNoErr - Ok,
  5599. // ippStsNullPtrErr - any of pointers is NULL,
  5600. // ippStsContextMatchErr - mismatch context structure,
  5601. // ippStsJPEG2KBadPassNumber - pass number exceeds allowed boundaries.
  5602. //
  5603. */
  5604. IPPAPI(IppStatus, ippiEncodeGetDist_JPEG2K, (
  5605. IppiEncodeState_JPEG2K* pState,
  5606. int passNumber,
  5607. Ipp64f* pDist))
  5608. /* ///////////////////////////////////////////////////////////////////////////
  5609. // Name:
  5610. // ippiDecodeCBProgrGetStateSize_JPEG2K
  5611. //
  5612. // Purpose:
  5613. // The function returns size of buffer for decoder state structure.
  5614. //
  5615. // Parameters:
  5616. // codeBlockMaxSize - the maximal size of the code-block,
  5617. // pStateSize - pointer to the variable that returns the size
  5618. // of buffer for decoder state structure,
  5619. // ippStsSizeErr - error in maximal size of codeblock.
  5620. //
  5621. // Returns:
  5622. // ippStsNoErr - Ok,
  5623. // ippStsNullPtrErr - any of pointers is NULL,
  5624. //
  5625. */
  5626. IPPAPI(IppStatus, ippiDecodeCBProgrGetStateSize_JPEG2K, (
  5627. IppiSize codeBlockMaxSize,
  5628. int *pStateSize))
  5629. /* ///////////////////////////////////////////////////////////////////////////
  5630. // Name:
  5631. // ippiDecodeCBProgrInit_JPEG2K
  5632. //
  5633. // Purpose:
  5634. // The function performs initialization of state structure.
  5635. //
  5636. // Parameters:
  5637. // pState - pointer to the state structure
  5638. //
  5639. // Returns:
  5640. // ippStsNoErr - Ok,
  5641. // ippStsNullPtrErr - any of pointers is NULL,
  5642. // ippStsContextMatchErr - mismatch context structure.
  5643. //
  5644. */
  5645. IPPAPI(IppStatus, ippiDecodeCBProgrInit_JPEG2K, (
  5646. IppiDecodeCBProgrState_JPEG2K *pState))
  5647. /* ///////////////////////////////////////////////////////////////////////////
  5648. // Name:
  5649. // ippiDecodeCBProgrInitAlloc_JPEG2K
  5650. //
  5651. // Purpose:
  5652. // The function allocates memory for and performs initialization of
  5653. // state structure.
  5654. //
  5655. // Parameters:
  5656. // pState - pointer to the variable that returns the pointer
  5657. // to the allocated and initialized encoder state structure,
  5658. // codeBlockMaxSize - the maximal size of the code-block.
  5659. //
  5660. // Returns:
  5661. // ippStsNoErr - Ok,
  5662. // ippStsNullPtrErr - any of pointers is NULL,
  5663. // ippStsSizeErr - error in size of codeblock.
  5664. //
  5665. */
  5666. IPPAPI(IppStatus, ippiDecodeCBProgrInitAlloc_JPEG2K, (
  5667. IppiDecodeCBProgrState_JPEG2K **pState,
  5668. IppiSize codeBlockMaxSize))
  5669. /* ///////////////////////////////////////////////////////////////////////////
  5670. // Name:
  5671. // ippiDecodeCBProgrFree_JPEG2K
  5672. //
  5673. // Purpose:
  5674. // The function frees memory allocated for the state structure.
  5675. //
  5676. // Parameters:
  5677. // pState - pointer to the state structure
  5678. //
  5679. // Returns:
  5680. // ippStsNoErr - Ok,
  5681. // ippStsNullPtrErr - any of pointers is NULL,
  5682. // ippStsContextMatchErr - mismatch context structure.
  5683. //
  5684. */
  5685. IPPAPI(IppStatus, ippiDecodeCBProgrFree_JPEG2K, (
  5686. IppiDecodeCBProgrState_JPEG2K *pState))
  5687. /* ///////////////////////////////////////////////////////////////////////////
  5688. // Name:
  5689. // ippiDecodeCBProgrAttach_JPEG2K_32s_C1R
  5690. //
  5691. // Purpose:
  5692. // The function attachs code-block destination buffer and
  5693. // set-up its parameters in state structure.
  5694. //
  5695. // Parameters:
  5696. // pDst - pointer to buffer that store code-block data,
  5697. // dstStep - step in bytes between lines of code-block,
  5698. // codeBlockSize - the size of the code-block,
  5699. // pState pointer - to the state structure,
  5700. // subband wavelet - subband type that is represented by code-block,
  5701. // sfBits - the number of significant bits in code-block,
  5702. // codeStyleFlags - coding options defined by combination of flags.
  5703. //
  5704. // Returns:
  5705. // ippStsNoErr - Ok,
  5706. // ippStsNullPtrErr - any of pointers is NULL,
  5707. // ippStsStepErr - step value is less than or equal to zero,
  5708. // ippStsContextMatchErr - mismatch context structure.
  5709. //
  5710. // Notes:
  5711. // The code-block data is updated in buffer
  5712. // attached by ippiDecodeProgrInit_JPEG2K function.
  5713. //
  5714. */
  5715. IPPAPI(IppStatus, ippiDecodeCBProgrAttach_JPEG2K_32s_C1R, (
  5716. Ipp32s *pDst,
  5717. int dstStep,
  5718. IppiSize codeBlockSize,
  5719. IppiDecodeCBProgrState_JPEG2K *pState,
  5720. IppiWTSubband subband,
  5721. int sfBits,
  5722. int codeStyleFlags))
  5723. /* ///////////////////////////////////////////////////////////////////////////
  5724. // Name:
  5725. // ippiDecodeCBProgrSetPassCounter_JPEG2K
  5726. //
  5727. // Purpose:
  5728. // The function sets the value of internal coding pass counter.
  5729. //
  5730. // Parameters:
  5731. // nOfPasses - the number of coding passes to set,
  5732. // pState - pointer to the state structure.
  5733. //
  5734. // Returns:
  5735. // ippStsNoErr - Ok,
  5736. // ippStsNullPtrErr - any of pointers is NULL,
  5737. // ippStsContextMatchErr - mismatch context structure.
  5738. //
  5739. */
  5740. IPPAPI(IppStatus, ippiDecodeCBProgrSetPassCounter_JPEG2K, (
  5741. int nOfPasses,
  5742. IppiDecodeCBProgrState_JPEG2K *pState))
  5743. /* ///////////////////////////////////////////////////////////////////////////
  5744. // Name:
  5745. // ippiDecodeCBProgrGetPassCounter_JPEG2K
  5746. //
  5747. // Purpose:
  5748. // The function gets the value of internal coding pass counter.
  5749. //
  5750. // Parameters:
  5751. // pState - pointer to the state structure,
  5752. // pNOfResidualPasses - pointer to the variable to return,
  5753. // the number of residual coding passes
  5754. //
  5755. // Returns:
  5756. // ippStsNoErr - Ok,
  5757. // ippStsNullPtrErr - any of pointers is NULL,
  5758. // ippStsContextMatchErr - mismatch context structure.
  5759. //
  5760. */
  5761. IPPAPI(IppStatus, ippiDecodeCBProgrGetPassCounter_JPEG2K, (
  5762. IppiDecodeCBProgrState_JPEG2K *state,
  5763. int *pNOfResidualPasses))
  5764. /* ///////////////////////////////////////////////////////////////////////////
  5765. // Name:
  5766. // ippiDecodeCBProgrGetCurBitPlane_JPEG2K
  5767. //
  5768. // Purpose:
  5769. // The function returns the current bit plane number.
  5770. //
  5771. // Parameters:
  5772. // pState - pointer to the state structure,
  5773. // pBitPlaneNum - pointer to the variable that returns the bit plane
  5774. //
  5775. // Returns:
  5776. // ippStsNoErr - Ok,
  5777. // ippStsNullPtrErr - any of pointers is NULL,
  5778. // ippStsContextMatchErr - mismatch context structure.
  5779. //
  5780. */
  5781. IPPAPI(IppStatus, ippiDecodeCBProgrGetCurBitPlaneNum_JPEG2K, (
  5782. IppiDecodeCBProgrState_JPEG2K *pState,
  5783. int *pBitPlaneNum))
  5784. /* ///////////////////////////////////////////////////////////////////////////
  5785. // Name:
  5786. // ippiDecodeCBProgrStep_JPEG2K
  5787. //
  5788. // Purpose:
  5789. // The function performs single step of decoding progression.
  5790. //
  5791. // Parameters:
  5792. // pSrc - pointer to compressed data that represent
  5793. // terminated segment from some count of coding passes,
  5794. // srcLen - length of the segment,
  5795. // pState - pointer to the state structure.
  5796. //
  5797. // Returns:
  5798. // ippStsNoErr - Ok,
  5799. // ippStsNullPtrErr - any of pointers is NULL,
  5800. // ippStsSizeErr - error in length of terminated segment.
  5801. // ippStsContextMatchErr - mismatch context structure.
  5802. //
  5803. // Notes:
  5804. // The code-block data is updated in buffer
  5805. // attached by ippiDecodeProgrInit_JPEG2K function.
  5806. //
  5807. */
  5808. IPPAPI(IppStatus, ippiDecodeCBProgrStep_JPEG2K, (
  5809. const Ipp8u* pSrc,
  5810. int srcLen,
  5811. IppiDecodeCBProgrState_JPEG2K* pState))
  5812. /* ///////////////////////////////////////////////////////////////////////////
  5813. // Name:
  5814. // ippiDecodeGetBufSize_JPEG2K
  5815. //
  5816. // Purpose:
  5817. // Return size of working buffer.
  5818. //
  5819. // Parameters:
  5820. // codeBlockMaxSize - maximal size of codeblock for coding.
  5821. // pSize - pointer to the variable that returns the size of working buffer
  5822. //
  5823. // Returns:
  5824. // ippStsNoErr - Ok,
  5825. // ippStsNullPtrErr - any of the pointers is NULL,
  5826. // ippStsSizeErr - error in size of codeblock,
  5827. //
  5828. */
  5829. IPPAPI(IppStatus, ippiDecodeGetBufSize_JPEG2K, (
  5830. IppiSize codeBlockMaxSize,
  5831. int* pSize))
  5832. /* ///////////////////////////////////////////////////////////////////////////
  5833. // Name:
  5834. // ippiDecodeCodeBlock_JPEG2K_1u32s_C1R
  5835. //
  5836. // Purpose:
  5837. // Decode compressed JPEG2000 codeblock data.
  5838. //
  5839. // Parameters:
  5840. // pSrc - pointer to the source of compressed data,
  5841. // pDst - pointer to the destination for codeblock,
  5842. // dstStep - step in bytes to each next line of codeblock,
  5843. // codeBlockSize - size of codeblock,
  5844. // subband - subband that is represented by codeblock,
  5845. // sfBits - number of significant bit planes,
  5846. // nOfPasses - number of coding passes,
  5847. // pTermPassLen - pointer to the array of legnths for each terminated pass,
  5848. // nOfTermPasses - number of terminated passes,
  5849. // codeStyleFlags - options for coding,
  5850. // pErrorBitPlane - pointer to the bit plane that contain first error returned for
  5851. // damaged codeblock,
  5852. // pBuffer - pointer to the working buffer.
  5853. //
  5854. // Returns:
  5855. // ippStsNoErr - Ok,
  5856. // ippStsNullPtrErr - any of pointers is NULL,
  5857. // ippStsSizeErr - error in size of codeblock,
  5858. // ippStsJPEG2KDamagedCodeBlock - codeblock contains damaged data.
  5859. //
  5860. // Notes:
  5861. // errorBitPlane can be NULL if such information does not required.
  5862. //
  5863. */
  5864. IPPAPI(IppStatus, ippiDecodeCodeBlock_JPEG2K_1u32s_C1R, (
  5865. const Ipp8u* pSrc,
  5866. Ipp32s* pDst,
  5867. int dstStep,
  5868. IppiSize codeBlockSize,
  5869. IppiWTSubband subband,
  5870. int sfBits,
  5871. int nOfPasses,
  5872. const int* pTermPassLen,
  5873. int nOfTermPasses,
  5874. int codeStyleFlags,
  5875. int* pErrorBitPlane,
  5876. Ipp8u* pBuffer))
  5877. /* ///////////////////////////////////////////////////////////////////////////
  5878. // Name:
  5879. // ippiRCTFwd_JPEG2K_16s_C3P3R
  5880. // ippiRCTFwd_JPEG2K_32s_C3P3R
  5881. //
  5882. // Purpose:
  5883. // forward reversible component transformation
  5884. //
  5885. // Parameter:
  5886. // pSrc pointer to input data
  5887. // srcStep line offset in input data
  5888. // pDst pointer to pointers to output data
  5889. // dstStep line offset in output data
  5890. // roiSize ROI size
  5891. //
  5892. // Returns:
  5893. // IppStatus
  5894. //
  5895. // Notes:
  5896. // color conversion equations:
  5897. // Y0 = (I0 + 2*I1 + I2) >> 2
  5898. // Y1 = I2 - I1
  5899. // Y2 = I0 - I1
  5900. */
  5901. IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_16s_C3P3R, (
  5902. const Ipp16s* pSrc,
  5903. int srcStep,
  5904. Ipp16s* pDst[3],
  5905. int dstStep,
  5906. IppiSize roiSize))
  5907. IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_32s_C3P3R, (
  5908. const Ipp32s* pSrc,
  5909. int srcStep,
  5910. Ipp32s* pDst[3],
  5911. int dstStep,
  5912. IppiSize roiSize))
  5913. /* ////////////////////////////////////////////////////////////////////////////
  5914. // Name:
  5915. // ippiRCTFwd_JPEG2K_16s_P3IR
  5916. // ippiRCTFwd_JPEG2K_32s_P3IR
  5917. //
  5918. // Purpose:
  5919. // forward reversible color conversion (three planes, in-place)
  5920. //
  5921. // Parameter:
  5922. // pSrcDst pointer to pointers to input/ouput data
  5923. // srcDstStep line offset in input/ouput data
  5924. // roiSize ROI size
  5925. //
  5926. // Returns:
  5927. // IppStatus
  5928. //
  5929. // Notes:
  5930. // color conversion equations:
  5931. // Y0 = (I0 + 2*I1 + I2) >> 2
  5932. // Y1 = I2 - I1
  5933. // Y2 = I0 - I1
  5934. */
  5935. IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_16s_P3IR, (
  5936. Ipp16s* pSrcDst[3],
  5937. int srcDstStep,
  5938. IppiSize roiSize))
  5939. IPPAPI(IppStatus, ippiRCTFwd_JPEG2K_32s_P3IR, (
  5940. Ipp32s* pSrcDst[3],
  5941. int srcDstStep,
  5942. IppiSize roiSize))
  5943. /* ///////////////////////////////////////////////////////////////////////////
  5944. // Name:
  5945. // ippiRCTInv_JPEG2K_16s_P3C3R
  5946. // ippiRCTInv_JPEG2K_32s_P3C3R
  5947. //
  5948. // Purpose:
  5949. // inverse reversible component transformation
  5950. //
  5951. // Parameter:
  5952. // pSrc pointer to pointers to input data
  5953. // srcStep line offset in input data
  5954. // pDst pointer to output data
  5955. // dstStep line offset in output data
  5956. // roiSize ROI size
  5957. //
  5958. // Returns:
  5959. // IppStatus
  5960. //
  5961. // Notes:
  5962. // color conversion equations:
  5963. // I1 = Y0 - ((Y2 + Y1) >> 2)
  5964. // I0 = Y2 + I1
  5965. // I2 = Y1 + I1
  5966. */
  5967. IPPAPI(IppStatus, ippiRCTInv_JPEG2K_16s_P3C3R, (
  5968. const Ipp16s* pSrc[3],
  5969. int srcStep,
  5970. Ipp16s* pDst,
  5971. int dstStep,
  5972. IppiSize roiSize))
  5973. IPPAPI(IppStatus, ippiRCTInv_JPEG2K_32s_P3C3R, (
  5974. const Ipp32s* pSrc[3],
  5975. int srcStep,
  5976. Ipp32s* pDst,
  5977. int dstStep,
  5978. IppiSize roiSize))
  5979. /* ////////////////////////////////////////////////////////////////////////////
  5980. // Name:
  5981. // ippiRCTInv_JPEG2K_16s_P3IR
  5982. // ippiRCTInv_JPEG2K_32s_P3IR
  5983. //
  5984. // Purpose:
  5985. // inverse reversible color conversion (three planes, in-place)
  5986. //
  5987. // Parameter:
  5988. // pSrcDst pointer to pointers to input/ouput data
  5989. // srcDstStep line offset in input/ouput data
  5990. // roiSize ROI size
  5991. //
  5992. // Returns:
  5993. // IppStatus
  5994. //
  5995. // Notes:
  5996. // color conversion equations:
  5997. // I1 = Y0 - ((Y2 + Y1) >> 2)
  5998. // I0 = Y2 + I1
  5999. // I2 = Y1 + I1
  6000. */
  6001. IPPAPI(IppStatus, ippiRCTInv_JPEG2K_16s_P3IR, (
  6002. Ipp16s* pSrcDst[3],
  6003. int srcDstStep,
  6004. IppiSize roiSize))
  6005. IPPAPI(IppStatus, ippiRCTInv_JPEG2K_32s_P3IR, (
  6006. Ipp32s* pSrcDst[3],
  6007. int srcDstStep,
  6008. IppiSize roiSize))
  6009. /* ///////////////////////////////////////////////////////////////////////////
  6010. // Name:
  6011. // ippiICTFwd_JPEG2K_32f_C3P3R
  6012. //
  6013. // Purpose:
  6014. // forward irreversible component transformation
  6015. //
  6016. // Parameter:
  6017. // pSrc pointer to input data
  6018. // srcStep line offset in input data
  6019. // pDst pointer to pointers to output data
  6020. // dstStep line offset in output data
  6021. // roiSize ROI size
  6022. //
  6023. // Returns:
  6024. // IppStatus
  6025. //
  6026. // Notes:
  6027. // color conversion equations:
  6028. // Y0 = 0.299 *I0 + 0.587 *I1 + 0.114 *I2
  6029. // Y1 = -0.16875*I0 - 0.33126*I1 + 0.5 *I2
  6030. // Y2 = 0.5 *I0 - 0.41869*I1 - 0.08131*I2
  6031. */
  6032. IPPAPI(IppStatus, ippiICTFwd_JPEG2K_32f_C3P3R, (
  6033. const Ipp32f* pSrc,
  6034. int srcStep,
  6035. Ipp32f* pDst[3],
  6036. int dstStep,
  6037. IppiSize roiSize))
  6038. /* ////////////////////////////////////////////////////////////////////////////
  6039. // Name:
  6040. // ippiICTFwd_JPEG2K_16s_P3IR
  6041. // ippiICTFwd_JPEG2K_32s_P3IR
  6042. // ippiICTFwd_JPEG2K_32f_P3IR
  6043. //
  6044. // Purpose:
  6045. // forward irreversible color conversion (three planes, in-place)
  6046. //
  6047. // Parameter:
  6048. // pSrcDst pointer to pointers to input/ouput data
  6049. // srcDstStep line offset in input/ouput data
  6050. // roiSize ROI size
  6051. //
  6052. // Returns:
  6053. // IppStatus
  6054. //
  6055. // Notes:
  6056. // color conversion equations:
  6057. // Y0 = 0.299 *I0 + 0.587 *I1 + 0.114 *I2
  6058. // Y1 = -0.16875*I0 - 0.33126*I1 + 0.5 *I2
  6059. // Y2 = 0.5 *I0 - 0.41869*I1 - 0.08131*I2
  6060. */
  6061. IPPAPI(IppStatus, ippiICTFwd_JPEG2K_16s_P3IR, (
  6062. Ipp16s* pSrcDst[3],
  6063. int srcDstStep,
  6064. IppiSize roiSize))
  6065. IPPAPI(IppStatus, ippiICTFwd_JPEG2K_32s_P3IR, (
  6066. Ipp32s* pSrcDst[3],
  6067. int srcDstStep,
  6068. IppiSize roiSize))
  6069. IPPAPI(IppStatus, ippiICTFwd_JPEG2K_32f_P3IR, (
  6070. Ipp32f* pSrcDst[3],
  6071. int srcDstStep,
  6072. IppiSize roiSize))
  6073. /* ///////////////////////////////////////////////////////////////////////////
  6074. // Name:
  6075. // ippiICTInv_JPEG2K_32f_P3C3R
  6076. //
  6077. // Purpose:
  6078. // inverse irreversible component transformation
  6079. //
  6080. // Parameter:
  6081. // pSrc pointer to pointers to input data
  6082. // srcStep line offset in input data
  6083. // pDst pointer to output data
  6084. // dstStep line offset in output data
  6085. // roiSize ROI size
  6086. //
  6087. // Returns:
  6088. // IppStatus
  6089. //
  6090. // Notes:
  6091. // color conversion equations:
  6092. // I0 = Y0 + 1.402 *Y2
  6093. // I1 = Y0 - 0.34413*Y1 - 0.71414*Y2
  6094. // I2 = Y0 + 1.772 *Y1
  6095. */
  6096. IPPAPI(IppStatus, ippiICTInv_JPEG2K_32f_P3C3R, (
  6097. const Ipp32f* pSrc[3],
  6098. int srcStep,
  6099. Ipp32f* pDst,
  6100. int dstStep,
  6101. IppiSize roiSize))
  6102. /* ////////////////////////////////////////////////////////////////////////////
  6103. // Name:
  6104. // ippiICTInv_JPEG2K_16s_P3IR
  6105. // ippiICTInv_JPEG2K_32s_P3IR
  6106. // ippiICTInv_JPEG2K_32f_P3IR
  6107. //
  6108. // Purpose:
  6109. // inverse irreversible color conversion (three planes, in-place)
  6110. //
  6111. // Parameter:
  6112. // pSrcDst pointer to pointers to input/ouput data
  6113. // srcDstStep line offset in input/ouput data
  6114. // roiSize ROI size
  6115. //
  6116. // Returns:
  6117. // IppStatus
  6118. //
  6119. // Notes:
  6120. // color conversion equations:
  6121. // I0 = Y0 + 1.402 *Y2
  6122. // I1 = Y0 - 0.34413*Y1 - 0.71414*Y2
  6123. // I2 = Y0 + 1.772 *Y1
  6124. */
  6125. IPPAPI(IppStatus, ippiICTInv_JPEG2K_16s_P3IR, (
  6126. Ipp16s* pSrcDst[3],
  6127. int srcDstStep,
  6128. IppiSize roiSize))
  6129. IPPAPI(IppStatus, ippiICTInv_JPEG2K_32s_P3IR, (
  6130. Ipp32s* pSrcDst[3],
  6131. int srcDstStep,
  6132. IppiSize roiSize))
  6133. IPPAPI(IppStatus, ippiICTInv_JPEG2K_32f_P3IR, (
  6134. Ipp32f* pSrcDst[3],
  6135. int srcDstStep,
  6136. IppiSize roiSize))
  6137. /* ///////////////////////////////////////////////////////////////////////////
  6138. // TIFF specific functions
  6139. /////////////////////////////////////////////////////////////////////////// */
  6140. /* ///////////////////////////////////////////////////////////////////////////
  6141. // Name:
  6142. // ippiPackBits_TIFF_8u_C1
  6143. //
  6144. // Purpose:
  6145. // encode bytes using RLE algorithm according TIFF 6.0 spec
  6146. //
  6147. // Parameter:
  6148. // pSrc pointer to input buffer to keep Byte Segment or part of Byte Segment
  6149. // srcLenBytes length, in bytes, of input buffer
  6150. // pDst pointer to output buffer
  6151. // pDstCurrPos pointer to the current byte position in output buffer
  6152. // dstLenBytes length, in bytes, of output buffer
  6153. //
  6154. // Returns:
  6155. // IppStatus
  6156. //
  6157. // Notes:
  6158. // function implements PackBits algorithm according TIFF 6.0 spec
  6159. */
  6160. IPPAPI(IppStatus,ippiPackBitsRow_TIFF_8u_C1,(
  6161. const Ipp8u* pSrc,
  6162. int srcLenBytes,
  6163. Ipp8u* pDst,
  6164. int* pDstCurrPos,
  6165. int dstLenBytes))
  6166. /* ///////////////////////////////////////////////////////////////////////////
  6167. // Name:
  6168. // ippiUnpackBits_TIFF_8u_C1
  6169. //
  6170. // Purpose:
  6171. // decode bytes using RLE algorithm according TIFF 6.0 spec
  6172. //
  6173. // Parameter:
  6174. // pSrc pointer to RLE encoded data
  6175. // pSrcCurrPos pointer to current position in source data
  6176. // srcLenBytes length, in bytes, of input data
  6177. // pDst pointer to buffer which receive decoded data
  6178. // dstLenBytes length, in bytes, of output buffer
  6179. //
  6180. // Returns:
  6181. // IppStatus
  6182. //
  6183. // Notes:
  6184. // function implements UnPackBits algorithm according TIFF 6.0 spec
  6185. */
  6186. IPPAPI(IppStatus,ippiUnpackBitsRow_TIFF_8u_C1,(
  6187. const Ipp8u* pSrc,
  6188. int* pSrcCurrPos,
  6189. int srcLenBytes,
  6190. Ipp8u* pDst,
  6191. int dstLenBytes))
  6192. /* ///////////////////////////////////////////////////////////////////////////
  6193. // Name:
  6194. // ippiSplitRow_TIFF_16u8u_C1
  6195. //
  6196. // Purpose:
  6197. // Split image row into two Byte Segment
  6198. //
  6199. // Parameter:
  6200. // pSrc - pointer to source
  6201. // pDst - pointer to output arrays
  6202. // dstLen - naumber of elements in output arrays
  6203. // Returns:
  6204. // IppStatus
  6205. //
  6206. // Notes:
  6207. //
  6208. */
  6209. IPPAPI(IppStatus, ippiSplitRow_TIFF_16u8u_C1,(
  6210. const Ipp16u* pSrc,
  6211. Ipp8u* pDst[2],
  6212. int dstLen))
  6213. /* ///////////////////////////////////////////////////////////////////////////
  6214. // Name:
  6215. // ippiJoinRow_TIFF_8u16u_C1
  6216. //
  6217. // Purpose:
  6218. // Join two decoded Byte Segment into row of image
  6219. //
  6220. // Parameter:
  6221. // pSrc - pointer to source arrays
  6222. // pDst - pointer to output array
  6223. // dstLen - naumber of elements in output array
  6224. //
  6225. // Returns:
  6226. // IppStatus
  6227. //
  6228. // Notes:
  6229. //
  6230. */
  6231. IPPAPI(IppStatus, ippiJoinRow_TIFF_8u16u_C1,(
  6232. const Ipp8u* pSrc[2],
  6233. Ipp16u* pDst,
  6234. int dstLen))
  6235. /* ///////////////////////////////////////////////////////////////////////////
  6236. // Texture Compression specific functions
  6237. /////////////////////////////////////////////////////////////////////////// */
  6238. /* ///////////////////////////////////////////////////////////////////////////
  6239. // Name:
  6240. // ippiTextureEncodeBlockFromRGBA_DXT1_8u_C4C1R
  6241. //
  6242. // Purpose:
  6243. // compress RGBA image to DXT1 blocks
  6244. //
  6245. // Parameter:
  6246. // pSrc pointer to input image
  6247. // srcStep raster line width, in bytes
  6248. // srcRoi ROI size
  6249. // pDst pointer to output DXT1 data
  6250. //
  6251. // Returns:
  6252. // IppStatus
  6253. //
  6254. // Notes:
  6255. // negative line step is not supported
  6256. */
  6257. IPPAPI(IppStatus, ippiTextureEncodeBlockFromRGBA_DXT1_8u_C4C1R,(
  6258. const Ipp8u* pSrc,
  6259. Ipp32u srcStep,
  6260. IppiSize srcRoi,
  6261. Ipp8u* pDst))
  6262. /* ///////////////////////////////////////////////////////////////////////////
  6263. // Name:
  6264. // ippiTextureEncodeBlockFromRGBA_DXT3_8u_C4C1R
  6265. //
  6266. // Purpose:
  6267. // compress RGBA image to DXT3 blocks
  6268. //
  6269. // Parameter:
  6270. // pSrc pointer to input image
  6271. // srcStep raster line width, in bytes
  6272. // srcRoi ROI size
  6273. // pDst pointer to output DXT3 data
  6274. //
  6275. // Returns:
  6276. // IppStatus
  6277. //
  6278. // Notes:
  6279. // negative line step is not supported
  6280. */
  6281. IPPAPI(IppStatus, ippiTextureEncodeBlockFromRGBA_DXT3_8u_C4C1R,(
  6282. const Ipp8u* pSrc,
  6283. Ipp32u srcStep,
  6284. IppiSize srcRoi,
  6285. Ipp8u* pDst))
  6286. /* ///////////////////////////////////////////////////////////////////////////
  6287. // Name:
  6288. // ippiTextureEncodeBlockFromRGBA_DXT5_8u_C4C1R
  6289. //
  6290. // Purpose:
  6291. // compress RGBA image to DXT5 blocks
  6292. //
  6293. // Parameter:
  6294. // pSrc pointer to input image
  6295. // srcStep raster line width, in bytes
  6296. // srcRoi ROI size
  6297. // pDst pointer to output DXT5 data
  6298. //
  6299. // Returns:
  6300. // IppStatus
  6301. //
  6302. // Notes:
  6303. // negative line step is not supported
  6304. */
  6305. IPPAPI(IppStatus, ippiTextureEncodeBlockFromRGBA_DXT5_8u_C4C1R,(
  6306. const Ipp8u* pSrc,
  6307. Ipp32u srcStep,
  6308. IppiSize srcRoi,
  6309. Ipp8u* pDst))
  6310. /* ///////////////////////////////////////////////////////////////////////////
  6311. // Name:
  6312. // ippiTextureEncodeBlockFromYCoCg_DXT5_8u_C3C1R
  6313. //
  6314. // Purpose:
  6315. // compress YCoCg image to DXT5 blocks
  6316. //
  6317. // Parameter:
  6318. // pSrc pointer to input image
  6319. // srcStep raster line width, in bytes
  6320. // srcRoi ROI size
  6321. // pDst pointer to output DXT5 data
  6322. //
  6323. // Returns:
  6324. // IppStatus
  6325. //
  6326. // Notes:
  6327. // negative line step is not supported
  6328. */
  6329. IPPAPI(IppStatus, ippiTextureEncodeBlockFromYCoCg_DXT5_8u_C3C1R,(
  6330. const Ipp8u* pSrc,
  6331. Ipp32u srcStep,
  6332. IppiSize srcRoi,
  6333. Ipp8u* pDst))
  6334. /* ///////////////////////////////////////////////////////////////////////////
  6335. // Name:
  6336. // ippiTextureDecodeBlockToRGBA_DXT1_8u_C1C4R
  6337. //
  6338. // Purpose:
  6339. // decompress DXT1 blocks to RGBA image
  6340. //
  6341. // Parameter:
  6342. // pSrc pointer to input DXT1 data
  6343. // pDst pointer to output image
  6344. // dstStep raster line width, in bytes
  6345. // dstRoi ROI size
  6346. //
  6347. // Returns:
  6348. // IppStatus
  6349. //
  6350. // Notes:
  6351. // negative line step is not supported
  6352. */
  6353. IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_DXT1_8u_C1C4R,(
  6354. const Ipp8u* pSrc,
  6355. Ipp8u* pDst,
  6356. Ipp32u dstStep,
  6357. IppiSize dstRoi))
  6358. /* ///////////////////////////////////////////////////////////////////////////
  6359. // Name:
  6360. // ippiTextureDecodeBlockToRGBA_DXT3_8u_C1C4R
  6361. //
  6362. // Purpose:
  6363. // decompress DXT3 blocks to RGBA image
  6364. //
  6365. // Parameter:
  6366. // pSrc pointer to input DXT3 data
  6367. // pDst pointer to output image
  6368. // dstStep raster line width, in bytes
  6369. // dstRoi ROI size
  6370. //
  6371. // Returns:
  6372. // IppStatus
  6373. //
  6374. // Notes:
  6375. // negative line step is not supported
  6376. */
  6377. IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_DXT3_8u_C1C4R,(
  6378. const Ipp8u* pSrc,
  6379. Ipp8u* pDst,
  6380. Ipp32u dstStep,
  6381. IppiSize dstRoi))
  6382. /* ///////////////////////////////////////////////////////////////////////////
  6383. // Name:
  6384. // ippiTextureDecodeBlockToRGBA_DXT5_8u_C1C4R
  6385. //
  6386. // Purpose:
  6387. // decompress DXT5 blocks to RGBA image
  6388. //
  6389. // Parameter:
  6390. // pSrc pointer to input DXT5 data
  6391. // pDst pointer to output image
  6392. // dstStep raster line width, in bytes
  6393. // dstRoi ROI size
  6394. //
  6395. // Returns:
  6396. // IppStatus
  6397. //
  6398. // Notes:
  6399. // negative line step is not supported
  6400. */
  6401. IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_DXT5_8u_C1C4R,(
  6402. const Ipp8u* pSrc,
  6403. Ipp8u* pDst,
  6404. Ipp32u dstStep,
  6405. IppiSize dstRoi))
  6406. /* ///////////////////////////////////////////////////////////////////////////
  6407. // Name:
  6408. // ippiTextureDecodeBlockToRGBA_BC7_8u_C1C4R
  6409. //
  6410. // Purpose:
  6411. // decompress BC7 blocks to RGBA image
  6412. //
  6413. // Parameter:
  6414. // pSrc pointer to input BC7 data
  6415. // pDst pointer to output image
  6416. // dstStep raster line width, in bytes
  6417. // dstRoi ROI size
  6418. //
  6419. // Returns:
  6420. // IppStatus
  6421. //
  6422. // Notes:
  6423. // negative line step is not supported
  6424. */
  6425. IPPAPI(IppStatus, ippiTextureDecodeBlockToRGBA_BC7_8u_C1C4R,(
  6426. const Ipp8u* src,
  6427. Ipp8u* dst,
  6428. Ipp32u dstStep,
  6429. IppiSize dstRoi))
  6430. /* /////////////////////////////////////////////////////////////////////////////
  6431. // High Definition Photo functions
  6432. ///////////////////////////////////////////////////////////////////////////// */
  6433. /* /////////////////////////////////////////////////////////////////////////////
  6434. // Photo Core Transform functions
  6435. */
  6436. /* /////////////////////////////////////////////////////////////////////////////
  6437. // Names:
  6438. // ippiPCTFwd16x16_HDP_32s_C1IR,
  6439. // ippiPCTFwd8x16_HDP_32s_C1IR,
  6440. // ippiPCTFwd8x8_HDP_32s_C1IR
  6441. // ippiPCTFwd_HDP_32s_C1IR
  6442. // Purpose: Photo Core Transform Forward 1st stage
  6443. // Returns:
  6444. // ippStsNoErr OK
  6445. // ippStsNullPtrErr One of the pointers is NULL
  6446. // ippStsStepErr roi.width or roi.height is less than or equal to zero
  6447. // or is not a multiple of four
  6448. // ippStsSizeErr srcDstStep is less than (roi.width * sizeof(datatype))
  6449. //
  6450. // Parameters:
  6451. // pSrcDst Pointer to the source/destination image
  6452. // srcDstStep Step through the source/destination image
  6453. // roiSize Size of the ROI
  6454. */
  6455. IPPAPI(IppStatus, ippiPCTFwd16x16_HDP_32s_C1IR, (
  6456. Ipp32s* pSrcDst,
  6457. Ipp32u srcDstStep))
  6458. IPPAPI(IppStatus, ippiPCTFwd8x16_HDP_32s_C1IR,(
  6459. Ipp32s* pSrcDst,
  6460. Ipp32u srcDstStep))
  6461. IPPAPI(IppStatus, ippiPCTFwd8x8_HDP_32s_C1IR,(
  6462. Ipp32s* pSrcDst,
  6463. Ipp32u srcDstStep))
  6464. IPPAPI(IppStatus, ippiPCTFwd_HDP_32s_C1IR,(
  6465. Ipp32s* pSrcDst,
  6466. Ipp32u srcDstStep,
  6467. IppiSize roiSize))
  6468. /* /////////////////////////////////////////////////////////////////////////////
  6469. // Names:
  6470. // ippiPCTInv16x16_HDP_32s_C1IR,
  6471. // ippiPCTInv8x16_HDP_32s_C1IR,
  6472. // ippiPCTInv8x8_HDP_32s_C1IR
  6473. // ippiPCTInv_HDP_32s_C1IR
  6474. // Purpose: Photo Core Transform Inverse 1st stage
  6475. // Returns:
  6476. // ippStsNoErr OK
  6477. // ippStsNullPtrErr One of the pointers is NULL
  6478. // ippStsStepErr roi.width or roi.height is less than or equal to zero
  6479. // or is not a multiple of four
  6480. // ippStsSizeErr srcDstStep is less than (roi.width * sizeof(datatype))
  6481. //
  6482. // Parameters:
  6483. // pSrcDst Pointer to the source/destination image
  6484. // srcDstStep Step through the source/destination image
  6485. // roiSize Size of the ROI
  6486. */
  6487. IPPAPI(IppStatus, ippiPCTInv16x16_HDP_32s_C1IR,(
  6488. Ipp32s* pSrcDst,
  6489. Ipp32u srcDstStep))
  6490. IPPAPI(IppStatus, ippiPCTInv8x16_HDP_32s_C1IR,(
  6491. Ipp32s* pSrcDst,
  6492. Ipp32u srcDstStep))
  6493. IPPAPI(IppStatus, ippiPCTInv8x8_HDP_32s_C1IR,(
  6494. Ipp32s* pSrcDst,
  6495. Ipp32u srcDstStep))
  6496. IPPAPI(IppStatus, ippiPCTInv_HDP_32s_C1IR,(
  6497. Ipp32s* pSrcDst,
  6498. Ipp32u srcDstStep,
  6499. IppiSize roiSize))
  6500. #ifdef __cplusplus
  6501. }
  6502. #endif
  6503. #if defined (_IPP_STDCALL_CDECL)
  6504. #undef _IPP_STDCALL_CDECL
  6505. #define __stdcall __cdecl
  6506. #endif
  6507. #endif /* __IPPJ_H__ */
  6508. /* //////////////////////// End of file "ippj.h" ////////////////////////// */