0001-Add-sf-extra-folder.patch 355 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770
  1. From 7b27b6134f9a2ca4730a6081af8b5331c7a64f63 Mon Sep 17 00:00:00 2001
  2. From: Clement <clement@starfivetech.com>
  3. Date: Thu, 8 Jun 2023 01:33:10 -0400
  4. Subject: [PATCH 1/1] Add sf-extra folder
  5. Signed-off-by: Clement <clement@starfivetech.com>
  6. ---
  7. sf-extra/omx-il/OMX_Audio.h | 1310 +++++++++++++++++++++++++
  8. sf-extra/omx-il/OMX_Component.h | 569 +++++++++++
  9. sf-extra/omx-il/OMX_ComponentExt.h | 61 ++
  10. sf-extra/omx-il/OMX_ContentPipe.h | 193 ++++
  11. sf-extra/omx-il/OMX_Core.h | 1422 ++++++++++++++++++++++++++++
  12. sf-extra/omx-il/OMX_CoreExt.h | 73 ++
  13. sf-extra/omx-il/OMX_IVCommon.h | 993 +++++++++++++++++++
  14. sf-extra/omx-il/OMX_Image.h | 328 +++++++
  15. sf-extra/omx-il/OMX_ImageExt.h | 55 ++
  16. sf-extra/omx-il/OMX_Index.h | 260 +++++
  17. sf-extra/omx-il/OMX_IndexExt.h | 105 ++
  18. sf-extra/omx-il/OMX_Other.h | 366 +++++++
  19. sf-extra/omx-il/OMX_Types.h | 361 +++++++
  20. sf-extra/omx-il/OMX_Video.h | 1141 ++++++++++++++++++++++
  21. sf-extra/omx-il/OMX_VideoExt.h | 401 ++++++++
  22. 15 files changed, 7638 insertions(+)
  23. create mode 100644 sf-extra/omx-il/OMX_Audio.h
  24. create mode 100644 sf-extra/omx-il/OMX_Component.h
  25. create mode 100644 sf-extra/omx-il/OMX_ComponentExt.h
  26. create mode 100644 sf-extra/omx-il/OMX_ContentPipe.h
  27. create mode 100644 sf-extra/omx-il/OMX_Core.h
  28. create mode 100644 sf-extra/omx-il/OMX_CoreExt.h
  29. create mode 100644 sf-extra/omx-il/OMX_IVCommon.h
  30. create mode 100644 sf-extra/omx-il/OMX_Image.h
  31. create mode 100644 sf-extra/omx-il/OMX_ImageExt.h
  32. create mode 100644 sf-extra/omx-il/OMX_Index.h
  33. create mode 100644 sf-extra/omx-il/OMX_IndexExt.h
  34. create mode 100644 sf-extra/omx-il/OMX_Other.h
  35. create mode 100644 sf-extra/omx-il/OMX_Types.h
  36. create mode 100644 sf-extra/omx-il/OMX_Video.h
  37. create mode 100644 sf-extra/omx-il/OMX_VideoExt.h
  38. diff --git a/sf-extra/omx-il/OMX_Audio.h b/sf-extra/omx-il/OMX_Audio.h
  39. new file mode 100644
  40. index 00000000..72053193
  41. --- /dev/null
  42. +++ b/sf-extra/omx-il/OMX_Audio.h
  43. @@ -0,0 +1,1310 @@
  44. +/*
  45. + * Copyright (c) 2008 The Khronos Group Inc.
  46. + *
  47. + * Permission is hereby granted, free of charge, to any person obtaining
  48. + * a copy of this software and associated documentation files (the
  49. + * "Software"), to deal in the Software without restriction, including
  50. + * without limitation the rights to use, copy, modify, merge, publish,
  51. + * distribute, sublicense, and/or sell copies of the Software, and to
  52. + * permit persons to whom the Software is furnished to do so, subject
  53. + * to the following conditions:
  54. + * The above copyright notice and this permission notice shall be included
  55. + * in all copies or substantial portions of the Software.
  56. + *
  57. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  58. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  59. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  60. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  61. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  62. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  63. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  64. + *
  65. + */
  66. +
  67. +/** @file OMX_Audio.h - OpenMax IL version 1.1.2
  68. + * The structures needed by Audio components to exchange
  69. + * parameters and configuration data with the componenmilts.
  70. + */
  71. +
  72. +#ifndef OMX_Audio_h
  73. +#define OMX_Audio_h
  74. +
  75. +#ifdef __cplusplus
  76. +extern "C" {
  77. +#endif /* __cplusplus */
  78. +
  79. +
  80. +/* Each OMX header must include all required header files to allow the
  81. + * header to compile without errors. The includes below are required
  82. + * for this header file to compile successfully
  83. + */
  84. +
  85. +#include <OMX_Core.h>
  86. +
  87. +/** @defgroup midi MIDI
  88. + * @ingroup audio
  89. + */
  90. +
  91. +/** @defgroup effects Audio effects
  92. + * @ingroup audio
  93. + */
  94. +
  95. +/** @defgroup audio OpenMAX IL Audio Domain
  96. + * Structures for OpenMAX IL Audio domain
  97. + * @{
  98. + */
  99. +
  100. +/** Enumeration used to define the possible audio codings.
  101. + * If "OMX_AUDIO_CodingUnused" is selected, the coding selection must
  102. + * be done in a vendor specific way. Since this is for an audio
  103. + * processing element this enum is relevant. However, for another
  104. + * type of component other enums would be in this area.
  105. + */
  106. +typedef enum OMX_AUDIO_CODINGTYPE {
  107. + OMX_AUDIO_CodingUnused = 0, /**< Placeholder value when coding is N/A */
  108. + OMX_AUDIO_CodingAutoDetect, /**< auto detection of audio format */
  109. + OMX_AUDIO_CodingPCM, /**< Any variant of PCM coding */
  110. + OMX_AUDIO_CodingADPCM, /**< Any variant of ADPCM encoded data */
  111. + OMX_AUDIO_CodingAMR, /**< Any variant of AMR encoded data */
  112. + OMX_AUDIO_CodingGSMFR, /**< Any variant of GSM fullrate (i.e. GSM610) */
  113. + OMX_AUDIO_CodingGSMEFR, /**< Any variant of GSM Enhanced Fullrate encoded data*/
  114. + OMX_AUDIO_CodingGSMHR, /**< Any variant of GSM Halfrate encoded data */
  115. + OMX_AUDIO_CodingPDCFR, /**< Any variant of PDC Fullrate encoded data */
  116. + OMX_AUDIO_CodingPDCEFR, /**< Any variant of PDC Enhanced Fullrate encoded data */
  117. + OMX_AUDIO_CodingPDCHR, /**< Any variant of PDC Halfrate encoded data */
  118. + OMX_AUDIO_CodingTDMAFR, /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */
  119. + OMX_AUDIO_CodingTDMAEFR, /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */
  120. + OMX_AUDIO_CodingQCELP8, /**< Any variant of QCELP 8kbps encoded data */
  121. + OMX_AUDIO_CodingQCELP13, /**< Any variant of QCELP 13kbps encoded data */
  122. + OMX_AUDIO_CodingEVRC, /**< Any variant of EVRC encoded data */
  123. + OMX_AUDIO_CodingSMV, /**< Any variant of SMV encoded data */
  124. + OMX_AUDIO_CodingG711, /**< Any variant of G.711 encoded data */
  125. + OMX_AUDIO_CodingG723, /**< Any variant of G.723 dot 1 encoded data */
  126. + OMX_AUDIO_CodingG726, /**< Any variant of G.726 encoded data */
  127. + OMX_AUDIO_CodingG729, /**< Any variant of G.729 encoded data */
  128. + OMX_AUDIO_CodingAAC, /**< Any variant of AAC encoded data */
  129. + OMX_AUDIO_CodingMP3, /**< Any variant of MP3 encoded data */
  130. + OMX_AUDIO_CodingSBC, /**< Any variant of SBC encoded data */
  131. + OMX_AUDIO_CodingVORBIS, /**< Any variant of VORBIS encoded data */
  132. + OMX_AUDIO_CodingWMA, /**< Any variant of WMA encoded data */
  133. + OMX_AUDIO_CodingRA, /**< Any variant of RA encoded data */
  134. + OMX_AUDIO_CodingMIDI, /**< Any variant of MIDI encoded data */
  135. + OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  136. + OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  137. + OMX_AUDIO_CodingMax = 0x7FFFFFFF
  138. +} OMX_AUDIO_CODINGTYPE;
  139. +
  140. +
  141. +/** The PortDefinition structure is used to define all of the parameters
  142. + * necessary for the compliant component to setup an input or an output audio
  143. + * path. If additional information is needed to define the parameters of the
  144. + * port (such as frequency), additional structures must be sent such as the
  145. + * OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port.
  146. + */
  147. +typedef struct OMX_AUDIO_PORTDEFINITIONTYPE {
  148. + OMX_STRING cMIMEType; /**< MIME type of data for the port */
  149. + OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference
  150. + for an output device,
  151. + otherwise this field is 0 */
  152. + OMX_BOOL bFlagErrorConcealment; /**< Turns on error concealment if it is
  153. + supported by the OMX component */
  154. + OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this
  155. + port (e.g. PCM, AMR, MP3, etc) */
  156. +} OMX_AUDIO_PORTDEFINITIONTYPE;
  157. +
  158. +
  159. +/** Port format parameter. This structure is used to enumerate
  160. + * the various data input/output format supported by the port.
  161. + */
  162. +typedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE {
  163. + OMX_U32 nSize; /**< size of the structure in bytes */
  164. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  165. + OMX_U32 nPortIndex; /**< Indicates which port to set */
  166. + OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */
  167. + OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */
  168. +} OMX_AUDIO_PARAM_PORTFORMATTYPE;
  169. +
  170. +
  171. +/** PCM mode type */
  172. +typedef enum OMX_AUDIO_PCMMODETYPE {
  173. + OMX_AUDIO_PCMModeLinear = 0, /**< Linear PCM encoded data */
  174. + OMX_AUDIO_PCMModeALaw, /**< A law PCM encoded data (G.711) */
  175. + OMX_AUDIO_PCMModeMULaw, /**< Mu law PCM encoded data (G.711) */
  176. + OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  177. + OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  178. + OMX_AUDIO_PCMModeMax = 0x7FFFFFFF
  179. +} OMX_AUDIO_PCMMODETYPE;
  180. +
  181. +
  182. +typedef enum OMX_AUDIO_CHANNELTYPE {
  183. + OMX_AUDIO_ChannelNone = 0x0, /**< Unused or empty */
  184. + OMX_AUDIO_ChannelLF = 0x1, /**< Left front */
  185. + OMX_AUDIO_ChannelRF = 0x2, /**< Right front */
  186. + OMX_AUDIO_ChannelCF = 0x3, /**< Center front */
  187. + OMX_AUDIO_ChannelLS = 0x4, /**< Left surround */
  188. + OMX_AUDIO_ChannelRS = 0x5, /**< Right surround */
  189. + OMX_AUDIO_ChannelLFE = 0x6, /**< Low frequency effects */
  190. + OMX_AUDIO_ChannelCS = 0x7, /**< Back surround */
  191. + OMX_AUDIO_ChannelLR = 0x8, /**< Left rear. */
  192. + OMX_AUDIO_ChannelRR = 0x9, /**< Right rear. */
  193. + OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  194. + OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  195. + OMX_AUDIO_ChannelMax = 0x7FFFFFFF
  196. +} OMX_AUDIO_CHANNELTYPE;
  197. +
  198. +#define OMX_AUDIO_MAXCHANNELS 16 /**< maximum number distinct audio channels that a buffer may contain */
  199. +#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */
  200. +
  201. +/** PCM format description */
  202. +typedef struct OMX_AUDIO_PARAM_PCMMODETYPE {
  203. + OMX_U32 nSize; /**< Size of this structure, in Bytes */
  204. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  205. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  206. + OMX_U32 nChannels; /**< Number of channels (e.g. 2 for stereo) */
  207. + OMX_NUMERICALDATATYPE eNumData; /**< indicates PCM data as signed or unsigned */
  208. + OMX_ENDIANTYPE eEndian; /**< indicates PCM data as little or big endian */
  209. + OMX_BOOL bInterleaved; /**< True for normal interleaved data; false for
  210. + non-interleaved data (e.g. block data) */
  211. + OMX_U32 nBitPerSample; /**< Bit per sample */
  212. + OMX_U32 nSamplingRate; /**< Sampling rate of the source data. Use 0 for
  213. + variable or unknown sampling rate. */
  214. + OMX_AUDIO_PCMMODETYPE ePCMMode; /**< PCM mode enumeration */
  215. + OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */
  216. +
  217. +} OMX_AUDIO_PARAM_PCMMODETYPE;
  218. +
  219. +
  220. +/** Audio channel mode. This is used by both AAC and MP3, although the names are more appropriate
  221. + * for the MP3. For example, JointStereo for MP3 is CouplingChannels for AAC.
  222. + */
  223. +typedef enum OMX_AUDIO_CHANNELMODETYPE {
  224. + OMX_AUDIO_ChannelModeStereo = 0, /**< 2 channels, the bitrate allocation between those
  225. + two channels changes accordingly to each channel information */
  226. + OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between
  227. + 2 channels for higher compression gain */
  228. + OMX_AUDIO_ChannelModeDual, /**< 2 mono-channels, each channel is encoded with half
  229. + the bitrate of the overall bitrate */
  230. + OMX_AUDIO_ChannelModeMono, /**< Mono channel mode */
  231. + OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  232. + OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  233. + OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF
  234. +} OMX_AUDIO_CHANNELMODETYPE;
  235. +
  236. +
  237. +typedef enum OMX_AUDIO_MP3STREAMFORMATTYPE {
  238. + OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */
  239. + OMX_AUDIO_MP3StreamFormatMP2Layer3, /**< MP3 Audio MPEG 2 Layer 3 Stream format */
  240. + OMX_AUDIO_MP3StreamFormatMP2_5Layer3, /**< MP3 Audio MPEG2.5 Layer 3 Stream format */
  241. + OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  242. + OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  243. + OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF
  244. +} OMX_AUDIO_MP3STREAMFORMATTYPE;
  245. +
  246. +/** MP3 params */
  247. +typedef struct OMX_AUDIO_PARAM_MP3TYPE {
  248. + OMX_U32 nSize; /**< size of the structure in bytes */
  249. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  250. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  251. + OMX_U32 nChannels; /**< Number of channels */
  252. + OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
  253. + rate or unknown bit rates */
  254. + OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
  255. + variable or unknown sampling rate. */
  256. + OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
  257. + limit the audio signal. Use 0 to let encoder decide */
  258. + OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
  259. + OMX_AUDIO_MP3STREAMFORMATTYPE eFormat; /**< MP3 stream format */
  260. +} OMX_AUDIO_PARAM_MP3TYPE;
  261. +
  262. +
  263. +typedef enum OMX_AUDIO_AACSTREAMFORMATTYPE {
  264. + OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */
  265. + OMX_AUDIO_AACStreamFormatMP4ADTS, /**< AAC Audio Data Transport Stream 4 format */
  266. + OMX_AUDIO_AACStreamFormatMP4LOAS, /**< AAC Low Overhead Audio Stream format */
  267. + OMX_AUDIO_AACStreamFormatMP4LATM, /**< AAC Low overhead Audio Transport Multiplex */
  268. + OMX_AUDIO_AACStreamFormatADIF, /**< AAC Audio Data Interchange Format */
  269. + OMX_AUDIO_AACStreamFormatMP4FF, /**< AAC inside MPEG-4/ISO File Format */
  270. + OMX_AUDIO_AACStreamFormatRAW, /**< AAC Raw Format */
  271. + OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  272. + OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  273. + OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF
  274. +} OMX_AUDIO_AACSTREAMFORMATTYPE;
  275. +
  276. +
  277. +/** AAC mode type. Note that the term profile is used with the MPEG-2
  278. + * standard and the term object type and profile is used with MPEG-4 */
  279. +typedef enum OMX_AUDIO_AACPROFILETYPE {
  280. + OMX_AUDIO_AACObjectNull = 0, /**< Null, not used */
  281. + OMX_AUDIO_AACObjectMain = 1, /**< AAC Main object */
  282. + OMX_AUDIO_AACObjectLC, /**< AAC Low Complexity object (AAC profile) */
  283. + OMX_AUDIO_AACObjectSSR, /**< AAC Scalable Sample Rate object */
  284. + OMX_AUDIO_AACObjectLTP, /**< AAC Long Term Prediction object */
  285. + OMX_AUDIO_AACObjectHE, /**< AAC High Efficiency (object type SBR, HE-AAC profile) */
  286. + OMX_AUDIO_AACObjectScalable, /**< AAC Scalable object */
  287. + OMX_AUDIO_AACObjectERLC = 17, /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */
  288. + OMX_AUDIO_AACObjectLD = 23, /**< AAC Low Delay object (Error Resilient) */
  289. + OMX_AUDIO_AACObjectHE_PS = 29, /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */
  290. + OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  291. + OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  292. + OMX_AUDIO_AACObjectMax = 0x7FFFFFFF
  293. +} OMX_AUDIO_AACPROFILETYPE;
  294. +
  295. +
  296. +/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
  297. + * Required for encoder configuration and optional as decoder info output.
  298. + * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */
  299. +#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */
  300. +#define OMX_AUDIO_AACToolMS 0x00000001 /**< MS: Mid/side joint coding tool allowed or active */
  301. +#define OMX_AUDIO_AACToolIS 0x00000002 /**< IS: Intensity stereo tool allowed or active */
  302. +#define OMX_AUDIO_AACToolTNS 0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */
  303. +#define OMX_AUDIO_AACToolPNS 0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */
  304. +#define OMX_AUDIO_AACToolLTP 0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */
  305. +#define OMX_AUDIO_AACToolAll 0x7FFFFFFF /**< all AAC tools allowed or active (*/
  306. +
  307. +/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
  308. + * Required for ER encoder configuration and optional as decoder info output */
  309. +#define OMX_AUDIO_AACERNone 0x00000000 /**< no AAC ER tools allowed/used */
  310. +#define OMX_AUDIO_AACERVCB11 0x00000001 /**< VCB11: Virtual Code Books for AAC section data */
  311. +#define OMX_AUDIO_AACERRVLC 0x00000002 /**< RVLC: Reversible Variable Length Coding */
  312. +#define OMX_AUDIO_AACERHCR 0x00000004 /**< HCR: Huffman Codeword Reordering */
  313. +#define OMX_AUDIO_AACERAll 0x7FFFFFFF /**< all AAC ER tools allowed/used */
  314. +
  315. +
  316. +/** AAC params */
  317. +typedef struct OMX_AUDIO_PARAM_AACPROFILETYPE {
  318. + OMX_U32 nSize; /**< Size of this structure, in Bytes */
  319. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  320. + OMX_U32 nPortIndex; /**< Port that this structure applies to */
  321. + OMX_U32 nChannels; /**< Number of channels */
  322. + OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
  323. + variable or unknown sampling rate. */
  324. + OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
  325. + rate or unknown bit rates */
  326. + OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
  327. + limit the audio signal. Use 0 to let encoder decide */
  328. + OMX_U32 nFrameLength; /**< Frame length (in audio samples per channel) of the codec.
  329. + Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD).
  330. + Use 0 to let encoder decide */
  331. + OMX_U32 nAACtools; /**< AAC tool usage */
  332. + OMX_U32 nAACERtools; /**< MPEG-4 AAC error resilience tool usage */
  333. + OMX_AUDIO_AACPROFILETYPE eAACProfile; /**< AAC profile enumeration */
  334. + OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */
  335. + OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
  336. +} OMX_AUDIO_PARAM_AACPROFILETYPE;
  337. +
  338. +
  339. +/** VORBIS params */
  340. +typedef struct OMX_AUDIO_PARAM_VORBISTYPE {
  341. + OMX_U32 nSize; /**< size of the structure in bytes */
  342. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  343. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  344. + OMX_U32 nChannels; /**< Number of channels */
  345. + OMX_U32 nBitRate; /**< Bit rate of the encoded data data. Use 0 for variable
  346. + rate or unknown bit rates. Encoding is set to the
  347. + bitrate closest to specified value (in bps) */
  348. + OMX_U32 nMinBitRate; /**< Sets minimum bitrate (in bps). */
  349. + OMX_U32 nMaxBitRate; /**< Sets maximum bitrate (in bps). */
  350. +
  351. + OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
  352. + variable or unknown sampling rate. */
  353. + OMX_U32 nAudioBandWidth; /**< Audio band width (in Hz) to which an encoder should
  354. + limit the audio signal. Use 0 to let encoder decide */
  355. + OMX_S32 nQuality; /**< Sets encoding quality to n, between -1 (low) and 10 (high).
  356. + In the default mode of operation, teh quality level is 3.
  357. + Normal quality range is 0 - 10. */
  358. + OMX_BOOL bManaged; /**< Set bitrate management mode. This turns off the
  359. + normal VBR encoding, but allows hard or soft bitrate
  360. + constraints to be enforced by the encoder. This mode can
  361. + be slower, and may also be lower quality. It is
  362. + primarily useful for streaming. */
  363. + OMX_BOOL bDownmix; /**< Downmix input from stereo to mono (has no effect on
  364. + non-stereo streams). Useful for lower-bitrate encoding. */
  365. +} OMX_AUDIO_PARAM_VORBISTYPE;
  366. +
  367. +
  368. +/** WMA Version */
  369. +typedef enum OMX_AUDIO_WMAFORMATTYPE {
  370. + OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */
  371. + OMX_AUDIO_WMAFormat7, /**< Windows Media Audio format 7 */
  372. + OMX_AUDIO_WMAFormat8, /**< Windows Media Audio format 8 */
  373. + OMX_AUDIO_WMAFormat9, /**< Windows Media Audio format 9 */
  374. + OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  375. + OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  376. + OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF
  377. +} OMX_AUDIO_WMAFORMATTYPE;
  378. +
  379. +
  380. +/** WMA Profile */
  381. +typedef enum OMX_AUDIO_WMAPROFILETYPE {
  382. + OMX_AUDIO_WMAProfileUnused = 0, /**< profile unused or unknown */
  383. + OMX_AUDIO_WMAProfileL1, /**< Windows Media audio version 9 profile L1 */
  384. + OMX_AUDIO_WMAProfileL2, /**< Windows Media audio version 9 profile L2 */
  385. + OMX_AUDIO_WMAProfileL3, /**< Windows Media audio version 9 profile L3 */
  386. + OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  387. + OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  388. + OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF
  389. +} OMX_AUDIO_WMAPROFILETYPE;
  390. +
  391. +
  392. +/** WMA params */
  393. +typedef struct OMX_AUDIO_PARAM_WMATYPE {
  394. + OMX_U32 nSize; /**< size of the structure in bytes */
  395. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  396. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  397. + OMX_U16 nChannels; /**< Number of channels */
  398. + OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
  399. + rate or unknown bit rates */
  400. + OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */
  401. + OMX_AUDIO_WMAPROFILETYPE eProfile; /**< Profile of WMA stream / data */
  402. + OMX_U32 nSamplingRate; /**< Sampling rate of the source data */
  403. + OMX_U16 nBlockAlign; /**< is the block alignment, or block size, in bytes of the audio codec */
  404. + OMX_U16 nEncodeOptions; /**< WMA Type-specific data */
  405. + OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */
  406. +} OMX_AUDIO_PARAM_WMATYPE;
  407. +
  408. +/**
  409. + * RealAudio format
  410. + */
  411. +typedef enum OMX_AUDIO_RAFORMATTYPE {
  412. + OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */
  413. + OMX_AUDIO_RA8, /**< RealAudio 8 codec */
  414. + OMX_AUDIO_RA9, /**< RealAudio 9 codec */
  415. + OMX_AUDIO_RA10_AAC, /**< MPEG-4 AAC codec for bitrates of more than 128kbps */
  416. + OMX_AUDIO_RA10_CODEC, /**< RealAudio codec for bitrates less than 128 kbps */
  417. + OMX_AUDIO_RA10_LOSSLESS, /**< RealAudio Lossless */
  418. + OMX_AUDIO_RA10_MULTICHANNEL, /**< RealAudio Multichannel */
  419. + OMX_AUDIO_RA10_VOICE, /**< RealAudio Voice for bitrates below 15 kbps */
  420. + OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  421. + OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  422. + OMX_VIDEO_RAFormatMax = 0x7FFFFFFF
  423. +} OMX_AUDIO_RAFORMATTYPE;
  424. +
  425. +/** RA (Real Audio) params */
  426. +typedef struct OMX_AUDIO_PARAM_RATYPE {
  427. + OMX_U32 nSize; /**< Size of this structure, in Bytes */
  428. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  429. + OMX_U32 nPortIndex; /**< Port that this structure applies to */
  430. + OMX_U32 nChannels; /**< Number of channels */
  431. + OMX_U32 nSamplingRate; /**< is the sampling rate of the source data */
  432. + OMX_U32 nBitsPerFrame; /**< is the value for bits per frame */
  433. + OMX_U32 nSamplePerFrame; /**< is the value for samples per frame */
  434. + OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */
  435. + OMX_U32 nCouplingStartRegion; /**< is the coupling start region in the stream */
  436. + OMX_U32 nNumRegions; /**< is the number of regions value */
  437. + OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */
  438. +} OMX_AUDIO_PARAM_RATYPE;
  439. +
  440. +
  441. +/** SBC Allocation Method Type */
  442. +typedef enum OMX_AUDIO_SBCALLOCMETHODTYPE {
  443. + OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */
  444. + OMX_AUDIO_SBCAllocMethodSNR, /**< SNR allocation method */
  445. + OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  446. + OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  447. + OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF
  448. +} OMX_AUDIO_SBCALLOCMETHODTYPE;
  449. +
  450. +
  451. +/** SBC params */
  452. +typedef struct OMX_AUDIO_PARAM_SBCTYPE {
  453. + OMX_U32 nSize; /**< size of the structure in bytes */
  454. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  455. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  456. + OMX_U32 nChannels; /**< Number of channels */
  457. + OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
  458. + rate or unknown bit rates */
  459. + OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
  460. + variable or unknown sampling rate. */
  461. + OMX_U32 nBlocks; /**< Number of blocks */
  462. + OMX_U32 nSubbands; /**< Number of subbands */
  463. + OMX_U32 nBitPool; /**< Bitpool value */
  464. + OMX_BOOL bEnableBitrate; /**< Use bitrate value instead of bitpool */
  465. + OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
  466. + OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType; /**< SBC Allocation method type */
  467. +} OMX_AUDIO_PARAM_SBCTYPE;
  468. +
  469. +
  470. +/** ADPCM stream format parameters */
  471. +typedef struct OMX_AUDIO_PARAM_ADPCMTYPE {
  472. + OMX_U32 nSize; /**< size of the structure in bytes */
  473. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  474. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  475. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  476. + necessarily the same as the number of channels
  477. + to be rendered. */
  478. + OMX_U32 nBitsPerSample; /**< Number of bits in each sample */
  479. + OMX_U32 nSampleRate; /**< Sampling rate of the source data. Use 0 for
  480. + variable or unknown sampling rate. */
  481. +} OMX_AUDIO_PARAM_ADPCMTYPE;
  482. +
  483. +
  484. +/** G723 rate */
  485. +typedef enum OMX_AUDIO_G723RATE {
  486. + OMX_AUDIO_G723ModeUnused = 0, /**< AMRNB Mode unused / unknown */
  487. + OMX_AUDIO_G723ModeLow, /**< 5300 bps */
  488. + OMX_AUDIO_G723ModeHigh, /**< 6300 bps */
  489. + OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  490. + OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  491. + OMX_AUDIO_G723ModeMax = 0x7FFFFFFF
  492. +} OMX_AUDIO_G723RATE;
  493. +
  494. +
  495. +/** G723 - Sample rate must be 8 KHz */
  496. +typedef struct OMX_AUDIO_PARAM_G723TYPE {
  497. + OMX_U32 nSize; /**< size of the structure in bytes */
  498. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  499. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  500. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  501. + necessarily the same as the number of channels
  502. + to be rendered. */
  503. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  504. + OMX_AUDIO_G723RATE eBitRate; /**< todo: Should this be moved to a config? */
  505. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  506. + OMX_BOOL bPostFilter; /**< Enable Post Filter */
  507. +} OMX_AUDIO_PARAM_G723TYPE;
  508. +
  509. +
  510. +/** ITU G726 (ADPCM) rate */
  511. +typedef enum OMX_AUDIO_G726MODE {
  512. + OMX_AUDIO_G726ModeUnused = 0, /**< G726 Mode unused / unknown */
  513. + OMX_AUDIO_G726Mode16, /**< 16 kbps */
  514. + OMX_AUDIO_G726Mode24, /**< 24 kbps */
  515. + OMX_AUDIO_G726Mode32, /**< 32 kbps, most common rate, also G721 */
  516. + OMX_AUDIO_G726Mode40, /**< 40 kbps */
  517. + OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  518. + OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  519. + OMX_AUDIO_G726ModeMax = 0x7FFFFFFF
  520. +} OMX_AUDIO_G726MODE;
  521. +
  522. +
  523. +/** G.726 stream format parameters - must be at 8KHz */
  524. +typedef struct OMX_AUDIO_PARAM_G726TYPE {
  525. + OMX_U32 nSize; /**< size of the structure in bytes */
  526. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  527. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  528. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  529. + necessarily the same as the number of channels
  530. + to be rendered. */
  531. + OMX_AUDIO_G726MODE eG726Mode;
  532. +} OMX_AUDIO_PARAM_G726TYPE;
  533. +
  534. +
  535. +/** G729 coder type */
  536. +typedef enum OMX_AUDIO_G729TYPE {
  537. + OMX_AUDIO_G729 = 0, /**< ITU G.729 encoded data */
  538. + OMX_AUDIO_G729A, /**< ITU G.729 annex A encoded data */
  539. + OMX_AUDIO_G729B, /**< ITU G.729 with annex B encoded data */
  540. + OMX_AUDIO_G729AB, /**< ITU G.729 annexes A and B encoded data */
  541. + OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  542. + OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  543. + OMX_AUDIO_G729Max = 0x7FFFFFFF
  544. +} OMX_AUDIO_G729TYPE;
  545. +
  546. +
  547. +/** G729 stream format parameters - fixed 6KHz sample rate */
  548. +typedef struct OMX_AUDIO_PARAM_G729TYPE {
  549. + OMX_U32 nSize; /**< size of the structure in bytes */
  550. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  551. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  552. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  553. + necessarily the same as the number of channels
  554. + to be rendered. */
  555. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  556. + OMX_AUDIO_G729TYPE eBitType;
  557. +} OMX_AUDIO_PARAM_G729TYPE;
  558. +
  559. +
  560. +/** AMR Frame format */
  561. +typedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE {
  562. + OMX_AUDIO_AMRFrameFormatConformance = 0, /**< Frame Format is AMR Conformance
  563. + (Standard) Format */
  564. + OMX_AUDIO_AMRFrameFormatIF1, /**< Frame Format is AMR Interface
  565. + Format 1 */
  566. + OMX_AUDIO_AMRFrameFormatIF2, /**< Frame Format is AMR Interface
  567. + Format 2*/
  568. + OMX_AUDIO_AMRFrameFormatFSF, /**< Frame Format is AMR File Storage
  569. + Format */
  570. + OMX_AUDIO_AMRFrameFormatRTPPayload, /**< Frame Format is AMR Real-Time
  571. + Transport Protocol Payload Format */
  572. + OMX_AUDIO_AMRFrameFormatITU, /**< Frame Format is ITU Format (added at Motorola request) */
  573. + OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  574. + OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  575. + OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF
  576. +} OMX_AUDIO_AMRFRAMEFORMATTYPE;
  577. +
  578. +
  579. +/** AMR band mode */
  580. +typedef enum OMX_AUDIO_AMRBANDMODETYPE {
  581. + OMX_AUDIO_AMRBandModeUnused = 0, /**< AMRNB Mode unused / unknown */
  582. + OMX_AUDIO_AMRBandModeNB0, /**< AMRNB Mode 0 = 4750 bps */
  583. + OMX_AUDIO_AMRBandModeNB1, /**< AMRNB Mode 1 = 5150 bps */
  584. + OMX_AUDIO_AMRBandModeNB2, /**< AMRNB Mode 2 = 5900 bps */
  585. + OMX_AUDIO_AMRBandModeNB3, /**< AMRNB Mode 3 = 6700 bps */
  586. + OMX_AUDIO_AMRBandModeNB4, /**< AMRNB Mode 4 = 7400 bps */
  587. + OMX_AUDIO_AMRBandModeNB5, /**< AMRNB Mode 5 = 7950 bps */
  588. + OMX_AUDIO_AMRBandModeNB6, /**< AMRNB Mode 6 = 10200 bps */
  589. + OMX_AUDIO_AMRBandModeNB7, /**< AMRNB Mode 7 = 12200 bps */
  590. + OMX_AUDIO_AMRBandModeWB0, /**< AMRWB Mode 0 = 6600 bps */
  591. + OMX_AUDIO_AMRBandModeWB1, /**< AMRWB Mode 1 = 8850 bps */
  592. + OMX_AUDIO_AMRBandModeWB2, /**< AMRWB Mode 2 = 12650 bps */
  593. + OMX_AUDIO_AMRBandModeWB3, /**< AMRWB Mode 3 = 14250 bps */
  594. + OMX_AUDIO_AMRBandModeWB4, /**< AMRWB Mode 4 = 15850 bps */
  595. + OMX_AUDIO_AMRBandModeWB5, /**< AMRWB Mode 5 = 18250 bps */
  596. + OMX_AUDIO_AMRBandModeWB6, /**< AMRWB Mode 6 = 19850 bps */
  597. + OMX_AUDIO_AMRBandModeWB7, /**< AMRWB Mode 7 = 23050 bps */
  598. + OMX_AUDIO_AMRBandModeWB8, /**< AMRWB Mode 8 = 23850 bps */
  599. + OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  600. + OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  601. + OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF
  602. +} OMX_AUDIO_AMRBANDMODETYPE;
  603. +
  604. +
  605. +/** AMR Discontinuous Transmission mode */
  606. +typedef enum OMX_AUDIO_AMRDTXMODETYPE {
  607. + OMX_AUDIO_AMRDTXModeOff = 0, /**< AMR Discontinuous Transmission Mode is disabled */
  608. + OMX_AUDIO_AMRDTXModeOnVAD1, /**< AMR Discontinuous Transmission Mode using
  609. + Voice Activity Detector 1 (VAD1) is enabled */
  610. + OMX_AUDIO_AMRDTXModeOnVAD2, /**< AMR Discontinuous Transmission Mode using
  611. + Voice Activity Detector 2 (VAD2) is enabled */
  612. + OMX_AUDIO_AMRDTXModeOnAuto, /**< The codec will automatically select between
  613. + Off, VAD1 or VAD2 modes */
  614. +
  615. + OMX_AUDIO_AMRDTXasEFR, /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */
  616. +
  617. + OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  618. + OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  619. + OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF
  620. +} OMX_AUDIO_AMRDTXMODETYPE;
  621. +
  622. +
  623. +/** AMR params */
  624. +typedef struct OMX_AUDIO_PARAM_AMRTYPE {
  625. + OMX_U32 nSize; /**< size of the structure in bytes */
  626. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  627. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  628. + OMX_U32 nChannels; /**< Number of channels */
  629. + OMX_U32 nBitRate; /**< Bit rate read only field */
  630. + OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */
  631. + OMX_AUDIO_AMRDTXMODETYPE eAMRDTXMode; /**< AMR DTX Mode enumeration */
  632. + OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */
  633. +} OMX_AUDIO_PARAM_AMRTYPE;
  634. +
  635. +
  636. +/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */
  637. +typedef struct OMX_AUDIO_PARAM_GSMFRTYPE {
  638. + OMX_U32 nSize; /**< size of the structure in bytes */
  639. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  640. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  641. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  642. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  643. +} OMX_AUDIO_PARAM_GSMFRTYPE;
  644. +
  645. +
  646. +/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */
  647. +typedef struct OMX_AUDIO_PARAM_GSMHRTYPE {
  648. + OMX_U32 nSize; /**< size of the structure in bytes */
  649. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  650. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  651. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  652. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  653. +} OMX_AUDIO_PARAM_GSMHRTYPE;
  654. +
  655. +
  656. +/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */
  657. +typedef struct OMX_AUDIO_PARAM_GSMEFRTYPE {
  658. + OMX_U32 nSize; /**< size of the structure in bytes */
  659. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  660. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  661. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  662. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  663. +} OMX_AUDIO_PARAM_GSMEFRTYPE;
  664. +
  665. +
  666. +/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */
  667. +typedef struct OMX_AUDIO_PARAM_TDMAFRTYPE {
  668. + OMX_U32 nSize; /**< size of the structure in bytes */
  669. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  670. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  671. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  672. + necessarily the same as the number of channels
  673. + to be rendered. */
  674. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  675. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  676. +} OMX_AUDIO_PARAM_TDMAFRTYPE;
  677. +
  678. +
  679. +/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */
  680. +typedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE {
  681. + OMX_U32 nSize; /**< size of the structure in bytes */
  682. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  683. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  684. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  685. + necessarily the same as the number of channels
  686. + to be rendered. */
  687. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  688. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  689. +} OMX_AUDIO_PARAM_TDMAEFRTYPE;
  690. +
  691. +
  692. +/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */
  693. +typedef struct OMX_AUDIO_PARAM_PDCFRTYPE {
  694. + OMX_U32 nSize; /**< size of the structure in bytes */
  695. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  696. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  697. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  698. + necessarily the same as the number of channels
  699. + to be rendered. */
  700. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  701. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  702. +} OMX_AUDIO_PARAM_PDCFRTYPE;
  703. +
  704. +
  705. +/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */
  706. +typedef struct OMX_AUDIO_PARAM_PDCEFRTYPE {
  707. + OMX_U32 nSize; /**< size of the structure in bytes */
  708. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  709. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  710. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  711. + necessarily the same as the number of channels
  712. + to be rendered. */
  713. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  714. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  715. +} OMX_AUDIO_PARAM_PDCEFRTYPE;
  716. +
  717. +/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */
  718. +typedef struct OMX_AUDIO_PARAM_PDCHRTYPE {
  719. + OMX_U32 nSize; /**< size of the structure in bytes */
  720. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  721. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  722. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  723. + necessarily the same as the number of channels
  724. + to be rendered. */
  725. + OMX_BOOL bDTX; /**< Enable Discontinuous Transmisssion */
  726. + OMX_BOOL bHiPassFilter; /**< Enable High Pass Filter */
  727. +} OMX_AUDIO_PARAM_PDCHRTYPE;
  728. +
  729. +
  730. +/** CDMA Rate types */
  731. +typedef enum OMX_AUDIO_CDMARATETYPE {
  732. + OMX_AUDIO_CDMARateBlank = 0, /**< CDMA encoded frame is blank */
  733. + OMX_AUDIO_CDMARateFull, /**< CDMA encoded frame in full rate */
  734. + OMX_AUDIO_CDMARateHalf, /**< CDMA encoded frame in half rate */
  735. + OMX_AUDIO_CDMARateQuarter, /**< CDMA encoded frame in quarter rate */
  736. + OMX_AUDIO_CDMARateEighth, /**< CDMA encoded frame in eighth rate (DTX)*/
  737. + OMX_AUDIO_CDMARateErasure, /**< CDMA erasure frame */
  738. + OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  739. + OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  740. + OMX_AUDIO_CDMARateMax = 0x7FFFFFFF
  741. +} OMX_AUDIO_CDMARATETYPE;
  742. +
  743. +
  744. +/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */
  745. +typedef struct OMX_AUDIO_PARAM_QCELP8TYPE {
  746. + OMX_U32 nSize; /**< size of the structure in bytes */
  747. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  748. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  749. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  750. + necessarily the same as the number of channels
  751. + to be rendered. */
  752. + OMX_U32 nBitRate; /**< Bit rate of the input data. Use 0 for variable
  753. + rate or unknown bit rates */
  754. + OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
  755. + OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
  756. + OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
  757. +} OMX_AUDIO_PARAM_QCELP8TYPE;
  758. +
  759. +
  760. +/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */
  761. +typedef struct OMX_AUDIO_PARAM_QCELP13TYPE {
  762. + OMX_U32 nSize; /**< size of the structure in bytes */
  763. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  764. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  765. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  766. + necessarily the same as the number of channels
  767. + to be rendered. */
  768. + OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
  769. + OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
  770. + OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
  771. +} OMX_AUDIO_PARAM_QCELP13TYPE;
  772. +
  773. +
  774. +/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */
  775. +typedef struct OMX_AUDIO_PARAM_EVRCTYPE {
  776. + OMX_U32 nSize; /**< size of the structure in bytes */
  777. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  778. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  779. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  780. + necessarily the same as the number of channels
  781. + to be rendered. */
  782. + OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */
  783. + OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */
  784. + OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
  785. + OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
  786. + OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter */
  787. + OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */
  788. + OMX_BOOL bPostFilter; /**< Enable decoder's post Filter */
  789. +} OMX_AUDIO_PARAM_EVRCTYPE;
  790. +
  791. +
  792. +/** SMV ( up to 8.55kbps coder) stream format parameters */
  793. +typedef struct OMX_AUDIO_PARAM_SMVTYPE {
  794. + OMX_U32 nSize; /**< size of the structure in bytes */
  795. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  796. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  797. + OMX_U32 nChannels; /**< Number of channels in the data stream (not
  798. + necessarily the same as the number of channels
  799. + to be rendered. */
  800. + OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
  801. + OMX_BOOL bRATE_REDUCon; /**< RATE_REDUCtion is requested for this frame */
  802. + OMX_U32 nMinBitRate; /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/
  803. + OMX_U32 nMaxBitRate; /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/
  804. + OMX_BOOL bHiPassFilter; /**< Enable encoder's High Pass Filter ??*/
  805. + OMX_BOOL bNoiseSuppressor; /**< Enable encoder's noise suppressor pre-processing */
  806. + OMX_BOOL bPostFilter; /**< Enable decoder's post Filter ??*/
  807. +} OMX_AUDIO_PARAM_SMVTYPE;
  808. +
  809. +
  810. +/** MIDI Format
  811. + * @ingroup midi
  812. + */
  813. +typedef enum OMX_AUDIO_MIDIFORMATTYPE {
  814. + OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */
  815. + OMX_AUDIO_MIDIFormatSMF0, /**< Standard MIDI File Type 0 */
  816. + OMX_AUDIO_MIDIFormatSMF1, /**< Standard MIDI File Type 1 */
  817. + OMX_AUDIO_MIDIFormatSMF2, /**< Standard MIDI File Type 2 */
  818. + OMX_AUDIO_MIDIFormatSPMIDI, /**< SP-MIDI */
  819. + OMX_AUDIO_MIDIFormatXMF0, /**< eXtensible Music Format type 0 */
  820. + OMX_AUDIO_MIDIFormatXMF1, /**< eXtensible Music Format type 1 */
  821. + OMX_AUDIO_MIDIFormatMobileXMF, /**< Mobile XMF (eXtensible Music Format type 2) */
  822. + OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  823. + OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  824. + OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF
  825. +} OMX_AUDIO_MIDIFORMATTYPE;
  826. +
  827. +
  828. +/** MIDI params
  829. + * @ingroup midi
  830. + */
  831. +typedef struct OMX_AUDIO_PARAM_MIDITYPE {
  832. + OMX_U32 nSize; /**< size of the structure in bytes */
  833. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  834. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  835. + OMX_U32 nFileSize; /**< size of the MIDI file in bytes, where the entire
  836. + MIDI file passed in, otherwise if 0x0, the MIDI data
  837. + is merged and streamed (instead of passed as an
  838. + entire MIDI file) */
  839. + OMX_BU32 sMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic
  840. + voices. A value of zero indicates that the default
  841. + polyphony of the device is used */
  842. + OMX_BOOL bLoadDefaultSound; /**< Whether to load default sound
  843. + bank at initialization */
  844. + OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */
  845. +} OMX_AUDIO_PARAM_MIDITYPE;
  846. +
  847. +
  848. +/** Type of the MIDI sound bank
  849. + * @ingroup midi
  850. + */
  851. +typedef enum OMX_AUDIO_MIDISOUNDBANKTYPE {
  852. + OMX_AUDIO_MIDISoundBankUnused = 0, /**< unused/unknown soundbank type */
  853. + OMX_AUDIO_MIDISoundBankDLS1, /**< DLS version 1 */
  854. + OMX_AUDIO_MIDISoundBankDLS2, /**< DLS version 2 */
  855. + OMX_AUDIO_MIDISoundBankMobileDLSBase, /**< Mobile DLS, using the base functionality */
  856. + OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */
  857. + OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  858. + OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  859. + OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF
  860. +} OMX_AUDIO_MIDISOUNDBANKTYPE;
  861. +
  862. +
  863. +/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank
  864. + * @ingroup midi
  865. + */
  866. +typedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE {
  867. + OMX_AUDIO_MIDISoundBankLayoutUnused = 0, /**< unused/unknown soundbank type */
  868. + OMX_AUDIO_MIDISoundBankLayoutGM, /**< GS layout (based on bank MSB 0x00) */
  869. + OMX_AUDIO_MIDISoundBankLayoutGM2, /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */
  870. + OMX_AUDIO_MIDISoundBankLayoutUser, /**< Does not conform to any bank numbering standards */
  871. + OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  872. + OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  873. + OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF
  874. +} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE;
  875. +
  876. +
  877. +/** MIDI params to load/unload user soundbank
  878. + * @ingroup midi
  879. + */
  880. +typedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE {
  881. + OMX_U32 nSize; /**< size of the structure in bytes */
  882. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  883. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  884. + OMX_U32 nDLSIndex; /**< DLS file index to be loaded */
  885. + OMX_U32 nDLSSize; /**< Size in bytes */
  886. + OMX_PTR pDLSData; /**< Pointer to DLS file data */
  887. + OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank; /**< Midi sound bank type enumeration */
  888. + OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */
  889. +} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE;
  890. +
  891. +
  892. +/** Structure for Live MIDI events and MIP messages.
  893. + * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.)
  894. + * @ingroup midi
  895. + */
  896. +typedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE {
  897. + OMX_U32 nSize; /**< size of the structure in bytes */
  898. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  899. + OMX_U32 nPortIndex; /**< Port that this structure applies to */
  900. + OMX_U32 nMidiEventSize; /**< Size of immediate MIDI events or MIP message in bytes */
  901. + OMX_U8 nMidiEvents[1]; /**< MIDI event array to be rendered immediately, or an
  902. + array for the MIP message buffer, where the size is
  903. + indicated by nMidiEventSize */
  904. +} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE;
  905. +
  906. +
  907. +/** MIDI sound bank/ program pair in a given channel
  908. + * @ingroup midi
  909. + */
  910. +typedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE {
  911. + OMX_U32 nSize; /**< size of the structure in bytes */
  912. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  913. + OMX_U32 nPortIndex; /**< Port that this structure applies to */
  914. + OMX_U32 nChannel; /**< Valid channel values range from 1 to 16 */
  915. + OMX_U16 nIDProgram; /**< Valid program ID range is 1 to 128 */
  916. + OMX_U16 nIDSoundBank; /**< Sound bank ID */
  917. + OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks
  918. + by index if multiple banks are present */
  919. +} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE;
  920. +
  921. +
  922. +/** MIDI control
  923. + * @ingroup midi
  924. + */
  925. +typedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE {
  926. + OMX_U32 nSize; /**< size of the structure in bytes */
  927. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  928. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  929. + OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10
  930. + format based on JAVA MMAPI (JSR-135) requirement */
  931. + OMX_BU32 sPlayBackRate; /**< Relative playback rate, stored as Q14.17 fixed-point
  932. + number based on JSR-135 requirement */
  933. + OMX_BU32 sTempo ; /**< Tempo in beats per minute (BPM), stored as Q22.10
  934. + fixed-point number based on JSR-135 requirement */
  935. + OMX_U32 nMaxPolyphony; /**< Specifies the maximum simultaneous polyphonic
  936. + voices. A value of zero indicates that the default
  937. + polyphony of the device is used */
  938. + OMX_U32 nNumRepeat; /**< Number of times to repeat playback */
  939. + OMX_U32 nStopTime; /**< Time in milliseconds to indicate when playback
  940. + will stop automatically. Set to zero if not used */
  941. + OMX_U16 nChannelMuteMask; /**< 16 bit mask for channel mute status */
  942. + OMX_U16 nChannelSoloMask; /**< 16 bit mask for channel solo status */
  943. + OMX_U32 nTrack0031MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */
  944. + OMX_U32 nTrack3263MuteMask; /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */
  945. + OMX_U32 nTrack0031SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */
  946. + OMX_U32 nTrack3263SoloMask; /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */
  947. +
  948. +} OMX_AUDIO_CONFIG_MIDICONTROLTYPE;
  949. +
  950. +
  951. +/** MIDI Playback States
  952. + * @ingroup midi
  953. + */
  954. +typedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE {
  955. + OMX_AUDIO_MIDIPlayBackStateUnknown = 0, /**< Unknown state or state does not map to
  956. + other defined states */
  957. + OMX_AUDIO_MIDIPlayBackStateClosedEngaged, /**< No MIDI resource is currently open.
  958. + The MIDI engine is currently processing
  959. + MIDI events. */
  960. + OMX_AUDIO_MIDIPlayBackStateParsing, /**< A MIDI resource is open and is being
  961. + primed. The MIDI engine is currently
  962. + processing MIDI events. */
  963. + OMX_AUDIO_MIDIPlayBackStateOpenEngaged, /**< A MIDI resource is open and primed but
  964. + not playing. The MIDI engine is currently
  965. + processing MIDI events. The transition to
  966. + this state is only possible from the
  967. + OMX_AUDIO_MIDIPlayBackStatePlaying state,
  968. + when the 'playback head' reaches the end
  969. + of media data or the playback stops due
  970. + to stop time set.*/
  971. + OMX_AUDIO_MIDIPlayBackStatePlaying, /**< A MIDI resource is open and currently
  972. + playing. The MIDI engine is currently
  973. + processing MIDI events.*/
  974. + OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS
  975. + resource constraints */
  976. + OMX_AUDIO_MIDIPlayBackStatePlayingSilently, /**< Due to system resource constraints and
  977. + SP-MIDI content constraints, there is
  978. + no audible MIDI content during playback
  979. + currently. The situation may change if
  980. + resources are freed later.*/
  981. + OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  982. + OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  983. + OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF
  984. +} OMX_AUDIO_MIDIPLAYBACKSTATETYPE;
  985. +
  986. +
  987. +/** MIDI status
  988. + * @ingroup midi
  989. + */
  990. +typedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE {
  991. + OMX_U32 nSize; /**< size of the structure in bytes */
  992. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  993. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  994. + OMX_U16 nNumTracks; /**< Number of MIDI tracks in the file, read only field.
  995. + NOTE: May not return a meaningful value until the entire
  996. + file is parsed and buffered. */
  997. + OMX_U32 nDuration; /**< The length of the currently open MIDI resource
  998. + in milliseconds. NOTE: May not return a meaningful value
  999. + until the entire file is parsed and buffered. */
  1000. + OMX_U32 nPosition; /**< Current Position of the MIDI resource being played
  1001. + in milliseconds */
  1002. + OMX_BOOL bVibra; /**< Does Vibra track exist? NOTE: May not return a meaningful
  1003. + value until the entire file is parsed and buffered. */
  1004. + OMX_U32 nNumMetaEvents; /**< Total number of MIDI Meta Events in the currently
  1005. + open MIDI resource. NOTE: May not return a meaningful value
  1006. + until the entire file is parsed and buffered. */
  1007. + OMX_U32 nNumActiveVoices; /**< Number of active voices in the currently playing
  1008. + MIDI resource. NOTE: May not return a meaningful value until
  1009. + the entire file is parsed and buffered. */
  1010. + OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState; /**< MIDI playback state enumeration, read only field */
  1011. +} OMX_AUDIO_CONFIG_MIDISTATUSTYPE;
  1012. +
  1013. +
  1014. +/** MIDI Meta Event structure one per Meta Event.
  1015. + * MIDI Meta Events are like audio metadata, except that they are interspersed
  1016. + * with the MIDI content throughout the file and are not localized in the header.
  1017. + * As such, it is necessary to retrieve information about these Meta Events from
  1018. + * the engine, as it encounters these Meta Events within the MIDI content.
  1019. + * For example, SMF files can have up to 14 types of MIDI Meta Events (copyright,
  1020. + * author, default tempo, etc.) scattered throughout the file.
  1021. + * @ingroup midi
  1022. + */
  1023. +typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE {
  1024. + OMX_U32 nSize; /**< size of the structure in bytes */
  1025. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1026. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1027. + OMX_U32 nIndex; /**< Index of Meta Event */
  1028. + OMX_U8 nMetaEventType; /**< Meta Event Type, 7bits (i.e. 0 - 127) */
  1029. + OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */
  1030. + OMX_U32 nTrack; /**< track number for the meta event */
  1031. + OMX_U32 nPosition; /**< Position of the meta-event in milliseconds */
  1032. +} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE;
  1033. +
  1034. +
  1035. +/** MIDI Meta Event Data structure - one per Meta Event.
  1036. + * @ingroup midi
  1037. + */
  1038. +typedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE {
  1039. + OMX_U32 nSize; /**< size of the structure in bytes */
  1040. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1041. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1042. + OMX_U32 nIndex; /**< Index of Meta Event */
  1043. + OMX_U32 nMetaEventSize; /**< size of the Meta Event in bytes */
  1044. + OMX_U8 nData[1]; /**< array of one or more bytes of meta data
  1045. + as indicated by the nMetaEventSize field */
  1046. +} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE;
  1047. +
  1048. +
  1049. +/** Audio Volume adjustment for a port */
  1050. +typedef struct OMX_AUDIO_CONFIG_VOLUMETYPE {
  1051. + OMX_U32 nSize; /**< size of the structure in bytes */
  1052. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1053. + OMX_U32 nPortIndex; /**< Port index indicating which port to
  1054. + set. Select the input port to set
  1055. + just that port's volume. Select the
  1056. + output port to adjust the master
  1057. + volume. */
  1058. + OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100)
  1059. + or logarithmic scale (mB) */
  1060. + OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR
  1061. + Volume logarithmic setting for this port. The values
  1062. + for volume are in mB (millibels = 1/100 dB) relative
  1063. + to a gain of 1 (e.g. the output is the same as the
  1064. + input level). Values are in mB from nMax
  1065. + (maximum volume) to nMin mB (typically negative).
  1066. + Since the volume is "voltage"
  1067. + and not a "power", it takes a setting of
  1068. + -600 mB to decrease the volume by 1/2. If
  1069. + a component cannot accurately set the
  1070. + volume to the requested value, it must
  1071. + set the volume to the closest value BELOW
  1072. + the requested value. When getting the
  1073. + volume setting, the current actual volume
  1074. + must be returned. */
  1075. +} OMX_AUDIO_CONFIG_VOLUMETYPE;
  1076. +
  1077. +
  1078. +/** Audio Volume adjustment for a channel */
  1079. +typedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE {
  1080. + OMX_U32 nSize; /**< size of the structure in bytes */
  1081. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1082. + OMX_U32 nPortIndex; /**< Port index indicating which port to
  1083. + set. Select the input port to set
  1084. + just that port's volume. Select the
  1085. + output port to adjust the master
  1086. + volume. */
  1087. + OMX_U32 nChannel; /**< channel to select from 0 to N-1,
  1088. + using OMX_ALL to apply volume settings
  1089. + to all channels */
  1090. + OMX_BOOL bLinear; /**< Is the volume to be set in linear (0.100) or
  1091. + logarithmic scale (mB) */
  1092. + OMX_BS32 sVolume; /**< Volume linear setting in the 0..100 range, OR
  1093. + Volume logarithmic setting for this port.
  1094. + The values for volume are in mB
  1095. + (millibels = 1/100 dB) relative to a gain
  1096. + of 1 (e.g. the output is the same as the
  1097. + input level). Values are in mB from nMax
  1098. + (maximum volume) to nMin mB (typically negative).
  1099. + Since the volume is "voltage"
  1100. + and not a "power", it takes a setting of
  1101. + -600 mB to decrease the volume by 1/2. If
  1102. + a component cannot accurately set the
  1103. + volume to the requested value, it must
  1104. + set the volume to the closest value BELOW
  1105. + the requested value. When getting the
  1106. + volume setting, the current actual volume
  1107. + must be returned. */
  1108. + OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel,
  1109. + FALSE otherwise */
  1110. +} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE;
  1111. +
  1112. +
  1113. +/** Audio balance setting */
  1114. +typedef struct OMX_AUDIO_CONFIG_BALANCETYPE {
  1115. + OMX_U32 nSize; /**< size of the structure in bytes */
  1116. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1117. + OMX_U32 nPortIndex; /**< Port index indicating which port to
  1118. + set. Select the input port to set
  1119. + just that port's balance. Select the
  1120. + output port to adjust the master
  1121. + balance. */
  1122. + OMX_S32 nBalance; /**< balance setting for this port
  1123. + (-100 to 100, where -100 indicates
  1124. + all left, and no right */
  1125. +} OMX_AUDIO_CONFIG_BALANCETYPE;
  1126. +
  1127. +
  1128. +/** Audio Port mute */
  1129. +typedef struct OMX_AUDIO_CONFIG_MUTETYPE {
  1130. + OMX_U32 nSize; /**< size of the structure in bytes */
  1131. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1132. + OMX_U32 nPortIndex; /**< Port index indicating which port to
  1133. + set. Select the input port to set
  1134. + just that port's mute. Select the
  1135. + output port to adjust the master
  1136. + mute. */
  1137. + OMX_BOOL bMute; /**< Mute setting for this port */
  1138. +} OMX_AUDIO_CONFIG_MUTETYPE;
  1139. +
  1140. +
  1141. +/** Audio Channel mute */
  1142. +typedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE {
  1143. + OMX_U32 nSize; /**< size of the structure in bytes */
  1144. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1145. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1146. + OMX_U32 nChannel; /**< channel to select from 0 to N-1,
  1147. + using OMX_ALL to apply mute settings
  1148. + to all channels */
  1149. + OMX_BOOL bMute; /**< Mute setting for this channel */
  1150. + OMX_BOOL bIsMIDI; /**< TRUE if nChannel refers to a MIDI channel,
  1151. + FALSE otherwise */
  1152. +} OMX_AUDIO_CONFIG_CHANNELMUTETYPE;
  1153. +
  1154. +
  1155. +
  1156. +/** Enable / Disable for loudness control, which boosts bass and to a
  1157. + * smaller extent high end frequencies to compensate for hearing
  1158. + * ability at the extreme ends of the audio spectrum
  1159. + */
  1160. +typedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE {
  1161. + OMX_U32 nSize; /**< size of the structure in bytes */
  1162. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1163. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1164. + OMX_BOOL bLoudness; /**< Enable/disable for loudness */
  1165. +} OMX_AUDIO_CONFIG_LOUDNESSTYPE;
  1166. +
  1167. +
  1168. +/** Enable / Disable for bass, which controls low frequencies
  1169. + */
  1170. +typedef struct OMX_AUDIO_CONFIG_BASSTYPE {
  1171. + OMX_U32 nSize; /**< size of the structure in bytes */
  1172. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1173. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1174. + OMX_BOOL bEnable; /**< Enable/disable for bass control */
  1175. + OMX_S32 nBass; /**< bass setting for the port, as a
  1176. + continuous value from -100 to 100
  1177. + (0 means no change in bass level)*/
  1178. +} OMX_AUDIO_CONFIG_BASSTYPE;
  1179. +
  1180. +
  1181. +/** Enable / Disable for treble, which controls high frequencies tones
  1182. + */
  1183. +typedef struct OMX_AUDIO_CONFIG_TREBLETYPE {
  1184. + OMX_U32 nSize; /**< size of the structure in bytes */
  1185. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1186. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1187. + OMX_BOOL bEnable; /**< Enable/disable for treble control */
  1188. + OMX_S32 nTreble; /**< treble setting for the port, as a
  1189. + continuous value from -100 to 100
  1190. + (0 means no change in treble level) */
  1191. +} OMX_AUDIO_CONFIG_TREBLETYPE;
  1192. +
  1193. +
  1194. +/** An equalizer is typically used for two reasons: to compensate for an
  1195. + * sub-optimal frequency response of a system to make it sound more natural
  1196. + * or to create intentionally some unnatural coloring to the sound to create
  1197. + * an effect.
  1198. + * @ingroup effects
  1199. + */
  1200. +typedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE {
  1201. + OMX_U32 nSize; /**< size of the structure in bytes */
  1202. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1203. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1204. + OMX_BOOL bEnable; /**< Enable/disable for equalizer */
  1205. + OMX_BU32 sBandIndex; /**< Band number to be set. Upper Limit is
  1206. + N-1, where N is the number of bands, lower limit is 0 */
  1207. + OMX_BU32 sCenterFreq; /**< Center frequecies in Hz. This is a
  1208. + read only element and is used to determine
  1209. + the lower, center and upper frequency of
  1210. + this band. */
  1211. + OMX_BS32 sBandLevel; /**< band level in millibels */
  1212. +} OMX_AUDIO_CONFIG_EQUALIZERTYPE;
  1213. +
  1214. +
  1215. +/** Stereo widening mode type
  1216. + * @ingroup effects
  1217. + */
  1218. +typedef enum OMX_AUDIO_STEREOWIDENINGTYPE {
  1219. + OMX_AUDIO_StereoWideningHeadphones, /**< Stereo widening for loudspeakers */
  1220. + OMX_AUDIO_StereoWideningLoudspeakers, /**< Stereo widening for closely spaced loudspeakers */
  1221. + OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1222. + OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1223. + OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF
  1224. +} OMX_AUDIO_STEREOWIDENINGTYPE;
  1225. +
  1226. +
  1227. +/** Control for stereo widening, which is a special 2-channel
  1228. + * case of the audio virtualizer effect. For example, for 5.1-channel
  1229. + * output, it translates to virtual surround sound.
  1230. + * @ingroup effects
  1231. + */
  1232. +typedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE {
  1233. + OMX_U32 nSize; /**< size of the structure in bytes */
  1234. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1235. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1236. + OMX_BOOL bEnable; /**< Enable/disable for stereo widening control */
  1237. + OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */
  1238. + OMX_U32 nStereoWidening; /**< stereo widening setting for the port,
  1239. + as a continuous value from 0 to 100 */
  1240. +} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE;
  1241. +
  1242. +
  1243. +/** The chorus effect (or ``choralizer'') is any signal processor which makes
  1244. + * one sound source (such as a voice) sound like many such sources singing
  1245. + * (or playing) in unison. Since performance in unison is never exact, chorus
  1246. + * effects simulate this by making independently modified copies of the input
  1247. + * signal. Modifications may include (1) delay, (2) frequency shift, and
  1248. + * (3) amplitude modulation.
  1249. + * @ingroup effects
  1250. + */
  1251. +typedef struct OMX_AUDIO_CONFIG_CHORUSTYPE {
  1252. + OMX_U32 nSize; /**< size of the structure in bytes */
  1253. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1254. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1255. + OMX_BOOL bEnable; /**< Enable/disable for chorus */
  1256. + OMX_BU32 sDelay; /**< average delay in milliseconds */
  1257. + OMX_BU32 sModulationRate; /**< rate of modulation in millihertz */
  1258. + OMX_U32 nModulationDepth; /**< depth of modulation as a percentage of
  1259. + delay (i.e. 0 to 100) */
  1260. + OMX_BU32 nFeedback; /**< Feedback from chorus output to input in percentage */
  1261. +} OMX_AUDIO_CONFIG_CHORUSTYPE;
  1262. +
  1263. +
  1264. +/** Reverberation is part of the reflected sound that follows the early
  1265. + * reflections. In a typical room, this consists of a dense succession of
  1266. + * echoes whose energy decays exponentially. The reverberation effect structure
  1267. + * as defined here includes both (early) reflections as well as (late) reverberations.
  1268. + * @ingroup effects
  1269. + */
  1270. +typedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE {
  1271. + OMX_U32 nSize; /**< size of the structure in bytes */
  1272. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1273. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1274. + OMX_BOOL bEnable; /**< Enable/disable for reverberation control */
  1275. + OMX_BS32 sRoomLevel; /**< Intensity level for the whole room effect
  1276. + (i.e. both early reflections and late
  1277. + reverberation) in millibels */
  1278. + OMX_BS32 sRoomHighFreqLevel; /**< Attenuation at high frequencies
  1279. + relative to the intensity at low
  1280. + frequencies in millibels */
  1281. + OMX_BS32 sReflectionsLevel; /**< Intensity level of early reflections
  1282. + (relative to room value), in millibels */
  1283. + OMX_BU32 sReflectionsDelay; /**< Delay time of the first reflection relative
  1284. + to the direct path, in milliseconds */
  1285. + OMX_BS32 sReverbLevel; /**< Intensity level of late reverberation
  1286. + relative to room level, in millibels */
  1287. + OMX_BU32 sReverbDelay; /**< Time delay from the first early reflection
  1288. + to the beginning of the late reverberation
  1289. + section, in milliseconds */
  1290. + OMX_BU32 sDecayTime; /**< Late reverberation decay time at low
  1291. + frequencies, in milliseconds */
  1292. + OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative
  1293. + to low frequency decay time in percent */
  1294. + OMX_U32 nDensity; /**< Modal density in the late reverberation decay,
  1295. + in percent (i.e. 0 - 100) */
  1296. + OMX_U32 nDiffusion; /**< Echo density in the late reverberation decay,
  1297. + in percent (i.e. 0 - 100) */
  1298. + OMX_BU32 sReferenceHighFreq; /**< Reference high frequency in Hertz. This is
  1299. + the frequency used as the reference for all
  1300. + the high-frequency settings above */
  1301. +
  1302. +} OMX_AUDIO_CONFIG_REVERBERATIONTYPE;
  1303. +
  1304. +
  1305. +/** Possible settings for the Echo Cancelation structure to use
  1306. + * @ingroup effects
  1307. + */
  1308. +typedef enum OMX_AUDIO_ECHOCANTYPE {
  1309. + OMX_AUDIO_EchoCanOff = 0, /**< Echo Cancellation is disabled */
  1310. + OMX_AUDIO_EchoCanNormal, /**< Echo Cancellation normal operation -
  1311. + echo from plastics and face */
  1312. + OMX_AUDIO_EchoCanHFree, /**< Echo Cancellation optimized for
  1313. + Hands Free operation */
  1314. + OMX_AUDIO_EchoCanCarKit, /**< Echo Cancellation optimized for
  1315. + Car Kit (longer echo) */
  1316. + OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1317. + OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1318. + OMX_AUDIO_EchoCanMax = 0x7FFFFFFF
  1319. +} OMX_AUDIO_ECHOCANTYPE;
  1320. +
  1321. +
  1322. +/** Enable / Disable for echo cancelation, which removes undesired echo's
  1323. + * from the audio
  1324. + * @ingroup effects
  1325. + */
  1326. +typedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE {
  1327. + OMX_U32 nSize; /**< size of the structure in bytes */
  1328. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1329. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1330. + OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */
  1331. +} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE;
  1332. +
  1333. +
  1334. +/** Enable / Disable for noise reduction, which undesired noise from
  1335. + * the audio
  1336. + * @ingroup effects
  1337. + */
  1338. +typedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE {
  1339. + OMX_U32 nSize; /**< size of the structure in bytes */
  1340. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1341. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1342. + OMX_BOOL bNoiseReduction; /**< Enable/disable for noise reduction */
  1343. +} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE;
  1344. +
  1345. +/** @} */
  1346. +
  1347. +#ifdef __cplusplus
  1348. +}
  1349. +#endif /* __cplusplus */
  1350. +
  1351. +#endif
  1352. +/* File EOF */
  1353. +
  1354. diff --git a/sf-extra/omx-il/OMX_Component.h b/sf-extra/omx-il/OMX_Component.h
  1355. new file mode 100644
  1356. index 00000000..56fd37e9
  1357. --- /dev/null
  1358. +++ b/sf-extra/omx-il/OMX_Component.h
  1359. @@ -0,0 +1,569 @@
  1360. +/*
  1361. + * Copyright (c) 2008 The Khronos Group Inc.
  1362. + *
  1363. + * Permission is hereby granted, free of charge, to any person obtaining
  1364. + * a copy of this software and associated documentation files (the
  1365. + * "Software"), to deal in the Software without restriction, including
  1366. + * without limitation the rights to use, copy, modify, merge, publish,
  1367. + * distribute, sublicense, and/or sell copies of the Software, and to
  1368. + * permit persons to whom the Software is furnished to do so, subject
  1369. + * to the following conditions:
  1370. + * The above copyright notice and this permission notice shall be included
  1371. + * in all copies or substantial portions of the Software.
  1372. + *
  1373. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  1374. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  1375. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  1376. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  1377. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  1378. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  1379. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  1380. + *
  1381. + */
  1382. +
  1383. +/** OMX_Component.h - OpenMax IL version 1.1.2
  1384. + * The OMX_Component header file contains the definitions used to define
  1385. + * the public interface of a component. This header file is intended to
  1386. + * be used by both the application and the component.
  1387. + */
  1388. +
  1389. +#ifndef OMX_Component_h
  1390. +#define OMX_Component_h
  1391. +
  1392. +#ifdef __cplusplus
  1393. +extern "C" {
  1394. +#endif /* __cplusplus */
  1395. +
  1396. +
  1397. +
  1398. +/* Each OMX header must include all required header files to allow the
  1399. + * header to compile without errors. The includes below are required
  1400. + * for this header file to compile successfully
  1401. + */
  1402. +
  1403. +#include <OMX_Audio.h>
  1404. +#include <OMX_Video.h>
  1405. +#include <OMX_Image.h>
  1406. +#include <OMX_Other.h>
  1407. +
  1408. +/** @ingroup comp */
  1409. +typedef enum OMX_PORTDOMAINTYPE {
  1410. + OMX_PortDomainAudio,
  1411. + OMX_PortDomainVideo,
  1412. + OMX_PortDomainImage,
  1413. + OMX_PortDomainOther,
  1414. + OMX_PortDomainKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1415. + OMX_PortDomainVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1416. + OMX_PortDomainMax = 0x7ffffff
  1417. +} OMX_PORTDOMAINTYPE;
  1418. +
  1419. +/** @ingroup comp */
  1420. +typedef struct OMX_PARAM_PORTDEFINITIONTYPE {
  1421. + OMX_U32 nSize; /**< Size of the structure in bytes */
  1422. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1423. + OMX_U32 nPortIndex; /**< Port number the structure applies to */
  1424. + OMX_DIRTYPE eDir; /**< Direction (input or output) of this port */
  1425. + OMX_U32 nBufferCountActual; /**< The actual number of buffers allocated on this port */
  1426. + OMX_U32 nBufferCountMin; /**< The minimum number of buffers this port requires */
  1427. + OMX_U32 nBufferSize; /**< Size, in bytes, for buffers to be used for this channel */
  1428. + OMX_BOOL bEnabled; /**< Ports default to enabled and are enabled/disabled by
  1429. + OMX_CommandPortEnable/OMX_CommandPortDisable.
  1430. + When disabled a port is unpopulated. A disabled port
  1431. + is not populated with buffers on a transition to IDLE. */
  1432. + OMX_BOOL bPopulated; /**< Port is populated with all of its buffers as indicated by
  1433. + nBufferCountActual. A disabled port is always unpopulated.
  1434. + An enabled port is populated on a transition to OMX_StateIdle
  1435. + and unpopulated on a transition to loaded. */
  1436. + OMX_PORTDOMAINTYPE eDomain; /**< Domain of the port. Determines the contents of metadata below. */
  1437. + union {
  1438. + OMX_AUDIO_PORTDEFINITIONTYPE audio;
  1439. + OMX_VIDEO_PORTDEFINITIONTYPE video;
  1440. + OMX_IMAGE_PORTDEFINITIONTYPE image;
  1441. + OMX_OTHER_PORTDEFINITIONTYPE other;
  1442. + } format;
  1443. + OMX_BOOL bBuffersContiguous;
  1444. + OMX_U32 nBufferAlignment;
  1445. +} OMX_PARAM_PORTDEFINITIONTYPE;
  1446. +
  1447. +/** @ingroup comp */
  1448. +typedef struct OMX_PARAM_U32TYPE {
  1449. + OMX_U32 nSize; /**< Size of this structure, in Bytes */
  1450. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1451. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  1452. + OMX_U32 nU32; /**< U32 value */
  1453. +} OMX_PARAM_U32TYPE;
  1454. +
  1455. +/** @ingroup rpm */
  1456. +typedef enum OMX_SUSPENSIONPOLICYTYPE {
  1457. + OMX_SuspensionDisabled, /**< No suspension; v1.0 behavior */
  1458. + OMX_SuspensionEnabled, /**< Suspension allowed */
  1459. + OMX_SuspensionPolicyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1460. + OMX_SuspensionPolicyStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1461. + OMX_SuspensionPolicyMax = 0x7fffffff
  1462. +} OMX_SUSPENSIONPOLICYTYPE;
  1463. +
  1464. +/** @ingroup rpm */
  1465. +typedef struct OMX_PARAM_SUSPENSIONPOLICYTYPE {
  1466. + OMX_U32 nSize;
  1467. + OMX_VERSIONTYPE nVersion;
  1468. + OMX_SUSPENSIONPOLICYTYPE ePolicy;
  1469. +} OMX_PARAM_SUSPENSIONPOLICYTYPE;
  1470. +
  1471. +/** @ingroup rpm */
  1472. +typedef enum OMX_SUSPENSIONTYPE {
  1473. + OMX_NotSuspended, /**< component is not suspended */
  1474. + OMX_Suspended, /**< component is suspended */
  1475. + OMX_SuspensionKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1476. + OMX_SuspensionVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1477. + OMX_SuspendMax = 0x7FFFFFFF
  1478. +} OMX_SUSPENSIONTYPE;
  1479. +
  1480. +/** @ingroup rpm */
  1481. +typedef struct OMX_PARAM_SUSPENSIONTYPE {
  1482. + OMX_U32 nSize;
  1483. + OMX_VERSIONTYPE nVersion;
  1484. + OMX_SUSPENSIONTYPE eType;
  1485. +} OMX_PARAM_SUSPENSIONTYPE ;
  1486. +
  1487. +typedef struct OMX_CONFIG_BOOLEANTYPE {
  1488. + OMX_U32 nSize;
  1489. + OMX_VERSIONTYPE nVersion;
  1490. + OMX_BOOL bEnabled;
  1491. +} OMX_CONFIG_BOOLEANTYPE;
  1492. +
  1493. +/* Parameter specifying the content uri to use. */
  1494. +/** @ingroup cp */
  1495. +typedef struct OMX_PARAM_CONTENTURITYPE {
  1496. + OMX_U32 nSize; /**< size of the structure in bytes, including
  1497. + actual URI name */
  1498. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1499. + OMX_U8 contentURI[1]; /**< The URI name */
  1500. +} OMX_PARAM_CONTENTURITYPE;
  1501. +
  1502. +/* Parameter specifying the pipe to use. */
  1503. +/** @ingroup cp */
  1504. +typedef struct OMX_PARAM_CONTENTPIPETYPE {
  1505. + OMX_U32 nSize; /**< size of the structure in bytes */
  1506. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1507. + OMX_HANDLETYPE hPipe; /**< The pipe handle*/
  1508. +} OMX_PARAM_CONTENTPIPETYPE;
  1509. +
  1510. +/** @ingroup rpm */
  1511. +typedef struct OMX_RESOURCECONCEALMENTTYPE {
  1512. + OMX_U32 nSize; /**< size of the structure in bytes */
  1513. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  1514. + OMX_BOOL bResourceConcealmentForbidden; /**< disallow the use of resource concealment
  1515. + methods (like degrading algorithm quality to
  1516. + lower resource consumption or functional bypass)
  1517. + on a component as a resolution to resource conflicts. */
  1518. +} OMX_RESOURCECONCEALMENTTYPE;
  1519. +
  1520. +
  1521. +/** @ingroup metadata */
  1522. +typedef enum OMX_METADATACHARSETTYPE {
  1523. + OMX_MetadataCharsetUnknown = 0,
  1524. + OMX_MetadataCharsetASCII,
  1525. + OMX_MetadataCharsetBinary,
  1526. + OMX_MetadataCharsetCodePage1252,
  1527. + OMX_MetadataCharsetUTF8,
  1528. + OMX_MetadataCharsetJavaConformantUTF8,
  1529. + OMX_MetadataCharsetUTF7,
  1530. + OMX_MetadataCharsetImapUTF7,
  1531. + OMX_MetadataCharsetUTF16LE,
  1532. + OMX_MetadataCharsetUTF16BE,
  1533. + OMX_MetadataCharsetGB12345,
  1534. + OMX_MetadataCharsetHZGB2312,
  1535. + OMX_MetadataCharsetGB2312,
  1536. + OMX_MetadataCharsetGB18030,
  1537. + OMX_MetadataCharsetGBK,
  1538. + OMX_MetadataCharsetBig5,
  1539. + OMX_MetadataCharsetISO88591,
  1540. + OMX_MetadataCharsetISO88592,
  1541. + OMX_MetadataCharsetISO88593,
  1542. + OMX_MetadataCharsetISO88594,
  1543. + OMX_MetadataCharsetISO88595,
  1544. + OMX_MetadataCharsetISO88596,
  1545. + OMX_MetadataCharsetISO88597,
  1546. + OMX_MetadataCharsetISO88598,
  1547. + OMX_MetadataCharsetISO88599,
  1548. + OMX_MetadataCharsetISO885910,
  1549. + OMX_MetadataCharsetISO885913,
  1550. + OMX_MetadataCharsetISO885914,
  1551. + OMX_MetadataCharsetISO885915,
  1552. + OMX_MetadataCharsetShiftJIS,
  1553. + OMX_MetadataCharsetISO2022JP,
  1554. + OMX_MetadataCharsetISO2022JP1,
  1555. + OMX_MetadataCharsetISOEUCJP,
  1556. + OMX_MetadataCharsetSMS7Bit,
  1557. + OMX_MetadataCharsetKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1558. + OMX_MetadataCharsetVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1559. + OMX_MetadataCharsetTypeMax = 0x7FFFFFFF
  1560. +} OMX_METADATACHARSETTYPE;
  1561. +
  1562. +/** @ingroup metadata */
  1563. +typedef enum OMX_METADATASCOPETYPE {
  1564. + OMX_MetadataScopeAllLevels,
  1565. + OMX_MetadataScopeTopLevel,
  1566. + OMX_MetadataScopePortLevel,
  1567. + OMX_MetadataScopeNodeLevel,
  1568. + OMX_MetadataScopeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1569. + OMX_MetadataScopeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1570. + OMX_MetadataScopeTypeMax = 0x7fffffff
  1571. +} OMX_METADATASCOPETYPE;
  1572. +
  1573. +/** @ingroup metadata */
  1574. +typedef enum OMX_METADATASEARCHMODETYPE {
  1575. + OMX_MetadataSearchValueSizeByIndex,
  1576. + OMX_MetadataSearchItemByIndex,
  1577. + OMX_MetadataSearchNextItemByKey,
  1578. + OMX_MetadataSearchKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  1579. + OMX_MetadataSearchVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  1580. + OMX_MetadataSearchTypeMax = 0x7fffffff
  1581. +} OMX_METADATASEARCHMODETYPE;
  1582. +/** @ingroup metadata */
  1583. +typedef struct OMX_CONFIG_METADATAITEMCOUNTTYPE {
  1584. + OMX_U32 nSize;
  1585. + OMX_VERSIONTYPE nVersion;
  1586. + OMX_METADATASCOPETYPE eScopeMode;
  1587. + OMX_U32 nScopeSpecifier;
  1588. + OMX_U32 nMetadataItemCount;
  1589. +} OMX_CONFIG_METADATAITEMCOUNTTYPE;
  1590. +
  1591. +/** @ingroup metadata */
  1592. +typedef struct OMX_CONFIG_METADATAITEMTYPE {
  1593. + OMX_U32 nSize;
  1594. + OMX_VERSIONTYPE nVersion;
  1595. + OMX_METADATASCOPETYPE eScopeMode;
  1596. + OMX_U32 nScopeSpecifier;
  1597. + OMX_U32 nMetadataItemIndex;
  1598. + OMX_METADATASEARCHMODETYPE eSearchMode;
  1599. + OMX_METADATACHARSETTYPE eKeyCharset;
  1600. + OMX_U8 nKeySizeUsed;
  1601. + OMX_U8 nKey[128];
  1602. + OMX_METADATACHARSETTYPE eValueCharset;
  1603. + OMX_STRING sLanguageCountry;
  1604. + OMX_U32 nValueMaxSize;
  1605. + OMX_U32 nValueSizeUsed;
  1606. + OMX_U8 nValue[1];
  1607. +} OMX_CONFIG_METADATAITEMTYPE;
  1608. +
  1609. +/* @ingroup metadata */
  1610. +typedef struct OMX_CONFIG_CONTAINERNODECOUNTTYPE {
  1611. + OMX_U32 nSize;
  1612. + OMX_VERSIONTYPE nVersion;
  1613. + OMX_BOOL bAllKeys;
  1614. + OMX_U32 nParentNodeID;
  1615. + OMX_U32 nNumNodes;
  1616. +} OMX_CONFIG_CONTAINERNODECOUNTTYPE;
  1617. +
  1618. +/** @ingroup metadata */
  1619. +typedef struct OMX_CONFIG_CONTAINERNODEIDTYPE {
  1620. + OMX_U32 nSize;
  1621. + OMX_VERSIONTYPE nVersion;
  1622. + OMX_BOOL bAllKeys;
  1623. + OMX_U32 nParentNodeID;
  1624. + OMX_U32 nNodeIndex;
  1625. + OMX_U32 nNodeID;
  1626. + OMX_STRING cNodeName;
  1627. + OMX_BOOL bIsLeafType;
  1628. +} OMX_CONFIG_CONTAINERNODEIDTYPE;
  1629. +
  1630. +/** @ingroup metadata */
  1631. +typedef struct OMX_PARAM_METADATAFILTERTYPE {
  1632. + OMX_U32 nSize;
  1633. + OMX_VERSIONTYPE nVersion;
  1634. + OMX_BOOL bAllKeys; /* if true then this structure refers to all keys and
  1635. + * the three key fields below are ignored */
  1636. + OMX_METADATACHARSETTYPE eKeyCharset;
  1637. + OMX_U32 nKeySizeUsed;
  1638. + OMX_U8 nKey [128];
  1639. + OMX_U32 nLanguageCountrySizeUsed;
  1640. + OMX_U8 nLanguageCountry[128];
  1641. + OMX_BOOL bEnabled; /* if true then key is part of filter (e.g.
  1642. + * retained for query later). If false then
  1643. + * key is not part of filter */
  1644. +} OMX_PARAM_METADATAFILTERTYPE;
  1645. +
  1646. +/** The OMX_HANDLETYPE structure defines the component handle. The component
  1647. + * handle is used to access all of the component's public methods and also
  1648. + * contains pointers to the component's private data area. The component
  1649. + * handle is initialized by the OMX core (with help from the component)
  1650. + * during the process of loading the component. After the component is
  1651. + * successfully loaded, the application can safely access any of the
  1652. + * component's public functions (although some may return an error because
  1653. + * the state is inappropriate for the access).
  1654. + *
  1655. + * @ingroup comp
  1656. + */
  1657. +typedef struct OMX_COMPONENTTYPE {
  1658. + /** The size of this structure, in bytes. It is the responsibility
  1659. + of the allocator of this structure to fill in this value. Since
  1660. + this structure is allocated by the GetHandle function, this
  1661. + function will fill in this value. */
  1662. + OMX_U32 nSize;
  1663. +
  1664. + /** nVersion is the version of the OMX specification that the structure
  1665. + is built against. It is the responsibility of the creator of this
  1666. + structure to initialize this value and every user of this structure
  1667. + should verify that it knows how to use the exact version of
  1668. + this structure found herein. */
  1669. + OMX_VERSIONTYPE nVersion;
  1670. +
  1671. + /** pComponentPrivate is a pointer to the component private data area.
  1672. + This member is allocated and initialized by the component when the
  1673. + component is first loaded. The application should not access this
  1674. + data area. */
  1675. + OMX_PTR pComponentPrivate;
  1676. +
  1677. + /** pApplicationPrivate is a pointer that is a parameter to the
  1678. + OMX_GetHandle method, and contains an application private value
  1679. + provided by the IL client. This application private data is
  1680. + returned to the IL Client by OMX in all callbacks */
  1681. + OMX_PTR pApplicationPrivate;
  1682. +
  1683. + /** refer to OMX_GetComponentVersion in OMX_core.h or the OMX IL
  1684. + specification for details on the GetComponentVersion method.
  1685. + */
  1686. + OMX_ERRORTYPE (*GetComponentVersion)(
  1687. + OMX_IN OMX_HANDLETYPE hComponent,
  1688. + OMX_OUT OMX_STRING pComponentName,
  1689. + OMX_OUT OMX_VERSIONTYPE* pComponentVersion,
  1690. + OMX_OUT OMX_VERSIONTYPE* pSpecVersion,
  1691. + OMX_OUT OMX_UUIDTYPE* pComponentUUID);
  1692. +
  1693. + /** refer to OMX_SendCommand in OMX_core.h or the OMX IL
  1694. + specification for details on the SendCommand method.
  1695. + */
  1696. + OMX_ERRORTYPE (*SendCommand)(
  1697. + OMX_IN OMX_HANDLETYPE hComponent,
  1698. + OMX_IN OMX_COMMANDTYPE Cmd,
  1699. + OMX_IN OMX_U32 nParam1,
  1700. + OMX_IN OMX_PTR pCmdData);
  1701. +
  1702. + /** refer to OMX_GetParameter in OMX_core.h or the OMX IL
  1703. + specification for details on the GetParameter method.
  1704. + */
  1705. + OMX_ERRORTYPE (*GetParameter)(
  1706. + OMX_IN OMX_HANDLETYPE hComponent,
  1707. + OMX_IN OMX_INDEXTYPE nParamIndex,
  1708. + OMX_INOUT OMX_PTR pComponentParameterStructure);
  1709. +
  1710. +
  1711. + /** refer to OMX_SetParameter in OMX_core.h or the OMX IL
  1712. + specification for details on the SetParameter method.
  1713. + */
  1714. + OMX_ERRORTYPE (*SetParameter)(
  1715. + OMX_IN OMX_HANDLETYPE hComponent,
  1716. + OMX_IN OMX_INDEXTYPE nIndex,
  1717. + OMX_IN OMX_PTR pComponentParameterStructure);
  1718. +
  1719. +
  1720. + /** refer to OMX_GetConfig in OMX_core.h or the OMX IL
  1721. + specification for details on the GetConfig method.
  1722. + */
  1723. + OMX_ERRORTYPE (*GetConfig)(
  1724. + OMX_IN OMX_HANDLETYPE hComponent,
  1725. + OMX_IN OMX_INDEXTYPE nIndex,
  1726. + OMX_INOUT OMX_PTR pComponentConfigStructure);
  1727. +
  1728. +
  1729. + /** refer to OMX_SetConfig in OMX_core.h or the OMX IL
  1730. + specification for details on the SetConfig method.
  1731. + */
  1732. + OMX_ERRORTYPE (*SetConfig)(
  1733. + OMX_IN OMX_HANDLETYPE hComponent,
  1734. + OMX_IN OMX_INDEXTYPE nIndex,
  1735. + OMX_IN OMX_PTR pComponentConfigStructure);
  1736. +
  1737. +
  1738. + /** refer to OMX_GetExtensionIndex in OMX_core.h or the OMX IL
  1739. + specification for details on the GetExtensionIndex method.
  1740. + */
  1741. + OMX_ERRORTYPE (*GetExtensionIndex)(
  1742. + OMX_IN OMX_HANDLETYPE hComponent,
  1743. + OMX_IN OMX_STRING cParameterName,
  1744. + OMX_OUT OMX_INDEXTYPE* pIndexType);
  1745. +
  1746. +
  1747. + /** refer to OMX_GetState in OMX_core.h or the OMX IL
  1748. + specification for details on the GetState method.
  1749. + */
  1750. + OMX_ERRORTYPE (*GetState)(
  1751. + OMX_IN OMX_HANDLETYPE hComponent,
  1752. + OMX_OUT OMX_STATETYPE* pState);
  1753. +
  1754. +
  1755. + /** The ComponentTunnelRequest method will interact with another OMX
  1756. + component to determine if tunneling is possible and to setup the
  1757. + tunneling. The return codes for this method can be used to
  1758. + determine if tunneling is not possible, or if tunneling is not
  1759. + supported.
  1760. +
  1761. + Base profile components (i.e. non-interop) do not support this
  1762. + method and should return OMX_ErrorNotImplemented
  1763. +
  1764. + The interop profile component MUST support tunneling to another
  1765. + interop profile component with a compatible port parameters.
  1766. + A component may also support proprietary communication.
  1767. +
  1768. + If proprietary communication is supported the negotiation of
  1769. + proprietary communication is done outside of OMX in a vendor
  1770. + specific way. It is only required that the proper result be
  1771. + returned and the details of how the setup is done is left
  1772. + to the component implementation.
  1773. +
  1774. + When this method is invoked when nPort in an output port, the
  1775. + component will:
  1776. + 1. Populate the pTunnelSetup structure with the output port's
  1777. + requirements and constraints for the tunnel.
  1778. +
  1779. + When this method is invoked when nPort in an input port, the
  1780. + component will:
  1781. + 1. Query the necessary parameters from the output port to
  1782. + determine if the ports are compatible for tunneling
  1783. + 2. If the ports are compatible, the component should store
  1784. + the tunnel step provided by the output port
  1785. + 3. Determine which port (either input or output) is the buffer
  1786. + supplier, and call OMX_SetParameter on the output port to
  1787. + indicate this selection.
  1788. +
  1789. + The component will return from this call within 5 msec.
  1790. +
  1791. + @param [in] hComp
  1792. + Handle of the component to be accessed. This is the component
  1793. + handle returned by the call to the OMX_GetHandle method.
  1794. + @param [in] nPort
  1795. + nPort is used to select the port on the component to be used
  1796. + for tunneling.
  1797. + @param [in] hTunneledComp
  1798. + Handle of the component to tunnel with. This is the component
  1799. + handle returned by the call to the OMX_GetHandle method. When
  1800. + this parameter is 0x0 the component should setup the port for
  1801. + communication with the application / IL Client.
  1802. + @param [in] nPortOutput
  1803. + nPortOutput is used indicate the port the component should
  1804. + tunnel with.
  1805. + @param [in] pTunnelSetup
  1806. + Pointer to the tunnel setup structure. When nPort is an output port
  1807. + the component should populate the fields of this structure. When
  1808. + When nPort is an input port the component should review the setup
  1809. + provided by the component with the output port.
  1810. + @return OMX_ERRORTYPE
  1811. + If the command successfully executes, the return code will be
  1812. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  1813. + @ingroup tun
  1814. + */
  1815. +
  1816. + OMX_ERRORTYPE (*ComponentTunnelRequest)(
  1817. + OMX_IN OMX_HANDLETYPE hComp,
  1818. + OMX_IN OMX_U32 nPort,
  1819. + OMX_IN OMX_HANDLETYPE hTunneledComp,
  1820. + OMX_IN OMX_U32 nTunneledPort,
  1821. + OMX_INOUT OMX_TUNNELSETUPTYPE* pTunnelSetup);
  1822. +
  1823. + /** refer to OMX_UseBuffer in OMX_core.h or the OMX IL
  1824. + specification for details on the UseBuffer method.
  1825. + @ingroup buf
  1826. + */
  1827. + OMX_ERRORTYPE (*UseBuffer)(
  1828. + OMX_IN OMX_HANDLETYPE hComponent,
  1829. + OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
  1830. + OMX_IN OMX_U32 nPortIndex,
  1831. + OMX_IN OMX_PTR pAppPrivate,
  1832. + OMX_IN OMX_U32 nSizeBytes,
  1833. + OMX_IN OMX_U8* pBuffer);
  1834. +
  1835. + /** refer to OMX_AllocateBuffer in OMX_core.h or the OMX IL
  1836. + specification for details on the AllocateBuffer method.
  1837. + @ingroup buf
  1838. + */
  1839. + OMX_ERRORTYPE (*AllocateBuffer)(
  1840. + OMX_IN OMX_HANDLETYPE hComponent,
  1841. + OMX_INOUT OMX_BUFFERHEADERTYPE** ppBuffer,
  1842. + OMX_IN OMX_U32 nPortIndex,
  1843. + OMX_IN OMX_PTR pAppPrivate,
  1844. + OMX_IN OMX_U32 nSizeBytes);
  1845. +
  1846. + /** refer to OMX_FreeBuffer in OMX_core.h or the OMX IL
  1847. + specification for details on the FreeBuffer method.
  1848. + @ingroup buf
  1849. + */
  1850. + OMX_ERRORTYPE (*FreeBuffer)(
  1851. + OMX_IN OMX_HANDLETYPE hComponent,
  1852. + OMX_IN OMX_U32 nPortIndex,
  1853. + OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
  1854. +
  1855. + /** refer to OMX_EmptyThisBuffer in OMX_core.h or the OMX IL
  1856. + specification for details on the EmptyThisBuffer method.
  1857. + @ingroup buf
  1858. + */
  1859. + OMX_ERRORTYPE (*EmptyThisBuffer)(
  1860. + OMX_IN OMX_HANDLETYPE hComponent,
  1861. + OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
  1862. +
  1863. + /** refer to OMX_FillThisBuffer in OMX_core.h or the OMX IL
  1864. + specification for details on the FillThisBuffer method.
  1865. + @ingroup buf
  1866. + */
  1867. + OMX_ERRORTYPE (*FillThisBuffer)(
  1868. + OMX_IN OMX_HANDLETYPE hComponent,
  1869. + OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
  1870. +
  1871. + /** The SetCallbacks method is used by the core to specify the callback
  1872. + structure from the application to the component. This is a blocking
  1873. + call. The component will return from this call within 5 msec.
  1874. + @param [in] hComponent
  1875. + Handle of the component to be accessed. This is the component
  1876. + handle returned by the call to the GetHandle function.
  1877. + @param [in] pCallbacks
  1878. + pointer to an OMX_CALLBACKTYPE structure used to provide the
  1879. + callback information to the component
  1880. + @param [in] pAppData
  1881. + pointer to an application defined value. It is anticipated that
  1882. + the application will pass a pointer to a data structure or a "this
  1883. + pointer" in this area to allow the callback (in the application)
  1884. + to determine the context of the call
  1885. + @return OMX_ERRORTYPE
  1886. + If the command successfully executes, the return code will be
  1887. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  1888. + */
  1889. + OMX_ERRORTYPE (*SetCallbacks)(
  1890. + OMX_IN OMX_HANDLETYPE hComponent,
  1891. + OMX_IN OMX_CALLBACKTYPE* pCallbacks,
  1892. + OMX_IN OMX_PTR pAppData);
  1893. +
  1894. + /** ComponentDeInit method is used to deinitialize the component
  1895. + providing a means to free any resources allocated at component
  1896. + initialization. NOTE: After this call the component handle is
  1897. + not valid for further use.
  1898. + @param [in] hComponent
  1899. + Handle of the component to be accessed. This is the component
  1900. + handle returned by the call to the GetHandle function.
  1901. + @return OMX_ERRORTYPE
  1902. + If the command successfully executes, the return code will be
  1903. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  1904. + */
  1905. + OMX_ERRORTYPE (*ComponentDeInit)(
  1906. + OMX_IN OMX_HANDLETYPE hComponent);
  1907. +
  1908. + /** @ingroup buf */
  1909. + OMX_ERRORTYPE (*UseEGLImage)(
  1910. + OMX_IN OMX_HANDLETYPE hComponent,
  1911. + OMX_INOUT OMX_BUFFERHEADERTYPE** ppBufferHdr,
  1912. + OMX_IN OMX_U32 nPortIndex,
  1913. + OMX_IN OMX_PTR pAppPrivate,
  1914. + OMX_IN void* eglImage);
  1915. +
  1916. + OMX_ERRORTYPE (*ComponentRoleEnum)(
  1917. + OMX_IN OMX_HANDLETYPE hComponent,
  1918. + OMX_OUT OMX_U8 *cRole,
  1919. + OMX_IN OMX_U32 nIndex);
  1920. +
  1921. +} OMX_COMPONENTTYPE;
  1922. +
  1923. +#ifdef __cplusplus
  1924. +}
  1925. +#endif /* __cplusplus */
  1926. +
  1927. +#endif
  1928. +/* File EOF */
  1929. diff --git a/sf-extra/omx-il/OMX_ComponentExt.h b/sf-extra/omx-il/OMX_ComponentExt.h
  1930. new file mode 100644
  1931. index 00000000..24ec20c5
  1932. --- /dev/null
  1933. +++ b/sf-extra/omx-il/OMX_ComponentExt.h
  1934. @@ -0,0 +1,61 @@
  1935. +/*
  1936. + * Copyright (c) 2016 The Khronos Group Inc.
  1937. + *
  1938. + * Permission is hereby granted, free of charge, to any person obtaining
  1939. + * a copy of this software and associated documentation files (the
  1940. + * "Software"), to deal in the Software without restriction, including
  1941. + * without limitation the rights to use, copy, modify, merge, publish,
  1942. + * distribute, sublicense, and/or sell copies of the Software, and to
  1943. + * permit persons to whom the Software is furnished to do so, subject
  1944. + * to the following conditions:
  1945. + * The above copyright notice and this permission notice shall be included
  1946. + * in all copies or substantial portions of the Software.
  1947. + *
  1948. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  1949. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  1950. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  1951. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  1952. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  1953. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  1954. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  1955. + *
  1956. + */
  1957. +
  1958. +/** OMX_ComponentExt.h - OpenMax IL version 1.1.2
  1959. + * The OMX_ComponentExt header file contains extensions to the definitions used
  1960. + * by both the application and the component to access common items.
  1961. + */
  1962. +
  1963. +#ifndef OMX_ComponentExt_h
  1964. +#define OMX_ComponentExt_h
  1965. +
  1966. +#ifdef __cplusplus
  1967. +extern "C" {
  1968. +#endif /* __cplusplus */
  1969. +
  1970. +/* Each OMX header must include all required header files to allow the
  1971. + * header to compile without errors. The includes below are required
  1972. + * for this header file to compile successfully
  1973. + */
  1974. +#include <OMX_Types.h>
  1975. +
  1976. +
  1977. +/** Set/query the commit mode */
  1978. +typedef struct OMX_CONFIG_COMMITMODETYPE {
  1979. + OMX_U32 nSize;
  1980. + OMX_VERSIONTYPE nVersion;
  1981. + OMX_BOOL bDeferred;
  1982. +} OMX_CONFIG_COMMITMODETYPE;
  1983. +
  1984. +/** Explicit commit */
  1985. +typedef struct OMX_CONFIG_COMMITTYPE {
  1986. + OMX_U32 nSize;
  1987. + OMX_VERSIONTYPE nVersion;
  1988. +} OMX_CONFIG_COMMITTYPE;
  1989. +
  1990. +
  1991. +#ifdef __cplusplus
  1992. +}
  1993. +#endif /* __cplusplus */
  1994. +
  1995. +#endif /* OMX_ComponentExt_h */
  1996. diff --git a/sf-extra/omx-il/OMX_ContentPipe.h b/sf-extra/omx-il/OMX_ContentPipe.h
  1997. new file mode 100644
  1998. index 00000000..843cb7a4
  1999. --- /dev/null
  2000. +++ b/sf-extra/omx-il/OMX_ContentPipe.h
  2001. @@ -0,0 +1,193 @@
  2002. +/*
  2003. + * Copyright (c) 2008 The Khronos Group Inc.
  2004. + *
  2005. + * Permission is hereby granted, free of charge, to any person obtaining
  2006. + * a copy of this software and associated documentation files (the
  2007. + * "Software"), to deal in the Software without restriction, including
  2008. + * without limitation the rights to use, copy, modify, merge, publish,
  2009. + * distribute, sublicense, and/or sell copies of the Software, and to
  2010. + * permit persons to whom the Software is furnished to do so, subject
  2011. + * to the following conditions:
  2012. + * The above copyright notice and this permission notice shall be included
  2013. + * in all copies or substantial portions of the Software.
  2014. + *
  2015. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  2016. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  2017. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  2018. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  2019. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  2020. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  2021. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  2022. + *
  2023. + */
  2024. +
  2025. +/** OMX_ContentPipe.h - OpenMax IL version 1.1.2
  2026. + * The OMX_ContentPipe header file contains the definitions used to define
  2027. + * the public interface for content piples. This header file is intended to
  2028. + * be used by the component.
  2029. + */
  2030. +
  2031. +#ifndef OMX_CONTENTPIPE_H
  2032. +#define OMX_CONTENTPIPE_H
  2033. +
  2034. +#ifndef KD_EACCES
  2035. +/* OpenKODE error codes. CPResult values may be zero (indicating success
  2036. + or one of the following values) */
  2037. +#define KD_EACCES (1)
  2038. +#define KD_EADDRINUSE (2)
  2039. +#define KD_EAGAIN (5)
  2040. +#define KD_EBADF (7)
  2041. +#define KD_EBUSY (8)
  2042. +#define KD_ECONNREFUSED (9)
  2043. +#define KD_ECONNRESET (10)
  2044. +#define KD_EDEADLK (11)
  2045. +#define KD_EDESTADDRREQ (12)
  2046. +#define KD_ERANGE (35)
  2047. +#define KD_EEXIST (13)
  2048. +#define KD_EFBIG (14)
  2049. +#define KD_EHOSTUNREACH (15)
  2050. +#define KD_EINVAL (17)
  2051. +#define KD_EIO (18)
  2052. +#define KD_EISCONN (20)
  2053. +#define KD_EISDIR (21)
  2054. +#define KD_EMFILE (22)
  2055. +#define KD_ENAMETOOLONG (23)
  2056. +#define KD_ENOENT (24)
  2057. +#define KD_ENOMEM (25)
  2058. +#define KD_ENOSPC (26)
  2059. +#define KD_ENOSYS (27)
  2060. +#define KD_ENOTCONN (28)
  2061. +#define KD_EPERM (33)
  2062. +#define KD_ETIMEDOUT (36)
  2063. +#define KD_EILSEQ (19)
  2064. +#endif
  2065. +
  2066. +/** Map types from OMX standard types only here so interface is as generic as possible. */
  2067. +typedef OMX_U32 CPresult;
  2068. +typedef char * CPstring;
  2069. +typedef void * CPhandle;
  2070. +typedef OMX_U32 CPuint;
  2071. +typedef OMX_S32 CPint;
  2072. +typedef char CPbyte;
  2073. +typedef OMX_BOOL CPbool;
  2074. +
  2075. +/** enumeration of origin types used in the CP_PIPETYPE's Seek function
  2076. + * @ingroup cp
  2077. + */
  2078. +typedef enum CP_ORIGINTYPE {
  2079. + CP_OriginBegin,
  2080. + CP_OriginCur,
  2081. + CP_OriginEnd,
  2082. + CP_OriginKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2083. + CP_OriginVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2084. + CP_OriginMax = 0X7FFFFFFF
  2085. +} CP_ORIGINTYPE;
  2086. +
  2087. +/** enumeration of contact access types used in the CP_PIPETYPE's Open function
  2088. + * @ingroup cp
  2089. + */
  2090. +typedef enum CP_ACCESSTYPE {
  2091. + CP_AccessRead,
  2092. + CP_AccessWrite,
  2093. + CP_AccessReadWrite ,
  2094. + CP_AccessKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2095. + CP_AccessVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2096. + CP_AccessMax = 0X7FFFFFFF
  2097. +} CP_ACCESSTYPE;
  2098. +
  2099. +/** enumeration of results returned by the CP_PIPETYPE's CheckAvailableBytes function
  2100. + * @ingroup cp
  2101. + */
  2102. +typedef enum CP_CHECKBYTESRESULTTYPE {
  2103. + CP_CheckBytesOk, /**< There are at least the request number
  2104. + of bytes available */
  2105. + CP_CheckBytesNotReady, /**< The pipe is still retrieving bytes
  2106. + and presently lacks sufficient bytes.
  2107. + Client will be called when they are
  2108. + sufficient bytes are available. */
  2109. + CP_CheckBytesInsufficientBytes , /**< The pipe has retrieved all bytes
  2110. + but those available are less than those
  2111. + requested */
  2112. + CP_CheckBytesAtEndOfStream, /**< The pipe has reached the end of stream
  2113. + and no more bytes are available. */
  2114. + CP_CheckBytesOutOfBuffers, /**< All read/write buffers are currently in use. */
  2115. + CP_CheckBytesKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2116. + CP_CheckBytesVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2117. + CP_CheckBytesMax = 0X7FFFFFFF
  2118. +} CP_CHECKBYTESRESULTTYPE;
  2119. +
  2120. +/** enumeration of content pipe events sent to the client callback.
  2121. + * @ingroup cp
  2122. + */
  2123. +typedef enum CP_EVENTTYPE {
  2124. + CP_BytesAvailable, /** bytes requested in a CheckAvailableBytes call are now available*/
  2125. + CP_Overflow, /** enumeration of content pipe events sent to the client callback*/
  2126. + CP_PipeDisconnected , /** enumeration of content pipe events sent to the client callback*/
  2127. + CP_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2128. + CP_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2129. + CP_EventMax = 0X7FFFFFFF
  2130. +} CP_EVENTTYPE;
  2131. +
  2132. +/** content pipe definition
  2133. + * @ingroup cp
  2134. + */
  2135. +typedef struct CP_PIPETYPE {
  2136. + /** Open a content stream for reading or writing. */
  2137. + CPresult (*Open)( CPhandle* hContent, CPstring szURI, CP_ACCESSTYPE eAccess );
  2138. +
  2139. + /** Close a content stream. */
  2140. + CPresult (*Close)( CPhandle hContent );
  2141. +
  2142. + /** Create a content source and open it for writing. */
  2143. + CPresult (*Create)( CPhandle *hContent, CPstring szURI );
  2144. +
  2145. + /** Check the that specified number of bytes are available for reading or writing (depending on access type).*/
  2146. + CPresult (*CheckAvailableBytes)( CPhandle hContent, CPuint nBytesRequested, CP_CHECKBYTESRESULTTYPE *eResult );
  2147. +
  2148. + /** Seek to certain position in the content relative to the specified origin. */
  2149. + CPresult (*SetPosition)( CPhandle hContent, CPint nOffset, CP_ORIGINTYPE eOrigin);
  2150. +
  2151. + /** Retrieve the current position relative to the start of the content. */
  2152. + CPresult (*GetPosition)( CPhandle hContent, CPuint *pPosition);
  2153. +
  2154. + /** Retrieve data of the specified size from the content stream (advance content pointer by size of data).
  2155. + Note: pipe client provides pointer. This function is appropriate for small high frequency reads. */
  2156. + CPresult (*Read)( CPhandle hContent, CPbyte *pData, CPuint nSize);
  2157. +
  2158. + /** Retrieve a buffer allocated by the pipe that contains the requested number of bytes.
  2159. + Buffer contains the next block of bytes, as specified by nSize, of the content. nSize also
  2160. + returns the size of the block actually read. Content pointer advances the by the returned size.
  2161. + Note: pipe provides pointer. This function is appropriate for large reads. The client must call
  2162. + ReleaseReadBuffer when done with buffer.
  2163. +
  2164. + In some cases the requested block may not reside in contiguous memory within the
  2165. + pipe implementation. For instance if the pipe leverages a circular buffer then the requested
  2166. + block may straddle the boundary of the circular buffer. By default a pipe implementation
  2167. + performs a copy in this case to provide the block to the pipe client in one contiguous buffer.
  2168. + If, however, the client sets bForbidCopy, then the pipe returns only those bytes preceding the memory
  2169. + boundary. Here the client may retrieve the data in segments over successive calls. */
  2170. + CPresult (*ReadBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint *nSize, CPbool bForbidCopy);
  2171. +
  2172. + /** Release a buffer obtained by ReadBuffer back to the pipe. */
  2173. + CPresult (*ReleaseReadBuffer)(CPhandle hContent, CPbyte *pBuffer);
  2174. +
  2175. + /** Write data of the specified size to the content (advance content pointer by size of data).
  2176. + Note: pipe client provides pointer. This function is appropriate for small high frequency writes. */
  2177. + CPresult (*Write)( CPhandle hContent, CPbyte *data, CPuint nSize);
  2178. +
  2179. + /** Retrieve a buffer allocated by the pipe used to write data to the content.
  2180. + Client will fill buffer with output data. Note: pipe provides pointer. This function is appropriate
  2181. + for large writes. The client must call WriteBuffer when done it has filled the buffer with data.*/
  2182. + CPresult (*GetWriteBuffer)( CPhandle hContent, CPbyte **ppBuffer, CPuint nSize);
  2183. +
  2184. + /** Deliver a buffer obtained via GetWriteBuffer to the pipe. Pipe will write the
  2185. + the contents of the buffer to content and advance content pointer by the size of the buffer */
  2186. + CPresult (*WriteBuffer)( CPhandle hContent, CPbyte *pBuffer, CPuint nFilledSize);
  2187. +
  2188. + /** Register a per-handle client callback with the content pipe. */
  2189. + CPresult (*RegisterCallback)( CPhandle hContent, CPresult (*ClientCallback)(CP_EVENTTYPE eEvent, CPuint iParam));
  2190. +
  2191. +} CP_PIPETYPE;
  2192. +
  2193. +#endif
  2194. +
  2195. diff --git a/sf-extra/omx-il/OMX_Core.h b/sf-extra/omx-il/OMX_Core.h
  2196. new file mode 100644
  2197. index 00000000..c8f3c4b3
  2198. --- /dev/null
  2199. +++ b/sf-extra/omx-il/OMX_Core.h
  2200. @@ -0,0 +1,1422 @@
  2201. +/*
  2202. + * Copyright (c) 2008 The Khronos Group Inc.
  2203. + *
  2204. + * Permission is hereby granted, free of charge, to any person obtaining
  2205. + * a copy of this software and associated documentation files (the
  2206. + * "Software"), to deal in the Software without restriction, including
  2207. + * without limitation the rights to use, copy, modify, merge, publish,
  2208. + * distribute, sublicense, and/or sell copies of the Software, and to
  2209. + * permit persons to whom the Software is furnished to do so, subject
  2210. + * to the following conditions:
  2211. + * The above copyright notice and this permission notice shall be included
  2212. + * in all copies or substantial portions of the Software.
  2213. + *
  2214. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  2215. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  2216. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  2217. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  2218. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  2219. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  2220. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  2221. + *
  2222. + */
  2223. +
  2224. +/** OMX_Core.h - OpenMax IL version 1.1.2
  2225. + * The OMX_Core header file contains the definitions used by both the
  2226. + * application and the component to access common items.
  2227. + */
  2228. +
  2229. +#ifndef OMX_Core_h
  2230. +#define OMX_Core_h
  2231. +
  2232. +#ifdef __cplusplus
  2233. +extern "C" {
  2234. +#endif /* __cplusplus */
  2235. +
  2236. +
  2237. +/* Each OMX header shall include all required header files to allow the
  2238. + * header to compile without errors. The includes below are required
  2239. + * for this header file to compile successfully
  2240. + */
  2241. +
  2242. +#include <OMX_Index.h>
  2243. +
  2244. +
  2245. +/** The OMX_COMMANDTYPE enumeration is used to specify the action in the
  2246. + * OMX_SendCommand macro.
  2247. + * @ingroup core
  2248. + */
  2249. +typedef enum OMX_COMMANDTYPE
  2250. +{
  2251. + OMX_CommandStateSet, /**< Change the component state */
  2252. + OMX_CommandFlush, /**< Flush the data queue(s) of a component */
  2253. + OMX_CommandPortDisable, /**< Disable a port on a component. */
  2254. + OMX_CommandPortEnable, /**< Enable a port on a component. */
  2255. + OMX_CommandMarkBuffer, /**< Mark a component/buffer for observation */
  2256. + OMX_CommandKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2257. + OMX_CommandVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2258. + OMX_CommandMax = 0X7FFFFFFF
  2259. +} OMX_COMMANDTYPE;
  2260. +
  2261. +
  2262. +
  2263. +/** The OMX_STATETYPE enumeration is used to indicate or change the component
  2264. + * state. This enumeration reflects the current state of the component when
  2265. + * used with the OMX_GetState macro or becomes the parameter in a state change
  2266. + * command when used with the OMX_SendCommand macro.
  2267. + *
  2268. + * The component will be in the Loaded state after the component is initially
  2269. + * loaded into memory. In the Loaded state, the component is not allowed to
  2270. + * allocate or hold resources other than to build it's internal parameter
  2271. + * and configuration tables. The application will send one or more
  2272. + * SetParameters/GetParameters and SetConfig/GetConfig commands to the
  2273. + * component and the component will record each of these parameter and
  2274. + * configuration changes for use later. When the application sends the
  2275. + * Idle command, the component will acquire the resources needed for the
  2276. + * specified configuration and will transition to the idle state if the
  2277. + * allocation is successful. If the component cannot successfully
  2278. + * transition to the idle state for any reason, the state of the component
  2279. + * shall be fully rolled back to the Loaded state (e.g. all allocated
  2280. + * resources shall be released). When the component receives the command
  2281. + * to go to the Executing state, it shall begin processing buffers by
  2282. + * sending all input buffers it holds to the application. While
  2283. + * the component is in the Idle state, the application may also send the
  2284. + * Pause command. If the component receives the pause command while in the
  2285. + * Idle state, the component shall send all input buffers it holds to the
  2286. + * application, but shall not begin processing buffers. This will allow the
  2287. + * application to prefill buffers.
  2288. + *
  2289. + * @ingroup comp
  2290. + */
  2291. +
  2292. +typedef enum OMX_STATETYPE {
  2293. + OMX_StateInvalid, /**< component has detected that it's internal data
  2294. + structures are corrupted to the point that
  2295. + it cannot determine it's state properly */
  2296. + OMX_StateLoaded, /**< component has been loaded but has not completed
  2297. + initialization. The OMX_SetParameter macro
  2298. + and the OMX_GetParameter macro are the only
  2299. + valid macros allowed to be sent to the
  2300. + component in this state. */
  2301. + OMX_StateIdle, /**< component initialization has been completed
  2302. + successfully and the component is ready to
  2303. + to start. */
  2304. + OMX_StateExecuting, /**< component has accepted the start command and
  2305. + is processing data (if data is available) */
  2306. + OMX_StatePause, /**< component has received pause command */
  2307. + OMX_StateWaitForResources, /**< component is waiting for resources, either after
  2308. + preemption or before it gets the resources requested.
  2309. + See specification for complete details. */
  2310. + OMX_StateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2311. + OMX_StateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2312. + OMX_StateMax = 0X7FFFFFFF
  2313. +} OMX_STATETYPE;
  2314. +
  2315. +/** The OMX_ERRORTYPE enumeration defines the standard OMX Errors. These
  2316. + * errors should cover most of the common failure cases. However,
  2317. + * vendors are free to add additional error messages of their own as
  2318. + * long as they follow these rules:
  2319. + * 1. Vendor error messages shall be in the range of 0x90000000 to
  2320. + * 0x9000FFFF.
  2321. + * 2. Vendor error messages shall be defined in a header file provided
  2322. + * with the component. No error messages are allowed that are
  2323. + * not defined.
  2324. + */
  2325. +typedef enum OMX_ERRORTYPE {
  2326. + OMX_ErrorNone = 0,
  2327. +
  2328. + /** There were insufficient resources to perform the requested operation */
  2329. + OMX_ErrorInsufficientResources = (OMX_S32) 0x80001000,
  2330. +
  2331. + /** There was an error, but the cause of the error could not be determined */
  2332. + OMX_ErrorUndefined = (OMX_S32) 0x80001001,
  2333. +
  2334. + /** The component name string was not valid */
  2335. + OMX_ErrorInvalidComponentName = (OMX_S32) 0x80001002,
  2336. +
  2337. + /** No component with the specified name string was found */
  2338. + OMX_ErrorComponentNotFound = (OMX_S32) 0x80001003,
  2339. +
  2340. + /** The component specified did not have a "OMX_ComponentInit" or
  2341. + "OMX_ComponentDeInit entry point */
  2342. + OMX_ErrorInvalidComponent = (OMX_S32) 0x80001004,
  2343. +
  2344. + /** One or more parameters were not valid */
  2345. + OMX_ErrorBadParameter = (OMX_S32) 0x80001005,
  2346. +
  2347. + /** The requested function is not implemented */
  2348. + OMX_ErrorNotImplemented = (OMX_S32) 0x80001006,
  2349. +
  2350. + /** The buffer was emptied before the next buffer was ready */
  2351. + OMX_ErrorUnderflow = (OMX_S32) 0x80001007,
  2352. +
  2353. + /** The buffer was not available when it was needed */
  2354. + OMX_ErrorOverflow = (OMX_S32) 0x80001008,
  2355. +
  2356. + /** The hardware failed to respond as expected */
  2357. + OMX_ErrorHardware = (OMX_S32) 0x80001009,
  2358. +
  2359. + /** The component is in the state OMX_StateInvalid */
  2360. + OMX_ErrorInvalidState = (OMX_S32) 0x8000100A,
  2361. +
  2362. + /** Stream is found to be corrupt */
  2363. + OMX_ErrorStreamCorrupt = (OMX_S32) 0x8000100B,
  2364. +
  2365. + /** Ports being connected are not compatible */
  2366. + OMX_ErrorPortsNotCompatible = (OMX_S32) 0x8000100C,
  2367. +
  2368. + /** Resources allocated to an idle component have been
  2369. + lost resulting in the component returning to the loaded state */
  2370. + OMX_ErrorResourcesLost = (OMX_S32) 0x8000100D,
  2371. +
  2372. + /** No more indicies can be enumerated */
  2373. + OMX_ErrorNoMore = (OMX_S32) 0x8000100E,
  2374. +
  2375. + /** The component detected a version mismatch */
  2376. + OMX_ErrorVersionMismatch = (OMX_S32) 0x8000100F,
  2377. +
  2378. + /** The component is not ready to return data at this time */
  2379. + OMX_ErrorNotReady = (OMX_S32) 0x80001010,
  2380. +
  2381. + /** There was a timeout that occurred */
  2382. + OMX_ErrorTimeout = (OMX_S32) 0x80001011,
  2383. +
  2384. + /** This error occurs when trying to transition into the state you are already in */
  2385. + OMX_ErrorSameState = (OMX_S32) 0x80001012,
  2386. +
  2387. + /** Resources allocated to an executing or paused component have been
  2388. + preempted, causing the component to return to the idle state */
  2389. + OMX_ErrorResourcesPreempted = (OMX_S32) 0x80001013,
  2390. +
  2391. + /** A non-supplier port sends this error to the IL client (via the EventHandler callback)
  2392. + during the allocation of buffers (on a transition from the LOADED to the IDLE state or
  2393. + on a port restart) when it deems that it has waited an unusually long time for the supplier
  2394. + to send it an allocated buffer via a UseBuffer call. */
  2395. + OMX_ErrorPortUnresponsiveDuringAllocation = (OMX_S32) 0x80001014,
  2396. +
  2397. + /** A non-supplier port sends this error to the IL client (via the EventHandler callback)
  2398. + during the deallocation of buffers (on a transition from the IDLE to LOADED state or
  2399. + on a port stop) when it deems that it has waited an unusually long time for the supplier
  2400. + to request the deallocation of a buffer header via a FreeBuffer call. */
  2401. + OMX_ErrorPortUnresponsiveDuringDeallocation = (OMX_S32) 0x80001015,
  2402. +
  2403. + /** A supplier port sends this error to the IL client (via the EventHandler callback)
  2404. + during the stopping of a port (either on a transition from the IDLE to LOADED
  2405. + state or a port stop) when it deems that it has waited an unusually long time for
  2406. + the non-supplier to return a buffer via an EmptyThisBuffer or FillThisBuffer call. */
  2407. + OMX_ErrorPortUnresponsiveDuringStop = (OMX_S32) 0x80001016,
  2408. +
  2409. + /** Attempting a state transtion that is not allowed */
  2410. + OMX_ErrorIncorrectStateTransition = (OMX_S32) 0x80001017,
  2411. +
  2412. + /* Attempting a command that is not allowed during the present state. */
  2413. + OMX_ErrorIncorrectStateOperation = (OMX_S32) 0x80001018,
  2414. +
  2415. + /** The values encapsulated in the parameter or config structure are not supported. */
  2416. + OMX_ErrorUnsupportedSetting = (OMX_S32) 0x80001019,
  2417. +
  2418. + /** The parameter or config indicated by the given index is not supported. */
  2419. + OMX_ErrorUnsupportedIndex = (OMX_S32) 0x8000101A,
  2420. +
  2421. + /** The port index supplied is incorrect. */
  2422. + OMX_ErrorBadPortIndex = (OMX_S32) 0x8000101B,
  2423. +
  2424. + /** The port has lost one or more of its buffers and it thus unpopulated. */
  2425. + OMX_ErrorPortUnpopulated = (OMX_S32) 0x8000101C,
  2426. +
  2427. + /** Component suspended due to temporary loss of resources */
  2428. + OMX_ErrorComponentSuspended = (OMX_S32) 0x8000101D,
  2429. +
  2430. + /** Component suspended due to an inability to acquire dynamic resources */
  2431. + OMX_ErrorDynamicResourcesUnavailable = (OMX_S32) 0x8000101E,
  2432. +
  2433. + /** When the macroblock error reporting is enabled the component returns new error
  2434. + for every frame that has errors */
  2435. + OMX_ErrorMbErrorsInFrame = (OMX_S32) 0x8000101F,
  2436. +
  2437. + /** A component reports this error when it cannot parse or determine the format of an input stream. */
  2438. + OMX_ErrorFormatNotDetected = (OMX_S32) 0x80001020,
  2439. +
  2440. + /** The content open operation failed. */
  2441. + OMX_ErrorContentPipeOpenFailed = (OMX_S32) 0x80001021,
  2442. +
  2443. + /** The content creation operation failed. */
  2444. + OMX_ErrorContentPipeCreationFailed = (OMX_S32) 0x80001022,
  2445. +
  2446. + /** Separate table information is being used */
  2447. + OMX_ErrorSeperateTablesUsed = (OMX_S32) 0x80001023,
  2448. +
  2449. + /** Tunneling is unsupported by the component*/
  2450. + OMX_ErrorTunnelingUnsupported = (OMX_S32) 0x80001024,
  2451. +
  2452. + OMX_ErrorKhronosExtensions = (OMX_S32)0x8F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2453. + OMX_ErrorVendorStartUnused = (OMX_S32)0x90000000, /**< Reserved region for introducing Vendor Extensions */
  2454. + OMX_ErrorMax = 0x7FFFFFFF
  2455. +} OMX_ERRORTYPE;
  2456. +
  2457. +/** @ingroup core */
  2458. +typedef OMX_ERRORTYPE (* OMX_COMPONENTINITTYPE)(OMX_IN OMX_HANDLETYPE hComponent);
  2459. +
  2460. +/** @ingroup core */
  2461. +typedef struct OMX_COMPONENTREGISTERTYPE {
  2462. + const char * pName; /* Component name, 128 byte limit (including '\0') applies */
  2463. + OMX_COMPONENTINITTYPE pInitialize; /* Component instance initialization function */
  2464. +} OMX_COMPONENTREGISTERTYPE;
  2465. +
  2466. +/** @ingroup core */
  2467. +extern OMX_COMPONENTREGISTERTYPE OMX_ComponentRegistered[];
  2468. +
  2469. +/** @ingroup rpm */
  2470. +typedef struct OMX_PRIORITYMGMTTYPE {
  2471. + OMX_U32 nSize; /**< size of the structure in bytes */
  2472. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  2473. + OMX_U32 nGroupPriority; /**< Priority of the component group */
  2474. + OMX_U32 nGroupID; /**< ID of the component group */
  2475. +} OMX_PRIORITYMGMTTYPE;
  2476. +
  2477. +/* Component name and Role names are limited to 128 characters including the terminating '\0'. */
  2478. +#define OMX_MAX_STRINGNAME_SIZE 128
  2479. +
  2480. +/** @ingroup comp */
  2481. +typedef struct OMX_PARAM_COMPONENTROLETYPE {
  2482. + OMX_U32 nSize; /**< size of the structure in bytes */
  2483. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  2484. + OMX_U8 cRole[OMX_MAX_STRINGNAME_SIZE]; /**< name of standard component which defines component role */
  2485. +} OMX_PARAM_COMPONENTROLETYPE;
  2486. +
  2487. +/** End of Stream Buffer Flag:
  2488. + *
  2489. + * A component sets EOS when it has no more data to emit on a particular
  2490. + * output port. Thus an output port shall set EOS on the last buffer it
  2491. + * emits. A component's determination of when an output port should
  2492. + * cease sending data is implemenation specific.
  2493. + * @ingroup buf
  2494. + */
  2495. +
  2496. +#define OMX_BUFFERFLAG_EOS 0x00000001
  2497. +
  2498. +/** Start Time Buffer Flag:
  2499. + *
  2500. + * The source of a stream (e.g. a demux component) sets the STARTTIME
  2501. + * flag on the buffer that contains the starting timestamp for the
  2502. + * stream. The starting timestamp corresponds to the first data that
  2503. + * should be displayed at startup or after a seek.
  2504. + * The first timestamp of the stream is not necessarily the start time.
  2505. + * For instance, in the case of a seek to a particular video frame,
  2506. + * the target frame may be an interframe. Thus the first buffer of
  2507. + * the stream will be the intra-frame preceding the target frame and
  2508. + * the starttime will occur with the target frame (with any other
  2509. + * required frames required to reconstruct the target intervening).
  2510. + *
  2511. + * The STARTTIME flag is directly associated with the buffer's
  2512. + * timestamp ' thus its association to buffer data and its
  2513. + * propagation is identical to the timestamp's.
  2514. + *
  2515. + * When a Sync Component client receives a buffer with the
  2516. + * STARTTIME flag it shall perform a SetConfig on its sync port
  2517. + * using OMX_ConfigTimeClientStartTime and passing the buffer's
  2518. + * timestamp.
  2519. + *
  2520. + * @ingroup buf
  2521. + */
  2522. +
  2523. +#define OMX_BUFFERFLAG_STARTTIME 0x00000002
  2524. +
  2525. +
  2526. +
  2527. +/** Decode Only Buffer Flag:
  2528. + *
  2529. + * The source of a stream (e.g. a demux component) sets the DECODEONLY
  2530. + * flag on any buffer that should shall be decoded but should not be
  2531. + * displayed. This flag is used, for instance, when a source seeks to
  2532. + * a target interframe that requires the decode of frames preceding the
  2533. + * target to facilitate the target's reconstruction. In this case the
  2534. + * source would emit the frames preceding the target downstream
  2535. + * but mark them as decode only.
  2536. + *
  2537. + * The DECODEONLY is associated with buffer data and propagated in a
  2538. + * manner identical to the buffer timestamp.
  2539. + *
  2540. + * A component that renders data should ignore all buffers with
  2541. + * the DECODEONLY flag set.
  2542. + *
  2543. + * @ingroup buf
  2544. + */
  2545. +
  2546. +#define OMX_BUFFERFLAG_DECODEONLY 0x00000004
  2547. +
  2548. +
  2549. +/* Data Corrupt Flag: This flag is set when the IL client believes the data in the associated buffer is corrupt
  2550. + * @ingroup buf
  2551. + */
  2552. +
  2553. +#define OMX_BUFFERFLAG_DATACORRUPT 0x00000008
  2554. +
  2555. +/* End of Frame: The buffer contains exactly one end of frame and no data
  2556. + * occurs after the end of frame. This flag is an optional hint. The absence
  2557. + * of this flag does not imply the absence of an end of frame within the buffer.
  2558. + * @ingroup buf
  2559. +*/
  2560. +#define OMX_BUFFERFLAG_ENDOFFRAME 0x00000010
  2561. +
  2562. +/* Sync Frame Flag: This flag is set when the buffer content contains a coded sync frame '
  2563. + * a frame that has no dependency on any other frame information
  2564. + * @ingroup buf
  2565. + */
  2566. +#define OMX_BUFFERFLAG_SYNCFRAME 0x00000020
  2567. +
  2568. +/* Extra data present flag: there is extra data appended to the data stream
  2569. + * residing in the buffer
  2570. + * @ingroup buf
  2571. + */
  2572. +#define OMX_BUFFERFLAG_EXTRADATA 0x00000040
  2573. +
  2574. +/** Codec Config Buffer Flag:
  2575. +* OMX_BUFFERFLAG_CODECCONFIG is an optional flag that is set by an
  2576. +* output port when all bytes in the buffer form part or all of a set of
  2577. +* codec specific configuration data. Examples include SPS/PPS nal units
  2578. +* for OMX_VIDEO_CodingAVC or AudioSpecificConfig data for
  2579. +* OMX_AUDIO_CodingAAC. Any component that for a given stream sets
  2580. +* OMX_BUFFERFLAG_CODECCONFIG shall not mix codec configuration bytes
  2581. +* with frame data in the same buffer, and shall send all buffers
  2582. +* containing codec configuration bytes before any buffers containing
  2583. +* frame data that those configurations bytes describe.
  2584. +* If the stream format for a particular codec has a frame specific
  2585. +* header at the start of each frame, for example OMX_AUDIO_CodingMP3 or
  2586. +* OMX_AUDIO_CodingAAC in ADTS mode, then these shall be presented as
  2587. +* normal without setting OMX_BUFFERFLAG_CODECCONFIG.
  2588. + * @ingroup buf
  2589. + */
  2590. +#define OMX_BUFFERFLAG_CODECCONFIG 0x00000080
  2591. +
  2592. +
  2593. +
  2594. +/** @ingroup buf */
  2595. +typedef struct OMX_BUFFERHEADERTYPE {
  2596. + OMX_U32 nSize; /**< size of the structure in bytes */
  2597. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  2598. + OMX_U8* pBuffer; /**< Pointer to actual block of memory
  2599. + that is acting as the buffer */
  2600. + OMX_U32 nAllocLen; /**< size of the buffer allocated, in bytes */
  2601. + OMX_U32 nFilledLen; /**< number of bytes currently in the
  2602. + buffer */
  2603. + OMX_U32 nOffset; /**< start offset of valid data in bytes from
  2604. + the start of the buffer */
  2605. + OMX_PTR pAppPrivate; /**< pointer to any data the application
  2606. + wants to associate with this buffer */
  2607. + OMX_PTR pPlatformPrivate; /**< pointer to any data the platform
  2608. + wants to associate with this buffer */
  2609. + OMX_PTR pInputPortPrivate; /**< pointer to any data the input port
  2610. + wants to associate with this buffer */
  2611. + OMX_PTR pOutputPortPrivate; /**< pointer to any data the output port
  2612. + wants to associate with this buffer */
  2613. + OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will generate a
  2614. + mark event upon processing this buffer. */
  2615. + OMX_PTR pMarkData; /**< Application specific data associated with
  2616. + the mark sent on a mark event to disambiguate
  2617. + this mark from others. */
  2618. + OMX_U32 nTickCount; /**< Optional entry that the component and
  2619. + application can update with a tick count
  2620. + when they access the component. This
  2621. + value should be in microseconds. Since
  2622. + this is a value relative to an arbitrary
  2623. + starting point, this value cannot be used
  2624. + to determine absolute time. This is an
  2625. + optional entry and not all components
  2626. + will update it.*/
  2627. + OMX_TICKS nTimeStamp; /**< Timestamp corresponding to the sample
  2628. + starting at the first logical sample
  2629. + boundary in the buffer. Timestamps of
  2630. + successive samples within the buffer may
  2631. + be inferred by adding the duration of the
  2632. + of the preceding buffer to the timestamp
  2633. + of the preceding buffer.*/
  2634. + OMX_U32 nFlags; /**< buffer specific flags */
  2635. + OMX_U32 nOutputPortIndex; /**< The index of the output port (if any) using
  2636. + this buffer */
  2637. + OMX_U32 nInputPortIndex; /**< The index of the input port (if any) using
  2638. + this buffer */
  2639. +} OMX_BUFFERHEADERTYPE;
  2640. +
  2641. +/** The OMX_EXTRADATATYPE enumeration is used to define the
  2642. + * possible extra data payload types.
  2643. + * NB: this enum is binary backwards compatible with the previous
  2644. + * OMX_EXTRADATA_QUANT define. This should be replaced with
  2645. + * OMX_ExtraDataQuantization.
  2646. + */
  2647. +typedef enum OMX_EXTRADATATYPE {
  2648. + OMX_ExtraDataNone = 0, /**< Indicates that no more extra data sections follow */
  2649. + OMX_ExtraDataQuantization, /**< The data payload contains quantization data */
  2650. + OMX_ExtraDataKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2651. + OMX_ExtraDataVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2652. + OMX_ExtraDataMax = 0x7FFFFFFF
  2653. +} OMX_EXTRADATATYPE;
  2654. +
  2655. +
  2656. +typedef struct OMX_OTHER_EXTRADATATYPE {
  2657. + OMX_U32 nSize;
  2658. + OMX_VERSIONTYPE nVersion;
  2659. + OMX_U32 nPortIndex;
  2660. + OMX_EXTRADATATYPE eType; /* Extra Data type */
  2661. + OMX_U32 nDataSize; /* Size of the supporting data to follow */
  2662. + OMX_U8 data[1]; /* Supporting data hint */
  2663. +} OMX_OTHER_EXTRADATATYPE;
  2664. +
  2665. +/** @ingroup comp */
  2666. +typedef struct OMX_PORT_PARAM_TYPE {
  2667. + OMX_U32 nSize; /**< size of the structure in bytes */
  2668. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  2669. + OMX_U32 nPorts; /**< The number of ports for this component */
  2670. + OMX_U32 nStartPortNumber; /** first port number for this type of port */
  2671. +} OMX_PORT_PARAM_TYPE;
  2672. +
  2673. +/** @ingroup comp */
  2674. +typedef enum OMX_EVENTTYPE {
  2675. + OMX_EventCmdComplete, /**< component has sucessfully completed a command */
  2676. + OMX_EventError, /**< component has detected an error condition */
  2677. + OMX_EventMark, /**< component has detected a buffer mark */
  2678. + OMX_EventPortSettingsChanged, /**< component is reported a port settings change */
  2679. + OMX_EventBufferFlag, /**< component has detected an EOS */
  2680. + OMX_EventResourcesAcquired, /**< component has been granted resources and is
  2681. + automatically starting the state change from
  2682. + OMX_StateWaitForResources to OMX_StateIdle. */
  2683. + OMX_EventComponentResumed, /**< Component resumed due to reacquisition of resources */
  2684. + OMX_EventDynamicResourcesAvailable, /**< Component has acquired previously unavailable dynamic resources */
  2685. + OMX_EventPortFormatDetected, /**< Component has detected a supported format. */
  2686. + OMX_EventKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2687. + OMX_EventVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2688. + OMX_EventMax = 0x7FFFFFFF
  2689. +} OMX_EVENTTYPE;
  2690. +
  2691. +typedef struct OMX_CALLBACKTYPE {
  2692. + /** The EventHandler method is used to notify the application when an
  2693. + event of interest occurs. Events are defined in the OMX_EVENTTYPE
  2694. + enumeration. Please see that enumeration for details of what will
  2695. + be returned for each type of event. Callbacks should not return
  2696. + an error to the component, so if an error occurs, the application
  2697. + shall handle it internally. This is a blocking call.
  2698. +
  2699. + The application should return from this call within 5 msec to avoid
  2700. + blocking the component for an excessively long period of time.
  2701. +
  2702. + @param hComponent
  2703. + handle of the component to access. This is the component
  2704. + handle returned by the call to the GetHandle function.
  2705. + @param pAppData
  2706. + pointer to an application defined value that was provided in the
  2707. + pAppData parameter to the OMX_GetHandle method for the component.
  2708. + This application defined value is provided so that the application
  2709. + can have a component specific context when receiving the callback.
  2710. + @param eEvent
  2711. + Event that the component wants to notify the application about.
  2712. + @param nData1
  2713. + nData will be the OMX_ERRORTYPE for an error event and will be
  2714. + an OMX_COMMANDTYPE for a command complete event and OMX_INDEXTYPE for a OMX_PortSettingsChanged event.
  2715. + @param nData2
  2716. + nData2 will hold further information related to the event. Can be OMX_STATETYPE for
  2717. + a OMX_CommandStateSet command or port index for a OMX_PortSettingsChanged event.
  2718. + Default value is 0 if not used. )
  2719. + @param pEventData
  2720. + Pointer to additional event-specific data (see spec for meaning).
  2721. + */
  2722. +
  2723. + OMX_ERRORTYPE (*EventHandler)(
  2724. + OMX_IN OMX_HANDLETYPE hComponent,
  2725. + OMX_IN OMX_PTR pAppData,
  2726. + OMX_IN OMX_EVENTTYPE eEvent,
  2727. + OMX_IN OMX_U32 nData1,
  2728. + OMX_IN OMX_U32 nData2,
  2729. + OMX_IN OMX_PTR pEventData);
  2730. +
  2731. + /** The EmptyBufferDone method is used to return emptied buffers from an
  2732. + input port back to the application for reuse. This is a blocking call
  2733. + so the application should not attempt to refill the buffers during this
  2734. + call, but should queue them and refill them in another thread. There
  2735. + is no error return, so the application shall handle any errors generated
  2736. + internally.
  2737. +
  2738. + The application should return from this call within 5 msec.
  2739. +
  2740. + @param hComponent
  2741. + handle of the component to access. This is the component
  2742. + handle returned by the call to the GetHandle function.
  2743. + @param pAppData
  2744. + pointer to an application defined value that was provided in the
  2745. + pAppData parameter to the OMX_GetHandle method for the component.
  2746. + This application defined value is provided so that the application
  2747. + can have a component specific context when receiving the callback.
  2748. + @param pBuffer
  2749. + pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
  2750. + or AllocateBuffer indicating the buffer that was emptied.
  2751. + @ingroup buf
  2752. + */
  2753. + OMX_ERRORTYPE (*EmptyBufferDone)(
  2754. + OMX_IN OMX_HANDLETYPE hComponent,
  2755. + OMX_IN OMX_PTR pAppData,
  2756. + OMX_IN OMX_BUFFERHEADERTYPE* pBuffer);
  2757. +
  2758. + /** The FillBufferDone method is used to return filled buffers from an
  2759. + output port back to the application for emptying and then reuse.
  2760. + This is a blocking call so the application should not attempt to
  2761. + empty the buffers during this call, but should queue the buffers
  2762. + and empty them in another thread. There is no error return, so
  2763. + the application shall handle any errors generated internally. The
  2764. + application shall also update the buffer header to indicate the
  2765. + number of bytes placed into the buffer.
  2766. +
  2767. + The application should return from this call within 5 msec.
  2768. +
  2769. + @param hComponent
  2770. + handle of the component to access. This is the component
  2771. + handle returned by the call to the GetHandle function.
  2772. + @param pAppData
  2773. + pointer to an application defined value that was provided in the
  2774. + pAppData parameter to the OMX_GetHandle method for the component.
  2775. + This application defined value is provided so that the application
  2776. + can have a component specific context when receiving the callback.
  2777. + @param pBuffer
  2778. + pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
  2779. + or AllocateBuffer indicating the buffer that was filled.
  2780. + @ingroup buf
  2781. + */
  2782. + OMX_ERRORTYPE (*FillBufferDone)(
  2783. + OMX_OUT OMX_HANDLETYPE hComponent,
  2784. + OMX_OUT OMX_PTR pAppData,
  2785. + OMX_OUT OMX_BUFFERHEADERTYPE* pBuffer);
  2786. +
  2787. +} OMX_CALLBACKTYPE;
  2788. +
  2789. +/** The OMX_BUFFERSUPPLIERTYPE enumeration is used to dictate port supplier
  2790. + preference when tunneling between two ports.
  2791. + @ingroup tun buf
  2792. +*/
  2793. +typedef enum OMX_BUFFERSUPPLIERTYPE {
  2794. + OMX_BufferSupplyUnspecified = 0x0, /**< port supplying the buffers is unspecified,
  2795. + or don't care */
  2796. + OMX_BufferSupplyInput, /**< input port supplies the buffers */
  2797. + OMX_BufferSupplyOutput, /**< output port supplies the buffers */
  2798. + OMX_BufferSupplyKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  2799. + OMX_BufferSupplyVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  2800. + OMX_BufferSupplyMax = 0x7FFFFFFF
  2801. +} OMX_BUFFERSUPPLIERTYPE;
  2802. +
  2803. +
  2804. +/** buffer supplier parameter
  2805. + * @ingroup tun
  2806. + */
  2807. +typedef struct OMX_PARAM_BUFFERSUPPLIERTYPE {
  2808. + OMX_U32 nSize; /**< size of the structure in bytes */
  2809. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  2810. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  2811. + OMX_BUFFERSUPPLIERTYPE eBufferSupplier; /**< buffer supplier */
  2812. +} OMX_PARAM_BUFFERSUPPLIERTYPE;
  2813. +
  2814. +
  2815. +/**< indicates that buffers received by an input port of a tunnel
  2816. + may not modify the data in the buffers
  2817. + @ingroup tun
  2818. + */
  2819. +#define OMX_PORTTUNNELFLAG_READONLY 0x00000001
  2820. +
  2821. +
  2822. +/** The OMX_TUNNELSETUPTYPE structure is used to pass data from an output
  2823. + port to an input port as part the two ComponentTunnelRequest calls
  2824. + resulting from a OMX_SetupTunnel call from the IL Client.
  2825. + @ingroup tun
  2826. + */
  2827. +typedef struct OMX_TUNNELSETUPTYPE {
  2828. + OMX_U32 nTunnelFlags; /**< bit flags for tunneling */
  2829. + OMX_BUFFERSUPPLIERTYPE eSupplier; /**< supplier preference */
  2830. +} OMX_TUNNELSETUPTYPE;
  2831. +
  2832. +/* OMX Component headers is included to enable the core to use
  2833. + macros for functions into the component for OMX release 1.0.
  2834. + Developers should not access any structures or data from within
  2835. + the component header directly */
  2836. +/* TO BE REMOVED - #include <OMX_Component.h> */
  2837. +
  2838. +/** GetComponentVersion will return information about the component.
  2839. + This is a blocking call. This macro will go directly from the
  2840. + application to the component (via a core macro). The
  2841. + component will return from this call within 5 msec.
  2842. + @param [in] hComponent
  2843. + handle of component to execute the command
  2844. + @param [out] pComponentName
  2845. + pointer to an empty string of length 128 bytes. The component
  2846. + will write its name into this string. The name will be
  2847. + terminated by a single zero byte. The name of a component will
  2848. + be 127 bytes or less to leave room for the trailing zero byte.
  2849. + An example of a valid component name is "OMX.ABC.ChannelMixer\0".
  2850. + @param [out] pComponentVersion
  2851. + pointer to an OMX Version structure that the component will fill
  2852. + in. The component will fill in a value that indicates the
  2853. + component version. NOTE: the component version is NOT the same
  2854. + as the OMX Specification version (found in all structures). The
  2855. + component version is defined by the vendor of the component and
  2856. + its value is entirely up to the component vendor.
  2857. + @param [out] pSpecVersion
  2858. + pointer to an OMX Version structure that the component will fill
  2859. + in. The SpecVersion is the version of the specification that the
  2860. + component was built against. Please note that this value may or
  2861. + may not match the structure's version. For example, if the
  2862. + component was built against the 2.0 specification, but the
  2863. + application (which creates the structure is built against the
  2864. + 1.0 specification the versions would be different.
  2865. + @param [out] pComponentUUID
  2866. + pointer to the UUID of the component which will be filled in by
  2867. + the component. The UUID is a unique identifier that is set at
  2868. + RUN time for the component and is unique to each instantion of
  2869. + the component.
  2870. + @return OMX_ERRORTYPE
  2871. + If the command successfully executes, the return code will be
  2872. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  2873. + @ingroup comp
  2874. + */
  2875. +#define OMX_GetComponentVersion( \
  2876. + hComponent, \
  2877. + pComponentName, \
  2878. + pComponentVersion, \
  2879. + pSpecVersion, \
  2880. + pComponentUUID) \
  2881. + ((OMX_COMPONENTTYPE*)hComponent)->GetComponentVersion( \
  2882. + hComponent, \
  2883. + pComponentName, \
  2884. + pComponentVersion, \
  2885. + pSpecVersion, \
  2886. + pComponentUUID) /* Macro End */
  2887. +
  2888. +
  2889. +/** Send a command to the component. This call is a non-blocking call.
  2890. + The component should check the parameters and then queue the command
  2891. + to the component thread to be executed. The component thread shall
  2892. + send the EventHandler() callback at the conclusion of the command.
  2893. + This macro will go directly from the application to the component (via
  2894. + a core macro). The component will return from this call within 5 msec.
  2895. +
  2896. + When the command is "OMX_CommandStateSet" the component will queue a
  2897. + state transition to the new state idenfied in nParam.
  2898. +
  2899. + When the command is "OMX_CommandFlush", to flush a port's buffer queues,
  2900. + the command will force the component to return all buffers NOT CURRENTLY
  2901. + BEING PROCESSED to the application, in the order in which the buffers
  2902. + were received.
  2903. +
  2904. + When the command is "OMX_CommandPortDisable" or
  2905. + "OMX_CommandPortEnable", the component's port (given by the value of
  2906. + nParam) will be stopped or restarted.
  2907. +
  2908. + When the command "OMX_CommandMarkBuffer" is used to mark a buffer, the
  2909. + pCmdData will point to a OMX_MARKTYPE structure containing the component
  2910. + handle of the component to examine the buffer chain for the mark. nParam1
  2911. + contains the index of the port on which the buffer mark is applied.
  2912. +
  2913. + Specification text for more details.
  2914. +
  2915. + @param [in] hComponent
  2916. + handle of component to execute the command
  2917. + @param [in] Cmd
  2918. + Command for the component to execute
  2919. + @param [in] nParam
  2920. + Parameter for the command to be executed. When Cmd has the value
  2921. + OMX_CommandStateSet, value is a member of OMX_STATETYPE. When Cmd has
  2922. + the value OMX_CommandFlush, value of nParam indicates which port(s)
  2923. + to flush. -1 is used to flush all ports a single port index will
  2924. + only flush that port. When Cmd has the value "OMX_CommandPortDisable"
  2925. + or "OMX_CommandPortEnable", the component's port is given by
  2926. + the value of nParam. When Cmd has the value "OMX_CommandMarkBuffer"
  2927. + the components pot is given by the value of nParam.
  2928. + @param [in] pCmdData
  2929. + Parameter pointing to the OMX_MARKTYPE structure when Cmd has the value
  2930. + "OMX_CommandMarkBuffer".
  2931. + @return OMX_ERRORTYPE
  2932. + If the command successfully executes, the return code will be
  2933. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  2934. + @ingroup comp
  2935. + */
  2936. +#define OMX_SendCommand( \
  2937. + hComponent, \
  2938. + Cmd, \
  2939. + nParam, \
  2940. + pCmdData) \
  2941. + ((OMX_COMPONENTTYPE*)hComponent)->SendCommand( \
  2942. + hComponent, \
  2943. + Cmd, \
  2944. + nParam, \
  2945. + pCmdData) /* Macro End */
  2946. +
  2947. +
  2948. +/** The OMX_GetParameter macro will get one of the current parameter
  2949. + settings from the component. This macro cannot only be invoked when
  2950. + the component is in the OMX_StateInvalid state. The nParamIndex
  2951. + parameter is used to indicate which structure is being requested from
  2952. + the component. The application shall allocate the correct structure
  2953. + and shall fill in the structure size and version information before
  2954. + invoking this macro. When the parameter applies to a port, the
  2955. + caller shall fill in the appropriate nPortIndex value indicating the
  2956. + port on which the parameter applies. If the component has not had
  2957. + any settings changed, then the component should return a set of
  2958. + valid DEFAULT parameters for the component. This is a blocking
  2959. + call.
  2960. +
  2961. + The component should return from this call within 20 msec.
  2962. +
  2963. + @param [in] hComponent
  2964. + Handle of the component to be accessed. This is the component
  2965. + handle returned by the call to the OMX_GetHandle function.
  2966. + @param [in] nParamIndex
  2967. + Index of the structure to be filled. This value is from the
  2968. + OMX_INDEXTYPE enumeration.
  2969. + @param [in,out] pComponentParameterStructure
  2970. + Pointer to application allocated structure to be filled by the
  2971. + component.
  2972. + @return OMX_ERRORTYPE
  2973. + If the command successfully executes, the return code will be
  2974. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  2975. + @ingroup comp
  2976. + */
  2977. +#define OMX_GetParameter( \
  2978. + hComponent, \
  2979. + nParamIndex, \
  2980. + pComponentParameterStructure) \
  2981. + ((OMX_COMPONENTTYPE*)hComponent)->GetParameter( \
  2982. + hComponent, \
  2983. + nParamIndex, \
  2984. + pComponentParameterStructure) /* Macro End */
  2985. +
  2986. +
  2987. +/** The OMX_SetParameter macro will send an initialization parameter
  2988. + structure to a component. Each structure shall be sent one at a time,
  2989. + in a separate invocation of the macro. This macro can only be
  2990. + invoked when the component is in the OMX_StateLoaded state, or the
  2991. + port is disabled (when the parameter applies to a port). The
  2992. + nParamIndex parameter is used to indicate which structure is being
  2993. + passed to the component. The application shall allocate the
  2994. + correct structure and shall fill in the structure size and version
  2995. + information (as well as the actual data) before invoking this macro.
  2996. + The application is free to dispose of this structure after the call
  2997. + as the component is required to copy any data it shall retain. This
  2998. + is a blocking call.
  2999. +
  3000. + The component should return from this call within 20 msec.
  3001. +
  3002. + @param [in] hComponent
  3003. + Handle of the component to be accessed. This is the component
  3004. + handle returned by the call to the OMX_GetHandle function.
  3005. + @param [in] nIndex
  3006. + Index of the structure to be sent. This value is from the
  3007. + OMX_INDEXTYPE enumeration.
  3008. + @param [in] pComponentParameterStructure
  3009. + pointer to application allocated structure to be used for
  3010. + initialization by the component.
  3011. + @return OMX_ERRORTYPE
  3012. + If the command successfully executes, the return code will be
  3013. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3014. + @ingroup comp
  3015. + */
  3016. +#define OMX_SetParameter( \
  3017. + hComponent, \
  3018. + nParamIndex, \
  3019. + pComponentParameterStructure) \
  3020. + ((OMX_COMPONENTTYPE*)hComponent)->SetParameter( \
  3021. + hComponent, \
  3022. + nParamIndex, \
  3023. + pComponentParameterStructure) /* Macro End */
  3024. +
  3025. +
  3026. +/** The OMX_GetConfig macro will get one of the configuration structures
  3027. + from a component. This macro can be invoked anytime after the
  3028. + component has been loaded. The nParamIndex call parameter is used to
  3029. + indicate which structure is being requested from the component. The
  3030. + application shall allocate the correct structure and shall fill in the
  3031. + structure size and version information before invoking this macro.
  3032. + If the component has not had this configuration parameter sent before,
  3033. + then the component should return a set of valid DEFAULT values for the
  3034. + component. This is a blocking call.
  3035. +
  3036. + The component should return from this call within 5 msec.
  3037. +
  3038. + @param [in] hComponent
  3039. + Handle of the component to be accessed. This is the component
  3040. + handle returned by the call to the OMX_GetHandle function.
  3041. + @param [in] nIndex
  3042. + Index of the structure to be filled. This value is from the
  3043. + OMX_INDEXTYPE enumeration.
  3044. + @param [in,out] pComponentConfigStructure
  3045. + pointer to application allocated structure to be filled by the
  3046. + component.
  3047. + @return OMX_ERRORTYPE
  3048. + If the command successfully executes, the return code will be
  3049. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3050. + @ingroup comp
  3051. +*/
  3052. +#define OMX_GetConfig( \
  3053. + hComponent, \
  3054. + nConfigIndex, \
  3055. + pComponentConfigStructure) \
  3056. + ((OMX_COMPONENTTYPE*)hComponent)->GetConfig( \
  3057. + hComponent, \
  3058. + nConfigIndex, \
  3059. + pComponentConfigStructure) /* Macro End */
  3060. +
  3061. +
  3062. +/** The OMX_SetConfig macro will send one of the configuration
  3063. + structures to a component. Each structure shall be sent one at a time,
  3064. + each in a separate invocation of the macro. This macro can be invoked
  3065. + anytime after the component has been loaded. The application shall
  3066. + allocate the correct structure and shall fill in the structure size
  3067. + and version information (as well as the actual data) before invoking
  3068. + this macro. The application is free to dispose of this structure after
  3069. + the call as the component is required to copy any data it shall retain.
  3070. + This is a blocking call.
  3071. +
  3072. + The component should return from this call within 5 msec.
  3073. +
  3074. + @param [in] hComponent
  3075. + Handle of the component to be accessed. This is the component
  3076. + handle returned by the call to the OMX_GetHandle function.
  3077. + @param [in] nConfigIndex
  3078. + Index of the structure to be sent. This value is from the
  3079. + OMX_INDEXTYPE enumeration above.
  3080. + @param [in] pComponentConfigStructure
  3081. + pointer to application allocated structure to be used for
  3082. + initialization by the component.
  3083. + @return OMX_ERRORTYPE
  3084. + If the command successfully executes, the return code will be
  3085. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3086. + @ingroup comp
  3087. + */
  3088. +#define OMX_SetConfig( \
  3089. + hComponent, \
  3090. + nConfigIndex, \
  3091. + pComponentConfigStructure) \
  3092. + ((OMX_COMPONENTTYPE*)hComponent)->SetConfig( \
  3093. + hComponent, \
  3094. + nConfigIndex, \
  3095. + pComponentConfigStructure) /* Macro End */
  3096. +
  3097. +
  3098. +/** The OMX_GetExtensionIndex macro will invoke a component to translate
  3099. + a vendor specific configuration or parameter string into an OMX
  3100. + structure index. There is no requirement for the vendor to support
  3101. + this command for the indexes already found in the OMX_INDEXTYPE
  3102. + enumeration (this is done to save space in small components). The
  3103. + component shall support all vendor supplied extension indexes not found
  3104. + in the master OMX_INDEXTYPE enumeration. This is a blocking call.
  3105. +
  3106. + The component should return from this call within 5 msec.
  3107. +
  3108. + @param [in] hComponent
  3109. + Handle of the component to be accessed. This is the component
  3110. + handle returned by the call to the GetHandle function.
  3111. + @param [in] cParameterName
  3112. + OMX_STRING that shall be less than 128 characters long including
  3113. + the trailing null byte. This is the string that will get
  3114. + translated by the component into a configuration index.
  3115. + @param [out] pIndexType
  3116. + a pointer to a OMX_INDEXTYPE to receive the index value.
  3117. + @return OMX_ERRORTYPE
  3118. + If the command successfully executes, the return code will be
  3119. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3120. + @ingroup comp
  3121. + */
  3122. +#define OMX_GetExtensionIndex( \
  3123. + hComponent, \
  3124. + cParameterName, \
  3125. + pIndexType) \
  3126. + ((OMX_COMPONENTTYPE*)hComponent)->GetExtensionIndex( \
  3127. + hComponent, \
  3128. + cParameterName, \
  3129. + pIndexType) /* Macro End */
  3130. +
  3131. +
  3132. +/** The OMX_GetState macro will invoke the component to get the current
  3133. + state of the component and place the state value into the location
  3134. + pointed to by pState.
  3135. +
  3136. + The component should return from this call within 5 msec.
  3137. +
  3138. + @param [in] hComponent
  3139. + Handle of the component to be accessed. This is the component
  3140. + handle returned by the call to the OMX_GetHandle function.
  3141. + @param [out] pState
  3142. + pointer to the location to receive the state. The value returned
  3143. + is one of the OMX_STATETYPE members
  3144. + @return OMX_ERRORTYPE
  3145. + If the command successfully executes, the return code will be
  3146. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3147. + @ingroup comp
  3148. + */
  3149. +#define OMX_GetState( \
  3150. + hComponent, \
  3151. + pState) \
  3152. + ((OMX_COMPONENTTYPE*)hComponent)->GetState( \
  3153. + hComponent, \
  3154. + pState) /* Macro End */
  3155. +
  3156. +
  3157. +/** The OMX_UseBuffer macro will request that the component use
  3158. + a buffer (and allocate its own buffer header) already allocated
  3159. + by another component, or by the IL Client. This is a blocking
  3160. + call.
  3161. +
  3162. + The component should return from this call within 20 msec.
  3163. +
  3164. + @param [in] hComponent
  3165. + Handle of the component to be accessed. This is the component
  3166. + handle returned by the call to the OMX_GetHandle function.
  3167. + @param [out] ppBuffer
  3168. + pointer to an OMX_BUFFERHEADERTYPE structure used to receive the
  3169. + pointer to the buffer header
  3170. + @return OMX_ERRORTYPE
  3171. + If the command successfully executes, the return code will be
  3172. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3173. + @ingroup comp buf
  3174. + */
  3175. +
  3176. +#define OMX_UseBuffer( \
  3177. + hComponent, \
  3178. + ppBufferHdr, \
  3179. + nPortIndex, \
  3180. + pAppPrivate, \
  3181. + nSizeBytes, \
  3182. + pBuffer) \
  3183. + ((OMX_COMPONENTTYPE*)hComponent)->UseBuffer( \
  3184. + hComponent, \
  3185. + ppBufferHdr, \
  3186. + nPortIndex, \
  3187. + pAppPrivate, \
  3188. + nSizeBytes, \
  3189. + pBuffer)
  3190. +
  3191. +
  3192. +/** The OMX_AllocateBuffer macro will request that the component allocate
  3193. + a new buffer and buffer header. The component will allocate the
  3194. + buffer and the buffer header and return a pointer to the buffer
  3195. + header. This is a blocking call.
  3196. +
  3197. + The component should return from this call within 5 msec.
  3198. +
  3199. + @param [in] hComponent
  3200. + Handle of the component to be accessed. This is the component
  3201. + handle returned by the call to the OMX_GetHandle function.
  3202. + @param [out] ppBuffer
  3203. + pointer to an OMX_BUFFERHEADERTYPE structure used to receive
  3204. + the pointer to the buffer header
  3205. + @param [in] nPortIndex
  3206. + nPortIndex is used to select the port on the component the buffer will
  3207. + be used with. The port can be found by using the nPortIndex
  3208. + value as an index into the Port Definition array of the component.
  3209. + @param [in] pAppPrivate
  3210. + pAppPrivate is used to initialize the pAppPrivate member of the
  3211. + buffer header structure.
  3212. + @param [in] nSizeBytes
  3213. + size of the buffer to allocate. Used when bAllocateNew is true.
  3214. + @return OMX_ERRORTYPE
  3215. + If the command successfully executes, the return code will be
  3216. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3217. + @ingroup comp buf
  3218. + */
  3219. +#define OMX_AllocateBuffer( \
  3220. + hComponent, \
  3221. + ppBuffer, \
  3222. + nPortIndex, \
  3223. + pAppPrivate, \
  3224. + nSizeBytes) \
  3225. + ((OMX_COMPONENTTYPE*)hComponent)->AllocateBuffer( \
  3226. + hComponent, \
  3227. + ppBuffer, \
  3228. + nPortIndex, \
  3229. + pAppPrivate, \
  3230. + nSizeBytes) /* Macro End */
  3231. +
  3232. +
  3233. +/** The OMX_FreeBuffer macro will release a buffer header from the component
  3234. + which was allocated using either OMX_AllocateBuffer or OMX_UseBuffer. If
  3235. + the component allocated the buffer (see the OMX_UseBuffer macro) then
  3236. + the component shall free the buffer and buffer header. This is a
  3237. + blocking call.
  3238. +
  3239. + The component should return from this call within 20 msec.
  3240. +
  3241. + @param [in] hComponent
  3242. + Handle of the component to be accessed. This is the component
  3243. + handle returned by the call to the OMX_GetHandle function.
  3244. + @param [in] nPortIndex
  3245. + nPortIndex is used to select the port on the component the buffer will
  3246. + be used with.
  3247. + @param [in] pBuffer
  3248. + pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
  3249. + or AllocateBuffer.
  3250. + @return OMX_ERRORTYPE
  3251. + If the command successfully executes, the return code will be
  3252. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3253. + @ingroup comp buf
  3254. + */
  3255. +#define OMX_FreeBuffer( \
  3256. + hComponent, \
  3257. + nPortIndex, \
  3258. + pBuffer) \
  3259. + ((OMX_COMPONENTTYPE*)hComponent)->FreeBuffer( \
  3260. + hComponent, \
  3261. + nPortIndex, \
  3262. + pBuffer) /* Macro End */
  3263. +
  3264. +
  3265. +/** The OMX_EmptyThisBuffer macro will send a buffer full of data to an
  3266. + input port of a component. The buffer will be emptied by the component
  3267. + and returned to the application via the EmptyBufferDone call back.
  3268. + This is a non-blocking call in that the component will record the buffer
  3269. + and return immediately and then empty the buffer, later, at the proper
  3270. + time. As expected, this macro may be invoked only while the component
  3271. + is in the OMX_StateExecuting. If nPortIndex does not specify an input
  3272. + port, the component shall return an error.
  3273. +
  3274. + The component should return from this call within 5 msec.
  3275. +
  3276. + @param [in] hComponent
  3277. + Handle of the component to be accessed. This is the component
  3278. + handle returned by the call to the OMX_GetHandle function.
  3279. + @param [in] pBuffer
  3280. + pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
  3281. + or AllocateBuffer.
  3282. + @return OMX_ERRORTYPE
  3283. + If the command successfully executes, the return code will be
  3284. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3285. + @ingroup comp buf
  3286. + */
  3287. +#define OMX_EmptyThisBuffer( \
  3288. + hComponent, \
  3289. + pBuffer) \
  3290. + ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer( \
  3291. + hComponent, \
  3292. + pBuffer) /* Macro End */
  3293. +
  3294. +
  3295. +/** The OMX_FillThisBuffer macro will send an empty buffer to an
  3296. + output port of a component. The buffer will be filled by the component
  3297. + and returned to the application via the FillBufferDone call back.
  3298. + This is a non-blocking call in that the component will record the buffer
  3299. + and return immediately and then fill the buffer, later, at the proper
  3300. + time. As expected, this macro may be invoked only while the component
  3301. + is in the OMX_ExecutingState. If nPortIndex does not specify an output
  3302. + port, the component shall return an error.
  3303. +
  3304. + The component should return from this call within 5 msec.
  3305. +
  3306. + @param [in] hComponent
  3307. + Handle of the component to be accessed. This is the component
  3308. + handle returned by the call to the OMX_GetHandle function.
  3309. + @param [in] pBuffer
  3310. + pointer to an OMX_BUFFERHEADERTYPE structure allocated with UseBuffer
  3311. + or AllocateBuffer.
  3312. + @return OMX_ERRORTYPE
  3313. + If the command successfully executes, the return code will be
  3314. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3315. + @ingroup comp buf
  3316. + */
  3317. +#define OMX_FillThisBuffer( \
  3318. + hComponent, \
  3319. + pBuffer) \
  3320. + ((OMX_COMPONENTTYPE*)hComponent)->FillThisBuffer( \
  3321. + hComponent, \
  3322. + pBuffer) /* Macro End */
  3323. +
  3324. +
  3325. +
  3326. +/** The OMX_UseEGLImage macro will request that the component use
  3327. + a EGLImage provided by EGL (and allocate its own buffer header)
  3328. + This is a blocking call.
  3329. +
  3330. + The component should return from this call within 20 msec.
  3331. +
  3332. + @param [in] hComponent
  3333. + Handle of the component to be accessed. This is the component
  3334. + handle returned by the call to the OMX_GetHandle function.
  3335. + @param [out] ppBuffer
  3336. + pointer to an OMX_BUFFERHEADERTYPE structure used to receive the
  3337. + pointer to the buffer header. Note that the memory location used
  3338. + for this buffer is NOT visible to the IL Client.
  3339. + @param [in] nPortIndex
  3340. + nPortIndex is used to select the port on the component the buffer will
  3341. + be used with. The port can be found by using the nPortIndex
  3342. + value as an index into the Port Definition array of the component.
  3343. + @param [in] pAppPrivate
  3344. + pAppPrivate is used to initialize the pAppPrivate member of the
  3345. + buffer header structure.
  3346. + @param [in] eglImage
  3347. + eglImage contains the handle of the EGLImage to use as a buffer on the
  3348. + specified port. The component is expected to validate properties of
  3349. + the EGLImage against the configuration of the port to ensure the component
  3350. + can use the EGLImage as a buffer.
  3351. + @return OMX_ERRORTYPE
  3352. + If the command successfully executes, the return code will be
  3353. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3354. + @ingroup comp buf
  3355. + */
  3356. +#define OMX_UseEGLImage( \
  3357. + hComponent, \
  3358. + ppBufferHdr, \
  3359. + nPortIndex, \
  3360. + pAppPrivate, \
  3361. + eglImage) \
  3362. + ((OMX_COMPONENTTYPE*)hComponent)->UseEGLImage( \
  3363. + hComponent, \
  3364. + ppBufferHdr, \
  3365. + nPortIndex, \
  3366. + pAppPrivate, \
  3367. + eglImage)
  3368. +
  3369. +/** The OMX_Init method is used to initialize the OMX core. It shall be the
  3370. + first call made into OMX and it should only be executed one time without
  3371. + an interviening OMX_Deinit call.
  3372. +
  3373. + The core should return from this call within 20 msec.
  3374. +
  3375. + @return OMX_ERRORTYPE
  3376. + If the command successfully executes, the return code will be
  3377. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3378. + @ingroup core
  3379. + */
  3380. +OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Init(void);
  3381. +
  3382. +
  3383. +/** The OMX_Deinit method is used to deinitialize the OMX core. It shall be
  3384. + the last call made into OMX. In the event that the core determines that
  3385. + thare are components loaded when this call is made, the core may return
  3386. + with an error rather than try to unload the components.
  3387. +
  3388. + The core should return from this call within 20 msec.
  3389. +
  3390. + @return OMX_ERRORTYPE
  3391. + If the command successfully executes, the return code will be
  3392. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3393. + @ingroup core
  3394. + */
  3395. +OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_Deinit(void);
  3396. +
  3397. +
  3398. +/** The OMX_ComponentNameEnum method will enumerate through all the names of
  3399. + recognised valid components in the system. This function is provided
  3400. + as a means to detect all the components in the system run-time. There is
  3401. + no strict ordering to the enumeration order of component names, although
  3402. + each name will only be enumerated once. If the OMX core supports run-time
  3403. + installation of new components, it is only requried to detect newly
  3404. + installed components when the first call to enumerate component names
  3405. + is made (i.e. when nIndex is 0x0).
  3406. +
  3407. + The core should return from this call in 20 msec.
  3408. +
  3409. + @param [out] cComponentName
  3410. + pointer to a null terminated string with the component name. The
  3411. + names of the components are strings less than 127 bytes in length
  3412. + plus the trailing null for a maximum size of 128 bytes. An example
  3413. + of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are
  3414. + assigned by the vendor, but shall start with "OMX." and then have
  3415. + the Vendor designation next.
  3416. + @param [in] nNameLength
  3417. + number of characters in the cComponentName string. With all
  3418. + component name strings restricted to less than 128 characters
  3419. + (including the trailing null) it is recomended that the caller
  3420. + provide a input string for the cComponentName of 128 characters.
  3421. + @param [in] nIndex
  3422. + number containing the enumeration index for the component.
  3423. + Multiple calls to OMX_ComponentNameEnum with increasing values
  3424. + of nIndex will enumerate through the component names in the
  3425. + system until OMX_ErrorNoMore is returned. The value of nIndex
  3426. + is 0 to (N-1), where N is the number of valid installed components
  3427. + in the system.
  3428. + @return OMX_ERRORTYPE
  3429. + If the command successfully executes, the return code will be
  3430. + OMX_ErrorNone. When the value of nIndex exceeds the number of
  3431. + components in the system minus 1, OMX_ErrorNoMore will be
  3432. + returned. Otherwise the appropriate OMX error will be returned.
  3433. + @ingroup core
  3434. + */
  3435. +OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_ComponentNameEnum(
  3436. + OMX_OUT OMX_STRING cComponentName,
  3437. + OMX_IN OMX_U32 nNameLength,
  3438. + OMX_IN OMX_U32 nIndex);
  3439. +
  3440. +
  3441. +/** The OMX_GetHandle method will locate the component specified by the
  3442. + component name given, load that component into memory and then invoke
  3443. + the component's methods to create an instance of the component.
  3444. +
  3445. + The core should return from this call within 20 msec.
  3446. +
  3447. + @param [out] pHandle
  3448. + pointer to an OMX_HANDLETYPE pointer to be filled in by this method.
  3449. + @param [in] cComponentName
  3450. + pointer to a null terminated string with the component name. The
  3451. + names of the components are strings less than 127 bytes in length
  3452. + plus the trailing null for a maximum size of 128 bytes. An example
  3453. + of a valid component name is "OMX.TI.AUDIO.DSP.MIXER\0". Names are
  3454. + assigned by the vendor, but shall start with "OMX." and then have
  3455. + the Vendor designation next.
  3456. + @param [in] pAppData
  3457. + pointer to an application defined value that will be returned
  3458. + during callbacks so that the application can identify the source
  3459. + of the callback.
  3460. + @param [in] pCallBacks
  3461. + pointer to a OMX_CALLBACKTYPE structure that will be passed to the
  3462. + component to initialize it with.
  3463. + @return OMX_ERRORTYPE
  3464. + If the command successfully executes, the return code will be
  3465. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3466. + @ingroup core
  3467. + */
  3468. +OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_GetHandle(
  3469. + OMX_OUT OMX_HANDLETYPE* pHandle,
  3470. + OMX_IN OMX_STRING cComponentName,
  3471. + OMX_IN OMX_PTR pAppData,
  3472. + OMX_IN OMX_CALLBACKTYPE* pCallBacks);
  3473. +
  3474. +
  3475. +/** The OMX_FreeHandle method will free a handle allocated by the OMX_GetHandle
  3476. + method. If the component reference count goes to zero, the component will
  3477. + be unloaded from memory.
  3478. +
  3479. + The core should return from this call within 20 msec when the component is
  3480. + in the OMX_StateLoaded state.
  3481. +
  3482. + @param [in] hComponent
  3483. + Handle of the component to be accessed. This is the component
  3484. + handle returned by the call to the GetHandle function.
  3485. + @return OMX_ERRORTYPE
  3486. + If the command successfully executes, the return code will be
  3487. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3488. + @ingroup core
  3489. + */
  3490. +OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_FreeHandle(
  3491. + OMX_IN OMX_HANDLETYPE hComponent);
  3492. +
  3493. +
  3494. +
  3495. +/** The OMX_SetupTunnel method will handle the necessary calls to the components
  3496. + to setup the specified tunnel the two components. NOTE: This is
  3497. + an actual method (not a #define macro). This method will make calls into
  3498. + the component ComponentTunnelRequest method to do the actual tunnel
  3499. + connection.
  3500. +
  3501. + The ComponentTunnelRequest method on both components will be called.
  3502. + This method shall not be called unless the component is in the
  3503. + OMX_StateLoaded state except when the ports used for the tunnel are
  3504. + disabled. In this case, the component may be in the OMX_StateExecuting,
  3505. + OMX_StatePause, or OMX_StateIdle states.
  3506. +
  3507. + The core should return from this call within 20 msec.
  3508. +
  3509. + @param [in] hOutput
  3510. + Handle of the component to be accessed. Also this is the handle
  3511. + of the component whose port, specified in the nPortOutput parameter
  3512. + will be used the source for the tunnel. This is the component handle
  3513. + returned by the call to the OMX_GetHandle function. There is a
  3514. + requirement that hOutput be the source for the data when
  3515. + tunelling (i.e. nPortOutput is an output port). If 0x0, the component
  3516. + specified in hInput will have it's port specified in nPortInput
  3517. + setup for communication with the application / IL client.
  3518. + @param [in] nPortOutput
  3519. + nPortOutput is used to select the source port on component to be
  3520. + used in the tunnel.
  3521. + @param [in] hInput
  3522. + This is the component to setup the tunnel with. This is the handle
  3523. + of the component whose port, specified in the nPortInput parameter
  3524. + will be used the destination for the tunnel. This is the component handle
  3525. + returned by the call to the OMX_GetHandle function. There is a
  3526. + requirement that hInput be the destination for the data when
  3527. + tunelling (i.e. nPortInut is an input port). If 0x0, the component
  3528. + specified in hOutput will have it's port specified in nPortPOutput
  3529. + setup for communication with the application / IL client.
  3530. + @param [in] nPortInput
  3531. + nPortInput is used to select the destination port on component to be
  3532. + used in the tunnel.
  3533. + @return OMX_ERRORTYPE
  3534. + If the command successfully executes, the return code will be
  3535. + OMX_ErrorNone. Otherwise the appropriate OMX error will be returned.
  3536. + When OMX_ErrorNotImplemented is returned, one or both components is
  3537. + a non-interop component and does not support tunneling.
  3538. +
  3539. + On failure, the ports of both components are setup for communication
  3540. + with the application / IL Client.
  3541. + @ingroup core tun
  3542. + */
  3543. +OMX_API OMX_ERRORTYPE OMX_APIENTRY OMX_SetupTunnel(
  3544. + OMX_IN OMX_HANDLETYPE hOutput,
  3545. + OMX_IN OMX_U32 nPortOutput,
  3546. + OMX_IN OMX_HANDLETYPE hInput,
  3547. + OMX_IN OMX_U32 nPortInput);
  3548. +
  3549. +/** @ingroup cp */
  3550. +OMX_API OMX_ERRORTYPE OMX_GetContentPipe(
  3551. + OMX_OUT OMX_HANDLETYPE *hPipe,
  3552. + OMX_IN OMX_STRING szURI);
  3553. +
  3554. +/** The OMX_GetComponentsOfRole method will return the number of components that support the given
  3555. + role and (if the compNames field is non-NULL) the names of those components. The call will fail if
  3556. + an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the
  3557. + client should:
  3558. + * first call this function with the compNames field NULL to determine the number of component names
  3559. + * second call this function with the compNames field pointing to an array of names allocated
  3560. + according to the number returned by the first call.
  3561. +
  3562. + The core should return from this call within 5 msec.
  3563. +
  3564. + @param [in] role
  3565. + This is generic standard component name consisting only of component class
  3566. + name and the type within that class (e.g. 'audio_decoder.aac').
  3567. + @param [inout] pNumComps
  3568. + This is used both as input and output.
  3569. +
  3570. + If compNames is NULL, the input is ignored and the output specifies how many components support
  3571. + the given role.
  3572. +
  3573. + If compNames is not NULL, on input it bounds the size of the input structure and
  3574. + on output, it specifies the number of components string names listed within the compNames parameter.
  3575. + @param [inout] compNames
  3576. + If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings which accepts
  3577. + a list of the names of all physical components that implement the specified standard component name.
  3578. + Each name is NULL terminated. numComps indicates the number of names.
  3579. + @ingroup core
  3580. + */
  3581. +OMX_API OMX_ERRORTYPE OMX_GetComponentsOfRole (
  3582. + OMX_IN OMX_STRING role,
  3583. + OMX_INOUT OMX_U32 *pNumComps,
  3584. + OMX_INOUT OMX_U8 **compNames);
  3585. +
  3586. +/** The OMX_GetRolesOfComponent method will return the number of roles supported by the given
  3587. + component and (if the roles field is non-NULL) the names of those roles. The call will fail if
  3588. + an insufficiently sized array of names is supplied. To ensure the array is sufficiently sized the
  3589. + client should:
  3590. + * first call this function with the roles field NULL to determine the number of role names
  3591. + * second call this function with the roles field pointing to an array of names allocated
  3592. + according to the number returned by the first call.
  3593. +
  3594. + The core should return from this call within 5 msec.
  3595. +
  3596. + @param [in] compName
  3597. + This is the name of the component being queried about.
  3598. + @param [inout] pNumRoles
  3599. + This is used both as input and output.
  3600. +
  3601. + If roles is NULL, the input is ignored and the output specifies how many roles the component supports.
  3602. +
  3603. + If compNames is not NULL, on input it bounds the size of the input structure and
  3604. + on output, it specifies the number of roles string names listed within the roles parameter.
  3605. + @param [out] roles
  3606. + If NULL this field is ignored. If non-NULL this points to an array of 128-byte strings
  3607. + which accepts a list of the names of all standard components roles implemented on the
  3608. + specified component name. numComps indicates the number of names.
  3609. + @ingroup core
  3610. + */
  3611. +OMX_API OMX_ERRORTYPE OMX_GetRolesOfComponent (
  3612. + OMX_IN OMX_STRING compName,
  3613. + OMX_INOUT OMX_U32 *pNumRoles,
  3614. + OMX_OUT OMX_U8 **roles);
  3615. +
  3616. +#ifdef __cplusplus
  3617. +}
  3618. +#endif /* __cplusplus */
  3619. +
  3620. +#endif
  3621. +/* File EOF */
  3622. +
  3623. diff --git a/sf-extra/omx-il/OMX_CoreExt.h b/sf-extra/omx-il/OMX_CoreExt.h
  3624. new file mode 100644
  3625. index 00000000..e2e21cc0
  3626. --- /dev/null
  3627. +++ b/sf-extra/omx-il/OMX_CoreExt.h
  3628. @@ -0,0 +1,73 @@
  3629. +/*
  3630. + * Copyright (c) 2016 The Khronos Group Inc.
  3631. + *
  3632. + * Permission is hereby granted, free of charge, to any person obtaining
  3633. + * a copy of this software and associated documentation files (the
  3634. + * "Software"), to deal in the Software without restriction, including
  3635. + * without limitation the rights to use, copy, modify, merge, publish,
  3636. + * distribute, sublicense, and/or sell copies of the Software, and to
  3637. + * permit persons to whom the Software is furnished to do so, subject
  3638. + * to the following conditions:
  3639. + * The above copyright notice and this permission notice shall be included
  3640. + * in all copies or substantial portions of the Software.
  3641. + *
  3642. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  3643. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  3644. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  3645. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  3646. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  3647. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  3648. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  3649. + *
  3650. + */
  3651. +
  3652. +/** OMX_CoreExt.h - OpenMax IL version 1.1.2
  3653. + * The OMX_CoreExt header file contains extensions to the definitions used
  3654. + * by both the application and the component to access common items.
  3655. + */
  3656. +
  3657. +#ifndef OMX_CoreExt_h
  3658. +#define OMX_CoreExt_h
  3659. +
  3660. +#ifdef __cplusplus
  3661. +extern "C" {
  3662. +#endif /* __cplusplus */
  3663. +
  3664. +/* Each OMX header shall include all required header files to allow the
  3665. + * header to compile without errors. The includes below are required
  3666. + * for this header file to compile successfully
  3667. + */
  3668. +#include <OMX_Core.h>
  3669. +
  3670. +/** Extensions to the standard IL errors. */
  3671. +typedef enum OMX_ERROREXTTYPE
  3672. +{
  3673. + OMX_ErrorInvalidMode = (OMX_S32) (OMX_ErrorKhronosExtensions + 0x00000001),
  3674. + OMX_ErrorExtMax = 0x7FFFFFFF
  3675. +} OMX_ERROREXTTYPE;
  3676. +
  3677. +
  3678. +/** Event type extensions. */
  3679. +typedef enum OMX_EVENTEXTTYPE
  3680. +{
  3681. + OMX_EventIndexSettingChanged = OMX_EventKhronosExtensions, /**< component signals the IL client of a change
  3682. + in a param, config, or extension */
  3683. + OMX_EventExtMax = 0x7FFFFFFF
  3684. +} OMX_EVENTEXTTYPE;
  3685. +
  3686. +
  3687. +/** Enable or disable a callback event. */
  3688. +typedef struct OMX_CONFIG_CALLBACKREQUESTTYPE {
  3689. + OMX_U32 nSize; /**< size of the structure in bytes */
  3690. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  3691. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  3692. + OMX_INDEXTYPE nIndex; /**< the index the callback is requested for */
  3693. + OMX_BOOL bEnable; /**< enable (OMX_TRUE) or disable (OMX_FALSE) the callback */
  3694. +} OMX_CONFIG_CALLBACKREQUESTTYPE;
  3695. +
  3696. +#ifdef __cplusplus
  3697. +}
  3698. +#endif /* __cplusplus */
  3699. +
  3700. +#endif /* OMX_CoreExt_h */
  3701. +/* File EOF */
  3702. diff --git a/sf-extra/omx-il/OMX_IVCommon.h b/sf-extra/omx-il/OMX_IVCommon.h
  3703. new file mode 100644
  3704. index 00000000..9aad7e96
  3705. --- /dev/null
  3706. +++ b/sf-extra/omx-il/OMX_IVCommon.h
  3707. @@ -0,0 +1,993 @@
  3708. +/**
  3709. + * Copyright (c) 2008 The Khronos Group Inc.
  3710. + *
  3711. + * Permission is hereby granted, free of charge, to any person obtaining
  3712. + * a copy of this software and associated documentation files (the
  3713. + * "Software"), to deal in the Software without restriction, including
  3714. + * without limitation the rights to use, copy, modify, merge, publish,
  3715. + * distribute, sublicense, and/or sell copies of the Software, and to
  3716. + * permit persons to whom the Software is furnished to do so, subject
  3717. + * to the following conditions:
  3718. + * The above copyright notice and this permission notice shall be included
  3719. + * in all copies or substantial portions of the Software.
  3720. + *
  3721. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  3722. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  3723. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  3724. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  3725. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  3726. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  3727. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  3728. + *
  3729. + */
  3730. +
  3731. +/**
  3732. + * @file OMX_IVCommon.h - OpenMax IL version 1.1.2
  3733. + * The structures needed by Video and Image components to exchange
  3734. + * parameters and configuration data with the components.
  3735. + */
  3736. +#ifndef OMX_IVCommon_h
  3737. +#define OMX_IVCommon_h
  3738. +
  3739. +#ifdef __cplusplus
  3740. +extern "C" {
  3741. +#endif /* __cplusplus */
  3742. +
  3743. +/**
  3744. + * Each OMX header must include all required header files to allow the header
  3745. + * to compile without errors. The includes below are required for this header
  3746. + * file to compile successfully
  3747. + */
  3748. +
  3749. +#include <OMX_Core.h>
  3750. +
  3751. +/** @defgroup iv OpenMAX IL Imaging and Video Domain
  3752. + * Common structures for OpenMAX IL Imaging and Video domains
  3753. + * @{
  3754. + */
  3755. +
  3756. +
  3757. +/**
  3758. + * Enumeration defining possible uncompressed image/video formats.
  3759. + *
  3760. + * ENUMS:
  3761. + * Unused : Placeholder value when format is N/A
  3762. + * Monochrome : black and white
  3763. + * 8bitRGB332 : Red 7:5, Green 4:2, Blue 1:0
  3764. + * 12bitRGB444 : Red 11:8, Green 7:4, Blue 3:0
  3765. + * 16bitARGB4444 : Alpha 15:12, Red 11:8, Green 7:4, Blue 3:0
  3766. + * 16bitARGB1555 : Alpha 15, Red 14:10, Green 9:5, Blue 4:0
  3767. + * 16bitRGB565 : Red 15:11, Green 10:5, Blue 4:0
  3768. + * 16bitBGR565 : Blue 15:11, Green 10:5, Red 4:0
  3769. + * 18bitRGB666 : Red 17:12, Green 11:6, Blue 5:0
  3770. + * 18bitARGB1665 : Alpha 17, Red 16:11, Green 10:5, Blue 4:0
  3771. + * 19bitARGB1666 : Alpha 18, Red 17:12, Green 11:6, Blue 5:0
  3772. + * 24bitRGB888 : Red 24:16, Green 15:8, Blue 7:0
  3773. + * 24bitBGR888 : Blue 24:16, Green 15:8, Red 7:0
  3774. + * 24bitARGB1887 : Alpha 23, Red 22:15, Green 14:7, Blue 6:0
  3775. + * 25bitARGB1888 : Alpha 24, Red 23:16, Green 15:8, Blue 7:0
  3776. + * 32bitBGRA8888 : Blue 31:24, Green 23:16, Red 15:8, Alpha 7:0
  3777. + * 32bitARGB8888 : Alpha 31:24, Red 23:16, Green 15:8, Blue 7:0
  3778. + * YUV411Planar : U,Y are subsampled by a factor of 4 horizontally
  3779. + * YUV411PackedPlanar : packed per payload in planar slices
  3780. + * YUV420Planar : Three arrays Y,U,V.
  3781. + * YUV420PackedPlanar : packed per payload in planar slices
  3782. + * YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V
  3783. + * YUV422Planar : Three arrays Y,U,V.
  3784. + * YUV422PackedPlanar : packed per payload in planar slices
  3785. + * YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V
  3786. + * YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr)
  3787. + * YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb)
  3788. + * CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY)
  3789. + * CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY)
  3790. + * YUV444Interleaved : Each pixel contains equal parts YUV
  3791. + * RawBayer8bit : SMIA camera output format
  3792. + * RawBayer10bit : SMIA camera output format
  3793. + * RawBayer8bitcompressed : SMIA camera output format
  3794. + */
  3795. +typedef enum OMX_COLOR_FORMATTYPE {
  3796. + OMX_COLOR_FormatUnused,
  3797. + OMX_COLOR_FormatMonochrome,
  3798. + OMX_COLOR_Format8bitRGB332,
  3799. + OMX_COLOR_Format12bitRGB444,
  3800. + OMX_COLOR_Format16bitARGB4444,
  3801. + OMX_COLOR_Format16bitARGB1555,
  3802. + OMX_COLOR_Format16bitRGB565,
  3803. + OMX_COLOR_Format16bitBGR565,
  3804. + OMX_COLOR_Format18bitRGB666,
  3805. + OMX_COLOR_Format18bitARGB1665,
  3806. + OMX_COLOR_Format19bitARGB1666,
  3807. + OMX_COLOR_Format24bitRGB888,
  3808. + OMX_COLOR_Format24bitBGR888,
  3809. + OMX_COLOR_Format24bitARGB1887,
  3810. + OMX_COLOR_Format25bitARGB1888,
  3811. + OMX_COLOR_Format32bitBGRA8888,
  3812. + OMX_COLOR_Format32bitARGB8888,
  3813. + OMX_COLOR_FormatYUV411Planar,
  3814. + OMX_COLOR_FormatYUV411PackedPlanar,
  3815. + OMX_COLOR_FormatYUV420Planar,
  3816. + OMX_COLOR_FormatYUV420PackedPlanar,
  3817. + OMX_COLOR_FormatYUV420SemiPlanar,
  3818. + OMX_COLOR_FormatYUV422Planar,
  3819. + OMX_COLOR_FormatYUV422PackedPlanar,
  3820. + OMX_COLOR_FormatYUV422SemiPlanar,
  3821. + OMX_COLOR_FormatYCbYCr,
  3822. + OMX_COLOR_FormatYCrYCb,
  3823. + OMX_COLOR_FormatCbYCrY,
  3824. + OMX_COLOR_FormatCrYCbY,
  3825. + OMX_COLOR_FormatYUV444Interleaved,
  3826. + OMX_COLOR_FormatRawBayer8bit,
  3827. + OMX_COLOR_FormatRawBayer10bit,
  3828. + OMX_COLOR_FormatRawBayer8bitcompressed,
  3829. + OMX_COLOR_FormatL2,
  3830. + OMX_COLOR_FormatL4,
  3831. + OMX_COLOR_FormatL8,
  3832. + OMX_COLOR_FormatL16,
  3833. + OMX_COLOR_FormatL24,
  3834. + OMX_COLOR_FormatL32,
  3835. + OMX_COLOR_FormatYUV420PackedSemiPlanar,
  3836. + OMX_COLOR_FormatYUV422PackedSemiPlanar,
  3837. + OMX_COLOR_Format18BitBGR666,
  3838. + OMX_COLOR_Format24BitARGB6666,
  3839. + OMX_COLOR_Format24BitABGR6666,
  3840. + OMX_COLOR_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  3841. + OMX_COLOR_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  3842. +
  3843. + /* Starfive extensions */
  3844. + /* I420 */
  3845. + OMX_COLOR_FormatYUV420Planar_P10_16BIT_MSB,
  3846. + OMX_COLOR_FormatYUV420Planar_P10_16BIT_LSB,
  3847. + OMX_COLOR_FormatYUV420Planar_P12_16BIT_MSB,
  3848. + OMX_COLOR_FormatYUV420Planar_P12_16BIT_LSB,
  3849. + /* NV12 */
  3850. + OMX_COLOR_FormatYUV420SemiPlanar_P10_16BIT_MSB,
  3851. + OMX_COLOR_FormatYUV420SemiPlanar_P10_16BIT_LSB,
  3852. + OMX_COLOR_FormatYUV420SemiPlanar_P12_16BIT_MSB,
  3853. + OMX_COLOR_FormatYUV420SemiPlanar_P12_16BIT_LSB,
  3854. + /* NV21 */
  3855. + OMX_COLOR_FormatYVU420SemiPlanar,
  3856. + OMX_COLOR_FormatYVU420SemiPlanar_P10_16BIT_MSB,
  3857. + OMX_COLOR_FormatYVU420SemiPlanar_P10_16BIT_LSB,
  3858. + OMX_COLOR_FormatYVU420SemiPlanar_P12_16BIT_MSB,
  3859. + OMX_COLOR_FormatYVU420SemiPlanar_P12_16BIT_LSB,
  3860. + /* I422 */
  3861. + OMX_COLOR_FormatYUV422Planar_P10_16BIT_MSB,
  3862. + OMX_COLOR_FormatYUV422Planar_P10_16BIT_LSB,
  3863. + OMX_COLOR_FormatYUV422Planar_P12_16BIT_MSB,
  3864. + OMX_COLOR_FormatYUV422Planar_P12_16BIT_LSB,
  3865. + /* NV16 */
  3866. + OMX_COLOR_FormatYUV422SemiPlanar_P10_16BIT_MSB,
  3867. + OMX_COLOR_FormatYUV422SemiPlanar_P10_16BIT_LSB,
  3868. + OMX_COLOR_FormatYUV422SemiPlanar_P12_16BIT_MSB,
  3869. + OMX_COLOR_FormatYUV422SemiPlanar_P12_16BIT_LSB,
  3870. + /* NV61 */
  3871. + OMX_COLOR_FormatYVU422SemiPlanar,
  3872. + OMX_COLOR_FormatYVU422SemiPlanar_P10_16BIT_MSB,
  3873. + OMX_COLOR_FormatYVU422SemiPlanar_P10_16BIT_LSB,
  3874. + OMX_COLOR_FormatYVU422SemiPlanar_P12_16BIT_MSB,
  3875. + OMX_COLOR_FormatYVU422SemiPlanar_P12_16BIT_LSB,
  3876. + /* YUYV */
  3877. + OMX_COLOR_FormatYCbYCr_P10_16BIT_MSB,
  3878. + OMX_COLOR_FormatYCbYCr_P10_16BIT_LSB,
  3879. + OMX_COLOR_FormatYCbYCr_P12_16BIT_MSB,
  3880. + OMX_COLOR_FormatYCbYCr_P12_16BIT_LSB,
  3881. + /* YVYU */
  3882. + OMX_COLOR_FormatYCrYCb_P10_16BIT_MSB,
  3883. + OMX_COLOR_FormatYCrYCb_P10_16BIT_LSB,
  3884. + OMX_COLOR_FormatYCrYCb_P12_16BIT_MSB,
  3885. + OMX_COLOR_FormatYCrYCb_P12_16BIT_LSB,
  3886. + /* UYVY */
  3887. + OMX_COLOR_FormatCbYCrY_P10_16BIT_MSB,
  3888. + OMX_COLOR_FormatCbYCrY_P10_16BIT_LSB,
  3889. + OMX_COLOR_FormatCbYCrY_P12_16BIT_MSB,
  3890. + OMX_COLOR_FormatCbYCrY_P12_16BIT_LSB,
  3891. + /* VYUY */
  3892. + OMX_COLOR_FormatCrYCbY_P10_16BIT_MSB,
  3893. + OMX_COLOR_FormatCrYCbY_P10_16BIT_LSB,
  3894. + OMX_COLOR_FormatCrYCbY_P12_16BIT_MSB,
  3895. + OMX_COLOR_FormatCrYCbY_P12_16BIT_LSB,
  3896. + /* I444 */
  3897. + OMX_COLOR_FormatYUV444Planar,
  3898. + OMX_COLOR_FormatYUV444Planar_P10_16BIT_MSB,
  3899. + OMX_COLOR_FormatYUV444Planar_P10_16BIT_LSB,
  3900. + OMX_COLOR_FormatYUV444Planar_P12_16BIT_MSB,
  3901. + OMX_COLOR_FormatYUV444Planar_P12_16BIT_LSB,
  3902. + /* YUV444PACKED */
  3903. + OMX_COLOR_FormatYUV444Interleaved_P10_16BIT_MSB,
  3904. + OMX_COLOR_FormatYUV444Interleaved_P10_16BIT_LSB,
  3905. + OMX_COLOR_FormatYUV444Interleaved_P12_16BIT_MSB,
  3906. + OMX_COLOR_FormatYUV444Interleaved_P12_16BIT_LSB,
  3907. + /* YUV400 */
  3908. + OMX_COLOR_FormatYUV400,
  3909. + OMX_COLOR_FormatYUV400_P10_16BIT_MSB,
  3910. + OMX_COLOR_FormatYUV400_P10_16BIT_LSB,
  3911. + OMX_COLOR_FormatYUV400_P12_16BIT_MSB,
  3912. + OMX_COLOR_FormatYUV400_P12_16BIT_LSB,
  3913. + /* Starfive extensions end */
  3914. +
  3915. + OMX_COLOR_FormatMax = 0x7FFFFFFF
  3916. +} OMX_COLOR_FORMATTYPE;
  3917. +
  3918. +
  3919. +/**
  3920. + * Defines the matrix for conversion from RGB to YUV or vice versa.
  3921. + * iColorMatrix should be initialized with the fixed point values
  3922. + * used in converting between formats.
  3923. + */
  3924. +typedef struct OMX_CONFIG_COLORCONVERSIONTYPE {
  3925. + OMX_U32 nSize; /**< Size of the structure in bytes */
  3926. + OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
  3927. + OMX_U32 nPortIndex; /**< Port that this struct applies to */
  3928. + OMX_S32 xColorMatrix[3][3]; /**< Stored in signed Q16 format */
  3929. + OMX_S32 xColorOffset[4]; /**< Stored in signed Q16 format */
  3930. +} OMX_CONFIG_COLORCONVERSIONTYPE;
  3931. +
  3932. +
  3933. +/**
  3934. + * Structure defining percent to scale each frame dimension. For example:
  3935. + * To make the width 50% larger, use fWidth = 1.5 and to make the width
  3936. + * 1/2 the original size, use fWidth = 0.5
  3937. + */
  3938. +typedef struct OMX_CONFIG_SCALEFACTORTYPE {
  3939. + OMX_U32 nSize; /**< Size of the structure in bytes */
  3940. + OMX_VERSIONTYPE nVersion; /**< OMX specification version info */
  3941. + OMX_U32 nPortIndex; /**< Port that this struct applies to */
  3942. + OMX_S32 xWidth; /**< Fixed point value stored as Q16 */
  3943. + OMX_S32 xHeight; /**< Fixed point value stored as Q16 */
  3944. +} OMX_CONFIG_SCALEFACTORTYPE;
  3945. +
  3946. +
  3947. +/**
  3948. + * Enumeration of possible image filter types
  3949. + */
  3950. +typedef enum OMX_IMAGEFILTERTYPE {
  3951. + OMX_ImageFilterNone,
  3952. + OMX_ImageFilterNoise,
  3953. + OMX_ImageFilterEmboss,
  3954. + OMX_ImageFilterNegative,
  3955. + OMX_ImageFilterSketch,
  3956. + OMX_ImageFilterOilPaint,
  3957. + OMX_ImageFilterHatch,
  3958. + OMX_ImageFilterGpen,
  3959. + OMX_ImageFilterAntialias,
  3960. + OMX_ImageFilterDeRing,
  3961. + OMX_ImageFilterSolarize,
  3962. + OMX_ImageFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  3963. + OMX_ImageFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  3964. + OMX_ImageFilterMax = 0x7FFFFFFF
  3965. +} OMX_IMAGEFILTERTYPE;
  3966. +
  3967. +
  3968. +/**
  3969. + * Image filter configuration
  3970. + *
  3971. + * STRUCT MEMBERS:
  3972. + * nSize : Size of the structure in bytes
  3973. + * nVersion : OMX specification version information
  3974. + * nPortIndex : Port that this structure applies to
  3975. + * eImageFilter : Image filter type enumeration
  3976. + */
  3977. +typedef struct OMX_CONFIG_IMAGEFILTERTYPE {
  3978. + OMX_U32 nSize;
  3979. + OMX_VERSIONTYPE nVersion;
  3980. + OMX_U32 nPortIndex;
  3981. + OMX_IMAGEFILTERTYPE eImageFilter;
  3982. +} OMX_CONFIG_IMAGEFILTERTYPE;
  3983. +
  3984. +
  3985. +/**
  3986. + * Customized U and V for color enhancement
  3987. + *
  3988. + * STRUCT MEMBERS:
  3989. + * nSize : Size of the structure in bytes
  3990. + * nVersion : OMX specification version information
  3991. + * nPortIndex : Port that this structure applies to
  3992. + * bColorEnhancement : Enable/disable color enhancement
  3993. + * nCustomizedU : Practical values: 16-240, range: 0-255, value set for
  3994. + * U component
  3995. + * nCustomizedV : Practical values: 16-240, range: 0-255, value set for
  3996. + * V component
  3997. + */
  3998. +typedef struct OMX_CONFIG_COLORENHANCEMENTTYPE {
  3999. + OMX_U32 nSize;
  4000. + OMX_VERSIONTYPE nVersion;
  4001. + OMX_U32 nPortIndex;
  4002. + OMX_BOOL bColorEnhancement;
  4003. + OMX_U8 nCustomizedU;
  4004. + OMX_U8 nCustomizedV;
  4005. +} OMX_CONFIG_COLORENHANCEMENTTYPE;
  4006. +
  4007. +
  4008. +/**
  4009. + * Define color key and color key mask
  4010. + *
  4011. + * STRUCT MEMBERS:
  4012. + * nSize : Size of the structure in bytes
  4013. + * nVersion : OMX specification version information
  4014. + * nPortIndex : Port that this structure applies to
  4015. + * nARGBColor : 32bit Alpha, Red, Green, Blue Color
  4016. + * nARGBMask : 32bit Mask for Alpha, Red, Green, Blue channels
  4017. + */
  4018. +typedef struct OMX_CONFIG_COLORKEYTYPE {
  4019. + OMX_U32 nSize;
  4020. + OMX_VERSIONTYPE nVersion;
  4021. + OMX_U32 nPortIndex;
  4022. + OMX_U32 nARGBColor;
  4023. + OMX_U32 nARGBMask;
  4024. +} OMX_CONFIG_COLORKEYTYPE;
  4025. +
  4026. +
  4027. +/**
  4028. + * List of color blend types for pre/post processing
  4029. + *
  4030. + * ENUMS:
  4031. + * None : No color blending present
  4032. + * AlphaConstant : Function is (alpha_constant * src) +
  4033. + * (1 - alpha_constant) * dst)
  4034. + * AlphaPerPixel : Function is (alpha * src) + (1 - alpha) * dst)
  4035. + * Alternate : Function is alternating pixels from src and dst
  4036. + * And : Function is (src & dst)
  4037. + * Or : Function is (src | dst)
  4038. + * Invert : Function is ~src
  4039. + */
  4040. +typedef enum OMX_COLORBLENDTYPE {
  4041. + OMX_ColorBlendNone,
  4042. + OMX_ColorBlendAlphaConstant,
  4043. + OMX_ColorBlendAlphaPerPixel,
  4044. + OMX_ColorBlendAlternate,
  4045. + OMX_ColorBlendAnd,
  4046. + OMX_ColorBlendOr,
  4047. + OMX_ColorBlendInvert,
  4048. + OMX_ColorBlendKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4049. + OMX_ColorBlendVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4050. + OMX_ColorBlendMax = 0x7FFFFFFF
  4051. +} OMX_COLORBLENDTYPE;
  4052. +
  4053. +
  4054. +/**
  4055. + * Color blend configuration
  4056. + *
  4057. + * STRUCT MEMBERS:
  4058. + * nSize : Size of the structure in bytes
  4059. + * nVersion : OMX specification version information
  4060. + * nPortIndex : Port that this structure applies to
  4061. + * nRGBAlphaConstant : Constant global alpha values when global alpha is used
  4062. + * eColorBlend : Color blend type enumeration
  4063. + */
  4064. +typedef struct OMX_CONFIG_COLORBLENDTYPE {
  4065. + OMX_U32 nSize;
  4066. + OMX_VERSIONTYPE nVersion;
  4067. + OMX_U32 nPortIndex;
  4068. + OMX_U32 nRGBAlphaConstant;
  4069. + OMX_COLORBLENDTYPE eColorBlend;
  4070. +} OMX_CONFIG_COLORBLENDTYPE;
  4071. +
  4072. +
  4073. +/**
  4074. + * Hold frame dimension
  4075. + *
  4076. + * STRUCT MEMBERS:
  4077. + * nSize : Size of the structure in bytes
  4078. + * nVersion : OMX specification version information
  4079. + * nPortIndex : Port that this structure applies to
  4080. + * nWidth : Frame width in pixels
  4081. + * nHeight : Frame height in pixels
  4082. + */
  4083. +typedef struct OMX_FRAMESIZETYPE {
  4084. + OMX_U32 nSize;
  4085. + OMX_VERSIONTYPE nVersion;
  4086. + OMX_U32 nPortIndex;
  4087. + OMX_U32 nWidth;
  4088. + OMX_U32 nHeight;
  4089. +} OMX_FRAMESIZETYPE;
  4090. +
  4091. +
  4092. +/**
  4093. + * Rotation configuration
  4094. + *
  4095. + * STRUCT MEMBERS:
  4096. + * nSize : Size of the structure in bytes
  4097. + * nVersion : OMX specification version information
  4098. + * nPortIndex : Port that this structure applies to
  4099. + * nRotation : +/- integer rotation value
  4100. + */
  4101. +typedef struct OMX_CONFIG_ROTATIONTYPE {
  4102. + OMX_U32 nSize;
  4103. + OMX_VERSIONTYPE nVersion;
  4104. + OMX_U32 nPortIndex;
  4105. + OMX_S32 nRotation;
  4106. +} OMX_CONFIG_ROTATIONTYPE;
  4107. +
  4108. +
  4109. +/**
  4110. + * Possible mirroring directions for pre/post processing
  4111. + *
  4112. + * ENUMS:
  4113. + * None : No mirroring
  4114. + * Vertical : Vertical mirroring, flip on X axis
  4115. + * Horizontal : Horizontal mirroring, flip on Y axis
  4116. + * Both : Both vertical and horizontal mirroring
  4117. + */
  4118. +typedef enum OMX_MIRRORTYPE {
  4119. + OMX_MirrorNone = 0,
  4120. + OMX_MirrorVertical,
  4121. + OMX_MirrorHorizontal,
  4122. + OMX_MirrorBoth,
  4123. + OMX_MirrorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4124. + OMX_MirrorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4125. + OMX_MirrorMax = 0x7FFFFFFF
  4126. +} OMX_MIRRORTYPE;
  4127. +
  4128. +
  4129. +/**
  4130. + * Mirroring configuration
  4131. + *
  4132. + * STRUCT MEMBERS:
  4133. + * nSize : Size of the structure in bytes
  4134. + * nVersion : OMX specification version information
  4135. + * nPortIndex : Port that this structure applies to
  4136. + * eMirror : Mirror type enumeration
  4137. + */
  4138. +typedef struct OMX_CONFIG_MIRRORTYPE {
  4139. + OMX_U32 nSize;
  4140. + OMX_VERSIONTYPE nVersion;
  4141. + OMX_U32 nPortIndex;
  4142. + OMX_MIRRORTYPE eMirror;
  4143. +} OMX_CONFIG_MIRRORTYPE;
  4144. +
  4145. +
  4146. +/**
  4147. + * Position information only
  4148. + *
  4149. + * STRUCT MEMBERS:
  4150. + * nSize : Size of the structure in bytes
  4151. + * nVersion : OMX specification version information
  4152. + * nPortIndex : Port that this structure applies to
  4153. + * nX : X coordinate for the point
  4154. + * nY : Y coordinate for the point
  4155. + */
  4156. +typedef struct OMX_CONFIG_POINTTYPE {
  4157. + OMX_U32 nSize;
  4158. + OMX_VERSIONTYPE nVersion;
  4159. + OMX_U32 nPortIndex;
  4160. + OMX_S32 nX;
  4161. + OMX_S32 nY;
  4162. +} OMX_CONFIG_POINTTYPE;
  4163. +
  4164. +
  4165. +/**
  4166. + * Frame size plus position
  4167. + *
  4168. + * STRUCT MEMBERS:
  4169. + * nSize : Size of the structure in bytes
  4170. + * nVersion : OMX specification version information
  4171. + * nPortIndex : Port that this structure applies to
  4172. + * nLeft : X Coordinate of the top left corner of the rectangle
  4173. + * nTop : Y Coordinate of the top left corner of the rectangle
  4174. + * nWidth : Width of the rectangle
  4175. + * nHeight : Height of the rectangle
  4176. + */
  4177. +typedef struct OMX_CONFIG_RECTTYPE {
  4178. + OMX_U32 nSize;
  4179. + OMX_VERSIONTYPE nVersion;
  4180. + OMX_U32 nPortIndex;
  4181. + OMX_S32 nLeft;
  4182. + OMX_S32 nTop;
  4183. + OMX_U32 nWidth;
  4184. + OMX_U32 nHeight;
  4185. +} OMX_CONFIG_RECTTYPE;
  4186. +
  4187. +
  4188. +/**
  4189. + * Deblocking state; it is required to be set up before starting the codec
  4190. + *
  4191. + * STRUCT MEMBERS:
  4192. + * nSize : Size of the structure in bytes
  4193. + * nVersion : OMX specification version information
  4194. + * nPortIndex : Port that this structure applies to
  4195. + * bDeblocking : Enable/disable deblocking mode
  4196. + */
  4197. +typedef struct OMX_PARAM_DEBLOCKINGTYPE {
  4198. + OMX_U32 nSize;
  4199. + OMX_VERSIONTYPE nVersion;
  4200. + OMX_U32 nPortIndex;
  4201. + OMX_BOOL bDeblocking;
  4202. +} OMX_PARAM_DEBLOCKINGTYPE;
  4203. +
  4204. +
  4205. +/**
  4206. + * Stabilization state
  4207. + *
  4208. + * STRUCT MEMBERS:
  4209. + * nSize : Size of the structure in bytes
  4210. + * nVersion : OMX specification version information
  4211. + * nPortIndex : Port that this structure applies to
  4212. + * bStab : Enable/disable frame stabilization state
  4213. + */
  4214. +typedef struct OMX_CONFIG_FRAMESTABTYPE {
  4215. + OMX_U32 nSize;
  4216. + OMX_VERSIONTYPE nVersion;
  4217. + OMX_U32 nPortIndex;
  4218. + OMX_BOOL bStab;
  4219. +} OMX_CONFIG_FRAMESTABTYPE;
  4220. +
  4221. +
  4222. +/**
  4223. + * White Balance control type
  4224. + *
  4225. + * STRUCT MEMBERS:
  4226. + * SunLight : Referenced in JSR-234
  4227. + * Flash : Optimal for device's integrated flash
  4228. + */
  4229. +typedef enum OMX_WHITEBALCONTROLTYPE {
  4230. + OMX_WhiteBalControlOff = 0,
  4231. + OMX_WhiteBalControlAuto,
  4232. + OMX_WhiteBalControlSunLight,
  4233. + OMX_WhiteBalControlCloudy,
  4234. + OMX_WhiteBalControlShade,
  4235. + OMX_WhiteBalControlTungsten,
  4236. + OMX_WhiteBalControlFluorescent,
  4237. + OMX_WhiteBalControlIncandescent,
  4238. + OMX_WhiteBalControlFlash,
  4239. + OMX_WhiteBalControlHorizon,
  4240. + OMX_WhiteBalControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4241. + OMX_WhiteBalControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4242. + OMX_WhiteBalControlMax = 0x7FFFFFFF
  4243. +} OMX_WHITEBALCONTROLTYPE;
  4244. +
  4245. +
  4246. +/**
  4247. + * White Balance control configuration
  4248. + *
  4249. + * STRUCT MEMBERS:
  4250. + * nSize : Size of the structure in bytes
  4251. + * nVersion : OMX specification version information
  4252. + * nPortIndex : Port that this structure applies to
  4253. + * eWhiteBalControl : White balance enumeration
  4254. + */
  4255. +typedef struct OMX_CONFIG_WHITEBALCONTROLTYPE {
  4256. + OMX_U32 nSize;
  4257. + OMX_VERSIONTYPE nVersion;
  4258. + OMX_U32 nPortIndex;
  4259. + OMX_WHITEBALCONTROLTYPE eWhiteBalControl;
  4260. +} OMX_CONFIG_WHITEBALCONTROLTYPE;
  4261. +
  4262. +
  4263. +/**
  4264. + * Exposure control type
  4265. + */
  4266. +typedef enum OMX_EXPOSURECONTROLTYPE {
  4267. + OMX_ExposureControlOff = 0,
  4268. + OMX_ExposureControlAuto,
  4269. + OMX_ExposureControlNight,
  4270. + OMX_ExposureControlBackLight,
  4271. + OMX_ExposureControlSpotLight,
  4272. + OMX_ExposureControlSports,
  4273. + OMX_ExposureControlSnow,
  4274. + OMX_ExposureControlBeach,
  4275. + OMX_ExposureControlLargeAperture,
  4276. + OMX_ExposureControlSmallApperture,
  4277. + OMX_ExposureControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4278. + OMX_ExposureControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4279. + OMX_ExposureControlMax = 0x7FFFFFFF
  4280. +} OMX_EXPOSURECONTROLTYPE;
  4281. +
  4282. +
  4283. +/**
  4284. + * White Balance control configuration
  4285. + *
  4286. + * STRUCT MEMBERS:
  4287. + * nSize : Size of the structure in bytes
  4288. + * nVersion : OMX specification version information
  4289. + * nPortIndex : Port that this structure applies to
  4290. + * eExposureControl : Exposure control enumeration
  4291. + */
  4292. +typedef struct OMX_CONFIG_EXPOSURECONTROLTYPE {
  4293. + OMX_U32 nSize;
  4294. + OMX_VERSIONTYPE nVersion;
  4295. + OMX_U32 nPortIndex;
  4296. + OMX_EXPOSURECONTROLTYPE eExposureControl;
  4297. +} OMX_CONFIG_EXPOSURECONTROLTYPE;
  4298. +
  4299. +
  4300. +/**
  4301. + * Defines sensor supported mode.
  4302. + *
  4303. + * STRUCT MEMBERS:
  4304. + * nSize : Size of the structure in bytes
  4305. + * nVersion : OMX specification version information
  4306. + * nPortIndex : Port that this structure applies to
  4307. + * nFrameRate : Single shot mode is indicated by a 0
  4308. + * bOneShot : Enable for single shot, disable for streaming
  4309. + * sFrameSize : Framesize
  4310. + */
  4311. +typedef struct OMX_PARAM_SENSORMODETYPE {
  4312. + OMX_U32 nSize;
  4313. + OMX_VERSIONTYPE nVersion;
  4314. + OMX_U32 nPortIndex;
  4315. + OMX_U32 nFrameRate;
  4316. + OMX_BOOL bOneShot;
  4317. + OMX_FRAMESIZETYPE sFrameSize;
  4318. +} OMX_PARAM_SENSORMODETYPE;
  4319. +
  4320. +
  4321. +/**
  4322. + * Defines contrast level
  4323. + *
  4324. + * STRUCT MEMBERS:
  4325. + * nSize : Size of the structure in bytes
  4326. + * nVersion : OMX specification version information
  4327. + * nPortIndex : Port that this structure applies to
  4328. + * nContrast : Values allowed for contrast -100 to 100, zero means no change
  4329. + */
  4330. +typedef struct OMX_CONFIG_CONTRASTTYPE {
  4331. + OMX_U32 nSize;
  4332. + OMX_VERSIONTYPE nVersion;
  4333. + OMX_U32 nPortIndex;
  4334. + OMX_S32 nContrast;
  4335. +} OMX_CONFIG_CONTRASTTYPE;
  4336. +
  4337. +
  4338. +/**
  4339. + * Defines brightness level
  4340. + *
  4341. + * STRUCT MEMBERS:
  4342. + * nSize : Size of the structure in bytes
  4343. + * nVersion : OMX specification version information
  4344. + * nPortIndex : Port that this structure applies to
  4345. + * nBrightness : 0-100%
  4346. + */
  4347. +typedef struct OMX_CONFIG_BRIGHTNESSTYPE {
  4348. + OMX_U32 nSize;
  4349. + OMX_VERSIONTYPE nVersion;
  4350. + OMX_U32 nPortIndex;
  4351. + OMX_U32 nBrightness;
  4352. +} OMX_CONFIG_BRIGHTNESSTYPE;
  4353. +
  4354. +
  4355. +/**
  4356. + * Defines backlight level configuration for a video sink, e.g. LCD panel
  4357. + *
  4358. + * STRUCT MEMBERS:
  4359. + * nSize : Size of the structure in bytes
  4360. + * nVersion : OMX specification version information
  4361. + * nPortIndex : Port that this structure applies to
  4362. + * nBacklight : Values allowed for backlight 0-100%
  4363. + * nTimeout : Number of milliseconds before backlight automatically turns
  4364. + * off. A value of 0x0 disables backight timeout
  4365. + */
  4366. +typedef struct OMX_CONFIG_BACKLIGHTTYPE {
  4367. + OMX_U32 nSize;
  4368. + OMX_VERSIONTYPE nVersion;
  4369. + OMX_U32 nPortIndex;
  4370. + OMX_U32 nBacklight;
  4371. + OMX_U32 nTimeout;
  4372. +} OMX_CONFIG_BACKLIGHTTYPE;
  4373. +
  4374. +
  4375. +/**
  4376. + * Defines setting for Gamma
  4377. + *
  4378. + * STRUCT MEMBERS:
  4379. + * nSize : Size of the structure in bytes
  4380. + * nVersion : OMX specification version information
  4381. + * nPortIndex : Port that this structure applies to
  4382. + * nGamma : Values allowed for gamma -100 to 100, zero means no change
  4383. + */
  4384. +typedef struct OMX_CONFIG_GAMMATYPE {
  4385. + OMX_U32 nSize;
  4386. + OMX_VERSIONTYPE nVersion;
  4387. + OMX_U32 nPortIndex;
  4388. + OMX_S32 nGamma;
  4389. +} OMX_CONFIG_GAMMATYPE;
  4390. +
  4391. +
  4392. +/**
  4393. + * Define for setting saturation
  4394. + *
  4395. + * STRUCT MEMBERS:
  4396. + * nSize : Size of the structure in bytes
  4397. + * nVersion : OMX specification version information
  4398. + * nPortIndex : Port that this structure applies to
  4399. + * nSaturation : Values allowed for saturation -100 to 100, zero means
  4400. + * no change
  4401. + */
  4402. +typedef struct OMX_CONFIG_SATURATIONTYPE {
  4403. + OMX_U32 nSize;
  4404. + OMX_VERSIONTYPE nVersion;
  4405. + OMX_U32 nPortIndex;
  4406. + OMX_S32 nSaturation;
  4407. +} OMX_CONFIG_SATURATIONTYPE;
  4408. +
  4409. +
  4410. +/**
  4411. + * Define for setting Lightness
  4412. + *
  4413. + * STRUCT MEMBERS:
  4414. + * nSize : Size of the structure in bytes
  4415. + * nVersion : OMX specification version information
  4416. + * nPortIndex : Port that this structure applies to
  4417. + * nLightness : Values allowed for lightness -100 to 100, zero means no
  4418. + * change
  4419. + */
  4420. +typedef struct OMX_CONFIG_LIGHTNESSTYPE {
  4421. + OMX_U32 nSize;
  4422. + OMX_VERSIONTYPE nVersion;
  4423. + OMX_U32 nPortIndex;
  4424. + OMX_S32 nLightness;
  4425. +} OMX_CONFIG_LIGHTNESSTYPE;
  4426. +
  4427. +
  4428. +/**
  4429. + * Plane blend configuration
  4430. + *
  4431. + * STRUCT MEMBERS:
  4432. + * nSize : Size of the structure in bytes
  4433. + * nVersion : OMX specification version information
  4434. + * nPortIndex : Index of input port associated with the plane.
  4435. + * nDepth : Depth of the plane in relation to the screen. Higher
  4436. + * numbered depths are "behind" lower number depths.
  4437. + * This number defaults to the Port Index number.
  4438. + * nAlpha : Transparency blending component for the entire plane.
  4439. + * See blending modes for more detail.
  4440. + */
  4441. +typedef struct OMX_CONFIG_PLANEBLENDTYPE {
  4442. + OMX_U32 nSize;
  4443. + OMX_VERSIONTYPE nVersion;
  4444. + OMX_U32 nPortIndex;
  4445. + OMX_U32 nDepth;
  4446. + OMX_U32 nAlpha;
  4447. +} OMX_CONFIG_PLANEBLENDTYPE;
  4448. +
  4449. +
  4450. +/**
  4451. + * Define interlace type
  4452. + *
  4453. + * STRUCT MEMBERS:
  4454. + * nSize : Size of the structure in bytes
  4455. + * nVersion : OMX specification version information
  4456. + * nPortIndex : Port that this structure applies to
  4457. + * bEnable : Enable control variable for this functionality
  4458. + * (see below)
  4459. + * nInterleavePortIndex : Index of input or output port associated with
  4460. + * the interleaved plane.
  4461. + * pPlanarPortIndexes[4] : Index of input or output planar ports.
  4462. + */
  4463. +typedef struct OMX_PARAM_INTERLEAVETYPE {
  4464. + OMX_U32 nSize;
  4465. + OMX_VERSIONTYPE nVersion;
  4466. + OMX_U32 nPortIndex;
  4467. + OMX_BOOL bEnable;
  4468. + OMX_U32 nInterleavePortIndex;
  4469. +} OMX_PARAM_INTERLEAVETYPE;
  4470. +
  4471. +
  4472. +/**
  4473. + * Defines the picture effect used for an input picture
  4474. + */
  4475. +typedef enum OMX_TRANSITIONEFFECTTYPE {
  4476. + OMX_EffectNone,
  4477. + OMX_EffectFadeFromBlack,
  4478. + OMX_EffectFadeToBlack,
  4479. + OMX_EffectUnspecifiedThroughConstantColor,
  4480. + OMX_EffectDissolve,
  4481. + OMX_EffectWipe,
  4482. + OMX_EffectUnspecifiedMixOfTwoScenes,
  4483. + OMX_EffectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4484. + OMX_EffectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4485. + OMX_EffectMax = 0x7FFFFFFF
  4486. +} OMX_TRANSITIONEFFECTTYPE;
  4487. +
  4488. +
  4489. +/**
  4490. + * Structure used to configure current transition effect
  4491. + *
  4492. + * STRUCT MEMBERS:
  4493. + * nSize : Size of the structure in bytes
  4494. + * nVersion : OMX specification version information
  4495. + * nPortIndex : Port that this structure applies to
  4496. + * eEffect : Effect to enable
  4497. + */
  4498. +typedef struct OMX_CONFIG_TRANSITIONEFFECTTYPE {
  4499. + OMX_U32 nSize;
  4500. + OMX_VERSIONTYPE nVersion;
  4501. + OMX_U32 nPortIndex;
  4502. + OMX_TRANSITIONEFFECTTYPE eEffect;
  4503. +} OMX_CONFIG_TRANSITIONEFFECTTYPE;
  4504. +
  4505. +
  4506. +/**
  4507. + * Defines possible data unit types for encoded video data. The data unit
  4508. + * types are used both for encoded video input for playback as well as
  4509. + * encoded video output from recording.
  4510. + */
  4511. +typedef enum OMX_DATAUNITTYPE {
  4512. + OMX_DataUnitCodedPicture,
  4513. + OMX_DataUnitVideoSegment,
  4514. + OMX_DataUnitSeveralSegments,
  4515. + OMX_DataUnitArbitraryStreamSection,
  4516. + OMX_DataUnitKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4517. + OMX_DataUnitVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4518. + OMX_DataUnitMax = 0x7FFFFFFF
  4519. +} OMX_DATAUNITTYPE;
  4520. +
  4521. +
  4522. +/**
  4523. + * Defines possible encapsulation types for coded video data unit. The
  4524. + * encapsulation information is used both for encoded video input for
  4525. + * playback as well as encoded video output from recording.
  4526. + */
  4527. +typedef enum OMX_DATAUNITENCAPSULATIONTYPE {
  4528. + OMX_DataEncapsulationElementaryStream,
  4529. + OMX_DataEncapsulationGenericPayload,
  4530. + OMX_DataEncapsulationRtpPayload,
  4531. + OMX_DataEncapsulationKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4532. + OMX_DataEncapsulationVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4533. + OMX_DataEncapsulationMax = 0x7FFFFFFF
  4534. +} OMX_DATAUNITENCAPSULATIONTYPE;
  4535. +
  4536. +
  4537. +/**
  4538. + * Structure used to configure the type of being decoded/encoded
  4539. + */
  4540. +typedef struct OMX_PARAM_DATAUNITTYPE {
  4541. + OMX_U32 nSize; /**< Size of the structure in bytes */
  4542. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  4543. + OMX_U32 nPortIndex; /**< Port that this structure applies to */
  4544. + OMX_DATAUNITTYPE eUnitType;
  4545. + OMX_DATAUNITENCAPSULATIONTYPE eEncapsulationType;
  4546. +} OMX_PARAM_DATAUNITTYPE;
  4547. +
  4548. +
  4549. +/**
  4550. + * Defines dither types
  4551. + */
  4552. +typedef enum OMX_DITHERTYPE {
  4553. + OMX_DitherNone,
  4554. + OMX_DitherOrdered,
  4555. + OMX_DitherErrorDiffusion,
  4556. + OMX_DitherOther,
  4557. + OMX_DitherKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4558. + OMX_DitherVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4559. + OMX_DitherMax = 0x7FFFFFFF
  4560. +} OMX_DITHERTYPE;
  4561. +
  4562. +
  4563. +/**
  4564. + * Structure used to configure current type of dithering
  4565. + */
  4566. +typedef struct OMX_CONFIG_DITHERTYPE {
  4567. + OMX_U32 nSize; /**< Size of the structure in bytes */
  4568. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  4569. + OMX_U32 nPortIndex; /**< Port that this structure applies to */
  4570. + OMX_DITHERTYPE eDither; /**< Type of dithering to use */
  4571. +} OMX_CONFIG_DITHERTYPE;
  4572. +
  4573. +typedef struct OMX_CONFIG_CAPTUREMODETYPE {
  4574. + OMX_U32 nSize;
  4575. + OMX_VERSIONTYPE nVersion;
  4576. + OMX_U32 nPortIndex; /**< Port that this structure applies to */
  4577. + OMX_BOOL bContinuous; /**< If true then ignore frame rate and emit capture
  4578. + * data as fast as possible (otherwise obey port's frame rate). */
  4579. + OMX_BOOL bFrameLimited; /**< If true then terminate capture after the port emits the
  4580. + * specified number of frames (otherwise the port does not
  4581. + * terminate the capture until instructed to do so by the client).
  4582. + * Even if set, the client may manually terminate the capture prior
  4583. + * to reaching the limit. */
  4584. + OMX_U32 nFrameLimit; /**< Limit on number of frames emitted during a capture (only
  4585. + * valid if bFrameLimited is set). */
  4586. +} OMX_CONFIG_CAPTUREMODETYPE;
  4587. +
  4588. +typedef enum OMX_METERINGTYPE {
  4589. +
  4590. + OMX_MeteringModeAverage, /**< Center-weighted average metering. */
  4591. + OMX_MeteringModeSpot, /**< Spot (partial) metering. */
  4592. + OMX_MeteringModeMatrix, /**< Matrix or evaluative metering. */
  4593. +
  4594. + OMX_MeteringKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4595. + OMX_MeteringVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4596. + OMX_EVModeMax = 0x7fffffff
  4597. +} OMX_METERINGTYPE;
  4598. +
  4599. +typedef struct OMX_CONFIG_EXPOSUREVALUETYPE {
  4600. + OMX_U32 nSize;
  4601. + OMX_VERSIONTYPE nVersion;
  4602. + OMX_U32 nPortIndex;
  4603. + OMX_METERINGTYPE eMetering;
  4604. + OMX_S32 xEVCompensation; /**< Fixed point value stored as Q16 */
  4605. + OMX_U32 nApertureFNumber; /**< e.g. nApertureFNumber = 2 implies "f/2" - Q16 format */
  4606. + OMX_BOOL bAutoAperture; /**< Whether aperture number is defined automatically */
  4607. + OMX_U32 nShutterSpeedMsec; /**< Shutterspeed in milliseconds */
  4608. + OMX_BOOL bAutoShutterSpeed; /**< Whether shutter speed is defined automatically */
  4609. + OMX_U32 nSensitivity; /**< e.g. nSensitivity = 100 implies "ISO 100" */
  4610. + OMX_BOOL bAutoSensitivity; /**< Whether sensitivity is defined automatically */
  4611. +} OMX_CONFIG_EXPOSUREVALUETYPE;
  4612. +
  4613. +/**
  4614. + * Focus region configuration
  4615. + *
  4616. + * STRUCT MEMBERS:
  4617. + * nSize : Size of the structure in bytes
  4618. + * nVersion : OMX specification version information
  4619. + * nPortIndex : Port that this structure applies to
  4620. + * bCenter : Use center region as focus region of interest
  4621. + * bLeft : Use left region as focus region of interest
  4622. + * bRight : Use right region as focus region of interest
  4623. + * bTop : Use top region as focus region of interest
  4624. + * bBottom : Use bottom region as focus region of interest
  4625. + * bTopLeft : Use top left region as focus region of interest
  4626. + * bTopRight : Use top right region as focus region of interest
  4627. + * bBottomLeft : Use bottom left region as focus region of interest
  4628. + * bBottomRight : Use bottom right region as focus region of interest
  4629. + */
  4630. +typedef struct OMX_CONFIG_FOCUSREGIONTYPE {
  4631. + OMX_U32 nSize;
  4632. + OMX_VERSIONTYPE nVersion;
  4633. + OMX_U32 nPortIndex;
  4634. + OMX_BOOL bCenter;
  4635. + OMX_BOOL bLeft;
  4636. + OMX_BOOL bRight;
  4637. + OMX_BOOL bTop;
  4638. + OMX_BOOL bBottom;
  4639. + OMX_BOOL bTopLeft;
  4640. + OMX_BOOL bTopRight;
  4641. + OMX_BOOL bBottomLeft;
  4642. + OMX_BOOL bBottomRight;
  4643. +} OMX_CONFIG_FOCUSREGIONTYPE;
  4644. +
  4645. +/**
  4646. + * Focus Status type
  4647. + */
  4648. +typedef enum OMX_FOCUSSTATUSTYPE {
  4649. + OMX_FocusStatusOff = 0,
  4650. + OMX_FocusStatusRequest,
  4651. + OMX_FocusStatusReached,
  4652. + OMX_FocusStatusUnableToReach,
  4653. + OMX_FocusStatusLost,
  4654. + OMX_FocusStatusKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4655. + OMX_FocusStatusVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4656. + OMX_FocusStatusMax = 0x7FFFFFFF
  4657. +} OMX_FOCUSSTATUSTYPE;
  4658. +
  4659. +/**
  4660. + * Focus status configuration
  4661. + *
  4662. + * STRUCT MEMBERS:
  4663. + * nSize : Size of the structure in bytes
  4664. + * nVersion : OMX specification version information
  4665. + * nPortIndex : Port that this structure applies to
  4666. + * eFocusStatus : Specifies the focus status
  4667. + * bCenterStatus : Use center region as focus region of interest
  4668. + * bLeftStatus : Use left region as focus region of interest
  4669. + * bRightStatus : Use right region as focus region of interest
  4670. + * bTopStatus : Use top region as focus region of interest
  4671. + * bBottomStatus : Use bottom region as focus region of interest
  4672. + * bTopLeftStatus : Use top left region as focus region of interest
  4673. + * bTopRightStatus : Use top right region as focus region of interest
  4674. + * bBottomLeftStatus : Use bottom left region as focus region of interest
  4675. + * bBottomRightStatus : Use bottom right region as focus region of interest
  4676. + */
  4677. +typedef struct OMX_PARAM_FOCUSSTATUSTYPE {
  4678. + OMX_U32 nSize;
  4679. + OMX_VERSIONTYPE nVersion;
  4680. + OMX_U32 nPortIndex;
  4681. + OMX_FOCUSSTATUSTYPE eFocusStatus;
  4682. + OMX_BOOL bCenterStatus;
  4683. + OMX_BOOL bLeftStatus;
  4684. + OMX_BOOL bRightStatus;
  4685. + OMX_BOOL bTopStatus;
  4686. + OMX_BOOL bBottomStatus;
  4687. + OMX_BOOL bTopLeftStatus;
  4688. + OMX_BOOL bTopRightStatus;
  4689. + OMX_BOOL bBottomLeftStatus;
  4690. + OMX_BOOL bBottomRightStatus;
  4691. +} OMX_PARAM_FOCUSSTATUSTYPE;
  4692. +
  4693. +/** @} */
  4694. +
  4695. +#ifdef __cplusplus
  4696. +}
  4697. +#endif /* __cplusplus */
  4698. +
  4699. +#endif
  4700. +/* File EOF */
  4701. diff --git a/sf-extra/omx-il/OMX_Image.h b/sf-extra/omx-il/OMX_Image.h
  4702. new file mode 100644
  4703. index 00000000..ca648825
  4704. --- /dev/null
  4705. +++ b/sf-extra/omx-il/OMX_Image.h
  4706. @@ -0,0 +1,328 @@
  4707. +/**
  4708. + * Copyright (c) 2008 The Khronos Group Inc.
  4709. + *
  4710. + * Permission is hereby granted, free of charge, to any person obtaining
  4711. + * a copy of this software and associated documentation files (the
  4712. + * "Software"), to deal in the Software without restriction, including
  4713. + * without limitation the rights to use, copy, modify, merge, publish,
  4714. + * distribute, sublicense, and/or sell copies of the Software, and to
  4715. + * permit persons to whom the Software is furnished to do so, subject
  4716. + * to the following conditions:
  4717. + * The above copyright notice and this permission notice shall be included
  4718. + * in all copies or substantial portions of the Software.
  4719. + *
  4720. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  4721. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  4722. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  4723. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  4724. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  4725. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  4726. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  4727. + */
  4728. +
  4729. +/**
  4730. + * @file OMX_Image.h - OpenMax IL version 1.1.2
  4731. + * The structures needed by Image components to exchange parameters and
  4732. + * configuration data with the components.
  4733. + */
  4734. +#ifndef OMX_Image_h
  4735. +#define OMX_Image_h
  4736. +
  4737. +#ifdef __cplusplus
  4738. +extern "C" {
  4739. +#endif /* __cplusplus */
  4740. +
  4741. +
  4742. +/**
  4743. + * Each OMX header must include all required header files to allow the
  4744. + * header to compile without errors. The includes below are required
  4745. + * for this header file to compile successfully
  4746. + */
  4747. +
  4748. +#include <OMX_IVCommon.h>
  4749. +
  4750. +/** @defgroup imaging OpenMAX IL Imaging Domain
  4751. + * @ingroup iv
  4752. + * Structures for OpenMAX IL Imaging domain
  4753. + * @{
  4754. + */
  4755. +
  4756. +/**
  4757. + * Enumeration used to define the possible image compression coding.
  4758. + */
  4759. +typedef enum OMX_IMAGE_CODINGTYPE {
  4760. + OMX_IMAGE_CodingUnused, /**< Value when format is N/A */
  4761. + OMX_IMAGE_CodingAutoDetect, /**< Auto detection of image format */
  4762. + OMX_IMAGE_CodingJPEG, /**< JPEG/JFIF image format */
  4763. + OMX_IMAGE_CodingJPEG2K, /**< JPEG 2000 image format */
  4764. + OMX_IMAGE_CodingEXIF, /**< EXIF image format */
  4765. + OMX_IMAGE_CodingTIFF, /**< TIFF image format */
  4766. + OMX_IMAGE_CodingGIF, /**< Graphics image format */
  4767. + OMX_IMAGE_CodingPNG, /**< PNG image format */
  4768. + OMX_IMAGE_CodingLZW, /**< LZW image format */
  4769. + OMX_IMAGE_CodingBMP, /**< Windows Bitmap format */
  4770. + OMX_IMAGE_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4771. + OMX_IMAGE_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4772. + OMX_IMAGE_CodingMax = 0x7FFFFFFF
  4773. +} OMX_IMAGE_CODINGTYPE;
  4774. +
  4775. +
  4776. +/**
  4777. + * Data structure used to define an image path. The number of image paths
  4778. + * for input and output will vary by type of the image component.
  4779. + *
  4780. + * Input (aka Source) : Zero Inputs, one Output,
  4781. + * Splitter : One Input, 2 or more Outputs,
  4782. + * Processing Element : One Input, one output,
  4783. + * Mixer : 2 or more inputs, one output,
  4784. + * Output (aka Sink) : One Input, zero outputs.
  4785. + *
  4786. + * The PortDefinition structure is used to define all of the parameters
  4787. + * necessary for the compliant component to setup an input or an output
  4788. + * image path. If additional vendor specific data is required, it should
  4789. + * be transmitted to the component using the CustomCommand function.
  4790. + * Compliant components will prepopulate this structure with optimal
  4791. + * values during the OMX_GetParameter() command.
  4792. + *
  4793. + * STRUCT MEMBERS:
  4794. + * cMIMEType : MIME type of data for the port
  4795. + * pNativeRender : Platform specific reference for a display if a
  4796. + * sync, otherwise this field is 0
  4797. + * nFrameWidth : Width of frame to be used on port if
  4798. + * uncompressed format is used. Use 0 for
  4799. + * unknown, don't care or variable
  4800. + * nFrameHeight : Height of frame to be used on port if
  4801. + * uncompressed format is used. Use 0 for
  4802. + * unknown, don't care or variable
  4803. + * nStride : Number of bytes per span of an image (i.e.
  4804. + * indicates the number of bytes to get from
  4805. + * span N to span N+1, where negative stride
  4806. + * indicates the image is bottom up
  4807. + * nSliceHeight : Height used when encoding in slices
  4808. + * bFlagErrorConcealment : Turns on error concealment if it is supported by
  4809. + * the OMX component
  4810. + * eCompressionFormat : Compression format used in this instance of
  4811. + * the component. When OMX_IMAGE_CodingUnused is
  4812. + * specified, eColorFormat is valid
  4813. + * eColorFormat : Decompressed format used by this component
  4814. + * pNativeWindow : Platform specific reference for a window object if a
  4815. + * display sink , otherwise this field is 0x0.
  4816. + */
  4817. +typedef struct OMX_IMAGE_PORTDEFINITIONTYPE {
  4818. + OMX_STRING cMIMEType;
  4819. + OMX_NATIVE_DEVICETYPE pNativeRender;
  4820. + OMX_U32 nFrameWidth;
  4821. + OMX_U32 nFrameHeight;
  4822. + OMX_S32 nStride;
  4823. + OMX_U32 nSliceHeight;
  4824. + OMX_BOOL bFlagErrorConcealment;
  4825. + OMX_IMAGE_CODINGTYPE eCompressionFormat;
  4826. + OMX_COLOR_FORMATTYPE eColorFormat;
  4827. + OMX_NATIVE_WINDOWTYPE pNativeWindow;
  4828. +} OMX_IMAGE_PORTDEFINITIONTYPE;
  4829. +
  4830. +
  4831. +/**
  4832. + * Port format parameter. This structure is used to enumerate the various
  4833. + * data input/output format supported by the port.
  4834. + *
  4835. + * STRUCT MEMBERS:
  4836. + * nSize : Size of the structure in bytes
  4837. + * nVersion : OMX specification version information
  4838. + * nPortIndex : Indicates which port to set
  4839. + * nIndex : Indicates the enumeration index for the format from
  4840. + * 0x0 to N-1
  4841. + * eCompressionFormat : Compression format used in this instance of the
  4842. + * component. When OMX_IMAGE_CodingUnused is specified,
  4843. + * eColorFormat is valid
  4844. + * eColorFormat : Decompressed format used by this component
  4845. + */
  4846. +typedef struct OMX_IMAGE_PARAM_PORTFORMATTYPE {
  4847. + OMX_U32 nSize;
  4848. + OMX_VERSIONTYPE nVersion;
  4849. + OMX_U32 nPortIndex;
  4850. + OMX_U32 nIndex;
  4851. + OMX_IMAGE_CODINGTYPE eCompressionFormat;
  4852. + OMX_COLOR_FORMATTYPE eColorFormat;
  4853. +} OMX_IMAGE_PARAM_PORTFORMATTYPE;
  4854. +
  4855. +
  4856. +/**
  4857. + * Flash control type
  4858. + *
  4859. + * ENUMS
  4860. + * Torch : Flash forced constantly on
  4861. + */
  4862. +typedef enum OMX_IMAGE_FLASHCONTROLTYPE {
  4863. + OMX_IMAGE_FlashControlOn = 0,
  4864. + OMX_IMAGE_FlashControlOff,
  4865. + OMX_IMAGE_FlashControlAuto,
  4866. + OMX_IMAGE_FlashControlRedEyeReduction,
  4867. + OMX_IMAGE_FlashControlFillin,
  4868. + OMX_IMAGE_FlashControlTorch,
  4869. + OMX_IMAGE_FlashControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4870. + OMX_IMAGE_FlashControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4871. + OMX_IMAGE_FlashControlMax = 0x7FFFFFFF
  4872. +} OMX_IMAGE_FLASHCONTROLTYPE;
  4873. +
  4874. +
  4875. +/**
  4876. + * Flash control configuration
  4877. + *
  4878. + * STRUCT MEMBERS:
  4879. + * nSize : Size of the structure in bytes
  4880. + * nVersion : OMX specification version information
  4881. + * nPortIndex : Port that this structure applies to
  4882. + * eFlashControl : Flash control type
  4883. + */
  4884. +typedef struct OMX_IMAGE_PARAM_FLASHCONTROLTYPE {
  4885. + OMX_U32 nSize;
  4886. + OMX_VERSIONTYPE nVersion;
  4887. + OMX_U32 nPortIndex;
  4888. + OMX_IMAGE_FLASHCONTROLTYPE eFlashControl;
  4889. +} OMX_IMAGE_PARAM_FLASHCONTROLTYPE;
  4890. +
  4891. +
  4892. +/**
  4893. + * Focus control type
  4894. + */
  4895. +typedef enum OMX_IMAGE_FOCUSCONTROLTYPE {
  4896. + OMX_IMAGE_FocusControlOn = 0,
  4897. + OMX_IMAGE_FocusControlOff,
  4898. + OMX_IMAGE_FocusControlAuto,
  4899. + OMX_IMAGE_FocusControlAutoLock,
  4900. + OMX_IMAGE_FocusControlKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4901. + OMX_IMAGE_FocusControlVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4902. + OMX_IMAGE_FocusControlMax = 0x7FFFFFFF
  4903. +} OMX_IMAGE_FOCUSCONTROLTYPE;
  4904. +
  4905. +
  4906. +/**
  4907. + * Focus control configuration
  4908. + *
  4909. + * STRUCT MEMBERS:
  4910. + * nSize : Size of the structure in bytes
  4911. + * nVersion : OMX specification version information
  4912. + * nPortIndex : Port that this structure applies to
  4913. + * eFocusControl : Focus control
  4914. + * nFocusSteps : Focus can take on values from 0 mm to infinity.
  4915. + * Interest is only in number of steps over this range.
  4916. + * nFocusStepIndex : Current focus step index
  4917. + */
  4918. +typedef struct OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE {
  4919. + OMX_U32 nSize;
  4920. + OMX_VERSIONTYPE nVersion;
  4921. + OMX_U32 nPortIndex;
  4922. + OMX_IMAGE_FOCUSCONTROLTYPE eFocusControl;
  4923. + OMX_U32 nFocusSteps;
  4924. + OMX_U32 nFocusStepIndex;
  4925. +} OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE;
  4926. +
  4927. +
  4928. +/**
  4929. + * Q Factor for JPEG compression, which controls the tradeoff between image
  4930. + * quality and size. Q Factor provides a more simple means of controlling
  4931. + * JPEG compression quality, without directly programming Quantization
  4932. + * tables for chroma and luma
  4933. + *
  4934. + * STRUCT MEMBERS:
  4935. + * nSize : Size of the structure in bytes
  4936. + * nVersion : OMX specification version information
  4937. + * nPortIndex : Port that this structure applies to
  4938. + * nQFactor : JPEG Q factor value in the range of 1-100. A factor of 1
  4939. + * produces the smallest, worst quality images, and a factor
  4940. + * of 100 produces the largest, best quality images. A
  4941. + * typical default is 75 for small good quality images
  4942. + */
  4943. +typedef struct OMX_IMAGE_PARAM_QFACTORTYPE {
  4944. + OMX_U32 nSize;
  4945. + OMX_VERSIONTYPE nVersion;
  4946. + OMX_U32 nPortIndex;
  4947. + OMX_U32 nQFactor;
  4948. +} OMX_IMAGE_PARAM_QFACTORTYPE;
  4949. +
  4950. +/**
  4951. + * Quantization table type
  4952. + */
  4953. +
  4954. +typedef enum OMX_IMAGE_QUANTIZATIONTABLETYPE {
  4955. + OMX_IMAGE_QuantizationTableLuma = 0,
  4956. + OMX_IMAGE_QuantizationTableChroma,
  4957. + OMX_IMAGE_QuantizationTableChromaCb,
  4958. + OMX_IMAGE_QuantizationTableChromaCr,
  4959. + OMX_IMAGE_QuantizationTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  4960. + OMX_IMAGE_QuantizationTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  4961. + OMX_IMAGE_QuantizationTableMax = 0x7FFFFFFF
  4962. +} OMX_IMAGE_QUANTIZATIONTABLETYPE;
  4963. +
  4964. +/**
  4965. + * JPEG quantization tables are used to determine DCT compression for
  4966. + * YUV data, as an alternative to specifying Q factor, providing exact
  4967. + * control of compression
  4968. + *
  4969. + * STRUCT MEMBERS:
  4970. + * nSize : Size of the structure in bytes
  4971. + * nVersion : OMX specification version information
  4972. + * nPortIndex : Port that this structure applies to
  4973. + * eQuantizationTable : Quantization table type
  4974. + * nQuantizationMatrix[64] : JPEG quantization table of coefficients stored
  4975. + * in increasing columns then by rows of data (i.e.
  4976. + * row 1, ... row 8). Quantization values are in
  4977. + * the range 0-255 and stored in linear order
  4978. + * (i.e. the component will zig-zag the
  4979. + * quantization table data if required internally)
  4980. + */
  4981. +typedef struct OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE {
  4982. + OMX_U32 nSize;
  4983. + OMX_VERSIONTYPE nVersion;
  4984. + OMX_U32 nPortIndex;
  4985. + OMX_IMAGE_QUANTIZATIONTABLETYPE eQuantizationTable;
  4986. + OMX_U8 nQuantizationMatrix[64];
  4987. +} OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE;
  4988. +
  4989. +
  4990. +/**
  4991. + * Huffman table type, the same Huffman table is applied for chroma and
  4992. + * luma component
  4993. + */
  4994. +typedef enum OMX_IMAGE_HUFFMANTABLETYPE {
  4995. + OMX_IMAGE_HuffmanTableAC = 0,
  4996. + OMX_IMAGE_HuffmanTableDC,
  4997. + OMX_IMAGE_HuffmanTableACLuma,
  4998. + OMX_IMAGE_HuffmanTableACChroma,
  4999. + OMX_IMAGE_HuffmanTableDCLuma,
  5000. + OMX_IMAGE_HuffmanTableDCChroma,
  5001. + OMX_IMAGE_HuffmanTableKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  5002. + OMX_IMAGE_HuffmanTableVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  5003. + OMX_IMAGE_HuffmanTableMax = 0x7FFFFFFF
  5004. +} OMX_IMAGE_HUFFMANTABLETYPE;
  5005. +
  5006. +/**
  5007. + * JPEG Huffman table
  5008. + *
  5009. + * STRUCT MEMBERS:
  5010. + * nSize : Size of the structure in bytes
  5011. + * nVersion : OMX specification version information
  5012. + * nPortIndex : Port that this structure applies to
  5013. + * eHuffmanTable : Huffman table type
  5014. + * nNumberOfHuffmanCodeOfLength[16] : 0-16, number of Huffman codes of each
  5015. + * possible length
  5016. + * nHuffmanTable[256] : 0-255, the size used for AC and DC
  5017. + * HuffmanTable are 16 and 162
  5018. + */
  5019. +typedef struct OMX_IMAGE_PARAM_HUFFMANTTABLETYPE {
  5020. + OMX_U32 nSize;
  5021. + OMX_VERSIONTYPE nVersion;
  5022. + OMX_U32 nPortIndex;
  5023. + OMX_IMAGE_HUFFMANTABLETYPE eHuffmanTable;
  5024. + OMX_U8 nNumberOfHuffmanCodeOfLength[16];
  5025. + OMX_U8 nHuffmanTable[256];
  5026. +} OMX_IMAGE_PARAM_HUFFMANTTABLETYPE;
  5027. +
  5028. +/** @} */
  5029. +#ifdef __cplusplus
  5030. +}
  5031. +#endif /* __cplusplus */
  5032. +
  5033. +#endif
  5034. +/* File EOF */
  5035. diff --git a/sf-extra/omx-il/OMX_ImageExt.h b/sf-extra/omx-il/OMX_ImageExt.h
  5036. new file mode 100644
  5037. index 00000000..e7cae029
  5038. --- /dev/null
  5039. +++ b/sf-extra/omx-il/OMX_ImageExt.h
  5040. @@ -0,0 +1,55 @@
  5041. +/*
  5042. + * Copyright (c) 2016 The Khronos Group Inc.
  5043. + *
  5044. + * Permission is hereby granted, free of charge, to any person obtaining
  5045. + * a copy of this software and associated documentation files (the
  5046. + * "Software"), to deal in the Software without restriction, including
  5047. + * without limitation the rights to use, copy, modify, merge, publish,
  5048. + * distribute, sublicense, and/or sell copies of the Software, and to
  5049. + * permit persons to whom the Software is furnished to do so, subject
  5050. + * to the following conditions:
  5051. + * The above copyright notice and this permission notice shall be included
  5052. + * in all copies or substantial portions of the Software.
  5053. + *
  5054. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  5055. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  5056. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  5057. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  5058. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  5059. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  5060. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  5061. + *
  5062. + */
  5063. +
  5064. +/** OMX_ImageExt.h - OpenMax IL version 1.1.2
  5065. + * The OMX_ImageExt header file contains extensions to the
  5066. + * definitions used by both the application and the component to
  5067. + * access image items.
  5068. + */
  5069. +
  5070. +#ifndef OMX_ImageExt_h
  5071. +#define OMX_ImageExt_h
  5072. +
  5073. +#ifdef __cplusplus
  5074. +extern "C" {
  5075. +#endif /* __cplusplus */
  5076. +
  5077. +/* Each OMX header shall include all required header files to allow the
  5078. + * header to compile without errors. The includes below are required
  5079. + * for this header file to compile successfully
  5080. + */
  5081. +#include <OMX_Core.h>
  5082. +
  5083. +/** Enum for standard image codingtype extensions */
  5084. +typedef enum OMX_IMAGE_CODINGEXTTYPE {
  5085. + OMX_IMAGE_CodingExtUnused = OMX_IMAGE_CodingKhronosExtensions,
  5086. + OMX_IMAGE_CodingWEBP, /**< WebP image format */
  5087. +} OMX_IMAGE_CODINGEXTTYPE;
  5088. +
  5089. +
  5090. +#ifdef __cplusplus
  5091. +}
  5092. +#endif /* __cplusplus */
  5093. +
  5094. +#endif /* OMX_ImageExt_h */
  5095. +/* File EOF */
  5096. diff --git a/sf-extra/omx-il/OMX_Index.h b/sf-extra/omx-il/OMX_Index.h
  5097. new file mode 100644
  5098. index 00000000..20a109cf
  5099. --- /dev/null
  5100. +++ b/sf-extra/omx-il/OMX_Index.h
  5101. @@ -0,0 +1,260 @@
  5102. +/*
  5103. + * Copyright (c) 2008 The Khronos Group Inc.
  5104. + *
  5105. + * Permission is hereby granted, free of charge, to any person obtaining
  5106. + * a copy of this software and associated documentation files (the
  5107. + * "Software"), to deal in the Software without restriction, including
  5108. + * without limitation the rights to use, copy, modify, merge, publish,
  5109. + * distribute, sublicense, and/or sell copies of the Software, and to
  5110. + * permit persons to whom the Software is furnished to do so, subject
  5111. + * to the following conditions:
  5112. + * The above copyright notice and this permission notice shall be included
  5113. + * in all copies or substantial portions of the Software.
  5114. + *
  5115. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  5116. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  5117. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  5118. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  5119. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  5120. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  5121. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  5122. + *
  5123. + */
  5124. +
  5125. +/** @file OMX_Index.h - OpenMax IL version 1.1.2
  5126. + * The OMX_Index header file contains the definitions for both applications
  5127. + * and components .
  5128. + */
  5129. +
  5130. +
  5131. +#ifndef OMX_Index_h
  5132. +#define OMX_Index_h
  5133. +
  5134. +#ifdef __cplusplus
  5135. +extern "C" {
  5136. +#endif /* __cplusplus */
  5137. +
  5138. +
  5139. +/* Each OMX header must include all required header files to allow the
  5140. + * header to compile without errors. The includes below are required
  5141. + * for this header file to compile successfully
  5142. + */
  5143. +#include <OMX_Types.h>
  5144. +
  5145. +
  5146. +/** The OMX_INDEXTYPE enumeration is used to select a structure when either
  5147. + * getting or setting parameters and/or configuration data. Each entry in
  5148. + * this enumeration maps to an OMX specified structure. When the
  5149. + * OMX_GetParameter, OMX_SetParameter, OMX_GetConfig or OMX_SetConfig methods
  5150. + * are used, the second parameter will always be an entry from this enumeration
  5151. + * and the third entry will be the structure shown in the comments for the entry.
  5152. + * For example, if the application is initializing a cropping function, the
  5153. + * OMX_SetConfig command would have OMX_IndexConfigCommonInputCrop as the second parameter
  5154. + * and would send a pointer to an initialized OMX_RECTTYPE structure as the
  5155. + * third parameter.
  5156. + *
  5157. + * The enumeration entries named with the OMX_Config prefix are sent using
  5158. + * the OMX_SetConfig command and the enumeration entries named with the
  5159. + * OMX_PARAM_ prefix are sent using the OMX_SetParameter command.
  5160. + */
  5161. +typedef enum OMX_INDEXTYPE {
  5162. +
  5163. + OMX_IndexComponentStartUnused = 0x01000000,
  5164. + OMX_IndexParamPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
  5165. + OMX_IndexParamAudioInit, /**< reference: OMX_PORT_PARAM_TYPE */
  5166. + OMX_IndexParamImageInit, /**< reference: OMX_PORT_PARAM_TYPE */
  5167. + OMX_IndexParamVideoInit, /**< reference: OMX_PORT_PARAM_TYPE */
  5168. + OMX_IndexParamOtherInit, /**< reference: OMX_PORT_PARAM_TYPE */
  5169. + OMX_IndexParamNumAvailableStreams, /**< reference: OMX_PARAM_U32TYPE */
  5170. + OMX_IndexParamActiveStream, /**< reference: OMX_PARAM_U32TYPE */
  5171. + OMX_IndexParamSuspensionPolicy, /**< reference: OMX_PARAM_SUSPENSIONPOLICYTYPE */
  5172. + OMX_IndexParamComponentSuspended, /**< reference: OMX_PARAM_SUSPENSIONTYPE */
  5173. + OMX_IndexConfigCapturing, /**< reference: OMX_CONFIG_BOOLEANTYPE */
  5174. + OMX_IndexConfigCaptureMode, /**< reference: OMX_CONFIG_CAPTUREMODETYPE */
  5175. + OMX_IndexAutoPauseAfterCapture, /**< reference: OMX_CONFIG_BOOLEANTYPE */
  5176. + OMX_IndexParamContentURI, /**< reference: OMX_PARAM_CONTENTURITYPE */
  5177. + OMX_IndexParamCustomContentPipe, /**< reference: OMX_PARAM_CONTENTPIPETYPE */
  5178. + OMX_IndexParamDisableResourceConcealment, /**< reference: OMX_RESOURCECONCEALMENTTYPE */
  5179. + OMX_IndexConfigMetadataItemCount, /**< reference: OMX_CONFIG_METADATAITEMCOUNTTYPE */
  5180. + OMX_IndexConfigContainerNodeCount, /**< reference: OMX_CONFIG_CONTAINERNODECOUNTTYPE */
  5181. + OMX_IndexConfigMetadataItem, /**< reference: OMX_CONFIG_METADATAITEMTYPE */
  5182. + OMX_IndexConfigCounterNodeID, /**< reference: OMX_CONFIG_CONTAINERNODEIDTYPE */
  5183. + OMX_IndexParamMetadataFilterType, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
  5184. + OMX_IndexParamMetadataKeyFilter, /**< reference: OMX_PARAM_METADATAFILTERTYPE */
  5185. + OMX_IndexConfigPriorityMgmt, /**< reference: OMX_PRIORITYMGMTTYPE */
  5186. + OMX_IndexParamStandardComponentRole, /**< reference: OMX_PARAM_COMPONENTROLETYPE */
  5187. +
  5188. + OMX_IndexPortStartUnused = 0x02000000,
  5189. + OMX_IndexParamPortDefinition, /**< reference: OMX_PARAM_PORTDEFINITIONTYPE */
  5190. + OMX_IndexParamCompBufferSupplier, /**< reference: OMX_PARAM_BUFFERSUPPLIERTYPE */
  5191. + OMX_IndexReservedStartUnused = 0x03000000,
  5192. +
  5193. + /* Audio parameters and configurations */
  5194. + OMX_IndexAudioStartUnused = 0x04000000,
  5195. + OMX_IndexParamAudioPortFormat, /**< reference: OMX_AUDIO_PARAM_PORTFORMATTYPE */
  5196. + OMX_IndexParamAudioPcm, /**< reference: OMX_AUDIO_PARAM_PCMMODETYPE */
  5197. + OMX_IndexParamAudioAac, /**< reference: OMX_AUDIO_PARAM_AACPROFILETYPE */
  5198. + OMX_IndexParamAudioRa, /**< reference: OMX_AUDIO_PARAM_RATYPE */
  5199. + OMX_IndexParamAudioMp3, /**< reference: OMX_AUDIO_PARAM_MP3TYPE */
  5200. + OMX_IndexParamAudioAdpcm, /**< reference: OMX_AUDIO_PARAM_ADPCMTYPE */
  5201. + OMX_IndexParamAudioG723, /**< reference: OMX_AUDIO_PARAM_G723TYPE */
  5202. + OMX_IndexParamAudioG729, /**< reference: OMX_AUDIO_PARAM_G729TYPE */
  5203. + OMX_IndexParamAudioAmr, /**< reference: OMX_AUDIO_PARAM_AMRTYPE */
  5204. + OMX_IndexParamAudioWma, /**< reference: OMX_AUDIO_PARAM_WMATYPE */
  5205. + OMX_IndexParamAudioSbc, /**< reference: OMX_AUDIO_PARAM_SBCTYPE */
  5206. + OMX_IndexParamAudioMidi, /**< reference: OMX_AUDIO_PARAM_MIDITYPE */
  5207. + OMX_IndexParamAudioGsm_FR, /**< reference: OMX_AUDIO_PARAM_GSMFRTYPE */
  5208. + OMX_IndexParamAudioMidiLoadUserSound, /**< reference: OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE */
  5209. + OMX_IndexParamAudioG726, /**< reference: OMX_AUDIO_PARAM_G726TYPE */
  5210. + OMX_IndexParamAudioGsm_EFR, /**< reference: OMX_AUDIO_PARAM_GSMEFRTYPE */
  5211. + OMX_IndexParamAudioGsm_HR, /**< reference: OMX_AUDIO_PARAM_GSMHRTYPE */
  5212. + OMX_IndexParamAudioPdc_FR, /**< reference: OMX_AUDIO_PARAM_PDCFRTYPE */
  5213. + OMX_IndexParamAudioPdc_EFR, /**< reference: OMX_AUDIO_PARAM_PDCEFRTYPE */
  5214. + OMX_IndexParamAudioPdc_HR, /**< reference: OMX_AUDIO_PARAM_PDCHRTYPE */
  5215. + OMX_IndexParamAudioTdma_FR, /**< reference: OMX_AUDIO_PARAM_TDMAFRTYPE */
  5216. + OMX_IndexParamAudioTdma_EFR, /**< reference: OMX_AUDIO_PARAM_TDMAEFRTYPE */
  5217. + OMX_IndexParamAudioQcelp8, /**< reference: OMX_AUDIO_PARAM_QCELP8TYPE */
  5218. + OMX_IndexParamAudioQcelp13, /**< reference: OMX_AUDIO_PARAM_QCELP13TYPE */
  5219. + OMX_IndexParamAudioEvrc, /**< reference: OMX_AUDIO_PARAM_EVRCTYPE */
  5220. + OMX_IndexParamAudioSmv, /**< reference: OMX_AUDIO_PARAM_SMVTYPE */
  5221. + OMX_IndexParamAudioVorbis, /**< reference: OMX_AUDIO_PARAM_VORBISTYPE */
  5222. +
  5223. + OMX_IndexConfigAudioMidiImmediateEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE */
  5224. + OMX_IndexConfigAudioMidiControl, /**< reference: OMX_AUDIO_CONFIG_MIDICONTROLTYPE */
  5225. + OMX_IndexConfigAudioMidiSoundBankProgram, /**< reference: OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE */
  5226. + OMX_IndexConfigAudioMidiStatus, /**< reference: OMX_AUDIO_CONFIG_MIDISTATUSTYPE */
  5227. + OMX_IndexConfigAudioMidiMetaEvent, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE */
  5228. + OMX_IndexConfigAudioMidiMetaEventData, /**< reference: OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE */
  5229. + OMX_IndexConfigAudioVolume, /**< reference: OMX_AUDIO_CONFIG_VOLUMETYPE */
  5230. + OMX_IndexConfigAudioBalance, /**< reference: OMX_AUDIO_CONFIG_BALANCETYPE */
  5231. + OMX_IndexConfigAudioChannelMute, /**< reference: OMX_AUDIO_CONFIG_CHANNELMUTETYPE */
  5232. + OMX_IndexConfigAudioMute, /**< reference: OMX_AUDIO_CONFIG_MUTETYPE */
  5233. + OMX_IndexConfigAudioLoudness, /**< reference: OMX_AUDIO_CONFIG_LOUDNESSTYPE */
  5234. + OMX_IndexConfigAudioEchoCancelation, /**< reference: OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE */
  5235. + OMX_IndexConfigAudioNoiseReduction, /**< reference: OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE */
  5236. + OMX_IndexConfigAudioBass, /**< reference: OMX_AUDIO_CONFIG_BASSTYPE */
  5237. + OMX_IndexConfigAudioTreble, /**< reference: OMX_AUDIO_CONFIG_TREBLETYPE */
  5238. + OMX_IndexConfigAudioStereoWidening, /**< reference: OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE */
  5239. + OMX_IndexConfigAudioChorus, /**< reference: OMX_AUDIO_CONFIG_CHORUSTYPE */
  5240. + OMX_IndexConfigAudioEqualizer, /**< reference: OMX_AUDIO_CONFIG_EQUALIZERTYPE */
  5241. + OMX_IndexConfigAudioReverberation, /**< reference: OMX_AUDIO_CONFIG_REVERBERATIONTYPE */
  5242. + OMX_IndexConfigAudioChannelVolume, /**< reference: OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE */
  5243. +
  5244. + /* Image specific parameters and configurations */
  5245. + OMX_IndexImageStartUnused = 0x05000000,
  5246. + OMX_IndexParamImagePortFormat, /**< reference: OMX_IMAGE_PARAM_PORTFORMATTYPE */
  5247. + OMX_IndexParamFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
  5248. + OMX_IndexConfigFocusControl, /**< reference: OMX_IMAGE_CONFIG_FOCUSCONTROLTYPE */
  5249. + OMX_IndexParamQFactor, /**< reference: OMX_IMAGE_PARAM_QFACTORTYPE */
  5250. + OMX_IndexParamQuantizationTable, /**< reference: OMX_IMAGE_PARAM_QUANTIZATIONTABLETYPE */
  5251. + OMX_IndexParamHuffmanTable, /**< reference: OMX_IMAGE_PARAM_HUFFMANTTABLETYPE */
  5252. + OMX_IndexConfigFlashControl, /**< reference: OMX_IMAGE_PARAM_FLASHCONTROLTYPE */
  5253. +
  5254. + /* Video specific parameters and configurations */
  5255. + OMX_IndexVideoStartUnused = 0x06000000,
  5256. + OMX_IndexParamVideoPortFormat, /**< reference: OMX_VIDEO_PARAM_PORTFORMATTYPE */
  5257. + OMX_IndexParamVideoQuantization, /**< reference: OMX_VIDEO_PARAM_QUANTIZATIONTYPE */
  5258. + OMX_IndexParamVideoFastUpdate, /**< reference: OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE */
  5259. + OMX_IndexParamVideoBitrate, /**< reference: OMX_VIDEO_PARAM_BITRATETYPE */
  5260. + OMX_IndexParamVideoMotionVector, /**< reference: OMX_VIDEO_PARAM_MOTIONVECTORTYPE */
  5261. + OMX_IndexParamVideoIntraRefresh, /**< reference: OMX_VIDEO_PARAM_INTRAREFRESHTYPE */
  5262. + OMX_IndexParamVideoErrorCorrection, /**< reference: OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE */
  5263. + OMX_IndexParamVideoVBSMC, /**< reference: OMX_VIDEO_PARAM_VBSMCTYPE */
  5264. + OMX_IndexParamVideoMpeg2, /**< reference: OMX_VIDEO_PARAM_MPEG2TYPE */
  5265. + OMX_IndexParamVideoMpeg4, /**< reference: OMX_VIDEO_PARAM_MPEG4TYPE */
  5266. + OMX_IndexParamVideoWmv, /**< reference: OMX_VIDEO_PARAM_WMVTYPE */
  5267. + OMX_IndexParamVideoRv, /**< reference: OMX_VIDEO_PARAM_RVTYPE */
  5268. + OMX_IndexParamVideoAvc, /**< reference: OMX_VIDEO_PARAM_AVCTYPE */
  5269. + OMX_IndexParamVideoH263, /**< reference: OMX_VIDEO_PARAM_H263TYPE */
  5270. + OMX_IndexParamVideoProfileLevelQuerySupported, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
  5271. + OMX_IndexParamVideoProfileLevelCurrent, /**< reference: OMX_VIDEO_PARAM_PROFILELEVELTYPE */
  5272. + OMX_IndexConfigVideoBitrate, /**< reference: OMX_VIDEO_CONFIG_BITRATETYPE */
  5273. + OMX_IndexConfigVideoFramerate, /**< reference: OMX_CONFIG_FRAMERATETYPE */
  5274. + OMX_IndexConfigVideoIntraVOPRefresh, /**< reference: OMX_CONFIG_INTRAREFRESHVOPTYPE */
  5275. + OMX_IndexConfigVideoIntraMBRefresh, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
  5276. + OMX_IndexConfigVideoMBErrorReporting, /**< reference: OMX_CONFIG_MBERRORREPORTINGTYPE */
  5277. + OMX_IndexParamVideoMacroblocksPerFrame, /**< reference: OMX_PARAM_MACROBLOCKSTYPE */
  5278. + OMX_IndexConfigVideoMacroBlockErrorMap, /**< reference: OMX_CONFIG_MACROBLOCKERRORMAPTYPE */
  5279. + OMX_IndexParamVideoSliceFMO, /**< reference: OMX_VIDEO_PARAM_AVCSLICEFMO */
  5280. + OMX_IndexConfigVideoAVCIntraPeriod, /**< reference: OMX_VIDEO_CONFIG_AVCINTRAPERIOD */
  5281. + OMX_IndexConfigVideoNalSize, /**< reference: OMX_VIDEO_CONFIG_NALSIZE */
  5282. +
  5283. + /* Image & Video common Configurations */
  5284. + OMX_IndexCommonStartUnused = 0x07000000,
  5285. + OMX_IndexParamCommonDeblocking, /**< reference: OMX_PARAM_DEBLOCKINGTYPE */
  5286. + OMX_IndexParamCommonSensorMode, /**< reference: OMX_PARAM_SENSORMODETYPE */
  5287. + OMX_IndexParamCommonInterleave, /**< reference: OMX_PARAM_INTERLEAVETYPE */
  5288. + OMX_IndexConfigCommonColorFormatConversion, /**< reference: OMX_CONFIG_COLORCONVERSIONTYPE */
  5289. + OMX_IndexConfigCommonScale, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
  5290. + OMX_IndexConfigCommonImageFilter, /**< reference: OMX_CONFIG_IMAGEFILTERTYPE */
  5291. + OMX_IndexConfigCommonColorEnhancement, /**< reference: OMX_CONFIG_COLORENHANCEMENTTYPE */
  5292. + OMX_IndexConfigCommonColorKey, /**< reference: OMX_CONFIG_COLORKEYTYPE */
  5293. + OMX_IndexConfigCommonColorBlend, /**< reference: OMX_CONFIG_COLORBLENDTYPE */
  5294. + OMX_IndexConfigCommonFrameStabilisation,/**< reference: OMX_CONFIG_FRAMESTABTYPE */
  5295. + OMX_IndexConfigCommonRotate, /**< reference: OMX_CONFIG_ROTATIONTYPE */
  5296. + OMX_IndexConfigCommonMirror, /**< reference: OMX_CONFIG_MIRRORTYPE */
  5297. + OMX_IndexConfigCommonOutputPosition, /**< reference: OMX_CONFIG_POINTTYPE */
  5298. + OMX_IndexConfigCommonInputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
  5299. + OMX_IndexConfigCommonOutputCrop, /**< reference: OMX_CONFIG_RECTTYPE */
  5300. + OMX_IndexConfigCommonDigitalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE */
  5301. + OMX_IndexConfigCommonOpticalZoom, /**< reference: OMX_CONFIG_SCALEFACTORTYPE*/
  5302. + OMX_IndexConfigCommonWhiteBalance, /**< reference: OMX_CONFIG_WHITEBALCONTROLTYPE */
  5303. + OMX_IndexConfigCommonExposure, /**< reference: OMX_CONFIG_EXPOSURECONTROLTYPE */
  5304. + OMX_IndexConfigCommonContrast, /**< reference: OMX_CONFIG_CONTRASTTYPE */
  5305. + OMX_IndexConfigCommonBrightness, /**< reference: OMX_CONFIG_BRIGHTNESSTYPE */
  5306. + OMX_IndexConfigCommonBacklight, /**< reference: OMX_CONFIG_BACKLIGHTTYPE */
  5307. + OMX_IndexConfigCommonGamma, /**< reference: OMX_CONFIG_GAMMATYPE */
  5308. + OMX_IndexConfigCommonSaturation, /**< reference: OMX_CONFIG_SATURATIONTYPE */
  5309. + OMX_IndexConfigCommonLightness, /**< reference: OMX_CONFIG_LIGHTNESSTYPE */
  5310. + OMX_IndexConfigCommonExclusionRect, /**< reference: OMX_CONFIG_RECTTYPE */
  5311. + OMX_IndexConfigCommonDithering, /**< reference: OMX_CONFIG_DITHERTYPE */
  5312. + OMX_IndexConfigCommonPlaneBlend, /**< reference: OMX_CONFIG_PLANEBLENDTYPE */
  5313. + OMX_IndexConfigCommonExposureValue, /**< reference: OMX_CONFIG_EXPOSUREVALUETYPE */
  5314. + OMX_IndexConfigCommonOutputSize, /**< reference: OMX_FRAMESIZETYPE */
  5315. + OMX_IndexParamCommonExtraQuantData, /**< reference: OMX_OTHER_EXTRADATATYPE */
  5316. + OMX_IndexConfigCommonFocusRegion, /**< reference: OMX_CONFIG_FOCUSREGIONTYPE */
  5317. + OMX_IndexConfigCommonFocusStatus, /**< reference: OMX_PARAM_FOCUSSTATUSTYPE */
  5318. + OMX_IndexConfigCommonTransitionEffect, /**< reference: OMX_CONFIG_TRANSITIONEFFECTTYPE */
  5319. +
  5320. + /* Reserved Configuration range */
  5321. + OMX_IndexOtherStartUnused = 0x08000000,
  5322. + OMX_IndexParamOtherPortFormat, /**< reference: OMX_OTHER_PARAM_PORTFORMATTYPE */
  5323. + OMX_IndexConfigOtherPower, /**< reference: OMX_OTHER_CONFIG_POWERTYPE */
  5324. + OMX_IndexConfigOtherStats, /**< reference: OMX_OTHER_CONFIG_STATSTYPE */
  5325. +
  5326. +
  5327. + /* Reserved Time range */
  5328. + OMX_IndexTimeStartUnused = 0x09000000,
  5329. + OMX_IndexConfigTimeScale, /**< reference: OMX_TIME_CONFIG_SCALETYPE */
  5330. + OMX_IndexConfigTimeClockState, /**< reference: OMX_TIME_CONFIG_CLOCKSTATETYPE */
  5331. + OMX_IndexConfigTimeActiveRefClock, /**< reference: OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE */
  5332. + OMX_IndexConfigTimeCurrentMediaTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
  5333. + OMX_IndexConfigTimeCurrentWallTime, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (read only) */
  5334. + OMX_IndexConfigTimeCurrentAudioReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
  5335. + OMX_IndexConfigTimeCurrentVideoReference, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
  5336. + OMX_IndexConfigTimeMediaTimeRequest, /**< reference: OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE (write only) */
  5337. + OMX_IndexConfigTimeClientStartTime, /**<reference: OMX_TIME_CONFIG_TIMESTAMPTYPE (write only) */
  5338. + OMX_IndexConfigTimePosition, /**< reference: OMX_TIME_CONFIG_TIMESTAMPTYPE */
  5339. + OMX_IndexConfigTimeSeekMode, /**< reference: OMX_TIME_CONFIG_SEEKMODETYPE */
  5340. +
  5341. +
  5342. + OMX_IndexKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  5343. + /* Vendor specific area */
  5344. + OMX_IndexRockchipExtensions = 0x70000000, /**< Reserved region for introducing Rockchip Standard Extensions */
  5345. + OMX_IndexParamVideoHDRRockchipExtensions, /**< reference: OMX_EXTENSION_VIDEO_PARAM_HDR */
  5346. + OMX_IndexVendorStartUnused = 0x7F000000,
  5347. + /* Vendor specific structures should be in the range of 0x7F000000
  5348. + to 0x7FFFFFFE. This range is not broken out by vendor, so
  5349. + private indexes are not guaranteed unique and therefore should
  5350. + only be sent to the appropriate component. */
  5351. +
  5352. + OMX_IndexMax = 0x7FFFFFFF
  5353. +
  5354. +} OMX_INDEXTYPE;
  5355. +
  5356. +#ifdef __cplusplus
  5357. +}
  5358. +#endif /* __cplusplus */
  5359. +
  5360. +#endif
  5361. +/* File EOF */
  5362. diff --git a/sf-extra/omx-il/OMX_IndexExt.h b/sf-extra/omx-il/OMX_IndexExt.h
  5363. new file mode 100644
  5364. index 00000000..b688d1d9
  5365. --- /dev/null
  5366. +++ b/sf-extra/omx-il/OMX_IndexExt.h
  5367. @@ -0,0 +1,105 @@
  5368. +/*
  5369. + * Copyright (c) 2010 The Khronos Group Inc.
  5370. + *
  5371. + * Permission is hereby granted, free of charge, to any person obtaining
  5372. + * a copy of this software and associated documentation files (the
  5373. + * "Software"), to deal in the Software without restriction, including
  5374. + * without limitation the rights to use, copy, modify, merge, publish,
  5375. + * distribute, sublicense, and/or sell copies of the Software, and to
  5376. + * permit persons to whom the Software is furnished to do so, subject
  5377. + * to the following conditions:
  5378. + * The above copyright notice and this permission notice shall be included
  5379. + * in all copies or substantial portions of the Software.
  5380. + *
  5381. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  5382. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  5383. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  5384. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  5385. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  5386. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  5387. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  5388. + *
  5389. + */
  5390. +
  5391. +/** @file OMX_IndexExt.h - OpenMax IL version 1.1.2
  5392. + * The OMX_IndexExt header file contains extensions to the definitions
  5393. + * for both applications and components .
  5394. + */
  5395. +
  5396. +#ifndef OMX_IndexExt_h
  5397. +#define OMX_IndexExt_h
  5398. +
  5399. +#ifdef __cplusplus
  5400. +extern "C" {
  5401. +#endif /* __cplusplus */
  5402. +
  5403. +/* Each OMX header shall include all required header files to allow the
  5404. + * header to compile without errors. The includes below are required
  5405. + * for this header file to compile successfully
  5406. + */
  5407. +#include <OMX_Index.h>
  5408. +
  5409. +
  5410. +/** Khronos standard extension indices.
  5411. +
  5412. +This enum lists the current Khronos extension indices to OpenMAX IL.
  5413. +*/
  5414. +typedef enum OMX_INDEXEXTTYPE {
  5415. +
  5416. + /* Component parameters and configurations */
  5417. + OMX_IndexExtComponentStartUnused = OMX_IndexKhronosExtensions + 0x00100000,
  5418. + OMX_IndexConfigCallbackRequest, /**< reference: OMX_CONFIG_CALLBACKREQUESTTYPE */
  5419. + OMX_IndexConfigCommitMode, /**< reference: OMX_CONFIG_COMMITMODETYPE */
  5420. + OMX_IndexConfigCommit, /**< reference: OMX_CONFIG_COMMITTYPE */
  5421. +
  5422. + /* Port parameters and configurations */
  5423. + OMX_IndexExtPortStartUnused = OMX_IndexKhronosExtensions + 0x00200000,
  5424. +
  5425. + /* Audio parameters and configurations */
  5426. + OMX_IndexExtAudioStartUnused = OMX_IndexKhronosExtensions + 0x00400000,
  5427. + OMX_IndexParamAudioAndroidAc3, /**< reference: OMX_AUDIO_PARAM_ANDROID_AC3TYPE */
  5428. + OMX_IndexParamAudioAndroidOpus, /**< reference: OMX_AUDIO_PARAM_ANDROID_OPUSTYPE */
  5429. + OMX_IndexParamAudioAndroidAacPresentation, /**< reference: OMX_AUDIO_PARAM_ANDROID_AACPRESENTATIONTYPE */
  5430. + OMX_IndexParamAudioAndroidEac3, /**< reference: OMX_AUDIO_PARAM_ANDROID_EAC3TYPE */
  5431. + OMX_IndexParamAudioProfileQuerySupported, /**< reference: OMX_AUDIO_PARAM_ANDROID_PROFILETYPE */
  5432. +
  5433. + /* Image parameters and configurations */
  5434. + OMX_IndexExtImageStartUnused = OMX_IndexKhronosExtensions + 0x00500000,
  5435. +
  5436. + /* Video parameters and configurations */
  5437. + OMX_IndexExtVideoStartUnused = OMX_IndexKhronosExtensions + 0x00600000,
  5438. + OMX_IndexParamNalStreamFormatSupported, /**< reference: OMX_NALSTREAMFORMATTYPE */
  5439. + OMX_IndexParamNalStreamFormat, /**< reference: OMX_NALSTREAMFORMATTYPE */
  5440. + OMX_IndexParamNalStreamFormatSelect, /**< reference: OMX_NALSTREAMFORMATTYPE */
  5441. + OMX_IndexParamVideoVp8, /**< reference: OMX_VIDEO_PARAM_VP8TYPE */
  5442. + OMX_IndexConfigVideoVp8ReferenceFrame, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMETYPE */
  5443. + OMX_IndexConfigVideoVp8ReferenceFrameType, /**< reference: OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE */
  5444. + OMX_IndexParamVideoAndroidVp8Encoder, /**< reference: OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE */
  5445. + OMX_IndexParamVideoHevc, /**< reference: OMX_VIDEO_PARAM_HEVCTYPE */
  5446. + OMX_IndexParamSliceSegments, /**< reference: OMX_VIDEO_SLICESEGMENTSTYPE */
  5447. + OMX_IndexConfigAndroidIntraRefresh, /**< reference: OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE */
  5448. + OMX_IndexParamAndroidVideoTemporalLayering, /**< reference: OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE */
  5449. + OMX_IndexConfigAndroidVideoTemporalLayering, /**< reference: OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE */
  5450. +
  5451. + /* Image & Video common configurations */
  5452. + OMX_IndexExtCommonStartUnused = OMX_IndexKhronosExtensions + 0x00700000,
  5453. +
  5454. + /* Other configurations */
  5455. + OMX_IndexExtOtherStartUnused = OMX_IndexKhronosExtensions + 0x00800000,
  5456. + OMX_IndexConfigAutoFramerateConversion, /**< reference: OMX_CONFIG_BOOLEANTYPE */
  5457. + OMX_IndexConfigPriority, /**< reference: OMX_PARAM_U32TYPE */
  5458. + OMX_IndexConfigOperatingRate, /**< reference: OMX_PARAM_U32TYPE in Q16 format for video and in Hz for audio */
  5459. + OMX_IndexParamConsumerUsageBits, /**< reference: OMX_PARAM_U32TYPE */
  5460. +
  5461. + /* Time configurations */
  5462. + OMX_IndexExtTimeStartUnused = OMX_IndexKhronosExtensions + 0x00900000,
  5463. +
  5464. + OMX_IndexExtMax = 0x7FFFFFFF
  5465. +} OMX_INDEXEXTTYPE;
  5466. +
  5467. +#ifdef __cplusplus
  5468. +}
  5469. +#endif /* __cplusplus */
  5470. +
  5471. +#endif /* OMX_IndexExt_h */
  5472. +/* File EOF */
  5473. diff --git a/sf-extra/omx-il/OMX_Other.h b/sf-extra/omx-il/OMX_Other.h
  5474. new file mode 100644
  5475. index 00000000..8aa67b7e
  5476. --- /dev/null
  5477. +++ b/sf-extra/omx-il/OMX_Other.h
  5478. @@ -0,0 +1,366 @@
  5479. +/*
  5480. + * Copyright (c) 2008 The Khronos Group Inc.
  5481. + *
  5482. + * Permission is hereby granted, free of charge, to any person obtaining
  5483. + * a copy of this software and associated documentation files (the
  5484. + * "Software"), to deal in the Software without restriction, including
  5485. + * without limitation the rights to use, copy, modify, merge, publish,
  5486. + * distribute, sublicense, and/or sell copies of the Software, and to
  5487. + * permit persons to whom the Software is furnished to do so, subject
  5488. + * to the following conditions:
  5489. + * The above copyright notice and this permission notice shall be included
  5490. + * in all copies or substantial portions of the Software.
  5491. + *
  5492. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  5493. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  5494. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  5495. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  5496. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  5497. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  5498. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  5499. + *
  5500. + */
  5501. +
  5502. +/** @file OMX_Other.h - OpenMax IL version 1.1.2
  5503. + * The structures needed by Other components to exchange
  5504. + * parameters and configuration data with the components.
  5505. + */
  5506. +
  5507. +#ifndef OMX_Other_h
  5508. +#define OMX_Other_h
  5509. +
  5510. +#ifdef __cplusplus
  5511. +extern "C" {
  5512. +#endif /* __cplusplus */
  5513. +
  5514. +
  5515. +/* Each OMX header must include all required header files to allow the
  5516. + * header to compile without errors. The includes below are required
  5517. + * for this header file to compile successfully
  5518. + */
  5519. +
  5520. +#include <OMX_Core.h>
  5521. +
  5522. +
  5523. +/**
  5524. + * Enumeration of possible data types which match to multiple domains or no
  5525. + * domain at all. For types which are vendor specific, a value above
  5526. + * OMX_OTHER_VENDORTSTART should be used.
  5527. + */
  5528. +typedef enum OMX_OTHER_FORMATTYPE {
  5529. + OMX_OTHER_FormatTime = 0, /**< Transmission of various timestamps, elapsed time,
  5530. + time deltas, etc */
  5531. + OMX_OTHER_FormatPower, /**< Perhaps used for enabling/disabling power
  5532. + management, setting clocks? */
  5533. + OMX_OTHER_FormatStats, /**< Could be things such as frame rate, frames
  5534. + dropped, etc */
  5535. + OMX_OTHER_FormatBinary, /**< Arbitrary binary data */
  5536. + OMX_OTHER_FormatVendorReserved = 1000, /**< Starting value for vendor specific
  5537. + formats */
  5538. +
  5539. + OMX_OTHER_FormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  5540. + OMX_OTHER_FormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  5541. + OMX_OTHER_FormatMax = 0x7FFFFFFF
  5542. +} OMX_OTHER_FORMATTYPE;
  5543. +
  5544. +/**
  5545. + * Enumeration of seek modes.
  5546. + */
  5547. +typedef enum OMX_TIME_SEEKMODETYPE {
  5548. + OMX_TIME_SeekModeFast = 0, /**< Prefer seeking to an approximation
  5549. + * of the requested seek position over
  5550. + * the actual seek position if it
  5551. + * results in a faster seek. */
  5552. + OMX_TIME_SeekModeAccurate, /**< Prefer seeking to the actual seek
  5553. + * position over an approximation
  5554. + * of the requested seek position even
  5555. + * if it results in a slower seek. */
  5556. + OMX_TIME_SeekModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  5557. + OMX_TIME_SeekModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  5558. + OMX_TIME_SeekModeMax = 0x7FFFFFFF
  5559. +} OMX_TIME_SEEKMODETYPE;
  5560. +
  5561. +/* Structure representing the seekmode of the component */
  5562. +typedef struct OMX_TIME_CONFIG_SEEKMODETYPE {
  5563. + OMX_U32 nSize; /**< size of the structure in bytes */
  5564. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5565. + OMX_TIME_SEEKMODETYPE eType; /**< The seek mode */
  5566. +} OMX_TIME_CONFIG_SEEKMODETYPE;
  5567. +
  5568. +/**
  5569. + * colorspace
  5570. + */
  5571. +typedef enum OMX_ROCKCHIP_EXT_COLORSPACE {
  5572. + OMX_RK_EXT_ColorspaceBT709 = 1,
  5573. + OMX_RK_EXT_ColorspaceBT2020,
  5574. + OMX_RK_EXT_ColorspaceMax = 0x7FFFFFFF
  5575. +} OMX_RK_EXT_COLORSPACE;
  5576. +
  5577. +/**
  5578. + * dynamic range
  5579. + */
  5580. +typedef enum OMX_ROCKCHIP_EXT_DYNCRANGE {
  5581. + OMX_RK_EXT_DyncrangeSDR = 0,
  5582. + OMX_RK_EXT_DyncrangeHDR10,
  5583. + OMX_RK_EXT_DyncrangeHDRHLG,
  5584. + OMX_RK_EXT_DyncrangeHDRDOLBY,
  5585. + OMX_RK_EXT_DyncrangeMax = 0x7FFFFFFF
  5586. +} OMX_RK_EXT_DYNCRANGE;
  5587. +
  5588. +
  5589. +/* Structure Rockchip extension HDR param of the component */
  5590. + typedef struct OMX_EXTENSION_VIDEO_PARAM_HDR {
  5591. + OMX_U32 nSize; /**< size of the structure in bytes */
  5592. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5593. + OMX_RK_EXT_COLORSPACE eColorSpace; /**< Color space */
  5594. + OMX_RK_EXT_DYNCRANGE eDyncRange; /**< dynamic range */
  5595. +} OMX_EXTENSION_VIDEO_PARAM_HDR;
  5596. +
  5597. +/** Structure representing a time stamp used with the following configs
  5598. + * on the Clock Component (CC):
  5599. + *
  5600. + * OMX_IndexConfigTimeCurrentWallTime: query of the CC’s current wall
  5601. + * time
  5602. + * OMX_IndexConfigTimeCurrentMediaTime: query of the CC’s current media
  5603. + * time
  5604. + * OMX_IndexConfigTimeCurrentAudioReference and
  5605. + * OMX_IndexConfigTimeCurrentVideoReference: audio/video reference
  5606. + * clock sending SC its reference time
  5607. + * OMX_IndexConfigTimeClientStartTime: a Clock Component client sends
  5608. + * this structure to the Clock Component via a SetConfig on its
  5609. + * client port when it receives a buffer with
  5610. + * OMX_BUFFERFLAG_STARTTIME set. It must use the timestamp
  5611. + * specified by that buffer for nStartTimestamp.
  5612. + *
  5613. + * It’s also used with the following config on components in general:
  5614. + *
  5615. + * OMX_IndexConfigTimePosition: IL client querying component position
  5616. + * (GetConfig) or commanding a component to seek to the given location
  5617. + * (SetConfig)
  5618. + */
  5619. +typedef struct OMX_TIME_CONFIG_TIMESTAMPTYPE {
  5620. + OMX_U32 nSize; /**< size of the structure in bytes */
  5621. + OMX_VERSIONTYPE nVersion; /**< OMX specification version
  5622. + * information */
  5623. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  5624. + OMX_TICKS nTimestamp; /**< timestamp .*/
  5625. +} OMX_TIME_CONFIG_TIMESTAMPTYPE;
  5626. +
  5627. +/** Enumeration of possible reference clocks to the media time. */
  5628. +typedef enum OMX_TIME_UPDATETYPE {
  5629. + OMX_TIME_UpdateRequestFulfillment, /**< Update is the fulfillment of a media time request. */
  5630. + OMX_TIME_UpdateScaleChanged, /**< Update was generated because the scale chagned. */
  5631. + OMX_TIME_UpdateClockStateChanged, /**< Update was generated because the clock state changed. */
  5632. + OMX_TIME_UpdateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  5633. + OMX_TIME_UpdateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  5634. + OMX_TIME_UpdateMax = 0x7FFFFFFF
  5635. +} OMX_TIME_UPDATETYPE;
  5636. +
  5637. +/** Enumeration of possible reference clocks to the media time. */
  5638. +typedef enum OMX_TIME_REFCLOCKTYPE {
  5639. + OMX_TIME_RefClockNone, /**< Use no references. */
  5640. + OMX_TIME_RefClockAudio, /**< Use references sent through OMX_IndexConfigTimeCurrentAudioReference */
  5641. + OMX_TIME_RefClockVideo, /**< Use references sent through OMX_IndexConfigTimeCurrentVideoReference */
  5642. + OMX_TIME_RefClockKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  5643. + OMX_TIME_RefClockVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  5644. + OMX_TIME_RefClockMax = 0x7FFFFFFF
  5645. +} OMX_TIME_REFCLOCKTYPE;
  5646. +
  5647. +/** Enumeration of clock states. */
  5648. +typedef enum OMX_TIME_CLOCKSTATE {
  5649. + OMX_TIME_ClockStateRunning, /**< Clock running. */
  5650. + OMX_TIME_ClockStateWaitingForStartTime, /**< Clock waiting until the
  5651. + * prescribed clients emit their
  5652. + * start time. */
  5653. + OMX_TIME_ClockStateStopped, /**< Clock stopped. */
  5654. + OMX_TIME_ClockStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  5655. + OMX_TIME_ClockStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  5656. + OMX_TIME_ClockStateMax = 0x7FFFFFFF
  5657. +} OMX_TIME_CLOCKSTATE;
  5658. +
  5659. +/** Structure representing a media time request to the clock component.
  5660. + *
  5661. + * A client component sends this structure to the Clock Component via a SetConfig
  5662. + * on its client port to specify a media timestamp the Clock Component
  5663. + * should emit. The Clock Component should fulfill the request by sending a
  5664. + * OMX_TIME_MEDIATIMETYPE when its media clock matches the requested
  5665. + * timestamp.
  5666. + *
  5667. + * The client may require a media time request be fulfilled slightly
  5668. + * earlier than the media time specified. In this case the client specifies
  5669. + * an offset which is equal to the difference between wall time corresponding
  5670. + * to the requested media time and the wall time when it will be
  5671. + * fulfilled.
  5672. + *
  5673. + * A client component may uses these requests and the OMX_TIME_MEDIATIMETYPE to
  5674. + * time events according to timestamps. If a client must perform an operation O at
  5675. + * a time T (e.g. deliver a video frame at its corresponding timestamp), it makes a
  5676. + * media time request at T (perhaps specifying an offset to ensure the request fulfillment
  5677. + * is a little early). When the clock component passes the resulting OMX_TIME_MEDIATIMETYPE
  5678. + * structure back to the client component, the client may perform operation O (perhaps having
  5679. + * to wait a slight amount more time itself as specified by the return values).
  5680. + */
  5681. +
  5682. +typedef struct OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE {
  5683. + OMX_U32 nSize; /**< size of the structure in bytes */
  5684. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5685. + OMX_U32 nPortIndex; /**< port that this structure applies to */
  5686. + OMX_PTR pClientPrivate; /**< Client private data to disabiguate this media time
  5687. + * from others (e.g. the number of the frame to deliver).
  5688. + * Duplicated in the media time structure that fulfills
  5689. + * this request. A value of zero is reserved for time scale
  5690. + * updates. */
  5691. + OMX_TICKS nMediaTimestamp; /**< Media timestamp requested.*/
  5692. + OMX_TICKS nOffset; /**< Amount of wall clock time by which this
  5693. + * request should be fulfilled early */
  5694. +} OMX_TIME_CONFIG_MEDIATIMEREQUESTTYPE;
  5695. +
  5696. +/**< Structure sent from the clock component client either when fulfilling
  5697. + * a media time request or when the time scale has changed.
  5698. + *
  5699. + * In the former case the Clock Component fills this structure and times its emission
  5700. + * to a client component (via the client port) according to the corresponding media
  5701. + * time request sent by the client. The Clock Component should time the emission to occur
  5702. + * when the requested timestamp matches the Clock Component's media time but also the
  5703. + * prescribed offset early.
  5704. + *
  5705. + * Upon scale changes the clock component clears the nClientPrivate data, sends the current
  5706. + * media time and sets the nScale to the new scale via the client port. It emits a
  5707. + * OMX_TIME_MEDIATIMETYPE to all clients independent of any requests. This allows clients to
  5708. + * alter processing to accomodate scaling. For instance a video component might skip inter-frames
  5709. + * in the case of extreme fastforward. Likewise an audio component might add or remove samples
  5710. + * from an audio frame to scale audio data.
  5711. + *
  5712. + * It is expected that some clock components may not be able to fulfill requests
  5713. + * at exactly the prescribed time. This is acceptable so long as the request is
  5714. + * fulfilled at least as early as described and not later. This structure provides
  5715. + * fields the client may use to wait for the remaining time.
  5716. + *
  5717. + * The client may use either the nOffset or nWallTimeAtMedia fields to determine the
  5718. + * wall time until the nMediaTimestamp actually occurs. In the latter case the
  5719. + * client can get a more accurate value for offset by getting the current wall
  5720. + * from the cloc component and subtracting it from nWallTimeAtMedia.
  5721. + */
  5722. +
  5723. +typedef struct OMX_TIME_MEDIATIMETYPE {
  5724. + OMX_U32 nSize; /**< size of the structure in bytes */
  5725. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5726. + OMX_U32 nClientPrivate; /**< Client private data to disabiguate this media time
  5727. + * from others. Copied from the media time request.
  5728. + * A value of zero is reserved for time scale updates. */
  5729. + OMX_TIME_UPDATETYPE eUpdateType; /**< Reason for the update */
  5730. + OMX_TICKS nMediaTimestamp; /**< Media time requested. If no media time was
  5731. + * requested then this is the current media time. */
  5732. + OMX_TICKS nOffset; /**< Amount of wall clock time by which this
  5733. + * request was actually fulfilled early */
  5734. +
  5735. + OMX_TICKS nWallTimeAtMediaTime; /**< Wall time corresponding to nMediaTimeStamp.
  5736. + * A client may compare this value to current
  5737. + * media time obtained from the Clock Component to determine
  5738. + * the wall time until the media timestamp is really
  5739. + * current. */
  5740. + OMX_S32 xScale; /**< Current media time scale in Q16 format. */
  5741. + OMX_TIME_CLOCKSTATE eState; /* Seeking Change. Added 7/12.*/
  5742. + /**< State of the media time. */
  5743. +} OMX_TIME_MEDIATIMETYPE;
  5744. +
  5745. +/** Structure representing the current media time scale factor. Applicable only to clock
  5746. + * component, other components see scale changes via OMX_TIME_MEDIATIMETYPE buffers sent via
  5747. + * the clock component client ports. Upon recieving this config the clock component changes
  5748. + * the rate by which the media time increases or decreases effectively implementing trick modes.
  5749. + */
  5750. +typedef struct OMX_TIME_CONFIG_SCALETYPE {
  5751. + OMX_U32 nSize; /**< size of the structure in bytes */
  5752. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5753. + OMX_S32 xScale; /**< This is a value in Q16 format which is used for
  5754. + * scaling the media time */
  5755. +} OMX_TIME_CONFIG_SCALETYPE;
  5756. +
  5757. +/** Bits used to identify a clock port. Used in OMX_TIME_CONFIG_CLOCKSTATETYPE’s nWaitMask field */
  5758. +#define OMX_CLOCKPORT0 0x00000001
  5759. +#define OMX_CLOCKPORT1 0x00000002
  5760. +#define OMX_CLOCKPORT2 0x00000004
  5761. +#define OMX_CLOCKPORT3 0x00000008
  5762. +#define OMX_CLOCKPORT4 0x00000010
  5763. +#define OMX_CLOCKPORT5 0x00000020
  5764. +#define OMX_CLOCKPORT6 0x00000040
  5765. +#define OMX_CLOCKPORT7 0x00000080
  5766. +
  5767. +/** Structure representing the current mode of the media clock.
  5768. + * IL Client uses this config to change or query the mode of the
  5769. + * media clock of the clock component. Applicable only to clock
  5770. + * component.
  5771. + *
  5772. + * On a SetConfig if eState is OMX_TIME_ClockStateRunning media time
  5773. + * starts immediately at the prescribed start time. If
  5774. + * OMX_TIME_ClockStateWaitingForStartTime the Clock Component ignores
  5775. + * the given nStartTime and waits for all clients specified in the
  5776. + * nWaitMask to send starttimes (via
  5777. + * OMX_IndexConfigTimeClientStartTime). The Clock Component then starts
  5778. + * the media clock using the earliest start time supplied. */
  5779. +typedef struct OMX_TIME_CONFIG_CLOCKSTATETYPE {
  5780. + OMX_U32 nSize; /**< size of the structure in bytes */
  5781. + OMX_VERSIONTYPE nVersion; /**< OMX specification version
  5782. + * information */
  5783. + OMX_TIME_CLOCKSTATE eState; /**< State of the media time. */
  5784. + OMX_TICKS nStartTime; /**< Start time of the media time. */
  5785. + OMX_TICKS nOffset; /**< Time to offset the media time by
  5786. + * (e.g. preroll). Media time will be
  5787. + * reported to be nOffset ticks earlier.
  5788. + */
  5789. + OMX_U32 nWaitMask; /**< Mask of OMX_CLOCKPORT values. */
  5790. +} OMX_TIME_CONFIG_CLOCKSTATETYPE;
  5791. +
  5792. +/** Structure representing the reference clock currently being used to
  5793. + * compute media time. IL client uses this config to change or query the
  5794. + * clock component's active reference clock */
  5795. +typedef struct OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE {
  5796. + OMX_U32 nSize; /**< size of the structure in bytes */
  5797. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5798. + OMX_TIME_REFCLOCKTYPE eClock; /**< Reference clock used to compute media time */
  5799. +} OMX_TIME_CONFIG_ACTIVEREFCLOCKTYPE;
  5800. +
  5801. +/** Descriptor for setting specifics of power type.
  5802. + * Note: this structure is listed for backwards compatibility. */
  5803. +typedef struct OMX_OTHER_CONFIG_POWERTYPE {
  5804. + OMX_U32 nSize; /**< size of the structure in bytes */
  5805. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5806. + OMX_BOOL bEnablePM; /**< Flag to enable Power Management */
  5807. +} OMX_OTHER_CONFIG_POWERTYPE;
  5808. +
  5809. +
  5810. +/** Descriptor for setting specifics of stats type.
  5811. + * Note: this structure is listed for backwards compatibility. */
  5812. +typedef struct OMX_OTHER_CONFIG_STATSTYPE {
  5813. + OMX_U32 nSize; /**< size of the structure in bytes */
  5814. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5815. + /* what goes here */
  5816. +} OMX_OTHER_CONFIG_STATSTYPE;
  5817. +
  5818. +
  5819. +/**
  5820. + * The PortDefinition structure is used to define all of the parameters
  5821. + * necessary for the compliant component to setup an input or an output other
  5822. + * path.
  5823. + */
  5824. +typedef struct OMX_OTHER_PORTDEFINITIONTYPE {
  5825. + OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
  5826. +} OMX_OTHER_PORTDEFINITIONTYPE;
  5827. +
  5828. +/** Port format parameter. This structure is used to enumerate
  5829. + * the various data input/output format supported by the port.
  5830. + */
  5831. +typedef struct OMX_OTHER_PARAM_PORTFORMATTYPE {
  5832. + OMX_U32 nSize; /**< size of the structure in bytes */
  5833. + OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
  5834. + OMX_U32 nPortIndex; /**< Indicates which port to set */
  5835. + OMX_U32 nIndex; /**< Indicates the enumeration index for the format from 0x0 to N-1 */
  5836. + OMX_OTHER_FORMATTYPE eFormat; /**< Type of data expected for this channel */
  5837. +} OMX_OTHER_PARAM_PORTFORMATTYPE;
  5838. +
  5839. +#ifdef __cplusplus
  5840. +}
  5841. +#endif /* __cplusplus */
  5842. +
  5843. +#endif
  5844. +/* File EOF */
  5845. diff --git a/sf-extra/omx-il/OMX_Types.h b/sf-extra/omx-il/OMX_Types.h
  5846. new file mode 100644
  5847. index 00000000..527ba235
  5848. --- /dev/null
  5849. +++ b/sf-extra/omx-il/OMX_Types.h
  5850. @@ -0,0 +1,361 @@
  5851. +/*
  5852. + * Copyright (c) 2016 The Khronos Group Inc.
  5853. + *
  5854. + * Permission is hereby granted, free of charge, to any person obtaining
  5855. + * a copy of this software and associated documentation files (the
  5856. + * "Software"), to deal in the Software without restriction, including
  5857. + * without limitation the rights to use, copy, modify, merge, publish,
  5858. + * distribute, sublicense, and/or sell copies of the Software, and to
  5859. + * permit persons to whom the Software is furnished to do so, subject
  5860. + * to the following conditions:
  5861. + * The above copyright notice and this permission notice shall be included
  5862. + * in all copies or substantial portions of the Software.
  5863. + *
  5864. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  5865. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  5866. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  5867. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  5868. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  5869. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  5870. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  5871. + *
  5872. + */
  5873. +
  5874. +/** OMX_Types.h - OpenMax IL version 1.1.2
  5875. + * The OMX_Types header file contains the primitive type definitions used by
  5876. + * the core, the application and the component. This file may need to be
  5877. + * modified to be used on systems that do not have "char" set to 8 bits,
  5878. + * "short" set to 16 bits and "long" set to 32 bits.
  5879. + */
  5880. +
  5881. +#ifndef OMX_Types_h
  5882. +#define OMX_Types_h
  5883. +
  5884. +#include <stdint.h>
  5885. +
  5886. +#ifdef __cplusplus
  5887. +extern "C" {
  5888. +#endif /* __cplusplus */
  5889. +
  5890. +/** The OMX_API and OMX_APIENTRY are platform specific definitions used
  5891. + * to declare OMX function prototypes. They are modified to meet the
  5892. + * requirements for a particular platform */
  5893. +#ifdef __SYMBIAN32__
  5894. +# ifdef __OMX_EXPORTS
  5895. +# define OMX_API __declspec(dllexport)
  5896. +# else
  5897. +# ifdef _WIN32
  5898. +# define OMX_API __declspec(dllexport)
  5899. +# else
  5900. +# define OMX_API __declspec(dllimport)
  5901. +# endif
  5902. +# endif
  5903. +#else
  5904. +# ifdef _WIN32
  5905. +# ifdef __OMX_EXPORTS
  5906. +# define OMX_API __declspec(dllexport)
  5907. +# else
  5908. +# define OMX_API __declspec(dllimport)
  5909. +# endif
  5910. +# else
  5911. +# ifdef __OMX_EXPORTS
  5912. +# define OMX_API
  5913. +# else
  5914. +# define OMX_API extern
  5915. +# endif
  5916. +# endif
  5917. +#endif
  5918. +
  5919. +#ifndef OMX_APIENTRY
  5920. +#define OMX_APIENTRY
  5921. +#endif
  5922. +
  5923. +/** OMX_IN is used to identify inputs to an OMX function. This designation
  5924. + will also be used in the case of a pointer that points to a parameter
  5925. + that is used as an output. */
  5926. +#ifndef OMX_IN
  5927. +#define OMX_IN
  5928. +#endif
  5929. +
  5930. +/** OMX_OUT is used to identify outputs from an OMX function. This
  5931. + designation will also be used in the case of a pointer that points
  5932. + to a parameter that is used as an input. */
  5933. +#ifndef OMX_OUT
  5934. +#define OMX_OUT
  5935. +#endif
  5936. +
  5937. +
  5938. +/** OMX_INOUT is used to identify parameters that may be either inputs or
  5939. + outputs from an OMX function at the same time. This designation will
  5940. + also be used in the case of a pointer that points to a parameter that
  5941. + is used both as an input and an output. */
  5942. +#ifndef OMX_INOUT
  5943. +#define OMX_INOUT
  5944. +#endif
  5945. +
  5946. +/** OMX_ALL is used to as a wildcard to select all entities of the same type
  5947. + * when specifying the index, or referring to a object by an index. (i.e.
  5948. + * use OMX_ALL to indicate all N channels). When used as a port index
  5949. + * for a config or parameter this OMX_ALL denotes that the config or
  5950. + * parameter applies to the entire component not just one port. */
  5951. +#define OMX_ALL 0xFFFFFFFF
  5952. +
  5953. +/** In the following we define groups that help building doxygen documentation */
  5954. +
  5955. +/** @defgroup core OpenMAX IL core
  5956. + * Functions and structure related to the OMX IL core
  5957. + */
  5958. +
  5959. + /** @defgroup comp OpenMAX IL component
  5960. + * Functions and structure related to the OMX IL component
  5961. + */
  5962. +
  5963. +/** @defgroup rpm Resource and Policy Management
  5964. + * Structures for resource and policy management of components
  5965. + */
  5966. +
  5967. +/** @defgroup buf Buffer Management
  5968. + * Buffer handling functions and structures
  5969. + */
  5970. +
  5971. +/** @defgroup tun Tunneling
  5972. + * @ingroup core comp
  5973. + * Structures and functions to manage tunnels among component ports
  5974. + */
  5975. +
  5976. +/** @defgroup cp Content Pipes
  5977. + * @ingroup core
  5978. + */
  5979. +
  5980. + /** @defgroup metadata Metadata handling
  5981. + *
  5982. + */
  5983. +
  5984. +/** OMX_U8 is an 8 bit unsigned quantity that is byte aligned */
  5985. +typedef uint8_t OMX_U8;
  5986. +
  5987. +/** OMX_S8 is an 8 bit signed quantity that is byte aligned */
  5988. +typedef int8_t OMX_S8;
  5989. +
  5990. +/** OMX_U16 is a 16 bit unsigned quantity that is 16 bit word aligned */
  5991. +typedef uint16_t OMX_U16;
  5992. +
  5993. +/** OMX_S16 is a 16 bit signed quantity that is 16 bit word aligned */
  5994. +typedef int16_t OMX_S16;
  5995. +
  5996. +/** OMX_U32 is a 32 bit unsigned quantity that is 32 bit word aligned */
  5997. +typedef uint32_t OMX_U32;
  5998. +
  5999. +/** OMX_S32 is a 32 bit signed quantity that is 32 bit word aligned */
  6000. +typedef int32_t OMX_S32;
  6001. +
  6002. +
  6003. +/* Users with compilers that cannot accept the "long long" designation should
  6004. + define the OMX_SKIP64BIT macro. It should be noted that this may cause
  6005. + some components to fail to compile if the component was written to require
  6006. + 64 bit integral types. However, these components would NOT compile anyway
  6007. + since the compiler does not support the way the component was written.
  6008. +*/
  6009. +#ifndef OMX_SKIP64BIT
  6010. +#ifdef __SYMBIAN32__
  6011. +/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
  6012. +typedef unsigned long long OMX_U64;
  6013. +
  6014. +/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
  6015. +typedef signed long long OMX_S64;
  6016. +
  6017. +#elif defined(WIN32)
  6018. +
  6019. +/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
  6020. +typedef unsigned __int64 OMX_U64;
  6021. +
  6022. +/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
  6023. +typedef signed __int64 OMX_S64;
  6024. +
  6025. +#else /* WIN32 */
  6026. +
  6027. +/** OMX_U64 is a 64 bit unsigned quantity that is 64 bit word aligned */
  6028. +typedef uint64_t OMX_U64;
  6029. +
  6030. +/** OMX_S64 is a 64 bit signed quantity that is 64 bit word aligned */
  6031. +typedef int64_t OMX_S64;
  6032. +
  6033. +#endif /* WIN32 */
  6034. +#endif
  6035. +
  6036. +
  6037. +/** The OMX_BOOL type is intended to be used to represent a true or a false
  6038. + value when passing parameters to and from the OMX core and components. The
  6039. + OMX_BOOL is a 32 bit quantity and is aligned on a 32 bit word boundary.
  6040. + */
  6041. +typedef enum OMX_BOOL {
  6042. + OMX_FALSE = 0,
  6043. + OMX_TRUE = !OMX_FALSE,
  6044. + OMX_BOOL_MAX = 0x7FFFFFFF
  6045. +} OMX_BOOL;
  6046. +
  6047. +/** The OMX_PTR type is intended to be used to pass pointers between the OMX
  6048. + applications and the OMX Core and components. This is a 32 bit pointer and
  6049. + is aligned on a 32 bit boundary.
  6050. + */
  6051. +typedef void* OMX_PTR;
  6052. +
  6053. +/** The OMX_STRING type is intended to be used to pass "C" type strings between
  6054. + the application and the core and component. The OMX_STRING type is a 32
  6055. + bit pointer to a zero terminated string. The pointer is word aligned and
  6056. + the string is byte aligned.
  6057. + */
  6058. +typedef char* OMX_STRING;
  6059. +
  6060. +/** The OMX_BYTE type is intended to be used to pass arrays of bytes such as
  6061. + buffers between the application and the component and core. The OMX_BYTE
  6062. + type is a 32 bit pointer to a zero terminated string. The pointer is word
  6063. + aligned and the string is byte aligned.
  6064. + */
  6065. +typedef unsigned char* OMX_BYTE;
  6066. +
  6067. +/** OMX_UUIDTYPE is a very long unique identifier to uniquely identify
  6068. + at runtime. This identifier should be generated by a component in a way
  6069. + that guarantees that every instance of the identifier running on the system
  6070. + is unique. */
  6071. +typedef unsigned char OMX_UUIDTYPE[128];
  6072. +
  6073. +/** The OMX_DIRTYPE enumeration is used to indicate if a port is an input or
  6074. + an output port. This enumeration is common across all component types.
  6075. + */
  6076. +typedef enum OMX_DIRTYPE
  6077. +{
  6078. + OMX_DirInput, /**< Port is an input port */
  6079. + OMX_DirOutput, /**< Port is an output port */
  6080. + OMX_DirMax = 0x7FFFFFFF
  6081. +} OMX_DIRTYPE;
  6082. +
  6083. +/** The OMX_ENDIANTYPE enumeration is used to indicate the bit ordering
  6084. + for numerical data (i.e. big endian, or little endian).
  6085. + */
  6086. +typedef enum OMX_ENDIANTYPE
  6087. +{
  6088. + OMX_EndianBig, /**< big endian */
  6089. + OMX_EndianLittle, /**< little endian */
  6090. + OMX_EndianMax = 0x7FFFFFFF
  6091. +} OMX_ENDIANTYPE;
  6092. +
  6093. +
  6094. +/** The OMX_NUMERICALDATATYPE enumeration is used to indicate if data
  6095. + is signed or unsigned
  6096. + */
  6097. +typedef enum OMX_NUMERICALDATATYPE
  6098. +{
  6099. + OMX_NumericalDataSigned, /**< signed data */
  6100. + OMX_NumericalDataUnsigned, /**< unsigned data */
  6101. + OMX_NumercialDataMax = 0x7FFFFFFF
  6102. +} OMX_NUMERICALDATATYPE;
  6103. +
  6104. +
  6105. +/** Unsigned bounded value type */
  6106. +typedef struct OMX_BU32 {
  6107. + OMX_U32 nValue; /**< actual value */
  6108. + OMX_U32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
  6109. + OMX_U32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
  6110. +} OMX_BU32;
  6111. +
  6112. +
  6113. +/** Signed bounded value type */
  6114. +typedef struct OMX_BS32 {
  6115. + OMX_S32 nValue; /**< actual value */
  6116. + OMX_S32 nMin; /**< minimum for value (i.e. nValue >= nMin) */
  6117. + OMX_S32 nMax; /**< maximum for value (i.e. nValue <= nMax) */
  6118. +} OMX_BS32;
  6119. +
  6120. +
  6121. +/** Structure representing some time or duration in microseconds. This structure
  6122. + * must be interpreted as a signed 64 bit value. The quantity is signed to accommodate
  6123. + * negative deltas and preroll scenarios. The quantity is represented in microseconds
  6124. + * to accomodate high resolution timestamps (e.g. DVD presentation timestamps based
  6125. + * on a 90kHz clock) and to allow more accurate and synchronized delivery (e.g.
  6126. + * individual audio samples delivered at 192 kHz). The quantity is 64 bit to
  6127. + * accommodate a large dynamic range (signed 32 bit values would allow only for plus
  6128. + * or minus 35 minutes).
  6129. + *
  6130. + * Implementations with limited precision may convert the signed 64 bit value to
  6131. + * a signed 32 bit value internally but risk loss of precision.
  6132. + */
  6133. +#ifndef OMX_SKIP64BIT
  6134. +typedef OMX_S64 OMX_TICKS;
  6135. +#else
  6136. +typedef struct OMX_TICKS
  6137. +{
  6138. + OMX_U32 nLowPart; /** low bits of the signed 64 bit tick value */
  6139. + OMX_U32 nHighPart; /** high bits of the signed 64 bit tick value */
  6140. +} OMX_TICKS;
  6141. +#endif
  6142. +#define OMX_TICKS_PER_SECOND 1000000
  6143. +
  6144. +/** Define the public interface for the OMX Handle. The core will not use
  6145. + this value internally, but the application should only use this value.
  6146. + */
  6147. +typedef void* OMX_HANDLETYPE;
  6148. +
  6149. +typedef struct OMX_MARKTYPE
  6150. +{
  6151. + OMX_HANDLETYPE hMarkTargetComponent; /**< The component that will
  6152. + generate a mark event upon
  6153. + processing the mark. */
  6154. + OMX_PTR pMarkData; /**< Application specific data associated with
  6155. + the mark sent on a mark event to disambiguate
  6156. + this mark from others. */
  6157. +} OMX_MARKTYPE;
  6158. +
  6159. +
  6160. +/** OMX_NATIVE_DEVICETYPE is used to map a OMX video port to the
  6161. + * platform & operating specific object used to reference the display
  6162. + * or can be used by a audio port for native audio rendering */
  6163. +typedef void* OMX_NATIVE_DEVICETYPE;
  6164. +
  6165. +/** OMX_NATIVE_WINDOWTYPE is used to map a OMX video port to the
  6166. + * platform & operating specific object used to reference the window */
  6167. +typedef void* OMX_NATIVE_WINDOWTYPE;
  6168. +
  6169. +
  6170. +/** Define the OMX IL version that corresponds to this set of header files.
  6171. + * We also define a combined version that can be used to write or compare
  6172. + * values of the 32bit nVersion field, assuming a little endian architecture */
  6173. +#define OMX_VERSION_MAJOR 1
  6174. +#define OMX_VERSION_MINOR 1
  6175. +#define OMX_VERSION_REVISION 2
  6176. +#define OMX_VERSION_STEP 0
  6177. +
  6178. +#define OMX_VERSION ((OMX_VERSION_STEP<<24) | (OMX_VERSION_REVISION<<16) | (OMX_VERSION_MINOR<<8) | OMX_VERSION_MAJOR)
  6179. +
  6180. +
  6181. +/** The OMX_VERSIONTYPE union is used to specify the version for
  6182. + a structure or component. For a component, the version is entirely
  6183. + specified by the component vendor. Components doing the same function
  6184. + from different vendors may or may not have the same version. For
  6185. + structures, the version shall be set by the entity that allocates the
  6186. + structure. For structures specified in the OMX 1.1 specification, the
  6187. + value of the version shall be set to 1.1.0.0 in all cases. Access to the
  6188. + OMX_VERSIONTYPE can be by a single 32 bit access (e.g. by nVersion) or
  6189. + by accessing one of the structure elements to, for example, check only
  6190. + the Major revision.
  6191. + */
  6192. +typedef union OMX_VERSIONTYPE
  6193. +{
  6194. + struct
  6195. + {
  6196. + OMX_U8 nVersionMajor; /**< Major version accessor element */
  6197. + OMX_U8 nVersionMinor; /**< Minor version accessor element */
  6198. + OMX_U8 nRevision; /**< Revision version accessor element */
  6199. + OMX_U8 nStep; /**< Step version accessor element */
  6200. + } s;
  6201. + OMX_U32 nVersion; /**< 32 bit value to make accessing the
  6202. + version easily done in a single word
  6203. + size copy/compare operation */
  6204. +} OMX_VERSIONTYPE;
  6205. +
  6206. +#ifdef __cplusplus
  6207. +}
  6208. +#endif /* __cplusplus */
  6209. +
  6210. +#endif
  6211. +/* File EOF */
  6212. diff --git a/sf-extra/omx-il/OMX_Video.h b/sf-extra/omx-il/OMX_Video.h
  6213. new file mode 100644
  6214. index 00000000..6fa26266
  6215. --- /dev/null
  6216. +++ b/sf-extra/omx-il/OMX_Video.h
  6217. @@ -0,0 +1,1141 @@
  6218. +/**
  6219. + * Copyright (c) 2008 The Khronos Group Inc.
  6220. + *
  6221. + * Permission is hereby granted, free of charge, to any person obtaining
  6222. + * a copy of this software and associated documentation files (the
  6223. + * "Software"), to deal in the Software without restriction, including
  6224. + * without limitation the rights to use, copy, modify, merge, publish,
  6225. + * distribute, sublicense, and/or sell copies of the Software, and to
  6226. + * permit persons to whom the Software is furnished to do so, subject
  6227. + * to the following conditions:
  6228. + * The above copyright notice and this permission notice shall be included
  6229. + * in all copies or substantial portions of the Software.
  6230. + *
  6231. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  6232. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  6233. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  6234. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  6235. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  6236. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  6237. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  6238. + *
  6239. + */
  6240. +
  6241. +/**
  6242. + * @file OMX_Video.h - OpenMax IL version 1.1.2
  6243. + * The structures is needed by Video components to exchange parameters
  6244. + * and configuration data with OMX components.
  6245. + */
  6246. +#ifndef OMX_Video_h
  6247. +#define OMX_Video_h
  6248. +
  6249. +/** @defgroup video OpenMAX IL Video Domain
  6250. + * @ingroup iv
  6251. + * Structures for OpenMAX IL Video domain
  6252. + * @{
  6253. + */
  6254. +
  6255. +#ifdef __cplusplus
  6256. +extern "C" {
  6257. +#endif /* __cplusplus */
  6258. +
  6259. +
  6260. +/**
  6261. + * Each OMX header must include all required header files to allow the
  6262. + * header to compile without errors. The includes below are required
  6263. + * for this header file to compile successfully
  6264. + */
  6265. +
  6266. +#include <OMX_IVCommon.h>
  6267. +
  6268. +
  6269. +/**
  6270. + * Enumeration used to define the possible video compression codings.
  6271. + * NOTE: This essentially refers to file extensions. If the coding is
  6272. + * being used to specify the ENCODE type, then additional work
  6273. + * must be done to configure the exact flavor of the compression
  6274. + * to be used. For decode cases where the user application can
  6275. + * not differentiate between MPEG-4 and H.264 bit streams, it is
  6276. + * up to the codec to handle this.
  6277. + */
  6278. +typedef enum OMX_VIDEO_CODINGTYPE {
  6279. + OMX_VIDEO_CodingUnused, /**< Value when coding is N/A */
  6280. + OMX_VIDEO_CodingAutoDetect, /**< Autodetection of coding type */
  6281. + OMX_VIDEO_CodingMPEG2, /**< AKA: H.262 */
  6282. + OMX_VIDEO_CodingH263, /**< H.263 */
  6283. + OMX_VIDEO_CodingMPEG4, /**< MPEG-4 */
  6284. + OMX_VIDEO_CodingWMV, /**< all versions of Windows Media Video */
  6285. + OMX_VIDEO_CodingRV, /**< all versions of Real Video */
  6286. + OMX_VIDEO_CodingAVC, /**< H.264/AVC */
  6287. + OMX_VIDEO_CodingMJPEG, /**< Motion JPEG */
  6288. + OMX_VIDEO_CodingVP8, /**< Google VP8, formerly known as On2 VP8 */
  6289. + OMX_VIDEO_CodingVP9, /**< Google VP9 */
  6290. + OMX_VIDEO_CodingHEVC, /**< ITU H.265/HEVC */
  6291. + OMX_VIDEO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6292. + OMX_VIDEO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6293. + OMX_VIDEO_CodingMax = 0x7FFFFFFF
  6294. +} OMX_VIDEO_CODINGTYPE;
  6295. +
  6296. +
  6297. +/**
  6298. + * Data structure used to define a video path. The number of Video paths for
  6299. + * input and output will vary by type of the Video component.
  6300. + *
  6301. + * Input (aka Source) : zero Inputs, one Output,
  6302. + * Splitter : one Input, 2 or more Outputs,
  6303. + * Processing Element : one Input, one output,
  6304. + * Mixer : 2 or more inputs, one output,
  6305. + * Output (aka Sink) : one Input, zero outputs.
  6306. + *
  6307. + * The PortDefinition structure is used to define all of the parameters
  6308. + * necessary for the compliant component to setup an input or an output video
  6309. + * path. If additional vendor specific data is required, it should be
  6310. + * transmitted to the component using the CustomCommand function. Compliant
  6311. + * components will prepopulate this structure with optimal values during the
  6312. + * GetDefaultInitParams command.
  6313. + *
  6314. + * STRUCT MEMBERS:
  6315. + * cMIMEType : MIME type of data for the port
  6316. + * pNativeRender : Platform specific reference for a display if a
  6317. + * sync, otherwise this field is 0
  6318. + * nFrameWidth : Width of frame to be used on channel if
  6319. + * uncompressed format is used. Use 0 for unknown,
  6320. + * don't care or variable
  6321. + * nFrameHeight : Height of frame to be used on channel if
  6322. + * uncompressed format is used. Use 0 for unknown,
  6323. + * don't care or variable
  6324. + * nStride : Number of bytes per span of an image
  6325. + * (i.e. indicates the number of bytes to get
  6326. + * from span N to span N+1, where negative stride
  6327. + * indicates the image is bottom up
  6328. + * nSliceHeight : Height used when encoding in slices
  6329. + * nBitrate : Bit rate of frame to be used on channel if
  6330. + * compressed format is used. Use 0 for unknown,
  6331. + * don't care or variable
  6332. + * xFramerate : Frame rate to be used on channel if uncompressed
  6333. + * format is used. Use 0 for unknown, don't care or
  6334. + * variable. Units are Q16 frames per second.
  6335. + * bFlagErrorConcealment : Turns on error concealment if it is supported by
  6336. + * the OMX component
  6337. + * eCompressionFormat : Compression format used in this instance of the
  6338. + * component. When OMX_VIDEO_CodingUnused is
  6339. + * specified, eColorFormat is used
  6340. + * eColorFormat : Decompressed format used by this component
  6341. + * pNativeWindow : Platform specific reference for a window object if a
  6342. + * display sink , otherwise this field is 0x0.
  6343. + */
  6344. +typedef struct OMX_VIDEO_PORTDEFINITIONTYPE {
  6345. + OMX_STRING cMIMEType;
  6346. + OMX_NATIVE_DEVICETYPE pNativeRender;
  6347. + OMX_U32 nFrameWidth;
  6348. + OMX_U32 nFrameHeight;
  6349. + OMX_S32 nStride;
  6350. + OMX_U32 nSliceHeight;
  6351. + OMX_U32 nBitrate;
  6352. + OMX_U32 xFramerate;
  6353. + OMX_BOOL bFlagErrorConcealment;
  6354. + OMX_VIDEO_CODINGTYPE eCompressionFormat;
  6355. + OMX_COLOR_FORMATTYPE eColorFormat;
  6356. + OMX_NATIVE_WINDOWTYPE pNativeWindow;
  6357. +} OMX_VIDEO_PORTDEFINITIONTYPE;
  6358. +
  6359. +/**
  6360. + * Port format parameter. This structure is used to enumerate the various
  6361. + * data input/output format supported by the port.
  6362. + *
  6363. + * STRUCT MEMBERS:
  6364. + * nSize : Size of the structure in bytes
  6365. + * nVersion : OMX specification version information
  6366. + * nPortIndex : Indicates which port to set
  6367. + * nIndex : Indicates the enumeration index for the format from
  6368. + * 0x0 to N-1
  6369. + * eCompressionFormat : Compression format used in this instance of the
  6370. + * component. When OMX_VIDEO_CodingUnused is specified,
  6371. + * eColorFormat is used
  6372. + * eColorFormat : Decompressed format used by this component
  6373. + * xFrameRate : Indicates the video frame rate in Q16 format
  6374. + */
  6375. +typedef struct OMX_VIDEO_PARAM_PORTFORMATTYPE {
  6376. + OMX_U32 nSize;
  6377. + OMX_VERSIONTYPE nVersion;
  6378. + OMX_U32 nPortIndex;
  6379. + OMX_U32 nIndex;
  6380. + OMX_VIDEO_CODINGTYPE eCompressionFormat;
  6381. + OMX_COLOR_FORMATTYPE eColorFormat;
  6382. + OMX_U32 xFramerate;
  6383. +} OMX_VIDEO_PARAM_PORTFORMATTYPE;
  6384. +
  6385. +
  6386. +/**
  6387. + * This is a structure for configuring video compression quantization
  6388. + * parameter values. Codecs may support different QP values for different
  6389. + * frame types.
  6390. + *
  6391. + * STRUCT MEMBERS:
  6392. + * nSize : Size of the structure in bytes
  6393. + * nVersion : OMX specification version info
  6394. + * nPortIndex : Port that this structure applies to
  6395. + * nQpI : QP value to use for index frames
  6396. + * nQpP : QP value to use for P frames
  6397. + * nQpB : QP values to use for bidirectional frames
  6398. + */
  6399. +typedef struct OMX_VIDEO_PARAM_QUANTIZATIONTYPE {
  6400. + OMX_U32 nSize;
  6401. + OMX_VERSIONTYPE nVersion;
  6402. + OMX_U32 nPortIndex;
  6403. + OMX_U32 nQpI;
  6404. + OMX_U32 nQpP;
  6405. + OMX_U32 nQpB;
  6406. +} OMX_VIDEO_PARAM_QUANTIZATIONTYPE;
  6407. +
  6408. +
  6409. +/**
  6410. + * Structure for configuration of video fast update parameters.
  6411. + *
  6412. + * STRUCT MEMBERS:
  6413. + * nSize : Size of the structure in bytes
  6414. + * nVersion : OMX specification version info
  6415. + * nPortIndex : Port that this structure applies to
  6416. + * bEnableVFU : Enable/Disable video fast update
  6417. + * nFirstGOB : Specifies the number of the first macroblock row
  6418. + * nFirstMB : specifies the first MB relative to the specified first GOB
  6419. + * nNumMBs : Specifies the number of MBs to be refreshed from nFirstGOB
  6420. + * and nFirstMB
  6421. + */
  6422. +typedef struct OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE {
  6423. + OMX_U32 nSize;
  6424. + OMX_VERSIONTYPE nVersion;
  6425. + OMX_U32 nPortIndex;
  6426. + OMX_BOOL bEnableVFU;
  6427. + OMX_U32 nFirstGOB;
  6428. + OMX_U32 nFirstMB;
  6429. + OMX_U32 nNumMBs;
  6430. +} OMX_VIDEO_PARAM_VIDEOFASTUPDATETYPE;
  6431. +
  6432. +
  6433. +/**
  6434. + * Enumeration of possible bitrate control types
  6435. + */
  6436. +typedef enum OMX_VIDEO_CONTROLRATETYPE {
  6437. + OMX_Video_ControlRateDisable,
  6438. + OMX_Video_ControlRateVariable,
  6439. + OMX_Video_ControlRateConstant,
  6440. + OMX_Video_ControlRateVariableSkipFrames,
  6441. + OMX_Video_ControlRateConstantSkipFrames,
  6442. + OMX_Video_ControlRateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6443. + OMX_Video_ControlRateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6444. + OMX_Video_ControlRateMax = 0x7FFFFFFF
  6445. +} OMX_VIDEO_CONTROLRATETYPE;
  6446. +
  6447. +
  6448. +/**
  6449. + * Structure for configuring bitrate mode of a codec.
  6450. + *
  6451. + * STRUCT MEMBERS:
  6452. + * nSize : Size of the struct in bytes
  6453. + * nVersion : OMX spec version info
  6454. + * nPortIndex : Port that this struct applies to
  6455. + * eControlRate : Control rate type enum
  6456. + * nTargetBitrate : Target bitrate to encode with
  6457. + */
  6458. +typedef struct OMX_VIDEO_PARAM_BITRATETYPE {
  6459. + OMX_U32 nSize;
  6460. + OMX_VERSIONTYPE nVersion;
  6461. + OMX_U32 nPortIndex;
  6462. + OMX_VIDEO_CONTROLRATETYPE eControlRate;
  6463. + OMX_U32 nTargetBitrate;
  6464. +} OMX_VIDEO_PARAM_BITRATETYPE;
  6465. +
  6466. +
  6467. +/**
  6468. + * Enumeration of possible motion vector (MV) types
  6469. + */
  6470. +typedef enum OMX_VIDEO_MOTIONVECTORTYPE {
  6471. + OMX_Video_MotionVectorPixel,
  6472. + OMX_Video_MotionVectorHalfPel,
  6473. + OMX_Video_MotionVectorQuarterPel,
  6474. + OMX_Video_MotionVectorEighthPel,
  6475. + OMX_Video_MotionVectorKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6476. + OMX_Video_MotionVectorVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6477. + OMX_Video_MotionVectorMax = 0x7FFFFFFF
  6478. +} OMX_VIDEO_MOTIONVECTORTYPE;
  6479. +
  6480. +
  6481. +/**
  6482. + * Structure for configuring the number of motion vectors used as well
  6483. + * as their accuracy.
  6484. + *
  6485. + * STRUCT MEMBERS:
  6486. + * nSize : Size of the struct in bytes
  6487. + * nVersion : OMX spec version info
  6488. + * nPortIndex : port that this structure applies to
  6489. + * eAccuracy : Enumerated MV accuracy
  6490. + * bUnrestrictedMVs : Allow unrestricted MVs
  6491. + * bFourMV : Allow use of 4 MVs
  6492. + * sXSearchRange : Search range in horizontal direction for MVs
  6493. + * sYSearchRange : Search range in vertical direction for MVs
  6494. + */
  6495. +typedef struct OMX_VIDEO_PARAM_MOTIONVECTORTYPE {
  6496. + OMX_U32 nSize;
  6497. + OMX_VERSIONTYPE nVersion;
  6498. + OMX_U32 nPortIndex;
  6499. + OMX_VIDEO_MOTIONVECTORTYPE eAccuracy;
  6500. + OMX_BOOL bUnrestrictedMVs;
  6501. + OMX_BOOL bFourMV;
  6502. + OMX_S32 sXSearchRange;
  6503. + OMX_S32 sYSearchRange;
  6504. +} OMX_VIDEO_PARAM_MOTIONVECTORTYPE;
  6505. +
  6506. +
  6507. +/**
  6508. + * Enumeration of possible methods to use for Intra Refresh
  6509. + */
  6510. +typedef enum OMX_VIDEO_INTRAREFRESHTYPE {
  6511. + OMX_VIDEO_IntraRefreshCyclic,
  6512. + OMX_VIDEO_IntraRefreshAdaptive,
  6513. + OMX_VIDEO_IntraRefreshBoth,
  6514. + OMX_VIDEO_IntraRefreshKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6515. + OMX_VIDEO_IntraRefreshVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6516. + OMX_VIDEO_IntraRefreshMax = 0x7FFFFFFF
  6517. +} OMX_VIDEO_INTRAREFRESHTYPE;
  6518. +
  6519. +
  6520. +/**
  6521. + * Structure for configuring intra refresh mode
  6522. + *
  6523. + * STRUCT MEMBERS:
  6524. + * nSize : Size of the structure in bytes
  6525. + * nVersion : OMX specification version information
  6526. + * nPortIndex : Port that this structure applies to
  6527. + * eRefreshMode : Cyclic, Adaptive, or Both
  6528. + * nAirMBs : Number of intra macroblocks to refresh in a frame when
  6529. + * AIR is enabled
  6530. + * nAirRef : Number of times a motion marked macroblock has to be
  6531. + * intra coded
  6532. + * nCirMBs : Number of consecutive macroblocks to be coded as "intra"
  6533. + * when CIR is enabled
  6534. + */
  6535. +typedef struct OMX_VIDEO_PARAM_INTRAREFRESHTYPE {
  6536. + OMX_U32 nSize;
  6537. + OMX_VERSIONTYPE nVersion;
  6538. + OMX_U32 nPortIndex;
  6539. + OMX_VIDEO_INTRAREFRESHTYPE eRefreshMode;
  6540. + OMX_U32 nAirMBs;
  6541. + OMX_U32 nAirRef;
  6542. + OMX_U32 nCirMBs;
  6543. +} OMX_VIDEO_PARAM_INTRAREFRESHTYPE;
  6544. +
  6545. +
  6546. +/**
  6547. + * Structure for enabling various error correction methods for video
  6548. + * compression.
  6549. + *
  6550. + * STRUCT MEMBERS:
  6551. + * nSize : Size of the structure in bytes
  6552. + * nVersion : OMX specification version information
  6553. + * nPortIndex : Port that this structure applies to
  6554. + * bEnableHEC : Enable/disable header extension codes (HEC)
  6555. + * bEnableResync : Enable/disable resynchronization markers
  6556. + * nResynchMarkerSpacing : Resynch markers interval (in bits) to be
  6557. + * applied in the stream
  6558. + * bEnableDataPartitioning : Enable/disable data partitioning
  6559. + * bEnableRVLC : Enable/disable reversible variable length
  6560. + * coding
  6561. + */
  6562. +typedef struct OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE {
  6563. + OMX_U32 nSize;
  6564. + OMX_VERSIONTYPE nVersion;
  6565. + OMX_U32 nPortIndex;
  6566. + OMX_BOOL bEnableHEC;
  6567. + OMX_BOOL bEnableResync;
  6568. + OMX_U32 nResynchMarkerSpacing;
  6569. + OMX_BOOL bEnableDataPartitioning;
  6570. + OMX_BOOL bEnableRVLC;
  6571. +} OMX_VIDEO_PARAM_ERRORCORRECTIONTYPE;
  6572. +
  6573. +
  6574. +/**
  6575. + * Configuration of variable block-size motion compensation (VBSMC)
  6576. + *
  6577. + * STRUCT MEMBERS:
  6578. + * nSize : Size of the structure in bytes
  6579. + * nVersion : OMX specification version information
  6580. + * nPortIndex : Port that this structure applies to
  6581. + * b16x16 : Enable inter block search 16x16
  6582. + * b16x8 : Enable inter block search 16x8
  6583. + * b8x16 : Enable inter block search 8x16
  6584. + * b8x8 : Enable inter block search 8x8
  6585. + * b8x4 : Enable inter block search 8x4
  6586. + * b4x8 : Enable inter block search 4x8
  6587. + * b4x4 : Enable inter block search 4x4
  6588. + */
  6589. +typedef struct OMX_VIDEO_PARAM_VBSMCTYPE {
  6590. + OMX_U32 nSize;
  6591. + OMX_VERSIONTYPE nVersion;
  6592. + OMX_U32 nPortIndex;
  6593. + OMX_BOOL b16x16;
  6594. + OMX_BOOL b16x8;
  6595. + OMX_BOOL b8x16;
  6596. + OMX_BOOL b8x8;
  6597. + OMX_BOOL b8x4;
  6598. + OMX_BOOL b4x8;
  6599. + OMX_BOOL b4x4;
  6600. +} OMX_VIDEO_PARAM_VBSMCTYPE;
  6601. +
  6602. +
  6603. +/**
  6604. + * H.263 profile types, each profile indicates support for various
  6605. + * performance bounds and different annexes.
  6606. + *
  6607. + * ENUMS:
  6608. + * Baseline : Baseline Profile: H.263 (V1), no optional modes
  6609. + * H320 Coding : H.320 Coding Efficiency Backward Compatibility
  6610. + * Profile: H.263+ (V2), includes annexes I, J, L.4
  6611. + * and T
  6612. + * BackwardCompatible : Backward Compatibility Profile: H.263 (V1),
  6613. + * includes annex F
  6614. + * ISWV2 : Interactive Streaming Wireless Profile: H.263+
  6615. + * (V2), includes annexes I, J, K and T
  6616. + * ISWV3 : Interactive Streaming Wireless Profile: H.263++
  6617. + * (V3), includes profile 3 and annexes V and W.6.3.8
  6618. + * HighCompression : Conversational High Compression Profile: H.263++
  6619. + * (V3), includes profiles 1 & 2 and annexes D and U
  6620. + * Internet : Conversational Internet Profile: H.263++ (V3),
  6621. + * includes profile 5 and annex K
  6622. + * Interlace : Conversational Interlace Profile: H.263++ (V3),
  6623. + * includes profile 5 and annex W.6.3.11
  6624. + * HighLatency : High Latency Profile: H.263++ (V3), includes
  6625. + * profile 6 and annexes O.1 and P.5
  6626. + */
  6627. +typedef enum OMX_VIDEO_H263PROFILETYPE {
  6628. + OMX_VIDEO_H263ProfileBaseline = 0x01,
  6629. + OMX_VIDEO_H263ProfileH320Coding = 0x02,
  6630. + OMX_VIDEO_H263ProfileBackwardCompatible = 0x04,
  6631. + OMX_VIDEO_H263ProfileISWV2 = 0x08,
  6632. + OMX_VIDEO_H263ProfileISWV3 = 0x10,
  6633. + OMX_VIDEO_H263ProfileHighCompression = 0x20,
  6634. + OMX_VIDEO_H263ProfileInternet = 0x40,
  6635. + OMX_VIDEO_H263ProfileInterlace = 0x80,
  6636. + OMX_VIDEO_H263ProfileHighLatency = 0x100,
  6637. + OMX_VIDEO_H263ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6638. + OMX_VIDEO_H263ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6639. + OMX_VIDEO_H263ProfileMax = 0x7FFFFFFF
  6640. +} OMX_VIDEO_H263PROFILETYPE;
  6641. +
  6642. +
  6643. +/**
  6644. + * H.263 level types, each level indicates support for various frame sizes,
  6645. + * bit rates, decoder frame rates.
  6646. + */
  6647. +typedef enum OMX_VIDEO_H263LEVELTYPE {
  6648. + OMX_VIDEO_H263Level10 = 0x01,
  6649. + OMX_VIDEO_H263Level20 = 0x02,
  6650. + OMX_VIDEO_H263Level30 = 0x04,
  6651. + OMX_VIDEO_H263Level40 = 0x08,
  6652. + OMX_VIDEO_H263Level45 = 0x10,
  6653. + OMX_VIDEO_H263Level50 = 0x20,
  6654. + OMX_VIDEO_H263Level60 = 0x40,
  6655. + OMX_VIDEO_H263Level70 = 0x80,
  6656. + OMX_VIDEO_H263LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6657. + OMX_VIDEO_H263LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6658. + OMX_VIDEO_H263LevelMax = 0x7FFFFFFF
  6659. +} OMX_VIDEO_H263LEVELTYPE;
  6660. +
  6661. +
  6662. +/**
  6663. + * Specifies the picture type. These values should be OR'd to signal all
  6664. + * pictures types which are allowed.
  6665. + *
  6666. + * ENUMS:
  6667. + * Generic Picture Types: I, P and B
  6668. + * H.263 Specific Picture Types: SI and SP
  6669. + * H.264 Specific Picture Types: EI and EP
  6670. + * MPEG-4 Specific Picture Types: S
  6671. + */
  6672. +typedef enum OMX_VIDEO_PICTURETYPE {
  6673. + OMX_VIDEO_PictureTypeI = 0x01,
  6674. + OMX_VIDEO_PictureTypeP = 0x02,
  6675. + OMX_VIDEO_PictureTypeB = 0x04,
  6676. + OMX_VIDEO_PictureTypeSI = 0x08,
  6677. + OMX_VIDEO_PictureTypeSP = 0x10,
  6678. + OMX_VIDEO_PictureTypeEI = 0x11,
  6679. + OMX_VIDEO_PictureTypeEP = 0x12,
  6680. + OMX_VIDEO_PictureTypeS = 0x14,
  6681. + OMX_VIDEO_PictureTypeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6682. + OMX_VIDEO_PictureTypeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6683. + OMX_VIDEO_PictureTypeMax = 0x7FFFFFFF
  6684. +} OMX_VIDEO_PICTURETYPE;
  6685. +
  6686. +
  6687. +/**
  6688. + * H.263 Params
  6689. + *
  6690. + * STRUCT MEMBERS:
  6691. + * nSize : Size of the structure in bytes
  6692. + * nVersion : OMX specification version information
  6693. + * nPortIndex : Port that this structure applies to
  6694. + * nPFrames : Number of P frames between each I frame
  6695. + * nBFrames : Number of B frames between each I frame
  6696. + * eProfile : H.263 profile(s) to use
  6697. + * eLevel : H.263 level(s) to use
  6698. + * bPLUSPTYPEAllowed : Indicating that it is allowed to use PLUSPTYPE
  6699. + * (specified in the 1998 version of H.263) to
  6700. + * indicate custom picture sizes or clock
  6701. + * frequencies
  6702. + * nAllowedPictureTypes : Specifies the picture types allowed in the
  6703. + * bitstream
  6704. + * bForceRoundingTypeToZero : value of the RTYPE bit (bit 6 of MPPTYPE) is
  6705. + * not constrained. It is recommended to change
  6706. + * the value of the RTYPE bit for each reference
  6707. + * picture in error-free communication
  6708. + * nPictureHeaderRepetition : Specifies the frequency of picture header
  6709. + * repetition
  6710. + * nGOBHeaderInterval : Specifies the interval of non-empty GOB
  6711. + * headers in units of GOBs
  6712. + */
  6713. +typedef struct OMX_VIDEO_PARAM_H263TYPE {
  6714. + OMX_U32 nSize;
  6715. + OMX_VERSIONTYPE nVersion;
  6716. + OMX_U32 nPortIndex;
  6717. + OMX_U32 nPFrames;
  6718. + OMX_U32 nBFrames;
  6719. + OMX_VIDEO_H263PROFILETYPE eProfile;
  6720. + OMX_VIDEO_H263LEVELTYPE eLevel;
  6721. + OMX_BOOL bPLUSPTYPEAllowed;
  6722. + OMX_U32 nAllowedPictureTypes;
  6723. + OMX_BOOL bForceRoundingTypeToZero;
  6724. + OMX_U32 nPictureHeaderRepetition;
  6725. + OMX_U32 nGOBHeaderInterval;
  6726. +} OMX_VIDEO_PARAM_H263TYPE;
  6727. +
  6728. +
  6729. +/**
  6730. + * MPEG-2 profile types, each profile indicates support for various
  6731. + * performance bounds and different annexes.
  6732. + */
  6733. +typedef enum OMX_VIDEO_MPEG2PROFILETYPE {
  6734. + OMX_VIDEO_MPEG2ProfileSimple = 0, /**< Simple Profile */
  6735. + OMX_VIDEO_MPEG2ProfileMain, /**< Main Profile */
  6736. + OMX_VIDEO_MPEG2Profile422, /**< 4:2:2 Profile */
  6737. + OMX_VIDEO_MPEG2ProfileSNR, /**< SNR Profile */
  6738. + OMX_VIDEO_MPEG2ProfileSpatial, /**< Spatial Profile */
  6739. + OMX_VIDEO_MPEG2ProfileHigh, /**< High Profile */
  6740. + OMX_VIDEO_MPEG2ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6741. + OMX_VIDEO_MPEG2ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6742. + OMX_VIDEO_MPEG2ProfileMax = 0x7FFFFFFF
  6743. +} OMX_VIDEO_MPEG2PROFILETYPE;
  6744. +
  6745. +
  6746. +/**
  6747. + * MPEG-2 level types, each level indicates support for various frame
  6748. + * sizes, bit rates, decoder frame rates. No need
  6749. + */
  6750. +typedef enum OMX_VIDEO_MPEG2LEVELTYPE {
  6751. + OMX_VIDEO_MPEG2LevelLL = 0, /**< Low Level */
  6752. + OMX_VIDEO_MPEG2LevelML, /**< Main Level */
  6753. + OMX_VIDEO_MPEG2LevelH14, /**< High 1440 */
  6754. + OMX_VIDEO_MPEG2LevelHL, /**< High Level */
  6755. + OMX_VIDEO_MPEG2LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6756. + OMX_VIDEO_MPEG2LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6757. + OMX_VIDEO_MPEG2LevelMax = 0x7FFFFFFF
  6758. +} OMX_VIDEO_MPEG2LEVELTYPE;
  6759. +
  6760. +
  6761. +/**
  6762. + * MPEG-2 params
  6763. + *
  6764. + * STRUCT MEMBERS:
  6765. + * nSize : Size of the structure in bytes
  6766. + * nVersion : OMX specification version information
  6767. + * nPortIndex : Port that this structure applies to
  6768. + * nPFrames : Number of P frames between each I frame
  6769. + * nBFrames : Number of B frames between each I frame
  6770. + * eProfile : MPEG-2 profile(s) to use
  6771. + * eLevel : MPEG-2 levels(s) to use
  6772. + */
  6773. +typedef struct OMX_VIDEO_PARAM_MPEG2TYPE {
  6774. + OMX_U32 nSize;
  6775. + OMX_VERSIONTYPE nVersion;
  6776. + OMX_U32 nPortIndex;
  6777. + OMX_U32 nPFrames;
  6778. + OMX_U32 nBFrames;
  6779. + OMX_VIDEO_MPEG2PROFILETYPE eProfile;
  6780. + OMX_VIDEO_MPEG2LEVELTYPE eLevel;
  6781. +} OMX_VIDEO_PARAM_MPEG2TYPE;
  6782. +
  6783. +
  6784. +/**
  6785. + * MPEG-4 profile types, each profile indicates support for various
  6786. + * performance bounds and different annexes.
  6787. + *
  6788. + * ENUMS:
  6789. + * - Simple Profile, Levels 1-3
  6790. + * - Simple Scalable Profile, Levels 1-2
  6791. + * - Core Profile, Levels 1-2
  6792. + * - Main Profile, Levels 2-4
  6793. + * - N-bit Profile, Level 2
  6794. + * - Scalable Texture Profile, Level 1
  6795. + * - Simple Face Animation Profile, Levels 1-2
  6796. + * - Simple Face and Body Animation (FBA) Profile, Levels 1-2
  6797. + * - Basic Animated Texture Profile, Levels 1-2
  6798. + * - Hybrid Profile, Levels 1-2
  6799. + * - Advanced Real Time Simple Profiles, Levels 1-4
  6800. + * - Core Scalable Profile, Levels 1-3
  6801. + * - Advanced Coding Efficiency Profile, Levels 1-4
  6802. + * - Advanced Core Profile, Levels 1-2
  6803. + * - Advanced Scalable Texture, Levels 2-3
  6804. + */
  6805. +typedef enum OMX_VIDEO_MPEG4PROFILETYPE {
  6806. + OMX_VIDEO_MPEG4ProfileSimple = 0x01,
  6807. + OMX_VIDEO_MPEG4ProfileSimpleScalable = 0x02,
  6808. + OMX_VIDEO_MPEG4ProfileCore = 0x04,
  6809. + OMX_VIDEO_MPEG4ProfileMain = 0x08,
  6810. + OMX_VIDEO_MPEG4ProfileNbit = 0x10,
  6811. + OMX_VIDEO_MPEG4ProfileScalableTexture = 0x20,
  6812. + OMX_VIDEO_MPEG4ProfileSimpleFace = 0x40,
  6813. + OMX_VIDEO_MPEG4ProfileSimpleFBA = 0x80,
  6814. + OMX_VIDEO_MPEG4ProfileBasicAnimated = 0x100,
  6815. + OMX_VIDEO_MPEG4ProfileHybrid = 0x200,
  6816. + OMX_VIDEO_MPEG4ProfileAdvancedRealTime = 0x400,
  6817. + OMX_VIDEO_MPEG4ProfileCoreScalable = 0x800,
  6818. + OMX_VIDEO_MPEG4ProfileAdvancedCoding = 0x1000,
  6819. + OMX_VIDEO_MPEG4ProfileAdvancedCore = 0x2000,
  6820. + OMX_VIDEO_MPEG4ProfileAdvancedScalable = 0x4000,
  6821. + OMX_VIDEO_MPEG4ProfileAdvancedSimple = 0x8000,
  6822. + OMX_VIDEO_MPEG4ProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6823. + OMX_VIDEO_MPEG4ProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6824. + OMX_VIDEO_MPEG4ProfileMax = 0x7FFFFFFF
  6825. +} OMX_VIDEO_MPEG4PROFILETYPE;
  6826. +
  6827. +
  6828. +/**
  6829. + * MPEG-4 level types, each level indicates support for various frame
  6830. + * sizes, bit rates, decoder frame rates. No need
  6831. + */
  6832. +typedef enum OMX_VIDEO_MPEG4LEVELTYPE {
  6833. + OMX_VIDEO_MPEG4Level0 = 0x01, /**< Level 0 */
  6834. + OMX_VIDEO_MPEG4Level0b = 0x02, /**< Level 0b */
  6835. + OMX_VIDEO_MPEG4Level1 = 0x04, /**< Level 1 */
  6836. + OMX_VIDEO_MPEG4Level2 = 0x08, /**< Level 2 */
  6837. + OMX_VIDEO_MPEG4Level3 = 0x10, /**< Level 3 */
  6838. + OMX_VIDEO_MPEG4Level4 = 0x20, /**< Level 4 */
  6839. + OMX_VIDEO_MPEG4Level4a = 0x40, /**< Level 4a */
  6840. + OMX_VIDEO_MPEG4Level5 = 0x80, /**< Level 5 */
  6841. + OMX_VIDEO_MPEG4LevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6842. + OMX_VIDEO_MPEG4LevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6843. + OMX_VIDEO_MPEG4LevelMax = 0x7FFFFFFF
  6844. +} OMX_VIDEO_MPEG4LEVELTYPE;
  6845. +
  6846. +
  6847. +/**
  6848. + * MPEG-4 configuration. This structure handles configuration options
  6849. + * which are specific to MPEG4 algorithms
  6850. + *
  6851. + * STRUCT MEMBERS:
  6852. + * nSize : Size of the structure in bytes
  6853. + * nVersion : OMX specification version information
  6854. + * nPortIndex : Port that this structure applies to
  6855. + * nSliceHeaderSpacing : Number of macroblocks between slice header (H263+
  6856. + * Annex K). Put zero if not used
  6857. + * bSVH : Enable Short Video Header mode
  6858. + * bGov : Flag to enable GOV
  6859. + * nPFrames : Number of P frames between each I frame (also called
  6860. + * GOV period)
  6861. + * nBFrames : Number of B frames between each I frame
  6862. + * nIDCVLCThreshold : Value of intra DC VLC threshold
  6863. + * bACPred : Flag to use ac prediction
  6864. + * nMaxPacketSize : Maximum size of packet in bytes.
  6865. + * nTimeIncRes : Used to pass VOP time increment resolution for MPEG4.
  6866. + * Interpreted as described in MPEG4 standard.
  6867. + * eProfile : MPEG-4 profile(s) to use.
  6868. + * eLevel : MPEG-4 level(s) to use.
  6869. + * nAllowedPictureTypes : Specifies the picture types allowed in the bitstream
  6870. + * nHeaderExtension : Specifies the number of consecutive video packet
  6871. + * headers within a VOP
  6872. + * bReversibleVLC : Specifies whether reversible variable length coding
  6873. + * is in use
  6874. + */
  6875. +typedef struct OMX_VIDEO_PARAM_MPEG4TYPE {
  6876. + OMX_U32 nSize;
  6877. + OMX_VERSIONTYPE nVersion;
  6878. + OMX_U32 nPortIndex;
  6879. + OMX_U32 nSliceHeaderSpacing;
  6880. + OMX_BOOL bSVH;
  6881. + OMX_BOOL bGov;
  6882. + OMX_U32 nPFrames;
  6883. + OMX_U32 nBFrames;
  6884. + OMX_U32 nIDCVLCThreshold;
  6885. + OMX_BOOL bACPred;
  6886. + OMX_U32 nMaxPacketSize;
  6887. + OMX_U32 nTimeIncRes;
  6888. + OMX_VIDEO_MPEG4PROFILETYPE eProfile;
  6889. + OMX_VIDEO_MPEG4LEVELTYPE eLevel;
  6890. + OMX_U32 nAllowedPictureTypes;
  6891. + OMX_U32 nHeaderExtension;
  6892. + OMX_BOOL bReversibleVLC;
  6893. +} OMX_VIDEO_PARAM_MPEG4TYPE;
  6894. +
  6895. +
  6896. +/**
  6897. + * WMV Versions
  6898. + */
  6899. +typedef enum OMX_VIDEO_WMVFORMATTYPE {
  6900. + OMX_VIDEO_WMVFormatUnused = 0x01, /**< Format unused or unknown */
  6901. + OMX_VIDEO_WMVFormat7 = 0x02, /**< Windows Media Video format 7 */
  6902. + OMX_VIDEO_WMVFormat8 = 0x04, /**< Windows Media Video format 8 */
  6903. + OMX_VIDEO_WMVFormat9 = 0x08, /**< Windows Media Video format 9 */
  6904. + OMX_VIDEO_WMFFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6905. + OMX_VIDEO_WMFFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6906. + OMX_VIDEO_WMVFormatMax = 0x7FFFFFFF
  6907. +} OMX_VIDEO_WMVFORMATTYPE;
  6908. +
  6909. +
  6910. +/**
  6911. + * WMV Params
  6912. + *
  6913. + * STRUCT MEMBERS:
  6914. + * nSize : Size of the structure in bytes
  6915. + * nVersion : OMX specification version information
  6916. + * nPortIndex : Port that this structure applies to
  6917. + * eFormat : Version of WMV stream / data
  6918. + */
  6919. +typedef struct OMX_VIDEO_PARAM_WMVTYPE {
  6920. + OMX_U32 nSize;
  6921. + OMX_VERSIONTYPE nVersion;
  6922. + OMX_U32 nPortIndex;
  6923. + OMX_VIDEO_WMVFORMATTYPE eFormat;
  6924. +} OMX_VIDEO_PARAM_WMVTYPE;
  6925. +
  6926. +
  6927. +/**
  6928. + * Real Video Version
  6929. + */
  6930. +typedef enum OMX_VIDEO_RVFORMATTYPE {
  6931. + OMX_VIDEO_RVFormatUnused = 0, /**< Format unused or unknown */
  6932. + OMX_VIDEO_RVFormat8, /**< Real Video format 8 */
  6933. + OMX_VIDEO_RVFormat9, /**< Real Video format 9 */
  6934. + OMX_VIDEO_RVFormatG2, /**< Real Video Format G2 */
  6935. + OMX_VIDEO_RVFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6936. + OMX_VIDEO_RVFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6937. + OMX_VIDEO_RVFormatMax = 0x7FFFFFFF
  6938. +} OMX_VIDEO_RVFORMATTYPE;
  6939. +
  6940. +
  6941. +/**
  6942. + * Real Video Params
  6943. + *
  6944. + * STUCT MEMBERS:
  6945. + * nSize : Size of the structure in bytes
  6946. + * nVersion : OMX specification version information
  6947. + * nPortIndex : Port that this structure applies to
  6948. + * eFormat : Version of RV stream / data
  6949. + * nBitsPerPixel : Bits per pixel coded in the frame
  6950. + * nPaddedWidth : Padded width in pixel of a video frame
  6951. + * nPaddedHeight : Padded Height in pixels of a video frame
  6952. + * nFrameRate : Rate of video in frames per second
  6953. + * nBitstreamFlags : Flags which internal information about the bitstream
  6954. + * nBitstreamVersion : Bitstream version
  6955. + * nMaxEncodeFrameSize: Max encoded frame size
  6956. + * bEnablePostFilter : Turn on/off post filter
  6957. + * bEnableTemporalInterpolation : Turn on/off temporal interpolation
  6958. + * bEnableLatencyMode : When enabled, the decoder does not display a decoded
  6959. + * frame until it has detected that no enhancement layer
  6960. + * frames or dependent B frames will be coming. This
  6961. + * detection usually occurs when a subsequent non-B
  6962. + * frame is encountered
  6963. + */
  6964. +typedef struct OMX_VIDEO_PARAM_RVTYPE {
  6965. + OMX_U32 nSize;
  6966. + OMX_VERSIONTYPE nVersion;
  6967. + OMX_U32 nPortIndex;
  6968. + OMX_VIDEO_RVFORMATTYPE eFormat;
  6969. + OMX_U16 nBitsPerPixel;
  6970. + OMX_U16 nPaddedWidth;
  6971. + OMX_U16 nPaddedHeight;
  6972. + OMX_U32 nFrameRate;
  6973. + OMX_U32 nBitstreamFlags;
  6974. + OMX_U32 nBitstreamVersion;
  6975. + OMX_U32 nMaxEncodeFrameSize;
  6976. + OMX_BOOL bEnablePostFilter;
  6977. + OMX_BOOL bEnableTemporalInterpolation;
  6978. + OMX_BOOL bEnableLatencyMode;
  6979. +} OMX_VIDEO_PARAM_RVTYPE;
  6980. +
  6981. +
  6982. +/**
  6983. + * AVC profile types, each profile indicates support for various
  6984. + * performance bounds and different annexes.
  6985. + */
  6986. +typedef enum OMX_VIDEO_AVCPROFILETYPE {
  6987. + OMX_VIDEO_AVCProfileBaseline = 0x01, /**< Baseline profile */
  6988. + OMX_VIDEO_AVCProfileMain = 0x02, /**< Main profile */
  6989. + OMX_VIDEO_AVCProfileExtended = 0x04, /**< Extended profile */
  6990. + OMX_VIDEO_AVCProfileHigh = 0x08, /**< High profile */
  6991. + OMX_VIDEO_AVCProfileHigh10 = 0x10, /**< High 10 profile */
  6992. + OMX_VIDEO_AVCProfileHigh422 = 0x20, /**< High 4:2:2 profile */
  6993. + OMX_VIDEO_AVCProfileHigh444 = 0x40, /**< High 4:4:4 profile */
  6994. + OMX_VIDEO_AVCProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  6995. + OMX_VIDEO_AVCProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  6996. + OMX_VIDEO_AVCProfileMax = 0x7FFFFFFF
  6997. +} OMX_VIDEO_AVCPROFILETYPE;
  6998. +
  6999. +
  7000. +/**
  7001. + * AVC level types, each level indicates support for various frame sizes,
  7002. + * bit rates, decoder frame rates. No need
  7003. + */
  7004. +typedef enum OMX_VIDEO_AVCLEVELTYPE {
  7005. + OMX_VIDEO_AVCLevel1 = 0x01, /**< Level 1 */
  7006. + OMX_VIDEO_AVCLevel1b = 0x02, /**< Level 1b */
  7007. + OMX_VIDEO_AVCLevel11 = 0x04, /**< Level 1.1 */
  7008. + OMX_VIDEO_AVCLevel12 = 0x08, /**< Level 1.2 */
  7009. + OMX_VIDEO_AVCLevel13 = 0x10, /**< Level 1.3 */
  7010. + OMX_VIDEO_AVCLevel2 = 0x20, /**< Level 2 */
  7011. + OMX_VIDEO_AVCLevel21 = 0x40, /**< Level 2.1 */
  7012. + OMX_VIDEO_AVCLevel22 = 0x80, /**< Level 2.2 */
  7013. + OMX_VIDEO_AVCLevel3 = 0x100, /**< Level 3 */
  7014. + OMX_VIDEO_AVCLevel31 = 0x200, /**< Level 3.1 */
  7015. + OMX_VIDEO_AVCLevel32 = 0x400, /**< Level 3.2 */
  7016. + OMX_VIDEO_AVCLevel4 = 0x800, /**< Level 4 */
  7017. + OMX_VIDEO_AVCLevel41 = 0x1000, /**< Level 4.1 */
  7018. + OMX_VIDEO_AVCLevel42 = 0x2000, /**< Level 4.2 */
  7019. + OMX_VIDEO_AVCLevel5 = 0x4000, /**< Level 5 */
  7020. + OMX_VIDEO_AVCLevel51 = 0x8000, /**< Level 5.1 */
  7021. + OMX_VIDEO_AVCLevel52 = 0x10000, /**< Level 5.2 */
  7022. + OMX_VIDEO_AVCLevelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  7023. + OMX_VIDEO_AVCLevelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  7024. + OMX_VIDEO_AVCLevelMax = 0x7FFFFFFF
  7025. +} OMX_VIDEO_AVCLEVELTYPE;
  7026. +
  7027. +
  7028. +/**
  7029. + * AVC loop filter modes
  7030. + *
  7031. + * OMX_VIDEO_AVCLoopFilterEnable : Enable
  7032. + * OMX_VIDEO_AVCLoopFilterDisable : Disable
  7033. + * OMX_VIDEO_AVCLoopFilterDisableSliceBoundary : Disabled on slice boundaries
  7034. + */
  7035. +typedef enum OMX_VIDEO_AVCLOOPFILTERTYPE {
  7036. + OMX_VIDEO_AVCLoopFilterEnable = 0,
  7037. + OMX_VIDEO_AVCLoopFilterDisable,
  7038. + OMX_VIDEO_AVCLoopFilterDisableSliceBoundary,
  7039. + OMX_VIDEO_AVCLoopFilterKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  7040. + OMX_VIDEO_AVCLoopFilterVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  7041. + OMX_VIDEO_AVCLoopFilterMax = 0x7FFFFFFF
  7042. +} OMX_VIDEO_AVCLOOPFILTERTYPE;
  7043. +
  7044. +
  7045. +/**
  7046. + * AVC params
  7047. + *
  7048. + * STRUCT MEMBERS:
  7049. + * nSize : Size of the structure in bytes
  7050. + * nVersion : OMX specification version information
  7051. + * nPortIndex : Port that this structure applies to
  7052. + * nSliceHeaderSpacing : Number of macroblocks between slice header, put
  7053. + * zero if not used
  7054. + * nPFrames : Number of P frames between each I frame
  7055. + * nBFrames : Number of B frames between each I frame
  7056. + * bUseHadamard : Enable/disable Hadamard transform
  7057. + * nRefFrames : Max number of reference frames to use for inter
  7058. + * motion search (1-16)
  7059. + * nRefIdxTrailing : Pic param set ref frame index (index into ref
  7060. + * frame buffer of trailing frames list), B frame
  7061. + * support
  7062. + * nRefIdxForward : Pic param set ref frame index (index into ref
  7063. + * frame buffer of forward frames list), B frame
  7064. + * support
  7065. + * bEnableUEP : Enable/disable unequal error protection. This
  7066. + * is only valid of data partitioning is enabled.
  7067. + * bEnableFMO : Enable/disable flexible macroblock ordering
  7068. + * bEnableASO : Enable/disable arbitrary slice ordering
  7069. + * bEnableRS : Enable/disable sending of redundant slices
  7070. + * eProfile : AVC profile(s) to use
  7071. + * eLevel : AVC level(s) to use
  7072. + * nAllowedPictureTypes : Specifies the picture types allowed in the
  7073. + * bitstream
  7074. + * bFrameMBsOnly : specifies that every coded picture of the
  7075. + * coded video sequence is a coded frame
  7076. + * containing only frame macroblocks
  7077. + * bMBAFF : Enable/disable switching between frame and
  7078. + * field macroblocks within a picture
  7079. + * bEntropyCodingCABAC : Entropy decoding method to be applied for the
  7080. + * syntax elements for which two descriptors appear
  7081. + * in the syntax tables
  7082. + * bWeightedPPrediction : Enable/disable weighted prediction shall not
  7083. + * be applied to P and SP slices
  7084. + * nWeightedBipredicitonMode : Default weighted prediction is applied to B
  7085. + * slices
  7086. + * bconstIpred : Enable/disable intra prediction
  7087. + * bDirect8x8Inference : Specifies the method used in the derivation
  7088. + * process for luma motion vectors for B_Skip,
  7089. + * B_Direct_16x16 and B_Direct_8x8 as specified
  7090. + * in subclause 8.4.1.2 of the AVC spec
  7091. + * bDirectSpatialTemporal : Flag indicating spatial or temporal direct
  7092. + * mode used in B slice coding (related to
  7093. + * bDirect8x8Inference) . Spatial direct mode is
  7094. + * more common and should be the default.
  7095. + * nCabacInitIdx : Index used to init CABAC contexts
  7096. + * eLoopFilterMode : Enable/disable loop filter
  7097. + */
  7098. +typedef struct OMX_VIDEO_PARAM_AVCTYPE {
  7099. + OMX_U32 nSize;
  7100. + OMX_VERSIONTYPE nVersion;
  7101. + OMX_U32 nPortIndex;
  7102. + OMX_U32 nSliceHeaderSpacing;
  7103. + OMX_U32 nPFrames;
  7104. + OMX_U32 nBFrames;
  7105. + OMX_BOOL bUseHadamard;
  7106. + OMX_U32 nRefFrames;
  7107. + OMX_U32 nRefIdx10ActiveMinus1;
  7108. + OMX_U32 nRefIdx11ActiveMinus1;
  7109. + OMX_BOOL bEnableUEP;
  7110. + OMX_BOOL bEnableFMO;
  7111. + OMX_BOOL bEnableASO;
  7112. + OMX_BOOL bEnableRS;
  7113. + OMX_VIDEO_AVCPROFILETYPE eProfile;
  7114. + OMX_VIDEO_AVCLEVELTYPE eLevel;
  7115. + OMX_U32 nAllowedPictureTypes;
  7116. + OMX_BOOL bFrameMBsOnly;
  7117. + OMX_BOOL bMBAFF;
  7118. + OMX_BOOL bEntropyCodingCABAC;
  7119. + OMX_BOOL bWeightedPPrediction;
  7120. + OMX_U32 nWeightedBipredicitonMode;
  7121. + OMX_BOOL bconstIpred ;
  7122. + OMX_BOOL bDirect8x8Inference;
  7123. + OMX_BOOL bDirectSpatialTemporal;
  7124. + OMX_U32 nCabacInitIdc;
  7125. + OMX_VIDEO_AVCLOOPFILTERTYPE eLoopFilterMode;
  7126. +} OMX_VIDEO_PARAM_AVCTYPE;
  7127. +
  7128. +typedef struct OMX_VIDEO_PARAM_PROFILELEVELTYPE {
  7129. + OMX_U32 nSize;
  7130. + OMX_VERSIONTYPE nVersion;
  7131. + OMX_U32 nPortIndex;
  7132. + OMX_U32 eProfile; /**< type is OMX_VIDEO_AVCPROFILETYPE, OMX_VIDEO_H263PROFILETYPE,
  7133. + or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
  7134. + OMX_U32 eLevel; /**< type is OMX_VIDEO_AVCLEVELTYPE, OMX_VIDEO_H263LEVELTYPE,
  7135. + or OMX_VIDEO_MPEG4PROFILETYPE depending on context */
  7136. + OMX_U32 nProfileIndex; /**< Used to query for individual profile support information,
  7137. + This parameter is valid only for
  7138. + OMX_IndexParamVideoProfileLevelQuerySupported index,
  7139. + For all other indices this parameter is to be ignored. */
  7140. +} OMX_VIDEO_PARAM_PROFILELEVELTYPE;
  7141. +
  7142. +/**
  7143. + * Structure for dynamically configuring bitrate mode of a codec.
  7144. + *
  7145. + * STRUCT MEMBERS:
  7146. + * nSize : Size of the struct in bytes
  7147. + * nVersion : OMX spec version info
  7148. + * nPortIndex : Port that this struct applies to
  7149. + * nEncodeBitrate : Target average bitrate to be generated in bps
  7150. + */
  7151. +typedef struct OMX_VIDEO_CONFIG_BITRATETYPE {
  7152. + OMX_U32 nSize;
  7153. + OMX_VERSIONTYPE nVersion;
  7154. + OMX_U32 nPortIndex;
  7155. + OMX_U32 nEncodeBitrate;
  7156. +} OMX_VIDEO_CONFIG_BITRATETYPE;
  7157. +
  7158. +/**
  7159. + * Defines Encoder Frame Rate setting
  7160. + *
  7161. + * STRUCT MEMBERS:
  7162. + * nSize : Size of the structure in bytes
  7163. + * nVersion : OMX specification version information
  7164. + * nPortIndex : Port that this structure applies to
  7165. + * xEncodeFramerate : Encoding framerate represented in Q16 format
  7166. + */
  7167. +typedef struct OMX_CONFIG_FRAMERATETYPE {
  7168. + OMX_U32 nSize;
  7169. + OMX_VERSIONTYPE nVersion;
  7170. + OMX_U32 nPortIndex;
  7171. + OMX_U32 xEncodeFramerate; /* Q16 format */
  7172. +} OMX_CONFIG_FRAMERATETYPE;
  7173. +
  7174. +typedef struct OMX_CONFIG_INTRAREFRESHVOPTYPE {
  7175. + OMX_U32 nSize;
  7176. + OMX_VERSIONTYPE nVersion;
  7177. + OMX_U32 nPortIndex;
  7178. + OMX_BOOL IntraRefreshVOP;
  7179. +} OMX_CONFIG_INTRAREFRESHVOPTYPE;
  7180. +
  7181. +typedef struct OMX_CONFIG_MACROBLOCKERRORMAPTYPE {
  7182. + OMX_U32 nSize;
  7183. + OMX_VERSIONTYPE nVersion;
  7184. + OMX_U32 nPortIndex;
  7185. + OMX_U32 nErrMapSize; /* Size of the Error Map in bytes */
  7186. + OMX_U8 ErrMap[1]; /* Error map hint */
  7187. +} OMX_CONFIG_MACROBLOCKERRORMAPTYPE;
  7188. +
  7189. +typedef struct OMX_CONFIG_MBERRORREPORTINGTYPE {
  7190. + OMX_U32 nSize;
  7191. + OMX_VERSIONTYPE nVersion;
  7192. + OMX_U32 nPortIndex;
  7193. + OMX_BOOL bEnabled;
  7194. +} OMX_CONFIG_MBERRORREPORTINGTYPE;
  7195. +
  7196. +typedef struct OMX_PARAM_MACROBLOCKSTYPE {
  7197. + OMX_U32 nSize;
  7198. + OMX_VERSIONTYPE nVersion;
  7199. + OMX_U32 nPortIndex;
  7200. + OMX_U32 nMacroblocks;
  7201. +} OMX_PARAM_MACROBLOCKSTYPE;
  7202. +
  7203. +
  7204. +#ifdef AVS80
  7205. +/**
  7206. + * Aspects of color.
  7207. + */
  7208. +
  7209. +// NOTE: this structure is expected to grow in the future if new color aspects are
  7210. +// added to codec bitstreams. OMX component should not require a specific nSize
  7211. +// though could verify that nSize is at least the size of the structure at the
  7212. +// time of implementation. All new fields will be added at the end of the structure
  7213. +// ensuring backward compatibility.
  7214. +
  7215. +typedef enum OMX_RANGE {
  7216. + RangeUnspecified,
  7217. + RangeFull,
  7218. + RangeLimited,
  7219. + RangeOther = 0xff,
  7220. +} OMX_RANGE;
  7221. +
  7222. +typedef enum OMX_PRIMARIES {
  7223. + PrimariesUnspecified,
  7224. + PrimariesBT709_5, // Rec.ITU-R BT.709-5 or equivalent
  7225. + PrimariesBT470_6M, // Rec.ITU-R BT.470-6 System M or equivalent
  7226. + PrimariesBT601_6_625, // Rec.ITU-R BT.601-6 625 or equivalent
  7227. + PrimariesBT601_6_525, // Rec.ITU-R BT.601-6 525 or equivalent
  7228. + PrimariesGenericFilm, // Generic Film
  7229. + PrimariesBT2020, // Rec.ITU-R BT.2020 or equivalent
  7230. + PrimariesOther = 0xff,
  7231. +} OMX_PRIMARIES;
  7232. +
  7233. +typedef enum OMX_TRANSFER {
  7234. + TransferUnspecified,
  7235. + TransferLinear, // Linear transfer characteristics
  7236. + TransferSRGB, // sRGB or equivalent
  7237. + TransferSMPTE170M, // SMPTE 170M or equivalent (e.g. BT.601/709/2020)
  7238. + TransferGamma22, // Assumed display gamma 2.2
  7239. + TransferGamma28, // Assumed display gamma 2.8
  7240. + TransferST2084, // SMPTE ST 2084 for 10/12/14/16 bit systems
  7241. + TransferHLG, // ARIB STD-B67 hybrid-log-gamma
  7242. + // transfers unlikely to be required by Android
  7243. + TransferSMPTE240M = 0x40, // SMPTE 240M
  7244. + TransferXvYCC, // IEC 61966-2-4
  7245. + TransferBT1361, // Rec.ITU-R BT.1361 extended gamut
  7246. + TransferST428, // SMPTE ST 428-1
  7247. + TransferOther = 0xff,
  7248. +} OMX_TRANSFER;
  7249. +
  7250. +typedef enum OMX_MATRIXCOEFFS {
  7251. + MatrixUnspecified,
  7252. + MatrixBT709_5, // Rec.ITU-R BT.709-5 or equivalent
  7253. + MatrixBT470_6M, // KR=0.30, KB=0.11 or equivalent
  7254. + MatrixBT601_6, // Rec.ITU-R BT.601-6 625 or equivalent
  7255. + MatrixSMPTE240M, // SMPTE 240M or equivalent
  7256. + MatrixBT2020, // Rec.ITU-R BT.2020 non-constant luminance
  7257. + MatrixBT2020Constant, // Rec.ITU-R BT.2020 constant luminance
  7258. + MatrixOther = 0xff,
  7259. +} OMX_MATRIXCOEFFS;
  7260. +
  7261. +typedef struct OMX_COLORASPECTS {
  7262. + OMX_RANGE mRange; // IN/OUT
  7263. + OMX_PRIMARIES mPrimaries; // IN/OUT
  7264. + OMX_TRANSFER mTransfer; // IN/OUT
  7265. + OMX_MATRIXCOEFFS mMatrixCoeffs; // IN/OUT
  7266. +} OMX_COLORASPECTS;
  7267. +
  7268. +typedef struct OMX_CONFIG_DESCRIBECOLORASPECTSPARAMS {
  7269. + OMX_U32 nSize; // IN
  7270. + OMX_VERSIONTYPE nVersion; // IN
  7271. + OMX_U32 nPortIndex; // IN
  7272. + OMX_BOOL bRequestingDataSpace; // IN
  7273. + OMX_BOOL bDataSpaceChanged; // IN
  7274. + OMX_U32 nPixelFormat; // IN
  7275. + OMX_U32 nDataSpace; // OUT
  7276. + OMX_COLORASPECTS sAspects; // IN/OUT
  7277. +} OMX_CONFIG_DESCRIBECOLORASPECTSPARAMS;
  7278. +#endif
  7279. +
  7280. +/**
  7281. + * AVC Slice Mode modes
  7282. + *
  7283. + * OMX_VIDEO_SLICEMODE_AVCDefault : Normal frame encoding, one slice per frame
  7284. + * OMX_VIDEO_SLICEMODE_AVCMBSlice : NAL mode, number of MBs per frame
  7285. + * OMX_VIDEO_SLICEMODE_AVCByteSlice : NAL mode, number of bytes per frame
  7286. + */
  7287. +typedef enum OMX_VIDEO_AVCSLICEMODETYPE {
  7288. + OMX_VIDEO_SLICEMODE_AVCDefault = 0,
  7289. + OMX_VIDEO_SLICEMODE_AVCMBSlice,
  7290. + OMX_VIDEO_SLICEMODE_AVCByteSlice,
  7291. + OMX_VIDEO_SLICEMODE_AVCKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
  7292. + OMX_VIDEO_SLICEMODE_AVCVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
  7293. + OMX_VIDEO_SLICEMODE_AVCLevelMax = 0x7FFFFFFF
  7294. +} OMX_VIDEO_AVCSLICEMODETYPE;
  7295. +
  7296. +/**
  7297. + * AVC FMO Slice Mode Params
  7298. + *
  7299. + * STRUCT MEMBERS:
  7300. + * nSize : Size of the structure in bytes
  7301. + * nVersion : OMX specification version information
  7302. + * nPortIndex : Port that this structure applies to
  7303. + * nNumSliceGroups : Specifies the number of slice groups
  7304. + * nSliceGroupMapType : Specifies the type of slice groups
  7305. + * eSliceMode : Specifies the type of slice
  7306. + */
  7307. +typedef struct OMX_VIDEO_PARAM_AVCSLICEFMO {
  7308. + OMX_U32 nSize;
  7309. + OMX_VERSIONTYPE nVersion;
  7310. + OMX_U32 nPortIndex;
  7311. + OMX_U8 nNumSliceGroups;
  7312. + OMX_U8 nSliceGroupMapType;
  7313. + OMX_VIDEO_AVCSLICEMODETYPE eSliceMode;
  7314. +} OMX_VIDEO_PARAM_AVCSLICEFMO;
  7315. +
  7316. +/**
  7317. + * AVC IDR Period Configs
  7318. + *
  7319. + * STRUCT MEMBERS:
  7320. + * nSize : Size of the structure in bytes
  7321. + * nVersion : OMX specification version information
  7322. + * nPortIndex : Port that this structure applies to
  7323. + * nIDRPeriod : Specifies periodicity of IDR frames
  7324. + * nPFrames : Specifies internal of coding Intra frames
  7325. + */
  7326. +typedef struct OMX_VIDEO_CONFIG_AVCINTRAPERIOD {
  7327. + OMX_U32 nSize;
  7328. + OMX_VERSIONTYPE nVersion;
  7329. + OMX_U32 nPortIndex;
  7330. + OMX_U32 nIDRPeriod;
  7331. + OMX_U32 nPFrames;
  7332. +} OMX_VIDEO_CONFIG_AVCINTRAPERIOD;
  7333. +
  7334. +/**
  7335. + * AVC NAL Size Configs
  7336. + *
  7337. + * STRUCT MEMBERS:
  7338. + * nSize : Size of the structure in bytes
  7339. + * nVersion : OMX specification version information
  7340. + * nPortIndex : Port that this structure applies to
  7341. + * nNaluBytes : Specifies the NAL unit size
  7342. + */
  7343. +typedef struct OMX_VIDEO_CONFIG_NALSIZE {
  7344. + OMX_U32 nSize;
  7345. + OMX_VERSIONTYPE nVersion;
  7346. + OMX_U32 nPortIndex;
  7347. + OMX_U32 nNaluBytes;
  7348. +} OMX_VIDEO_CONFIG_NALSIZE;
  7349. +
  7350. +/** @} */
  7351. +
  7352. +#ifdef __cplusplus
  7353. +}
  7354. +#endif /* __cplusplus */
  7355. +
  7356. +#endif
  7357. +/* File EOF */
  7358. +
  7359. diff --git a/sf-extra/omx-il/OMX_VideoExt.h b/sf-extra/omx-il/OMX_VideoExt.h
  7360. new file mode 100644
  7361. index 00000000..2c024317
  7362. --- /dev/null
  7363. +++ b/sf-extra/omx-il/OMX_VideoExt.h
  7364. @@ -0,0 +1,401 @@
  7365. +/*
  7366. + * Copyright (c) 2010 The Khronos Group Inc.
  7367. + *
  7368. + * Permission is hereby granted, free of charge, to any person obtaining
  7369. + * a copy of this software and associated documentation files (the
  7370. + * "Software"), to deal in the Software without restriction, including
  7371. + * without limitation the rights to use, copy, modify, merge, publish,
  7372. + * distribute, sublicense, and/or sell copies of the Software, and to
  7373. + * permit persons to whom the Software is furnished to do so, subject
  7374. + * to the following conditions:
  7375. + * The above copyright notice and this permission notice shall be included
  7376. + * in all copies or substantial portions of the Software.
  7377. + *
  7378. + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  7379. + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  7380. + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
  7381. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
  7382. + * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
  7383. + * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
  7384. + * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
  7385. + *
  7386. + */
  7387. +
  7388. +/** OMX_VideoExt.h - OpenMax IL version 1.1.2
  7389. + * The OMX_VideoExt header file contains extensions to the
  7390. + * definitions used by both the application and the component to
  7391. + * access video items.
  7392. + */
  7393. +
  7394. +#ifndef OMX_VideoExt_h
  7395. +#define OMX_VideoExt_h
  7396. +
  7397. +#ifdef __cplusplus
  7398. +extern "C" {
  7399. +#endif /* __cplusplus */
  7400. +
  7401. +/* Each OMX header shall include all required header files to allow the
  7402. + * header to compile without errors. The includes below are required
  7403. + * for this header file to compile successfully
  7404. + */
  7405. +#include <OMX_Core.h>
  7406. +
  7407. +/** NALU Formats */
  7408. +typedef enum OMX_NALUFORMATSTYPE {
  7409. + OMX_NaluFormatStartCodes = 1,
  7410. + OMX_NaluFormatOneNaluPerBuffer = 2,
  7411. + OMX_NaluFormatOneByteInterleaveLength = 4,
  7412. + OMX_NaluFormatTwoByteInterleaveLength = 8,
  7413. + OMX_NaluFormatFourByteInterleaveLength = 16,
  7414. + OMX_NaluFormatCodingMax = 0x7FFFFFFF
  7415. +} OMX_NALUFORMATSTYPE;
  7416. +
  7417. +/** NAL Stream Format */
  7418. +typedef struct OMX_NALSTREAMFORMATTYPE{
  7419. + OMX_U32 nSize;
  7420. + OMX_VERSIONTYPE nVersion;
  7421. + OMX_U32 nPortIndex;
  7422. + OMX_NALUFORMATSTYPE eNaluFormat;
  7423. +} OMX_NALSTREAMFORMATTYPE;
  7424. +
  7425. +/** VP8 profiles */
  7426. +typedef enum OMX_VIDEO_VP8PROFILETYPE {
  7427. + OMX_VIDEO_VP8ProfileMain = 0x01,
  7428. + OMX_VIDEO_VP8ProfileUnknown = 0x6EFFFFFF,
  7429. + OMX_VIDEO_VP8ProfileMax = 0x7FFFFFFF
  7430. +} OMX_VIDEO_VP8PROFILETYPE;
  7431. +
  7432. +/** VP8 levels */
  7433. +typedef enum OMX_VIDEO_VP8LEVELTYPE {
  7434. + OMX_VIDEO_VP8Level_Version0 = 0x01,
  7435. + OMX_VIDEO_VP8Level_Version1 = 0x02,
  7436. + OMX_VIDEO_VP8Level_Version2 = 0x04,
  7437. + OMX_VIDEO_VP8Level_Version3 = 0x08,
  7438. + OMX_VIDEO_VP8LevelUnknown = 0x6EFFFFFF,
  7439. + OMX_VIDEO_VP8LevelMax = 0x7FFFFFFF
  7440. +} OMX_VIDEO_VP8LEVELTYPE;
  7441. +
  7442. +/** VP9 profiles */
  7443. +typedef enum OMX_VIDEO_VP9PROFILETYPE {
  7444. + OMX_VIDEO_VP9Profile0 = 0x1,
  7445. + OMX_VIDEO_VP9Profile1 = 0x2,
  7446. + OMX_VIDEO_VP9Profile2 = 0x4,
  7447. + OMX_VIDEO_VP9Profile3 = 0x8,
  7448. + // HDR profiles also support passing HDR metadata
  7449. + OMX_VIDEO_VP9Profile2HDR = 0x1000,
  7450. + OMX_VIDEO_VP9Profile3HDR = 0x2000,
  7451. + OMX_VIDEO_VP9ProfileUnknown = 0x6EFFFFFF,
  7452. + OMX_VIDEO_VP9ProfileMax = 0x7FFFFFFF
  7453. +} OMX_VIDEO_VP9PROFILETYPE;
  7454. +
  7455. +/** VP9 levels */
  7456. +typedef enum OMX_VIDEO_VP9LEVELTYPE {
  7457. + OMX_VIDEO_VP9Level1 = 0x1,
  7458. + OMX_VIDEO_VP9Level11 = 0x2,
  7459. + OMX_VIDEO_VP9Level2 = 0x4,
  7460. + OMX_VIDEO_VP9Level21 = 0x8,
  7461. + OMX_VIDEO_VP9Level3 = 0x10,
  7462. + OMX_VIDEO_VP9Level31 = 0x20,
  7463. + OMX_VIDEO_VP9Level4 = 0x40,
  7464. + OMX_VIDEO_VP9Level41 = 0x80,
  7465. + OMX_VIDEO_VP9Level5 = 0x100,
  7466. + OMX_VIDEO_VP9Level51 = 0x200,
  7467. + OMX_VIDEO_VP9Level52 = 0x400,
  7468. + OMX_VIDEO_VP9Level6 = 0x800,
  7469. + OMX_VIDEO_VP9Level61 = 0x1000,
  7470. + OMX_VIDEO_VP9Level62 = 0x2000,
  7471. + OMX_VIDEO_VP9LevelUnknown = 0x6EFFFFFF,
  7472. + OMX_VIDEO_VP9LevelMax = 0x7FFFFFFF
  7473. +} OMX_VIDEO_VP9LEVELTYPE;
  7474. +
  7475. +/** VP8 Param */
  7476. +typedef struct OMX_VIDEO_PARAM_VP8TYPE {
  7477. + OMX_U32 nSize;
  7478. + OMX_VERSIONTYPE nVersion;
  7479. + OMX_U32 nPortIndex;
  7480. + OMX_VIDEO_VP8PROFILETYPE eProfile;
  7481. + OMX_VIDEO_VP8LEVELTYPE eLevel;
  7482. + OMX_U32 nDCTPartitions;
  7483. + OMX_BOOL bErrorResilientMode;
  7484. +} OMX_VIDEO_PARAM_VP8TYPE;
  7485. +
  7486. +/** Structure for configuring VP8 reference frames */
  7487. +typedef struct OMX_VIDEO_VP8REFERENCEFRAMETYPE {
  7488. + OMX_U32 nSize;
  7489. + OMX_VERSIONTYPE nVersion;
  7490. + OMX_U32 nPortIndex;
  7491. + OMX_BOOL bPreviousFrameRefresh;
  7492. + OMX_BOOL bGoldenFrameRefresh;
  7493. + OMX_BOOL bAlternateFrameRefresh;
  7494. + OMX_BOOL bUsePreviousFrame;
  7495. + OMX_BOOL bUseGoldenFrame;
  7496. + OMX_BOOL bUseAlternateFrame;
  7497. +} OMX_VIDEO_VP8REFERENCEFRAMETYPE;
  7498. +
  7499. +/** Structure for querying VP8 reference frame type */
  7500. +typedef struct OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE {
  7501. + OMX_U32 nSize;
  7502. + OMX_VERSIONTYPE nVersion;
  7503. + OMX_U32 nPortIndex;
  7504. + OMX_BOOL bIsIntraFrame;
  7505. + OMX_BOOL bIsGoldenOrAlternateFrame;
  7506. +} OMX_VIDEO_VP8REFERENCEFRAMEINFOTYPE;
  7507. +
  7508. +/** Maximum number of VP8 temporal layers */
  7509. +#define OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS 3
  7510. +
  7511. +/** VP8 temporal layer patterns */
  7512. +typedef enum OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE {
  7513. + OMX_VIDEO_VPXTemporalLayerPatternNone = 0,
  7514. + OMX_VIDEO_VPXTemporalLayerPatternWebRTC = 1,
  7515. + OMX_VIDEO_VPXTemporalLayerPatternMax = 0x7FFFFFFF
  7516. +} OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE;
  7517. +
  7518. +/**
  7519. + * Android specific VP8 encoder params
  7520. + *
  7521. + * STRUCT MEMBERS:
  7522. + * nSize : Size of the structure in bytes
  7523. + * nVersion : OMX specification version information
  7524. + * nPortIndex : Port that this structure applies to
  7525. + * nKeyFrameInterval : Key frame interval in frames
  7526. + * eTemporalPattern : Type of temporal layer pattern
  7527. + * nTemporalLayerCount : Number of temporal coding layers
  7528. + * nTemporalLayerBitrateRatio : Bitrate ratio allocation between temporal
  7529. + * streams in percentage
  7530. + * nMinQuantizer : Minimum (best quality) quantizer
  7531. + * nMaxQuantizer : Maximum (worst quality) quantizer
  7532. + */
  7533. +typedef struct OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE {
  7534. + OMX_U32 nSize;
  7535. + OMX_VERSIONTYPE nVersion;
  7536. + OMX_U32 nPortIndex;
  7537. + OMX_U32 nKeyFrameInterval; // distance between consecutive key_frames (including one
  7538. + // of the key_frames). 0 means interval is unspecified and
  7539. + // can be freely chosen by the codec. 1 means a stream of
  7540. + // only key_frames.
  7541. +
  7542. + OMX_VIDEO_ANDROID_VPXTEMPORALLAYERPATTERNTYPE eTemporalPattern;
  7543. + OMX_U32 nTemporalLayerCount;
  7544. + OMX_U32 nTemporalLayerBitrateRatio[OMX_VIDEO_ANDROID_MAXVP8TEMPORALLAYERS];
  7545. + OMX_U32 nMinQuantizer;
  7546. + OMX_U32 nMaxQuantizer;
  7547. +} OMX_VIDEO_PARAM_ANDROID_VP8ENCODERTYPE;
  7548. +
  7549. +/** HEVC Profile enum type */
  7550. +typedef enum OMX_VIDEO_HEVCPROFILETYPE {
  7551. + OMX_VIDEO_HEVCProfileUnknown = 0x0,
  7552. + OMX_VIDEO_HEVCProfileMain = 0x1,
  7553. + OMX_VIDEO_HEVCProfileMain10 = 0x2,
  7554. + // Main10 profile with HDR SEI support.
  7555. + OMX_VIDEO_HEVCProfileMain10HDR10 = 0x1000,
  7556. + OMX_VIDEO_HEVCProfileMax = 0x7FFFFFFF
  7557. +} OMX_VIDEO_HEVCPROFILETYPE;
  7558. +
  7559. +/** HEVC Level enum type */
  7560. +typedef enum OMX_VIDEO_HEVCLEVELTYPE {
  7561. + OMX_VIDEO_HEVCLevelUnknown = 0x0,
  7562. + OMX_VIDEO_HEVCMainTierLevel1 = 0x1,
  7563. + OMX_VIDEO_HEVCHighTierLevel1 = 0x2,
  7564. + OMX_VIDEO_HEVCMainTierLevel2 = 0x4,
  7565. + OMX_VIDEO_HEVCHighTierLevel2 = 0x8,
  7566. + OMX_VIDEO_HEVCMainTierLevel21 = 0x10,
  7567. + OMX_VIDEO_HEVCHighTierLevel21 = 0x20,
  7568. + OMX_VIDEO_HEVCMainTierLevel3 = 0x40,
  7569. + OMX_VIDEO_HEVCHighTierLevel3 = 0x80,
  7570. + OMX_VIDEO_HEVCMainTierLevel31 = 0x100,
  7571. + OMX_VIDEO_HEVCHighTierLevel31 = 0x200,
  7572. + OMX_VIDEO_HEVCMainTierLevel4 = 0x400,
  7573. + OMX_VIDEO_HEVCHighTierLevel4 = 0x800,
  7574. + OMX_VIDEO_HEVCMainTierLevel41 = 0x1000,
  7575. + OMX_VIDEO_HEVCHighTierLevel41 = 0x2000,
  7576. + OMX_VIDEO_HEVCMainTierLevel5 = 0x4000,
  7577. + OMX_VIDEO_HEVCHighTierLevel5 = 0x8000,
  7578. + OMX_VIDEO_HEVCMainTierLevel51 = 0x10000,
  7579. + OMX_VIDEO_HEVCHighTierLevel51 = 0x20000,
  7580. + OMX_VIDEO_HEVCMainTierLevel52 = 0x40000,
  7581. + OMX_VIDEO_HEVCHighTierLevel52 = 0x80000,
  7582. + OMX_VIDEO_HEVCMainTierLevel6 = 0x100000,
  7583. + OMX_VIDEO_HEVCHighTierLevel6 = 0x200000,
  7584. + OMX_VIDEO_HEVCMainTierLevel61 = 0x400000,
  7585. + OMX_VIDEO_HEVCHighTierLevel61 = 0x800000,
  7586. + OMX_VIDEO_HEVCMainTierLevel62 = 0x1000000,
  7587. + OMX_VIDEO_HEVCHighTierLevel62 = 0x2000000,
  7588. + OMX_VIDEO_HEVCHighTiermax = 0x7FFFFFFF
  7589. +} OMX_VIDEO_HEVCLEVELTYPE;
  7590. +
  7591. +/** Structure for controlling HEVC video encoding */
  7592. +typedef struct OMX_VIDEO_PARAM_HEVCTYPE {
  7593. + OMX_U32 nSize;
  7594. + OMX_VERSIONTYPE nVersion;
  7595. + OMX_U32 nPortIndex;
  7596. + OMX_VIDEO_HEVCPROFILETYPE eProfile;
  7597. + OMX_VIDEO_HEVCLEVELTYPE eLevel;
  7598. + OMX_U32 nKeyFrameInterval; // distance between consecutive I-frames (including one
  7599. + // of the I frames). 0 means interval is unspecified and
  7600. + // can be freely chosen by the codec. 1 means a stream of
  7601. + // only I frames.
  7602. +} OMX_VIDEO_PARAM_HEVCTYPE;
  7603. +
  7604. +/** Structure to define if dependent slice segments should be used */
  7605. +typedef struct OMX_VIDEO_SLICESEGMENTSTYPE {
  7606. + OMX_U32 nSize;
  7607. + OMX_VERSIONTYPE nVersion;
  7608. + OMX_U32 nPortIndex;
  7609. + OMX_BOOL bDepedentSegments;
  7610. + OMX_BOOL bEnableLoopFilterAcrossSlices;
  7611. +} OMX_VIDEO_SLICESEGMENTSTYPE;
  7612. +
  7613. +/** Structure to return timestamps of rendered output frames as well as EOS
  7614. + * for tunneled components.
  7615. + */
  7616. +typedef struct OMX_VIDEO_RENDEREVENTTYPE {
  7617. + OMX_S64 nMediaTimeUs; // timestamp of rendered video frame
  7618. + OMX_S64 nSystemTimeNs; // system monotonic time at the time frame was rendered
  7619. + // Use INT64_MAX for nMediaTimeUs to signal that the EOS
  7620. + // has been reached. In this case, nSystemTimeNs MUST be
  7621. + // the system time when the last frame was rendered.
  7622. + // This MUST be done in addition to returning (and
  7623. + // following) the render information for the last frame.
  7624. +} OMX_VIDEO_RENDEREVENTTYPE;
  7625. +
  7626. +/** Dolby Vision Profile enum type */
  7627. +typedef enum OMX_VIDEO_DOLBYVISIONPROFILETYPE {
  7628. + OMX_VIDEO_DolbyVisionProfileUnknown = 0x0,
  7629. + OMX_VIDEO_DolbyVisionProfileDvavPer = 0x1,
  7630. + OMX_VIDEO_DolbyVisionProfileDvavPen = 0x2,
  7631. + OMX_VIDEO_DolbyVisionProfileDvheDer = 0x4,
  7632. + OMX_VIDEO_DolbyVisionProfileDvheDen = 0x8,
  7633. + OMX_VIDEO_DolbyVisionProfileDvheDtr = 0x10,
  7634. + OMX_VIDEO_DolbyVisionProfileDvheStn = 0x20,
  7635. + OMX_VIDEO_DolbyVisionProfileDvheDth = 0x40,
  7636. + OMX_VIDEO_DolbyVisionProfileDvheDtb = 0x80,
  7637. + OMX_VIDEO_DolbyVisionProfileMax = 0x7FFFFFFF
  7638. +} OMX_VIDEO_DOLBYVISIONPROFILETYPE;
  7639. +
  7640. +/** Dolby Vision Level enum type */
  7641. +typedef enum OMX_VIDEO_DOLBYVISIONLEVELTYPE {
  7642. + OMX_VIDEO_DolbyVisionLevelUnknown = 0x0,
  7643. + OMX_VIDEO_DolbyVisionLevelHd24 = 0x1,
  7644. + OMX_VIDEO_DolbyVisionLevelHd30 = 0x2,
  7645. + OMX_VIDEO_DolbyVisionLevelFhd24 = 0x4,
  7646. + OMX_VIDEO_DolbyVisionLevelFhd30 = 0x8,
  7647. + OMX_VIDEO_DolbyVisionLevelFhd60 = 0x10,
  7648. + OMX_VIDEO_DolbyVisionLevelUhd24 = 0x20,
  7649. + OMX_VIDEO_DolbyVisionLevelUhd30 = 0x40,
  7650. + OMX_VIDEO_DolbyVisionLevelUhd48 = 0x80,
  7651. + OMX_VIDEO_DolbyVisionLevelUhd60 = 0x100,
  7652. + OMX_VIDEO_DolbyVisionLevelmax = 0x7FFFFFFF
  7653. +} OMX_VIDEO_DOLBYVISIONLEVELTYPE;
  7654. +
  7655. +/**
  7656. + * Structure for configuring video compression intra refresh period
  7657. + *
  7658. + * STRUCT MEMBERS:
  7659. + * nSize : Size of the structure in bytes
  7660. + * nVersion : OMX specification version information
  7661. + * nPortIndex : Port that this structure applies to
  7662. + * nRefreshPeriod : Intra refreh period in frames. Value 0 means disable intra refresh
  7663. + */
  7664. +typedef struct OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE {
  7665. + OMX_U32 nSize;
  7666. + OMX_VERSIONTYPE nVersion;
  7667. + OMX_U32 nPortIndex;
  7668. + OMX_U32 nRefreshPeriod;
  7669. +} OMX_VIDEO_CONFIG_ANDROID_INTRAREFRESHTYPE;
  7670. +
  7671. +/** Maximum number of temporal layers supported by AVC/HEVC */
  7672. +#define OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS 8
  7673. +
  7674. +/** temporal layer patterns */
  7675. +typedef enum OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE {
  7676. + OMX_VIDEO_AndroidTemporalLayeringPatternNone = 0,
  7677. + // pattern as defined by WebRTC
  7678. + OMX_VIDEO_AndroidTemporalLayeringPatternWebRTC = 1 << 0,
  7679. + // pattern where frames in any layer other than the base layer only depend on at most the very
  7680. + // last frame from each preceding layer (other than the base layer.)
  7681. + OMX_VIDEO_AndroidTemporalLayeringPatternAndroid = 1 << 1,
  7682. +} OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE;
  7683. +
  7684. +/**
  7685. + * Android specific param for configuration of temporal layering.
  7686. + * Android only supports temporal layering where successive layers each double the
  7687. + * previous layer's framerate.
  7688. + * NOTE: Reading this parameter at run-time SHALL return actual run-time values.
  7689. + *
  7690. + * nSize : Size of the structure in bytes
  7691. + * nVersion : OMX specification version information
  7692. + * nPortIndex : Port that this structure applies to (output port for encoders)
  7693. + * eSupportedPatterns : A bitmask of supported layering patterns
  7694. + * nLayerCountMax : Max number of temporal coding layers supported
  7695. + * by the encoder (must be at least 1, 1 meaning temporal layering
  7696. + * is NOT supported)
  7697. + * nBLayerCountMax : Max number of layers that can contain B frames
  7698. + * (0) to (nLayerCountMax - 1)
  7699. + * ePattern : Layering pattern.
  7700. + * nPLayerCountActual : Number of temporal layers to be coded with non-B frames,
  7701. + * starting from and including the base-layer.
  7702. + * (1 to nLayerCountMax - nBLayerCountActual)
  7703. + * If nPLayerCountActual is 1 and nBLayerCountActual is 0, temporal
  7704. + * layering is disabled. Otherwise, it is enabled.
  7705. + * nBLayerCountActual : Number of temporal layers to be coded with B frames,
  7706. + * starting after non-B layers.
  7707. + * (0 to nBLayerCountMax)
  7708. + * bBitrateRatiosSpecified : Flag to indicate if layer-wise bitrate
  7709. + * distribution is specified.
  7710. + * nBitrateRatios : Bitrate ratio (100 based) per layer (index 0 is base layer).
  7711. + * Honored if bBitrateRatiosSpecified is set.
  7712. + * i.e for 4 layers with desired distribution (25% 25% 25% 25%),
  7713. + * nBitrateRatio = {25, 50, 75, 100, ... }
  7714. + * Values in indices not less than 'the actual number of layers
  7715. + * minus 1' MAY be ignored and assumed to be 100.
  7716. + */
  7717. +typedef struct OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE {
  7718. + OMX_U32 nSize;
  7719. + OMX_VERSIONTYPE nVersion;
  7720. + OMX_U32 nPortIndex;
  7721. + OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE eSupportedPatterns;
  7722. + OMX_U32 nLayerCountMax;
  7723. + OMX_U32 nBLayerCountMax;
  7724. + OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE ePattern;
  7725. + OMX_U32 nPLayerCountActual;
  7726. + OMX_U32 nBLayerCountActual;
  7727. + OMX_BOOL bBitrateRatiosSpecified;
  7728. + OMX_U32 nBitrateRatios[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS];
  7729. +} OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE;
  7730. +
  7731. +/**
  7732. + * Android specific config for changing the temporal-layer count or
  7733. + * bitrate-distribution at run-time.
  7734. + *
  7735. + * nSize : Size of the structure in bytes
  7736. + * nVersion : OMX specification version information
  7737. + * nPortIndex : Port that this structure applies to (output port for encoders)
  7738. + * ePattern : Layering pattern.
  7739. + * nPLayerCountActual : Number of temporal layers to be coded with non-B frames.
  7740. + * (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.)
  7741. + * nBLayerCountActual : Number of temporal layers to be coded with B frames.
  7742. + * (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.)
  7743. + * bBitrateRatiosSpecified : Flag to indicate if layer-wise bitrate
  7744. + * distribution is specified.
  7745. + * nBitrateRatios : Bitrate ratio (100 based, Q16 values) per layer (0 is base layer).
  7746. + * Honored if bBitrateRatiosSpecified is set.
  7747. + * (same OMX_VIDEO_PARAM_ANDROID_TEMPORALLAYERINGTYPE limits apply.)
  7748. + */
  7749. +typedef struct OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE {
  7750. + OMX_U32 nSize;
  7751. + OMX_VERSIONTYPE nVersion;
  7752. + OMX_U32 nPortIndex;
  7753. + OMX_VIDEO_ANDROID_TEMPORALLAYERINGPATTERNTYPE ePattern;
  7754. + OMX_U32 nPLayerCountActual;
  7755. + OMX_U32 nBLayerCountActual;
  7756. + OMX_BOOL bBitrateRatiosSpecified;
  7757. + OMX_U32 nBitrateRatios[OMX_VIDEO_ANDROID_MAXTEMPORALLAYERS];
  7758. +} OMX_VIDEO_CONFIG_ANDROID_TEMPORALLAYERINGTYPE;
  7759. +
  7760. +#ifdef __cplusplus
  7761. +}
  7762. +#endif /* __cplusplus */
  7763. +
  7764. +#endif /* OMX_VideoExt_h */
  7765. +/* File EOF */
  7766. --
  7767. 2.30.2