mfobjects.h 245 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507
  1. /*** Autogenerated by WIDL 7.7 from include/mfobjects.idl - Do not edit ***/
  2. #ifdef _WIN32
  3. #ifndef __REQUIRED_RPCNDR_H_VERSION__
  4. #define __REQUIRED_RPCNDR_H_VERSION__ 475
  5. #endif
  6. #include <rpc.h>
  7. #include <rpcndr.h>
  8. #endif
  9. #ifndef COM_NO_WINDOWS_H
  10. #include <windows.h>
  11. #include <ole2.h>
  12. #endif
  13. #ifndef __mfobjects_h__
  14. #define __mfobjects_h__
  15. /* Forward declarations */
  16. #ifndef __IMFAttributes_FWD_DEFINED__
  17. #define __IMFAttributes_FWD_DEFINED__
  18. typedef interface IMFAttributes IMFAttributes;
  19. #ifdef __cplusplus
  20. interface IMFAttributes;
  21. #endif /* __cplusplus */
  22. #endif
  23. #ifndef __IMFMediaBuffer_FWD_DEFINED__
  24. #define __IMFMediaBuffer_FWD_DEFINED__
  25. typedef interface IMFMediaBuffer IMFMediaBuffer;
  26. #ifdef __cplusplus
  27. interface IMFMediaBuffer;
  28. #endif /* __cplusplus */
  29. #endif
  30. #ifndef __IMFSample_FWD_DEFINED__
  31. #define __IMFSample_FWD_DEFINED__
  32. typedef interface IMFSample IMFSample;
  33. #ifdef __cplusplus
  34. interface IMFSample;
  35. #endif /* __cplusplus */
  36. #endif
  37. #ifndef __IMF2DBuffer_FWD_DEFINED__
  38. #define __IMF2DBuffer_FWD_DEFINED__
  39. typedef interface IMF2DBuffer IMF2DBuffer;
  40. #ifdef __cplusplus
  41. interface IMF2DBuffer;
  42. #endif /* __cplusplus */
  43. #endif
  44. #ifndef __IMF2DBuffer2_FWD_DEFINED__
  45. #define __IMF2DBuffer2_FWD_DEFINED__
  46. typedef interface IMF2DBuffer2 IMF2DBuffer2;
  47. #ifdef __cplusplus
  48. interface IMF2DBuffer2;
  49. #endif /* __cplusplus */
  50. #endif
  51. #ifndef __IMFDXGIBuffer_FWD_DEFINED__
  52. #define __IMFDXGIBuffer_FWD_DEFINED__
  53. typedef interface IMFDXGIBuffer IMFDXGIBuffer;
  54. #ifdef __cplusplus
  55. interface IMFDXGIBuffer;
  56. #endif /* __cplusplus */
  57. #endif
  58. #ifndef __IMFMediaType_FWD_DEFINED__
  59. #define __IMFMediaType_FWD_DEFINED__
  60. typedef interface IMFMediaType IMFMediaType;
  61. #ifdef __cplusplus
  62. interface IMFMediaType;
  63. #endif /* __cplusplus */
  64. #endif
  65. #ifndef __IMFAudioMediaType_FWD_DEFINED__
  66. #define __IMFAudioMediaType_FWD_DEFINED__
  67. typedef interface IMFAudioMediaType IMFAudioMediaType;
  68. #ifdef __cplusplus
  69. interface IMFAudioMediaType;
  70. #endif /* __cplusplus */
  71. #endif
  72. #ifndef __IMFVideoMediaType_FWD_DEFINED__
  73. #define __IMFVideoMediaType_FWD_DEFINED__
  74. typedef interface IMFVideoMediaType IMFVideoMediaType;
  75. #ifdef __cplusplus
  76. interface IMFVideoMediaType;
  77. #endif /* __cplusplus */
  78. #endif
  79. #ifndef __IMFAsyncResult_FWD_DEFINED__
  80. #define __IMFAsyncResult_FWD_DEFINED__
  81. typedef interface IMFAsyncResult IMFAsyncResult;
  82. #ifdef __cplusplus
  83. interface IMFAsyncResult;
  84. #endif /* __cplusplus */
  85. #endif
  86. #ifndef __IMFAsyncCallback_FWD_DEFINED__
  87. #define __IMFAsyncCallback_FWD_DEFINED__
  88. typedef interface IMFAsyncCallback IMFAsyncCallback;
  89. #ifdef __cplusplus
  90. interface IMFAsyncCallback;
  91. #endif /* __cplusplus */
  92. #endif
  93. #ifndef __IMFAsyncCallbackLogging_FWD_DEFINED__
  94. #define __IMFAsyncCallbackLogging_FWD_DEFINED__
  95. typedef interface IMFAsyncCallbackLogging IMFAsyncCallbackLogging;
  96. #ifdef __cplusplus
  97. interface IMFAsyncCallbackLogging;
  98. #endif /* __cplusplus */
  99. #endif
  100. #ifndef __IMFMediaEvent_FWD_DEFINED__
  101. #define __IMFMediaEvent_FWD_DEFINED__
  102. typedef interface IMFMediaEvent IMFMediaEvent;
  103. #ifdef __cplusplus
  104. interface IMFMediaEvent;
  105. #endif /* __cplusplus */
  106. #endif
  107. #ifndef __IMFMediaEventGenerator_FWD_DEFINED__
  108. #define __IMFMediaEventGenerator_FWD_DEFINED__
  109. typedef interface IMFMediaEventGenerator IMFMediaEventGenerator;
  110. #ifdef __cplusplus
  111. interface IMFMediaEventGenerator;
  112. #endif /* __cplusplus */
  113. #endif
  114. #ifndef __IMFRemoteAsyncCallback_FWD_DEFINED__
  115. #define __IMFRemoteAsyncCallback_FWD_DEFINED__
  116. typedef interface IMFRemoteAsyncCallback IMFRemoteAsyncCallback;
  117. #ifdef __cplusplus
  118. interface IMFRemoteAsyncCallback;
  119. #endif /* __cplusplus */
  120. #endif
  121. #ifndef __IMFByteStream_FWD_DEFINED__
  122. #define __IMFByteStream_FWD_DEFINED__
  123. typedef interface IMFByteStream IMFByteStream;
  124. #ifdef __cplusplus
  125. interface IMFByteStream;
  126. #endif /* __cplusplus */
  127. #endif
  128. #ifndef __IMFByteStreamProxyClassFactory_FWD_DEFINED__
  129. #define __IMFByteStreamProxyClassFactory_FWD_DEFINED__
  130. typedef interface IMFByteStreamProxyClassFactory IMFByteStreamProxyClassFactory;
  131. #ifdef __cplusplus
  132. interface IMFByteStreamProxyClassFactory;
  133. #endif /* __cplusplus */
  134. #endif
  135. #ifndef __IMFSampleOutputStream_FWD_DEFINED__
  136. #define __IMFSampleOutputStream_FWD_DEFINED__
  137. typedef interface IMFSampleOutputStream IMFSampleOutputStream;
  138. #ifdef __cplusplus
  139. interface IMFSampleOutputStream;
  140. #endif /* __cplusplus */
  141. #endif
  142. #ifndef __IMFCollection_FWD_DEFINED__
  143. #define __IMFCollection_FWD_DEFINED__
  144. typedef interface IMFCollection IMFCollection;
  145. #ifdef __cplusplus
  146. interface IMFCollection;
  147. #endif /* __cplusplus */
  148. #endif
  149. #ifndef __IMFMediaEventQueue_FWD_DEFINED__
  150. #define __IMFMediaEventQueue_FWD_DEFINED__
  151. typedef interface IMFMediaEventQueue IMFMediaEventQueue;
  152. #ifdef __cplusplus
  153. interface IMFMediaEventQueue;
  154. #endif /* __cplusplus */
  155. #endif
  156. #ifndef __IMFActivate_FWD_DEFINED__
  157. #define __IMFActivate_FWD_DEFINED__
  158. typedef interface IMFActivate IMFActivate;
  159. #ifdef __cplusplus
  160. interface IMFActivate;
  161. #endif /* __cplusplus */
  162. #endif
  163. #ifndef __IMFPluginControl_FWD_DEFINED__
  164. #define __IMFPluginControl_FWD_DEFINED__
  165. typedef interface IMFPluginControl IMFPluginControl;
  166. #ifdef __cplusplus
  167. interface IMFPluginControl;
  168. #endif /* __cplusplus */
  169. #endif
  170. #ifndef __IMFPluginControl2_FWD_DEFINED__
  171. #define __IMFPluginControl2_FWD_DEFINED__
  172. typedef interface IMFPluginControl2 IMFPluginControl2;
  173. #ifdef __cplusplus
  174. interface IMFPluginControl2;
  175. #endif /* __cplusplus */
  176. #endif
  177. #ifndef __IMFDXGIDeviceManager_FWD_DEFINED__
  178. #define __IMFDXGIDeviceManager_FWD_DEFINED__
  179. typedef interface IMFDXGIDeviceManager IMFDXGIDeviceManager;
  180. #ifdef __cplusplus
  181. interface IMFDXGIDeviceManager;
  182. #endif /* __cplusplus */
  183. #endif
  184. #ifndef __IMFMuxStreamAttributesManager_FWD_DEFINED__
  185. #define __IMFMuxStreamAttributesManager_FWD_DEFINED__
  186. typedef interface IMFMuxStreamAttributesManager IMFMuxStreamAttributesManager;
  187. #ifdef __cplusplus
  188. interface IMFMuxStreamAttributesManager;
  189. #endif /* __cplusplus */
  190. #endif
  191. #ifndef __IMFMuxStreamMediaTypeManager_FWD_DEFINED__
  192. #define __IMFMuxStreamMediaTypeManager_FWD_DEFINED__
  193. typedef interface IMFMuxStreamMediaTypeManager IMFMuxStreamMediaTypeManager;
  194. #ifdef __cplusplus
  195. interface IMFMuxStreamMediaTypeManager;
  196. #endif /* __cplusplus */
  197. #endif
  198. #ifndef __IMFMuxStreamSampleManager_FWD_DEFINED__
  199. #define __IMFMuxStreamSampleManager_FWD_DEFINED__
  200. typedef interface IMFMuxStreamSampleManager IMFMuxStreamSampleManager;
  201. #ifdef __cplusplus
  202. interface IMFMuxStreamSampleManager;
  203. #endif /* __cplusplus */
  204. #endif
  205. /* Headers for imported files */
  206. #include <unknwn.h>
  207. #include <propsys.h>
  208. #include <mediaobj.h>
  209. #ifdef __cplusplus
  210. extern "C" {
  211. #endif
  212. /**
  213. * This file is part of the mingw-w64 runtime package.
  214. * No warranty is given; refer to the file DISCLAIMER within this package.
  215. */
  216. #include <winapifamily.h>
  217. typedef ULONGLONG QWORD;
  218. #include <mmreg.h>
  219. #if 0
  220. typedef struct tWAVEFORMATEX {
  221. WORD wFormatTag;
  222. WORD nChannels;
  223. DWORD nSamplesPerSec;
  224. DWORD nAvgBytesPerSec;
  225. WORD nBlockAlign;
  226. WORD wBitsPerSample;
  227. WORD cbSize;
  228. BYTE pExtraBytes[1];
  229. } WAVEFORMATEX;
  230. typedef struct tWAVEFORMATEX *PWAVEFORMATEX;
  231. typedef struct tWAVEFORMATEX *NPWAVEFORMATEX;
  232. typedef struct tWAVEFORMATEX *LPWAVEFORMATEX;
  233. typedef struct __WIDL_mfobjects_generated_name_00000027 {
  234. WORD wFormatTag;
  235. WORD nChannels;
  236. DWORD nSamplesPerSec;
  237. DWORD nAvgBytesPerSec;
  238. WORD nBlockAlign;
  239. WORD wBitsPerSample;
  240. WORD cbSize;
  241. WORD wValidBitsPerSample;
  242. DWORD dwChannelMask;
  243. GUID SubFormat;
  244. } WAVEFORMATEXTENSIBLE;
  245. typedef struct __WIDL_mfobjects_generated_name_00000027 *PWAVEFORMATEXTENSIBLE;
  246. #endif
  247. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  248. typedef enum _MF_ATTRIBUTE_TYPE {
  249. MF_ATTRIBUTE_UINT32 = VT_UI4,
  250. MF_ATTRIBUTE_UINT64 = VT_UI8,
  251. MF_ATTRIBUTE_DOUBLE = VT_R8,
  252. MF_ATTRIBUTE_GUID = VT_CLSID,
  253. MF_ATTRIBUTE_STRING = VT_LPWSTR,
  254. MF_ATTRIBUTE_BLOB = VT_VECTOR | VT_UI1,
  255. MF_ATTRIBUTE_IUNKNOWN = VT_UNKNOWN
  256. } MF_ATTRIBUTE_TYPE;
  257. typedef enum _MF_ATTRIBUTES_MATCH_TYPE {
  258. MF_ATTRIBUTES_MATCH_OUR_ITEMS = 0,
  259. MF_ATTRIBUTES_MATCH_THEIR_ITEMS = 1,
  260. MF_ATTRIBUTES_MATCH_ALL_ITEMS = 2,
  261. MF_ATTRIBUTES_MATCH_INTERSECTION = 3,
  262. MF_ATTRIBUTES_MATCH_SMALLER = 4
  263. } MF_ATTRIBUTES_MATCH_TYPE;
  264. /*****************************************************************************
  265. * IMFAttributes interface
  266. */
  267. #ifndef __IMFAttributes_INTERFACE_DEFINED__
  268. #define __IMFAttributes_INTERFACE_DEFINED__
  269. DEFINE_GUID(IID_IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3);
  270. #if defined(__cplusplus) && !defined(CINTERFACE)
  271. MIDL_INTERFACE("2cd2d921-c447-44a7-a13c-4adabfc247e3")
  272. IMFAttributes : public IUnknown
  273. {
  274. virtual HRESULT STDMETHODCALLTYPE GetItem(
  275. REFGUID guidKey,
  276. PROPVARIANT *pValue) = 0;
  277. virtual HRESULT STDMETHODCALLTYPE GetItemType(
  278. REFGUID guidKey,
  279. MF_ATTRIBUTE_TYPE *pType) = 0;
  280. virtual HRESULT STDMETHODCALLTYPE CompareItem(
  281. REFGUID guidKey,
  282. REFPROPVARIANT Value,
  283. WINBOOL *pbResult) = 0;
  284. virtual HRESULT STDMETHODCALLTYPE Compare(
  285. IMFAttributes *pTheirs,
  286. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  287. WINBOOL *pbResult) = 0;
  288. virtual HRESULT STDMETHODCALLTYPE GetUINT32(
  289. REFGUID guidKey,
  290. UINT32 *punValue) = 0;
  291. virtual HRESULT STDMETHODCALLTYPE GetUINT64(
  292. REFGUID guidKey,
  293. UINT64 *punValue) = 0;
  294. virtual HRESULT STDMETHODCALLTYPE GetDouble(
  295. REFGUID guidKey,
  296. double *pfValue) = 0;
  297. virtual HRESULT STDMETHODCALLTYPE GetGUID(
  298. REFGUID guidKey,
  299. GUID *pguidValue) = 0;
  300. virtual HRESULT STDMETHODCALLTYPE GetStringLength(
  301. REFGUID guidKey,
  302. UINT32 *pcchLength) = 0;
  303. virtual HRESULT STDMETHODCALLTYPE GetString(
  304. REFGUID guidKey,
  305. LPWSTR pwszValue,
  306. UINT32 cchBufSize,
  307. UINT32 *pcchLength) = 0;
  308. virtual HRESULT STDMETHODCALLTYPE GetAllocatedString(
  309. REFGUID guidKey,
  310. LPWSTR *ppwszValue,
  311. UINT32 *pcchLength) = 0;
  312. virtual HRESULT STDMETHODCALLTYPE GetBlobSize(
  313. REFGUID guidKey,
  314. UINT32 *pcbBlobSize) = 0;
  315. virtual HRESULT STDMETHODCALLTYPE GetBlob(
  316. REFGUID guidKey,
  317. UINT8 *pBuf,
  318. UINT32 cbBufSize,
  319. UINT32 *pcbBlobSize) = 0;
  320. virtual HRESULT STDMETHODCALLTYPE GetAllocatedBlob(
  321. REFGUID guidKey,
  322. UINT8 **ppBuf,
  323. UINT32 *pcbSize) = 0;
  324. virtual HRESULT STDMETHODCALLTYPE GetUnknown(
  325. REFGUID guidKey,
  326. REFIID riid,
  327. LPVOID *ppv) = 0;
  328. virtual HRESULT STDMETHODCALLTYPE SetItem(
  329. REFGUID guidKey,
  330. REFPROPVARIANT Value) = 0;
  331. virtual HRESULT STDMETHODCALLTYPE DeleteItem(
  332. REFGUID guidKey) = 0;
  333. virtual HRESULT STDMETHODCALLTYPE DeleteAllItems(
  334. ) = 0;
  335. virtual HRESULT STDMETHODCALLTYPE SetUINT32(
  336. REFGUID guidKey,
  337. UINT32 unValue) = 0;
  338. virtual HRESULT STDMETHODCALLTYPE SetUINT64(
  339. REFGUID guidKey,
  340. UINT64 unValue) = 0;
  341. virtual HRESULT STDMETHODCALLTYPE SetDouble(
  342. REFGUID guidKey,
  343. double fValue) = 0;
  344. virtual HRESULT STDMETHODCALLTYPE SetGUID(
  345. REFGUID guidKey,
  346. REFGUID guidValue) = 0;
  347. virtual HRESULT STDMETHODCALLTYPE SetString(
  348. REFGUID guidKey,
  349. LPCWSTR wszValue) = 0;
  350. virtual HRESULT STDMETHODCALLTYPE SetBlob(
  351. REFGUID guidKey,
  352. const UINT8 *pBuf,
  353. UINT32 cbBufSize) = 0;
  354. virtual HRESULT STDMETHODCALLTYPE SetUnknown(
  355. REFGUID guidKey,
  356. IUnknown *pUnknown) = 0;
  357. virtual HRESULT STDMETHODCALLTYPE LockStore(
  358. ) = 0;
  359. virtual HRESULT STDMETHODCALLTYPE UnlockStore(
  360. ) = 0;
  361. virtual HRESULT STDMETHODCALLTYPE GetCount(
  362. UINT32 *pcItems) = 0;
  363. virtual HRESULT STDMETHODCALLTYPE GetItemByIndex(
  364. UINT32 unIndex,
  365. GUID *pguidKey,
  366. PROPVARIANT *pValue) = 0;
  367. virtual HRESULT STDMETHODCALLTYPE CopyAllItems(
  368. IMFAttributes *pDest) = 0;
  369. };
  370. #ifdef __CRT_UUID_DECL
  371. __CRT_UUID_DECL(IMFAttributes, 0x2cd2d921, 0xc447, 0x44a7, 0xa1,0x3c, 0x4a,0xda,0xbf,0xc2,0x47,0xe3)
  372. #endif
  373. #else
  374. typedef struct IMFAttributesVtbl {
  375. BEGIN_INTERFACE
  376. /*** IUnknown methods ***/
  377. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  378. IMFAttributes *This,
  379. REFIID riid,
  380. void **ppvObject);
  381. ULONG (STDMETHODCALLTYPE *AddRef)(
  382. IMFAttributes *This);
  383. ULONG (STDMETHODCALLTYPE *Release)(
  384. IMFAttributes *This);
  385. /*** IMFAttributes methods ***/
  386. HRESULT (STDMETHODCALLTYPE *GetItem)(
  387. IMFAttributes *This,
  388. REFGUID guidKey,
  389. PROPVARIANT *pValue);
  390. HRESULT (STDMETHODCALLTYPE *GetItemType)(
  391. IMFAttributes *This,
  392. REFGUID guidKey,
  393. MF_ATTRIBUTE_TYPE *pType);
  394. HRESULT (STDMETHODCALLTYPE *CompareItem)(
  395. IMFAttributes *This,
  396. REFGUID guidKey,
  397. REFPROPVARIANT Value,
  398. WINBOOL *pbResult);
  399. HRESULT (STDMETHODCALLTYPE *Compare)(
  400. IMFAttributes *This,
  401. IMFAttributes *pTheirs,
  402. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  403. WINBOOL *pbResult);
  404. HRESULT (STDMETHODCALLTYPE *GetUINT32)(
  405. IMFAttributes *This,
  406. REFGUID guidKey,
  407. UINT32 *punValue);
  408. HRESULT (STDMETHODCALLTYPE *GetUINT64)(
  409. IMFAttributes *This,
  410. REFGUID guidKey,
  411. UINT64 *punValue);
  412. HRESULT (STDMETHODCALLTYPE *GetDouble)(
  413. IMFAttributes *This,
  414. REFGUID guidKey,
  415. double *pfValue);
  416. HRESULT (STDMETHODCALLTYPE *GetGUID)(
  417. IMFAttributes *This,
  418. REFGUID guidKey,
  419. GUID *pguidValue);
  420. HRESULT (STDMETHODCALLTYPE *GetStringLength)(
  421. IMFAttributes *This,
  422. REFGUID guidKey,
  423. UINT32 *pcchLength);
  424. HRESULT (STDMETHODCALLTYPE *GetString)(
  425. IMFAttributes *This,
  426. REFGUID guidKey,
  427. LPWSTR pwszValue,
  428. UINT32 cchBufSize,
  429. UINT32 *pcchLength);
  430. HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
  431. IMFAttributes *This,
  432. REFGUID guidKey,
  433. LPWSTR *ppwszValue,
  434. UINT32 *pcchLength);
  435. HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
  436. IMFAttributes *This,
  437. REFGUID guidKey,
  438. UINT32 *pcbBlobSize);
  439. HRESULT (STDMETHODCALLTYPE *GetBlob)(
  440. IMFAttributes *This,
  441. REFGUID guidKey,
  442. UINT8 *pBuf,
  443. UINT32 cbBufSize,
  444. UINT32 *pcbBlobSize);
  445. HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
  446. IMFAttributes *This,
  447. REFGUID guidKey,
  448. UINT8 **ppBuf,
  449. UINT32 *pcbSize);
  450. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  451. IMFAttributes *This,
  452. REFGUID guidKey,
  453. REFIID riid,
  454. LPVOID *ppv);
  455. HRESULT (STDMETHODCALLTYPE *SetItem)(
  456. IMFAttributes *This,
  457. REFGUID guidKey,
  458. REFPROPVARIANT Value);
  459. HRESULT (STDMETHODCALLTYPE *DeleteItem)(
  460. IMFAttributes *This,
  461. REFGUID guidKey);
  462. HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
  463. IMFAttributes *This);
  464. HRESULT (STDMETHODCALLTYPE *SetUINT32)(
  465. IMFAttributes *This,
  466. REFGUID guidKey,
  467. UINT32 unValue);
  468. HRESULT (STDMETHODCALLTYPE *SetUINT64)(
  469. IMFAttributes *This,
  470. REFGUID guidKey,
  471. UINT64 unValue);
  472. HRESULT (STDMETHODCALLTYPE *SetDouble)(
  473. IMFAttributes *This,
  474. REFGUID guidKey,
  475. double fValue);
  476. HRESULT (STDMETHODCALLTYPE *SetGUID)(
  477. IMFAttributes *This,
  478. REFGUID guidKey,
  479. REFGUID guidValue);
  480. HRESULT (STDMETHODCALLTYPE *SetString)(
  481. IMFAttributes *This,
  482. REFGUID guidKey,
  483. LPCWSTR wszValue);
  484. HRESULT (STDMETHODCALLTYPE *SetBlob)(
  485. IMFAttributes *This,
  486. REFGUID guidKey,
  487. const UINT8 *pBuf,
  488. UINT32 cbBufSize);
  489. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  490. IMFAttributes *This,
  491. REFGUID guidKey,
  492. IUnknown *pUnknown);
  493. HRESULT (STDMETHODCALLTYPE *LockStore)(
  494. IMFAttributes *This);
  495. HRESULT (STDMETHODCALLTYPE *UnlockStore)(
  496. IMFAttributes *This);
  497. HRESULT (STDMETHODCALLTYPE *GetCount)(
  498. IMFAttributes *This,
  499. UINT32 *pcItems);
  500. HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
  501. IMFAttributes *This,
  502. UINT32 unIndex,
  503. GUID *pguidKey,
  504. PROPVARIANT *pValue);
  505. HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
  506. IMFAttributes *This,
  507. IMFAttributes *pDest);
  508. END_INTERFACE
  509. } IMFAttributesVtbl;
  510. interface IMFAttributes {
  511. CONST_VTBL IMFAttributesVtbl* lpVtbl;
  512. };
  513. #ifdef COBJMACROS
  514. #ifndef WIDL_C_INLINE_WRAPPERS
  515. /*** IUnknown methods ***/
  516. #define IMFAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  517. #define IMFAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
  518. #define IMFAttributes_Release(This) (This)->lpVtbl->Release(This)
  519. /*** IMFAttributes methods ***/
  520. #define IMFAttributes_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
  521. #define IMFAttributes_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
  522. #define IMFAttributes_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
  523. #define IMFAttributes_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
  524. #define IMFAttributes_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
  525. #define IMFAttributes_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
  526. #define IMFAttributes_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
  527. #define IMFAttributes_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
  528. #define IMFAttributes_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
  529. #define IMFAttributes_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
  530. #define IMFAttributes_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
  531. #define IMFAttributes_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
  532. #define IMFAttributes_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
  533. #define IMFAttributes_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
  534. #define IMFAttributes_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
  535. #define IMFAttributes_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
  536. #define IMFAttributes_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
  537. #define IMFAttributes_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
  538. #define IMFAttributes_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
  539. #define IMFAttributes_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
  540. #define IMFAttributes_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
  541. #define IMFAttributes_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
  542. #define IMFAttributes_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
  543. #define IMFAttributes_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
  544. #define IMFAttributes_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
  545. #define IMFAttributes_LockStore(This) (This)->lpVtbl->LockStore(This)
  546. #define IMFAttributes_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
  547. #define IMFAttributes_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
  548. #define IMFAttributes_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
  549. #define IMFAttributes_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
  550. #else
  551. /*** IUnknown methods ***/
  552. static FORCEINLINE HRESULT IMFAttributes_QueryInterface(IMFAttributes* This,REFIID riid,void **ppvObject) {
  553. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  554. }
  555. static FORCEINLINE ULONG IMFAttributes_AddRef(IMFAttributes* This) {
  556. return This->lpVtbl->AddRef(This);
  557. }
  558. static FORCEINLINE ULONG IMFAttributes_Release(IMFAttributes* This) {
  559. return This->lpVtbl->Release(This);
  560. }
  561. /*** IMFAttributes methods ***/
  562. static FORCEINLINE HRESULT IMFAttributes_GetItem(IMFAttributes* This,REFGUID guidKey,PROPVARIANT *pValue) {
  563. return This->lpVtbl->GetItem(This,guidKey,pValue);
  564. }
  565. static FORCEINLINE HRESULT IMFAttributes_GetItemType(IMFAttributes* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
  566. return This->lpVtbl->GetItemType(This,guidKey,pType);
  567. }
  568. static FORCEINLINE HRESULT IMFAttributes_CompareItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
  569. return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
  570. }
  571. static FORCEINLINE HRESULT IMFAttributes_Compare(IMFAttributes* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
  572. return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
  573. }
  574. static FORCEINLINE HRESULT IMFAttributes_GetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 *punValue) {
  575. return This->lpVtbl->GetUINT32(This,guidKey,punValue);
  576. }
  577. static FORCEINLINE HRESULT IMFAttributes_GetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 *punValue) {
  578. return This->lpVtbl->GetUINT64(This,guidKey,punValue);
  579. }
  580. static FORCEINLINE HRESULT IMFAttributes_GetDouble(IMFAttributes* This,REFGUID guidKey,double *pfValue) {
  581. return This->lpVtbl->GetDouble(This,guidKey,pfValue);
  582. }
  583. static FORCEINLINE HRESULT IMFAttributes_GetGUID(IMFAttributes* This,REFGUID guidKey,GUID *pguidValue) {
  584. return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
  585. }
  586. static FORCEINLINE HRESULT IMFAttributes_GetStringLength(IMFAttributes* This,REFGUID guidKey,UINT32 *pcchLength) {
  587. return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
  588. }
  589. static FORCEINLINE HRESULT IMFAttributes_GetString(IMFAttributes* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
  590. return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
  591. }
  592. static FORCEINLINE HRESULT IMFAttributes_GetAllocatedString(IMFAttributes* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
  593. return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
  594. }
  595. static FORCEINLINE HRESULT IMFAttributes_GetBlobSize(IMFAttributes* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
  596. return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
  597. }
  598. static FORCEINLINE HRESULT IMFAttributes_GetBlob(IMFAttributes* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
  599. return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
  600. }
  601. static FORCEINLINE HRESULT IMFAttributes_GetAllocatedBlob(IMFAttributes* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
  602. return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
  603. }
  604. static FORCEINLINE HRESULT IMFAttributes_GetUnknown(IMFAttributes* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
  605. return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
  606. }
  607. static FORCEINLINE HRESULT IMFAttributes_SetItem(IMFAttributes* This,REFGUID guidKey,REFPROPVARIANT Value) {
  608. return This->lpVtbl->SetItem(This,guidKey,Value);
  609. }
  610. static FORCEINLINE HRESULT IMFAttributes_DeleteItem(IMFAttributes* This,REFGUID guidKey) {
  611. return This->lpVtbl->DeleteItem(This,guidKey);
  612. }
  613. static FORCEINLINE HRESULT IMFAttributes_DeleteAllItems(IMFAttributes* This) {
  614. return This->lpVtbl->DeleteAllItems(This);
  615. }
  616. static FORCEINLINE HRESULT IMFAttributes_SetUINT32(IMFAttributes* This,REFGUID guidKey,UINT32 unValue) {
  617. return This->lpVtbl->SetUINT32(This,guidKey,unValue);
  618. }
  619. static FORCEINLINE HRESULT IMFAttributes_SetUINT64(IMFAttributes* This,REFGUID guidKey,UINT64 unValue) {
  620. return This->lpVtbl->SetUINT64(This,guidKey,unValue);
  621. }
  622. static FORCEINLINE HRESULT IMFAttributes_SetDouble(IMFAttributes* This,REFGUID guidKey,double fValue) {
  623. return This->lpVtbl->SetDouble(This,guidKey,fValue);
  624. }
  625. static FORCEINLINE HRESULT IMFAttributes_SetGUID(IMFAttributes* This,REFGUID guidKey,REFGUID guidValue) {
  626. return This->lpVtbl->SetGUID(This,guidKey,guidValue);
  627. }
  628. static FORCEINLINE HRESULT IMFAttributes_SetString(IMFAttributes* This,REFGUID guidKey,LPCWSTR wszValue) {
  629. return This->lpVtbl->SetString(This,guidKey,wszValue);
  630. }
  631. static FORCEINLINE HRESULT IMFAttributes_SetBlob(IMFAttributes* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
  632. return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
  633. }
  634. static FORCEINLINE HRESULT IMFAttributes_SetUnknown(IMFAttributes* This,REFGUID guidKey,IUnknown *pUnknown) {
  635. return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
  636. }
  637. static FORCEINLINE HRESULT IMFAttributes_LockStore(IMFAttributes* This) {
  638. return This->lpVtbl->LockStore(This);
  639. }
  640. static FORCEINLINE HRESULT IMFAttributes_UnlockStore(IMFAttributes* This) {
  641. return This->lpVtbl->UnlockStore(This);
  642. }
  643. static FORCEINLINE HRESULT IMFAttributes_GetCount(IMFAttributes* This,UINT32 *pcItems) {
  644. return This->lpVtbl->GetCount(This,pcItems);
  645. }
  646. static FORCEINLINE HRESULT IMFAttributes_GetItemByIndex(IMFAttributes* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
  647. return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
  648. }
  649. static FORCEINLINE HRESULT IMFAttributes_CopyAllItems(IMFAttributes* This,IMFAttributes *pDest) {
  650. return This->lpVtbl->CopyAllItems(This,pDest);
  651. }
  652. #endif
  653. #endif
  654. #endif
  655. #endif /* __IMFAttributes_INTERFACE_DEFINED__ */
  656. enum MF_ATTRIBUTE_SERIALIZE_OPTIONS {
  657. MF_ATTRIBUTE_SERIALIZE_UNKNOWN_BYREF = 0x1
  658. };
  659. STDAPI MFSerializeAttributesToStream(IMFAttributes *pAttr, DWORD dwOptions, IStream *pStm);
  660. STDAPI MFDeserializeAttributesFromStream(IMFAttributes *pAttr, DWORD dwOptions, IStream *pStm);
  661. /*****************************************************************************
  662. * IMFMediaBuffer interface
  663. */
  664. #ifndef __IMFMediaBuffer_INTERFACE_DEFINED__
  665. #define __IMFMediaBuffer_INTERFACE_DEFINED__
  666. DEFINE_GUID(IID_IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07);
  667. #if defined(__cplusplus) && !defined(CINTERFACE)
  668. MIDL_INTERFACE("045fa593-8799-42b8-bc8d-8968c6453507")
  669. IMFMediaBuffer : public IUnknown
  670. {
  671. virtual HRESULT STDMETHODCALLTYPE Lock(
  672. BYTE **ppbBuffer,
  673. DWORD *pcbMaxLength,
  674. DWORD *pcbCurrentLength) = 0;
  675. virtual HRESULT STDMETHODCALLTYPE Unlock(
  676. ) = 0;
  677. virtual HRESULT STDMETHODCALLTYPE GetCurrentLength(
  678. DWORD *pcbCurrentLength) = 0;
  679. virtual HRESULT STDMETHODCALLTYPE SetCurrentLength(
  680. DWORD cbCurrentLength) = 0;
  681. virtual HRESULT STDMETHODCALLTYPE GetMaxLength(
  682. DWORD *pcbMaxLength) = 0;
  683. };
  684. #ifdef __CRT_UUID_DECL
  685. __CRT_UUID_DECL(IMFMediaBuffer, 0x045fa593, 0x8799, 0x42b8, 0xbc,0x8d, 0x89,0x68,0xc6,0x45,0x35,0x07)
  686. #endif
  687. #else
  688. typedef struct IMFMediaBufferVtbl {
  689. BEGIN_INTERFACE
  690. /*** IUnknown methods ***/
  691. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  692. IMFMediaBuffer *This,
  693. REFIID riid,
  694. void **ppvObject);
  695. ULONG (STDMETHODCALLTYPE *AddRef)(
  696. IMFMediaBuffer *This);
  697. ULONG (STDMETHODCALLTYPE *Release)(
  698. IMFMediaBuffer *This);
  699. /*** IMFMediaBuffer methods ***/
  700. HRESULT (STDMETHODCALLTYPE *Lock)(
  701. IMFMediaBuffer *This,
  702. BYTE **ppbBuffer,
  703. DWORD *pcbMaxLength,
  704. DWORD *pcbCurrentLength);
  705. HRESULT (STDMETHODCALLTYPE *Unlock)(
  706. IMFMediaBuffer *This);
  707. HRESULT (STDMETHODCALLTYPE *GetCurrentLength)(
  708. IMFMediaBuffer *This,
  709. DWORD *pcbCurrentLength);
  710. HRESULT (STDMETHODCALLTYPE *SetCurrentLength)(
  711. IMFMediaBuffer *This,
  712. DWORD cbCurrentLength);
  713. HRESULT (STDMETHODCALLTYPE *GetMaxLength)(
  714. IMFMediaBuffer *This,
  715. DWORD *pcbMaxLength);
  716. END_INTERFACE
  717. } IMFMediaBufferVtbl;
  718. interface IMFMediaBuffer {
  719. CONST_VTBL IMFMediaBufferVtbl* lpVtbl;
  720. };
  721. #ifdef COBJMACROS
  722. #ifndef WIDL_C_INLINE_WRAPPERS
  723. /*** IUnknown methods ***/
  724. #define IMFMediaBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  725. #define IMFMediaBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
  726. #define IMFMediaBuffer_Release(This) (This)->lpVtbl->Release(This)
  727. /*** IMFMediaBuffer methods ***/
  728. #define IMFMediaBuffer_Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength) (This)->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength)
  729. #define IMFMediaBuffer_Unlock(This) (This)->lpVtbl->Unlock(This)
  730. #define IMFMediaBuffer_GetCurrentLength(This,pcbCurrentLength) (This)->lpVtbl->GetCurrentLength(This,pcbCurrentLength)
  731. #define IMFMediaBuffer_SetCurrentLength(This,cbCurrentLength) (This)->lpVtbl->SetCurrentLength(This,cbCurrentLength)
  732. #define IMFMediaBuffer_GetMaxLength(This,pcbMaxLength) (This)->lpVtbl->GetMaxLength(This,pcbMaxLength)
  733. #else
  734. /*** IUnknown methods ***/
  735. static FORCEINLINE HRESULT IMFMediaBuffer_QueryInterface(IMFMediaBuffer* This,REFIID riid,void **ppvObject) {
  736. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  737. }
  738. static FORCEINLINE ULONG IMFMediaBuffer_AddRef(IMFMediaBuffer* This) {
  739. return This->lpVtbl->AddRef(This);
  740. }
  741. static FORCEINLINE ULONG IMFMediaBuffer_Release(IMFMediaBuffer* This) {
  742. return This->lpVtbl->Release(This);
  743. }
  744. /*** IMFMediaBuffer methods ***/
  745. static FORCEINLINE HRESULT IMFMediaBuffer_Lock(IMFMediaBuffer* This,BYTE **ppbBuffer,DWORD *pcbMaxLength,DWORD *pcbCurrentLength) {
  746. return This->lpVtbl->Lock(This,ppbBuffer,pcbMaxLength,pcbCurrentLength);
  747. }
  748. static FORCEINLINE HRESULT IMFMediaBuffer_Unlock(IMFMediaBuffer* This) {
  749. return This->lpVtbl->Unlock(This);
  750. }
  751. static FORCEINLINE HRESULT IMFMediaBuffer_GetCurrentLength(IMFMediaBuffer* This,DWORD *pcbCurrentLength) {
  752. return This->lpVtbl->GetCurrentLength(This,pcbCurrentLength);
  753. }
  754. static FORCEINLINE HRESULT IMFMediaBuffer_SetCurrentLength(IMFMediaBuffer* This,DWORD cbCurrentLength) {
  755. return This->lpVtbl->SetCurrentLength(This,cbCurrentLength);
  756. }
  757. static FORCEINLINE HRESULT IMFMediaBuffer_GetMaxLength(IMFMediaBuffer* This,DWORD *pcbMaxLength) {
  758. return This->lpVtbl->GetMaxLength(This,pcbMaxLength);
  759. }
  760. #endif
  761. #endif
  762. #endif
  763. #endif /* __IMFMediaBuffer_INTERFACE_DEFINED__ */
  764. /*****************************************************************************
  765. * IMFSample interface
  766. */
  767. #ifndef __IMFSample_INTERFACE_DEFINED__
  768. #define __IMFSample_INTERFACE_DEFINED__
  769. DEFINE_GUID(IID_IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4);
  770. #if defined(__cplusplus) && !defined(CINTERFACE)
  771. MIDL_INTERFACE("c40a00f2-b93a-4d80-ae8c-5a1c634f58e4")
  772. IMFSample : public IMFAttributes
  773. {
  774. virtual HRESULT STDMETHODCALLTYPE GetSampleFlags(
  775. DWORD *pdwSampleFlags) = 0;
  776. virtual HRESULT STDMETHODCALLTYPE SetSampleFlags(
  777. DWORD dwSampleFlags) = 0;
  778. virtual HRESULT STDMETHODCALLTYPE GetSampleTime(
  779. LONGLONG *phnsSampleTime) = 0;
  780. virtual HRESULT STDMETHODCALLTYPE SetSampleTime(
  781. LONGLONG hnsSampleTime) = 0;
  782. virtual HRESULT STDMETHODCALLTYPE GetSampleDuration(
  783. LONGLONG *phnsSampleDuration) = 0;
  784. virtual HRESULT STDMETHODCALLTYPE SetSampleDuration(
  785. LONGLONG hnsSampleDuration) = 0;
  786. virtual HRESULT STDMETHODCALLTYPE GetBufferCount(
  787. DWORD *pdwBufferCount) = 0;
  788. virtual HRESULT STDMETHODCALLTYPE GetBufferByIndex(
  789. DWORD dwIndex,
  790. IMFMediaBuffer **ppBuffer) = 0;
  791. virtual HRESULT STDMETHODCALLTYPE ConvertToContiguousBuffer(
  792. IMFMediaBuffer **ppBuffer) = 0;
  793. virtual HRESULT STDMETHODCALLTYPE AddBuffer(
  794. IMFMediaBuffer *pBuffer) = 0;
  795. virtual HRESULT STDMETHODCALLTYPE RemoveBufferByIndex(
  796. DWORD dwIndex) = 0;
  797. virtual HRESULT STDMETHODCALLTYPE RemoveAllBuffers(
  798. ) = 0;
  799. virtual HRESULT STDMETHODCALLTYPE GetTotalLength(
  800. DWORD *pcbTotalLength) = 0;
  801. virtual HRESULT STDMETHODCALLTYPE CopyToBuffer(
  802. IMFMediaBuffer *pBuffer) = 0;
  803. };
  804. #ifdef __CRT_UUID_DECL
  805. __CRT_UUID_DECL(IMFSample, 0xc40a00f2, 0xb93a, 0x4d80, 0xae,0x8c, 0x5a,0x1c,0x63,0x4f,0x58,0xe4)
  806. #endif
  807. #else
  808. typedef struct IMFSampleVtbl {
  809. BEGIN_INTERFACE
  810. /*** IUnknown methods ***/
  811. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  812. IMFSample *This,
  813. REFIID riid,
  814. void **ppvObject);
  815. ULONG (STDMETHODCALLTYPE *AddRef)(
  816. IMFSample *This);
  817. ULONG (STDMETHODCALLTYPE *Release)(
  818. IMFSample *This);
  819. /*** IMFAttributes methods ***/
  820. HRESULT (STDMETHODCALLTYPE *GetItem)(
  821. IMFSample *This,
  822. REFGUID guidKey,
  823. PROPVARIANT *pValue);
  824. HRESULT (STDMETHODCALLTYPE *GetItemType)(
  825. IMFSample *This,
  826. REFGUID guidKey,
  827. MF_ATTRIBUTE_TYPE *pType);
  828. HRESULT (STDMETHODCALLTYPE *CompareItem)(
  829. IMFSample *This,
  830. REFGUID guidKey,
  831. REFPROPVARIANT Value,
  832. WINBOOL *pbResult);
  833. HRESULT (STDMETHODCALLTYPE *Compare)(
  834. IMFSample *This,
  835. IMFAttributes *pTheirs,
  836. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  837. WINBOOL *pbResult);
  838. HRESULT (STDMETHODCALLTYPE *GetUINT32)(
  839. IMFSample *This,
  840. REFGUID guidKey,
  841. UINT32 *punValue);
  842. HRESULT (STDMETHODCALLTYPE *GetUINT64)(
  843. IMFSample *This,
  844. REFGUID guidKey,
  845. UINT64 *punValue);
  846. HRESULT (STDMETHODCALLTYPE *GetDouble)(
  847. IMFSample *This,
  848. REFGUID guidKey,
  849. double *pfValue);
  850. HRESULT (STDMETHODCALLTYPE *GetGUID)(
  851. IMFSample *This,
  852. REFGUID guidKey,
  853. GUID *pguidValue);
  854. HRESULT (STDMETHODCALLTYPE *GetStringLength)(
  855. IMFSample *This,
  856. REFGUID guidKey,
  857. UINT32 *pcchLength);
  858. HRESULT (STDMETHODCALLTYPE *GetString)(
  859. IMFSample *This,
  860. REFGUID guidKey,
  861. LPWSTR pwszValue,
  862. UINT32 cchBufSize,
  863. UINT32 *pcchLength);
  864. HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
  865. IMFSample *This,
  866. REFGUID guidKey,
  867. LPWSTR *ppwszValue,
  868. UINT32 *pcchLength);
  869. HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
  870. IMFSample *This,
  871. REFGUID guidKey,
  872. UINT32 *pcbBlobSize);
  873. HRESULT (STDMETHODCALLTYPE *GetBlob)(
  874. IMFSample *This,
  875. REFGUID guidKey,
  876. UINT8 *pBuf,
  877. UINT32 cbBufSize,
  878. UINT32 *pcbBlobSize);
  879. HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
  880. IMFSample *This,
  881. REFGUID guidKey,
  882. UINT8 **ppBuf,
  883. UINT32 *pcbSize);
  884. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  885. IMFSample *This,
  886. REFGUID guidKey,
  887. REFIID riid,
  888. LPVOID *ppv);
  889. HRESULT (STDMETHODCALLTYPE *SetItem)(
  890. IMFSample *This,
  891. REFGUID guidKey,
  892. REFPROPVARIANT Value);
  893. HRESULT (STDMETHODCALLTYPE *DeleteItem)(
  894. IMFSample *This,
  895. REFGUID guidKey);
  896. HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
  897. IMFSample *This);
  898. HRESULT (STDMETHODCALLTYPE *SetUINT32)(
  899. IMFSample *This,
  900. REFGUID guidKey,
  901. UINT32 unValue);
  902. HRESULT (STDMETHODCALLTYPE *SetUINT64)(
  903. IMFSample *This,
  904. REFGUID guidKey,
  905. UINT64 unValue);
  906. HRESULT (STDMETHODCALLTYPE *SetDouble)(
  907. IMFSample *This,
  908. REFGUID guidKey,
  909. double fValue);
  910. HRESULT (STDMETHODCALLTYPE *SetGUID)(
  911. IMFSample *This,
  912. REFGUID guidKey,
  913. REFGUID guidValue);
  914. HRESULT (STDMETHODCALLTYPE *SetString)(
  915. IMFSample *This,
  916. REFGUID guidKey,
  917. LPCWSTR wszValue);
  918. HRESULT (STDMETHODCALLTYPE *SetBlob)(
  919. IMFSample *This,
  920. REFGUID guidKey,
  921. const UINT8 *pBuf,
  922. UINT32 cbBufSize);
  923. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  924. IMFSample *This,
  925. REFGUID guidKey,
  926. IUnknown *pUnknown);
  927. HRESULT (STDMETHODCALLTYPE *LockStore)(
  928. IMFSample *This);
  929. HRESULT (STDMETHODCALLTYPE *UnlockStore)(
  930. IMFSample *This);
  931. HRESULT (STDMETHODCALLTYPE *GetCount)(
  932. IMFSample *This,
  933. UINT32 *pcItems);
  934. HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
  935. IMFSample *This,
  936. UINT32 unIndex,
  937. GUID *pguidKey,
  938. PROPVARIANT *pValue);
  939. HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
  940. IMFSample *This,
  941. IMFAttributes *pDest);
  942. /*** IMFSample methods ***/
  943. HRESULT (STDMETHODCALLTYPE *GetSampleFlags)(
  944. IMFSample *This,
  945. DWORD *pdwSampleFlags);
  946. HRESULT (STDMETHODCALLTYPE *SetSampleFlags)(
  947. IMFSample *This,
  948. DWORD dwSampleFlags);
  949. HRESULT (STDMETHODCALLTYPE *GetSampleTime)(
  950. IMFSample *This,
  951. LONGLONG *phnsSampleTime);
  952. HRESULT (STDMETHODCALLTYPE *SetSampleTime)(
  953. IMFSample *This,
  954. LONGLONG hnsSampleTime);
  955. HRESULT (STDMETHODCALLTYPE *GetSampleDuration)(
  956. IMFSample *This,
  957. LONGLONG *phnsSampleDuration);
  958. HRESULT (STDMETHODCALLTYPE *SetSampleDuration)(
  959. IMFSample *This,
  960. LONGLONG hnsSampleDuration);
  961. HRESULT (STDMETHODCALLTYPE *GetBufferCount)(
  962. IMFSample *This,
  963. DWORD *pdwBufferCount);
  964. HRESULT (STDMETHODCALLTYPE *GetBufferByIndex)(
  965. IMFSample *This,
  966. DWORD dwIndex,
  967. IMFMediaBuffer **ppBuffer);
  968. HRESULT (STDMETHODCALLTYPE *ConvertToContiguousBuffer)(
  969. IMFSample *This,
  970. IMFMediaBuffer **ppBuffer);
  971. HRESULT (STDMETHODCALLTYPE *AddBuffer)(
  972. IMFSample *This,
  973. IMFMediaBuffer *pBuffer);
  974. HRESULT (STDMETHODCALLTYPE *RemoveBufferByIndex)(
  975. IMFSample *This,
  976. DWORD dwIndex);
  977. HRESULT (STDMETHODCALLTYPE *RemoveAllBuffers)(
  978. IMFSample *This);
  979. HRESULT (STDMETHODCALLTYPE *GetTotalLength)(
  980. IMFSample *This,
  981. DWORD *pcbTotalLength);
  982. HRESULT (STDMETHODCALLTYPE *CopyToBuffer)(
  983. IMFSample *This,
  984. IMFMediaBuffer *pBuffer);
  985. END_INTERFACE
  986. } IMFSampleVtbl;
  987. interface IMFSample {
  988. CONST_VTBL IMFSampleVtbl* lpVtbl;
  989. };
  990. #ifdef COBJMACROS
  991. #ifndef WIDL_C_INLINE_WRAPPERS
  992. /*** IUnknown methods ***/
  993. #define IMFSample_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  994. #define IMFSample_AddRef(This) (This)->lpVtbl->AddRef(This)
  995. #define IMFSample_Release(This) (This)->lpVtbl->Release(This)
  996. /*** IMFAttributes methods ***/
  997. #define IMFSample_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
  998. #define IMFSample_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
  999. #define IMFSample_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
  1000. #define IMFSample_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
  1001. #define IMFSample_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
  1002. #define IMFSample_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
  1003. #define IMFSample_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
  1004. #define IMFSample_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
  1005. #define IMFSample_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
  1006. #define IMFSample_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
  1007. #define IMFSample_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
  1008. #define IMFSample_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
  1009. #define IMFSample_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
  1010. #define IMFSample_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
  1011. #define IMFSample_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
  1012. #define IMFSample_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
  1013. #define IMFSample_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
  1014. #define IMFSample_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
  1015. #define IMFSample_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
  1016. #define IMFSample_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
  1017. #define IMFSample_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
  1018. #define IMFSample_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
  1019. #define IMFSample_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
  1020. #define IMFSample_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
  1021. #define IMFSample_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
  1022. #define IMFSample_LockStore(This) (This)->lpVtbl->LockStore(This)
  1023. #define IMFSample_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
  1024. #define IMFSample_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
  1025. #define IMFSample_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
  1026. #define IMFSample_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
  1027. /*** IMFSample methods ***/
  1028. #define IMFSample_GetSampleFlags(This,pdwSampleFlags) (This)->lpVtbl->GetSampleFlags(This,pdwSampleFlags)
  1029. #define IMFSample_SetSampleFlags(This,dwSampleFlags) (This)->lpVtbl->SetSampleFlags(This,dwSampleFlags)
  1030. #define IMFSample_GetSampleTime(This,phnsSampleTime) (This)->lpVtbl->GetSampleTime(This,phnsSampleTime)
  1031. #define IMFSample_SetSampleTime(This,hnsSampleTime) (This)->lpVtbl->SetSampleTime(This,hnsSampleTime)
  1032. #define IMFSample_GetSampleDuration(This,phnsSampleDuration) (This)->lpVtbl->GetSampleDuration(This,phnsSampleDuration)
  1033. #define IMFSample_SetSampleDuration(This,hnsSampleDuration) (This)->lpVtbl->SetSampleDuration(This,hnsSampleDuration)
  1034. #define IMFSample_GetBufferCount(This,pdwBufferCount) (This)->lpVtbl->GetBufferCount(This,pdwBufferCount)
  1035. #define IMFSample_GetBufferByIndex(This,dwIndex,ppBuffer) (This)->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer)
  1036. #define IMFSample_ConvertToContiguousBuffer(This,ppBuffer) (This)->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer)
  1037. #define IMFSample_AddBuffer(This,pBuffer) (This)->lpVtbl->AddBuffer(This,pBuffer)
  1038. #define IMFSample_RemoveBufferByIndex(This,dwIndex) (This)->lpVtbl->RemoveBufferByIndex(This,dwIndex)
  1039. #define IMFSample_RemoveAllBuffers(This) (This)->lpVtbl->RemoveAllBuffers(This)
  1040. #define IMFSample_GetTotalLength(This,pcbTotalLength) (This)->lpVtbl->GetTotalLength(This,pcbTotalLength)
  1041. #define IMFSample_CopyToBuffer(This,pBuffer) (This)->lpVtbl->CopyToBuffer(This,pBuffer)
  1042. #else
  1043. /*** IUnknown methods ***/
  1044. static FORCEINLINE HRESULT IMFSample_QueryInterface(IMFSample* This,REFIID riid,void **ppvObject) {
  1045. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1046. }
  1047. static FORCEINLINE ULONG IMFSample_AddRef(IMFSample* This) {
  1048. return This->lpVtbl->AddRef(This);
  1049. }
  1050. static FORCEINLINE ULONG IMFSample_Release(IMFSample* This) {
  1051. return This->lpVtbl->Release(This);
  1052. }
  1053. /*** IMFAttributes methods ***/
  1054. static FORCEINLINE HRESULT IMFSample_GetItem(IMFSample* This,REFGUID guidKey,PROPVARIANT *pValue) {
  1055. return This->lpVtbl->GetItem(This,guidKey,pValue);
  1056. }
  1057. static FORCEINLINE HRESULT IMFSample_GetItemType(IMFSample* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
  1058. return This->lpVtbl->GetItemType(This,guidKey,pType);
  1059. }
  1060. static FORCEINLINE HRESULT IMFSample_CompareItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
  1061. return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
  1062. }
  1063. static FORCEINLINE HRESULT IMFSample_Compare(IMFSample* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
  1064. return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
  1065. }
  1066. static FORCEINLINE HRESULT IMFSample_GetUINT32(IMFSample* This,REFGUID guidKey,UINT32 *punValue) {
  1067. return This->lpVtbl->GetUINT32(This,guidKey,punValue);
  1068. }
  1069. static FORCEINLINE HRESULT IMFSample_GetUINT64(IMFSample* This,REFGUID guidKey,UINT64 *punValue) {
  1070. return This->lpVtbl->GetUINT64(This,guidKey,punValue);
  1071. }
  1072. static FORCEINLINE HRESULT IMFSample_GetDouble(IMFSample* This,REFGUID guidKey,double *pfValue) {
  1073. return This->lpVtbl->GetDouble(This,guidKey,pfValue);
  1074. }
  1075. static FORCEINLINE HRESULT IMFSample_GetGUID(IMFSample* This,REFGUID guidKey,GUID *pguidValue) {
  1076. return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
  1077. }
  1078. static FORCEINLINE HRESULT IMFSample_GetStringLength(IMFSample* This,REFGUID guidKey,UINT32 *pcchLength) {
  1079. return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
  1080. }
  1081. static FORCEINLINE HRESULT IMFSample_GetString(IMFSample* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
  1082. return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
  1083. }
  1084. static FORCEINLINE HRESULT IMFSample_GetAllocatedString(IMFSample* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
  1085. return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
  1086. }
  1087. static FORCEINLINE HRESULT IMFSample_GetBlobSize(IMFSample* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
  1088. return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
  1089. }
  1090. static FORCEINLINE HRESULT IMFSample_GetBlob(IMFSample* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
  1091. return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
  1092. }
  1093. static FORCEINLINE HRESULT IMFSample_GetAllocatedBlob(IMFSample* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
  1094. return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
  1095. }
  1096. static FORCEINLINE HRESULT IMFSample_GetUnknown(IMFSample* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
  1097. return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
  1098. }
  1099. static FORCEINLINE HRESULT IMFSample_SetItem(IMFSample* This,REFGUID guidKey,REFPROPVARIANT Value) {
  1100. return This->lpVtbl->SetItem(This,guidKey,Value);
  1101. }
  1102. static FORCEINLINE HRESULT IMFSample_DeleteItem(IMFSample* This,REFGUID guidKey) {
  1103. return This->lpVtbl->DeleteItem(This,guidKey);
  1104. }
  1105. static FORCEINLINE HRESULT IMFSample_DeleteAllItems(IMFSample* This) {
  1106. return This->lpVtbl->DeleteAllItems(This);
  1107. }
  1108. static FORCEINLINE HRESULT IMFSample_SetUINT32(IMFSample* This,REFGUID guidKey,UINT32 unValue) {
  1109. return This->lpVtbl->SetUINT32(This,guidKey,unValue);
  1110. }
  1111. static FORCEINLINE HRESULT IMFSample_SetUINT64(IMFSample* This,REFGUID guidKey,UINT64 unValue) {
  1112. return This->lpVtbl->SetUINT64(This,guidKey,unValue);
  1113. }
  1114. static FORCEINLINE HRESULT IMFSample_SetDouble(IMFSample* This,REFGUID guidKey,double fValue) {
  1115. return This->lpVtbl->SetDouble(This,guidKey,fValue);
  1116. }
  1117. static FORCEINLINE HRESULT IMFSample_SetGUID(IMFSample* This,REFGUID guidKey,REFGUID guidValue) {
  1118. return This->lpVtbl->SetGUID(This,guidKey,guidValue);
  1119. }
  1120. static FORCEINLINE HRESULT IMFSample_SetString(IMFSample* This,REFGUID guidKey,LPCWSTR wszValue) {
  1121. return This->lpVtbl->SetString(This,guidKey,wszValue);
  1122. }
  1123. static FORCEINLINE HRESULT IMFSample_SetBlob(IMFSample* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
  1124. return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
  1125. }
  1126. static FORCEINLINE HRESULT IMFSample_SetUnknown(IMFSample* This,REFGUID guidKey,IUnknown *pUnknown) {
  1127. return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
  1128. }
  1129. static FORCEINLINE HRESULT IMFSample_LockStore(IMFSample* This) {
  1130. return This->lpVtbl->LockStore(This);
  1131. }
  1132. static FORCEINLINE HRESULT IMFSample_UnlockStore(IMFSample* This) {
  1133. return This->lpVtbl->UnlockStore(This);
  1134. }
  1135. static FORCEINLINE HRESULT IMFSample_GetCount(IMFSample* This,UINT32 *pcItems) {
  1136. return This->lpVtbl->GetCount(This,pcItems);
  1137. }
  1138. static FORCEINLINE HRESULT IMFSample_GetItemByIndex(IMFSample* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
  1139. return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
  1140. }
  1141. static FORCEINLINE HRESULT IMFSample_CopyAllItems(IMFSample* This,IMFAttributes *pDest) {
  1142. return This->lpVtbl->CopyAllItems(This,pDest);
  1143. }
  1144. /*** IMFSample methods ***/
  1145. static FORCEINLINE HRESULT IMFSample_GetSampleFlags(IMFSample* This,DWORD *pdwSampleFlags) {
  1146. return This->lpVtbl->GetSampleFlags(This,pdwSampleFlags);
  1147. }
  1148. static FORCEINLINE HRESULT IMFSample_SetSampleFlags(IMFSample* This,DWORD dwSampleFlags) {
  1149. return This->lpVtbl->SetSampleFlags(This,dwSampleFlags);
  1150. }
  1151. static FORCEINLINE HRESULT IMFSample_GetSampleTime(IMFSample* This,LONGLONG *phnsSampleTime) {
  1152. return This->lpVtbl->GetSampleTime(This,phnsSampleTime);
  1153. }
  1154. static FORCEINLINE HRESULT IMFSample_SetSampleTime(IMFSample* This,LONGLONG hnsSampleTime) {
  1155. return This->lpVtbl->SetSampleTime(This,hnsSampleTime);
  1156. }
  1157. static FORCEINLINE HRESULT IMFSample_GetSampleDuration(IMFSample* This,LONGLONG *phnsSampleDuration) {
  1158. return This->lpVtbl->GetSampleDuration(This,phnsSampleDuration);
  1159. }
  1160. static FORCEINLINE HRESULT IMFSample_SetSampleDuration(IMFSample* This,LONGLONG hnsSampleDuration) {
  1161. return This->lpVtbl->SetSampleDuration(This,hnsSampleDuration);
  1162. }
  1163. static FORCEINLINE HRESULT IMFSample_GetBufferCount(IMFSample* This,DWORD *pdwBufferCount) {
  1164. return This->lpVtbl->GetBufferCount(This,pdwBufferCount);
  1165. }
  1166. static FORCEINLINE HRESULT IMFSample_GetBufferByIndex(IMFSample* This,DWORD dwIndex,IMFMediaBuffer **ppBuffer) {
  1167. return This->lpVtbl->GetBufferByIndex(This,dwIndex,ppBuffer);
  1168. }
  1169. static FORCEINLINE HRESULT IMFSample_ConvertToContiguousBuffer(IMFSample* This,IMFMediaBuffer **ppBuffer) {
  1170. return This->lpVtbl->ConvertToContiguousBuffer(This,ppBuffer);
  1171. }
  1172. static FORCEINLINE HRESULT IMFSample_AddBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
  1173. return This->lpVtbl->AddBuffer(This,pBuffer);
  1174. }
  1175. static FORCEINLINE HRESULT IMFSample_RemoveBufferByIndex(IMFSample* This,DWORD dwIndex) {
  1176. return This->lpVtbl->RemoveBufferByIndex(This,dwIndex);
  1177. }
  1178. static FORCEINLINE HRESULT IMFSample_RemoveAllBuffers(IMFSample* This) {
  1179. return This->lpVtbl->RemoveAllBuffers(This);
  1180. }
  1181. static FORCEINLINE HRESULT IMFSample_GetTotalLength(IMFSample* This,DWORD *pcbTotalLength) {
  1182. return This->lpVtbl->GetTotalLength(This,pcbTotalLength);
  1183. }
  1184. static FORCEINLINE HRESULT IMFSample_CopyToBuffer(IMFSample* This,IMFMediaBuffer *pBuffer) {
  1185. return This->lpVtbl->CopyToBuffer(This,pBuffer);
  1186. }
  1187. #endif
  1188. #endif
  1189. #endif
  1190. #endif /* __IMFSample_INTERFACE_DEFINED__ */
  1191. /*****************************************************************************
  1192. * IMF2DBuffer interface
  1193. */
  1194. #ifndef __IMF2DBuffer_INTERFACE_DEFINED__
  1195. #define __IMF2DBuffer_INTERFACE_DEFINED__
  1196. DEFINE_GUID(IID_IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb);
  1197. #if defined(__cplusplus) && !defined(CINTERFACE)
  1198. MIDL_INTERFACE("7dc9d5f9-9ed9-44ec-9bbf-0600bb589fbb")
  1199. IMF2DBuffer : public IUnknown
  1200. {
  1201. virtual HRESULT STDMETHODCALLTYPE Lock2D(
  1202. BYTE **ppbScanline0,
  1203. LONG *plPitch) = 0;
  1204. virtual HRESULT STDMETHODCALLTYPE Unlock2D(
  1205. ) = 0;
  1206. virtual HRESULT STDMETHODCALLTYPE GetScanline0AndPitch(
  1207. BYTE **pbScanline0,
  1208. LONG *plPitch) = 0;
  1209. virtual HRESULT STDMETHODCALLTYPE IsContiguousFormat(
  1210. WINBOOL *pfIsContiguous) = 0;
  1211. virtual HRESULT STDMETHODCALLTYPE GetContiguousLength(
  1212. DWORD *pcbLength) = 0;
  1213. virtual HRESULT STDMETHODCALLTYPE ContiguousCopyTo(
  1214. BYTE *pbDestBuffer,
  1215. DWORD cbDestBuffer) = 0;
  1216. virtual HRESULT STDMETHODCALLTYPE ContiguousCopyFrom(
  1217. const BYTE *pbSrcBuffer,
  1218. DWORD cbSrcBuffer) = 0;
  1219. };
  1220. #ifdef __CRT_UUID_DECL
  1221. __CRT_UUID_DECL(IMF2DBuffer, 0x7dc9d5f9, 0x9ed9, 0x44ec, 0x9b,0xbf, 0x06,0x00,0xbb,0x58,0x9f,0xbb)
  1222. #endif
  1223. #else
  1224. typedef struct IMF2DBufferVtbl {
  1225. BEGIN_INTERFACE
  1226. /*** IUnknown methods ***/
  1227. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1228. IMF2DBuffer *This,
  1229. REFIID riid,
  1230. void **ppvObject);
  1231. ULONG (STDMETHODCALLTYPE *AddRef)(
  1232. IMF2DBuffer *This);
  1233. ULONG (STDMETHODCALLTYPE *Release)(
  1234. IMF2DBuffer *This);
  1235. /*** IMF2DBuffer methods ***/
  1236. HRESULT (STDMETHODCALLTYPE *Lock2D)(
  1237. IMF2DBuffer *This,
  1238. BYTE **ppbScanline0,
  1239. LONG *plPitch);
  1240. HRESULT (STDMETHODCALLTYPE *Unlock2D)(
  1241. IMF2DBuffer *This);
  1242. HRESULT (STDMETHODCALLTYPE *GetScanline0AndPitch)(
  1243. IMF2DBuffer *This,
  1244. BYTE **pbScanline0,
  1245. LONG *plPitch);
  1246. HRESULT (STDMETHODCALLTYPE *IsContiguousFormat)(
  1247. IMF2DBuffer *This,
  1248. WINBOOL *pfIsContiguous);
  1249. HRESULT (STDMETHODCALLTYPE *GetContiguousLength)(
  1250. IMF2DBuffer *This,
  1251. DWORD *pcbLength);
  1252. HRESULT (STDMETHODCALLTYPE *ContiguousCopyTo)(
  1253. IMF2DBuffer *This,
  1254. BYTE *pbDestBuffer,
  1255. DWORD cbDestBuffer);
  1256. HRESULT (STDMETHODCALLTYPE *ContiguousCopyFrom)(
  1257. IMF2DBuffer *This,
  1258. const BYTE *pbSrcBuffer,
  1259. DWORD cbSrcBuffer);
  1260. END_INTERFACE
  1261. } IMF2DBufferVtbl;
  1262. interface IMF2DBuffer {
  1263. CONST_VTBL IMF2DBufferVtbl* lpVtbl;
  1264. };
  1265. #ifdef COBJMACROS
  1266. #ifndef WIDL_C_INLINE_WRAPPERS
  1267. /*** IUnknown methods ***/
  1268. #define IMF2DBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1269. #define IMF2DBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
  1270. #define IMF2DBuffer_Release(This) (This)->lpVtbl->Release(This)
  1271. /*** IMF2DBuffer methods ***/
  1272. #define IMF2DBuffer_Lock2D(This,ppbScanline0,plPitch) (This)->lpVtbl->Lock2D(This,ppbScanline0,plPitch)
  1273. #define IMF2DBuffer_Unlock2D(This) (This)->lpVtbl->Unlock2D(This)
  1274. #define IMF2DBuffer_GetScanline0AndPitch(This,pbScanline0,plPitch) (This)->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch)
  1275. #define IMF2DBuffer_IsContiguousFormat(This,pfIsContiguous) (This)->lpVtbl->IsContiguousFormat(This,pfIsContiguous)
  1276. #define IMF2DBuffer_GetContiguousLength(This,pcbLength) (This)->lpVtbl->GetContiguousLength(This,pcbLength)
  1277. #define IMF2DBuffer_ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer) (This)->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer)
  1278. #define IMF2DBuffer_ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer) (This)->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer)
  1279. #else
  1280. /*** IUnknown methods ***/
  1281. static FORCEINLINE HRESULT IMF2DBuffer_QueryInterface(IMF2DBuffer* This,REFIID riid,void **ppvObject) {
  1282. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1283. }
  1284. static FORCEINLINE ULONG IMF2DBuffer_AddRef(IMF2DBuffer* This) {
  1285. return This->lpVtbl->AddRef(This);
  1286. }
  1287. static FORCEINLINE ULONG IMF2DBuffer_Release(IMF2DBuffer* This) {
  1288. return This->lpVtbl->Release(This);
  1289. }
  1290. /*** IMF2DBuffer methods ***/
  1291. static FORCEINLINE HRESULT IMF2DBuffer_Lock2D(IMF2DBuffer* This,BYTE **ppbScanline0,LONG *plPitch) {
  1292. return This->lpVtbl->Lock2D(This,ppbScanline0,plPitch);
  1293. }
  1294. static FORCEINLINE HRESULT IMF2DBuffer_Unlock2D(IMF2DBuffer* This) {
  1295. return This->lpVtbl->Unlock2D(This);
  1296. }
  1297. static FORCEINLINE HRESULT IMF2DBuffer_GetScanline0AndPitch(IMF2DBuffer* This,BYTE **pbScanline0,LONG *plPitch) {
  1298. return This->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch);
  1299. }
  1300. static FORCEINLINE HRESULT IMF2DBuffer_IsContiguousFormat(IMF2DBuffer* This,WINBOOL *pfIsContiguous) {
  1301. return This->lpVtbl->IsContiguousFormat(This,pfIsContiguous);
  1302. }
  1303. static FORCEINLINE HRESULT IMF2DBuffer_GetContiguousLength(IMF2DBuffer* This,DWORD *pcbLength) {
  1304. return This->lpVtbl->GetContiguousLength(This,pcbLength);
  1305. }
  1306. static FORCEINLINE HRESULT IMF2DBuffer_ContiguousCopyTo(IMF2DBuffer* This,BYTE *pbDestBuffer,DWORD cbDestBuffer) {
  1307. return This->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer);
  1308. }
  1309. static FORCEINLINE HRESULT IMF2DBuffer_ContiguousCopyFrom(IMF2DBuffer* This,const BYTE *pbSrcBuffer,DWORD cbSrcBuffer) {
  1310. return This->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer);
  1311. }
  1312. #endif
  1313. #endif
  1314. #endif
  1315. #endif /* __IMF2DBuffer_INTERFACE_DEFINED__ */
  1316. typedef enum _MF2DBuffer_LockFlags {
  1317. MF2DBuffer_LockFlags_LockTypeMask = (0x1 | 0x2) | 0x3,
  1318. MF2DBuffer_LockFlags_Read = 0x1,
  1319. MF2DBuffer_LockFlags_Write = 0x2,
  1320. MF2DBuffer_LockFlags_ReadWrite = 0x3,
  1321. MF2DBuffer_LockFlags_ForceDWORD = 0x7fffffff
  1322. } MF2DBuffer_LockFlags;
  1323. /*****************************************************************************
  1324. * IMF2DBuffer2 interface
  1325. */
  1326. #ifndef __IMF2DBuffer2_INTERFACE_DEFINED__
  1327. #define __IMF2DBuffer2_INTERFACE_DEFINED__
  1328. DEFINE_GUID(IID_IMF2DBuffer2, 0x33ae5ea6, 0x4316, 0x436f, 0x8d,0xdd, 0xd7,0x3d,0x22,0xf8,0x29,0xec);
  1329. #if defined(__cplusplus) && !defined(CINTERFACE)
  1330. MIDL_INTERFACE("33ae5ea6-4316-436f-8ddd-d73d22f829ec")
  1331. IMF2DBuffer2 : public IMF2DBuffer
  1332. {
  1333. virtual HRESULT STDMETHODCALLTYPE Lock2DSize(
  1334. MF2DBuffer_LockFlags lockFlags,
  1335. BYTE **ppbScanline0,
  1336. LONG *plPitch,
  1337. BYTE **ppbBufferStart,
  1338. DWORD *pcbBufferLength) = 0;
  1339. virtual HRESULT STDMETHODCALLTYPE Copy2DTo(
  1340. IMF2DBuffer2 *pDestBuffer) = 0;
  1341. };
  1342. #ifdef __CRT_UUID_DECL
  1343. __CRT_UUID_DECL(IMF2DBuffer2, 0x33ae5ea6, 0x4316, 0x436f, 0x8d,0xdd, 0xd7,0x3d,0x22,0xf8,0x29,0xec)
  1344. #endif
  1345. #else
  1346. typedef struct IMF2DBuffer2Vtbl {
  1347. BEGIN_INTERFACE
  1348. /*** IUnknown methods ***/
  1349. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1350. IMF2DBuffer2 *This,
  1351. REFIID riid,
  1352. void **ppvObject);
  1353. ULONG (STDMETHODCALLTYPE *AddRef)(
  1354. IMF2DBuffer2 *This);
  1355. ULONG (STDMETHODCALLTYPE *Release)(
  1356. IMF2DBuffer2 *This);
  1357. /*** IMF2DBuffer methods ***/
  1358. HRESULT (STDMETHODCALLTYPE *Lock2D)(
  1359. IMF2DBuffer2 *This,
  1360. BYTE **ppbScanline0,
  1361. LONG *plPitch);
  1362. HRESULT (STDMETHODCALLTYPE *Unlock2D)(
  1363. IMF2DBuffer2 *This);
  1364. HRESULT (STDMETHODCALLTYPE *GetScanline0AndPitch)(
  1365. IMF2DBuffer2 *This,
  1366. BYTE **pbScanline0,
  1367. LONG *plPitch);
  1368. HRESULT (STDMETHODCALLTYPE *IsContiguousFormat)(
  1369. IMF2DBuffer2 *This,
  1370. WINBOOL *pfIsContiguous);
  1371. HRESULT (STDMETHODCALLTYPE *GetContiguousLength)(
  1372. IMF2DBuffer2 *This,
  1373. DWORD *pcbLength);
  1374. HRESULT (STDMETHODCALLTYPE *ContiguousCopyTo)(
  1375. IMF2DBuffer2 *This,
  1376. BYTE *pbDestBuffer,
  1377. DWORD cbDestBuffer);
  1378. HRESULT (STDMETHODCALLTYPE *ContiguousCopyFrom)(
  1379. IMF2DBuffer2 *This,
  1380. const BYTE *pbSrcBuffer,
  1381. DWORD cbSrcBuffer);
  1382. /*** IMF2DBuffer2 methods ***/
  1383. HRESULT (STDMETHODCALLTYPE *Lock2DSize)(
  1384. IMF2DBuffer2 *This,
  1385. MF2DBuffer_LockFlags lockFlags,
  1386. BYTE **ppbScanline0,
  1387. LONG *plPitch,
  1388. BYTE **ppbBufferStart,
  1389. DWORD *pcbBufferLength);
  1390. HRESULT (STDMETHODCALLTYPE *Copy2DTo)(
  1391. IMF2DBuffer2 *This,
  1392. IMF2DBuffer2 *pDestBuffer);
  1393. END_INTERFACE
  1394. } IMF2DBuffer2Vtbl;
  1395. interface IMF2DBuffer2 {
  1396. CONST_VTBL IMF2DBuffer2Vtbl* lpVtbl;
  1397. };
  1398. #ifdef COBJMACROS
  1399. #ifndef WIDL_C_INLINE_WRAPPERS
  1400. /*** IUnknown methods ***/
  1401. #define IMF2DBuffer2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1402. #define IMF2DBuffer2_AddRef(This) (This)->lpVtbl->AddRef(This)
  1403. #define IMF2DBuffer2_Release(This) (This)->lpVtbl->Release(This)
  1404. /*** IMF2DBuffer methods ***/
  1405. #define IMF2DBuffer2_Lock2D(This,ppbScanline0,plPitch) (This)->lpVtbl->Lock2D(This,ppbScanline0,plPitch)
  1406. #define IMF2DBuffer2_Unlock2D(This) (This)->lpVtbl->Unlock2D(This)
  1407. #define IMF2DBuffer2_GetScanline0AndPitch(This,pbScanline0,plPitch) (This)->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch)
  1408. #define IMF2DBuffer2_IsContiguousFormat(This,pfIsContiguous) (This)->lpVtbl->IsContiguousFormat(This,pfIsContiguous)
  1409. #define IMF2DBuffer2_GetContiguousLength(This,pcbLength) (This)->lpVtbl->GetContiguousLength(This,pcbLength)
  1410. #define IMF2DBuffer2_ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer) (This)->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer)
  1411. #define IMF2DBuffer2_ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer) (This)->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer)
  1412. /*** IMF2DBuffer2 methods ***/
  1413. #define IMF2DBuffer2_Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength) (This)->lpVtbl->Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength)
  1414. #define IMF2DBuffer2_Copy2DTo(This,pDestBuffer) (This)->lpVtbl->Copy2DTo(This,pDestBuffer)
  1415. #else
  1416. /*** IUnknown methods ***/
  1417. static FORCEINLINE HRESULT IMF2DBuffer2_QueryInterface(IMF2DBuffer2* This,REFIID riid,void **ppvObject) {
  1418. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1419. }
  1420. static FORCEINLINE ULONG IMF2DBuffer2_AddRef(IMF2DBuffer2* This) {
  1421. return This->lpVtbl->AddRef(This);
  1422. }
  1423. static FORCEINLINE ULONG IMF2DBuffer2_Release(IMF2DBuffer2* This) {
  1424. return This->lpVtbl->Release(This);
  1425. }
  1426. /*** IMF2DBuffer methods ***/
  1427. static FORCEINLINE HRESULT IMF2DBuffer2_Lock2D(IMF2DBuffer2* This,BYTE **ppbScanline0,LONG *plPitch) {
  1428. return This->lpVtbl->Lock2D(This,ppbScanline0,plPitch);
  1429. }
  1430. static FORCEINLINE HRESULT IMF2DBuffer2_Unlock2D(IMF2DBuffer2* This) {
  1431. return This->lpVtbl->Unlock2D(This);
  1432. }
  1433. static FORCEINLINE HRESULT IMF2DBuffer2_GetScanline0AndPitch(IMF2DBuffer2* This,BYTE **pbScanline0,LONG *plPitch) {
  1434. return This->lpVtbl->GetScanline0AndPitch(This,pbScanline0,plPitch);
  1435. }
  1436. static FORCEINLINE HRESULT IMF2DBuffer2_IsContiguousFormat(IMF2DBuffer2* This,WINBOOL *pfIsContiguous) {
  1437. return This->lpVtbl->IsContiguousFormat(This,pfIsContiguous);
  1438. }
  1439. static FORCEINLINE HRESULT IMF2DBuffer2_GetContiguousLength(IMF2DBuffer2* This,DWORD *pcbLength) {
  1440. return This->lpVtbl->GetContiguousLength(This,pcbLength);
  1441. }
  1442. static FORCEINLINE HRESULT IMF2DBuffer2_ContiguousCopyTo(IMF2DBuffer2* This,BYTE *pbDestBuffer,DWORD cbDestBuffer) {
  1443. return This->lpVtbl->ContiguousCopyTo(This,pbDestBuffer,cbDestBuffer);
  1444. }
  1445. static FORCEINLINE HRESULT IMF2DBuffer2_ContiguousCopyFrom(IMF2DBuffer2* This,const BYTE *pbSrcBuffer,DWORD cbSrcBuffer) {
  1446. return This->lpVtbl->ContiguousCopyFrom(This,pbSrcBuffer,cbSrcBuffer);
  1447. }
  1448. /*** IMF2DBuffer2 methods ***/
  1449. static FORCEINLINE HRESULT IMF2DBuffer2_Lock2DSize(IMF2DBuffer2* This,MF2DBuffer_LockFlags lockFlags,BYTE **ppbScanline0,LONG *plPitch,BYTE **ppbBufferStart,DWORD *pcbBufferLength) {
  1450. return This->lpVtbl->Lock2DSize(This,lockFlags,ppbScanline0,plPitch,ppbBufferStart,pcbBufferLength);
  1451. }
  1452. static FORCEINLINE HRESULT IMF2DBuffer2_Copy2DTo(IMF2DBuffer2* This,IMF2DBuffer2 *pDestBuffer) {
  1453. return This->lpVtbl->Copy2DTo(This,pDestBuffer);
  1454. }
  1455. #endif
  1456. #endif
  1457. #endif
  1458. #endif /* __IMF2DBuffer2_INTERFACE_DEFINED__ */
  1459. /*****************************************************************************
  1460. * IMFDXGIBuffer interface
  1461. */
  1462. #ifndef __IMFDXGIBuffer_INTERFACE_DEFINED__
  1463. #define __IMFDXGIBuffer_INTERFACE_DEFINED__
  1464. DEFINE_GUID(IID_IMFDXGIBuffer, 0xe7174cfa, 0x1c9e, 0x48b1, 0x88,0x66, 0x62,0x62,0x26,0xbf,0xc2,0x58);
  1465. #if defined(__cplusplus) && !defined(CINTERFACE)
  1466. MIDL_INTERFACE("e7174cfa-1c9e-48b1-8866-626226bfc258")
  1467. IMFDXGIBuffer : public IUnknown
  1468. {
  1469. virtual HRESULT STDMETHODCALLTYPE GetResource(
  1470. REFIID riid,
  1471. LPVOID *ppvObject) = 0;
  1472. virtual HRESULT STDMETHODCALLTYPE GetSubresourceIndex(
  1473. UINT *puSubresource) = 0;
  1474. virtual HRESULT STDMETHODCALLTYPE GetUnknown(
  1475. REFIID guid,
  1476. REFIID riid,
  1477. LPVOID *ppvObject) = 0;
  1478. virtual HRESULT STDMETHODCALLTYPE SetUnknown(
  1479. REFIID guid,
  1480. IUnknown *pUnkData) = 0;
  1481. };
  1482. #ifdef __CRT_UUID_DECL
  1483. __CRT_UUID_DECL(IMFDXGIBuffer, 0xe7174cfa, 0x1c9e, 0x48b1, 0x88,0x66, 0x62,0x62,0x26,0xbf,0xc2,0x58)
  1484. #endif
  1485. #else
  1486. typedef struct IMFDXGIBufferVtbl {
  1487. BEGIN_INTERFACE
  1488. /*** IUnknown methods ***/
  1489. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1490. IMFDXGIBuffer *This,
  1491. REFIID riid,
  1492. void **ppvObject);
  1493. ULONG (STDMETHODCALLTYPE *AddRef)(
  1494. IMFDXGIBuffer *This);
  1495. ULONG (STDMETHODCALLTYPE *Release)(
  1496. IMFDXGIBuffer *This);
  1497. /*** IMFDXGIBuffer methods ***/
  1498. HRESULT (STDMETHODCALLTYPE *GetResource)(
  1499. IMFDXGIBuffer *This,
  1500. REFIID riid,
  1501. LPVOID *ppvObject);
  1502. HRESULT (STDMETHODCALLTYPE *GetSubresourceIndex)(
  1503. IMFDXGIBuffer *This,
  1504. UINT *puSubresource);
  1505. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  1506. IMFDXGIBuffer *This,
  1507. REFIID guid,
  1508. REFIID riid,
  1509. LPVOID *ppvObject);
  1510. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  1511. IMFDXGIBuffer *This,
  1512. REFIID guid,
  1513. IUnknown *pUnkData);
  1514. END_INTERFACE
  1515. } IMFDXGIBufferVtbl;
  1516. interface IMFDXGIBuffer {
  1517. CONST_VTBL IMFDXGIBufferVtbl* lpVtbl;
  1518. };
  1519. #ifdef COBJMACROS
  1520. #ifndef WIDL_C_INLINE_WRAPPERS
  1521. /*** IUnknown methods ***/
  1522. #define IMFDXGIBuffer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1523. #define IMFDXGIBuffer_AddRef(This) (This)->lpVtbl->AddRef(This)
  1524. #define IMFDXGIBuffer_Release(This) (This)->lpVtbl->Release(This)
  1525. /*** IMFDXGIBuffer methods ***/
  1526. #define IMFDXGIBuffer_GetResource(This,riid,ppvObject) (This)->lpVtbl->GetResource(This,riid,ppvObject)
  1527. #define IMFDXGIBuffer_GetSubresourceIndex(This,puSubresource) (This)->lpVtbl->GetSubresourceIndex(This,puSubresource)
  1528. #define IMFDXGIBuffer_GetUnknown(This,guid,riid,ppvObject) (This)->lpVtbl->GetUnknown(This,guid,riid,ppvObject)
  1529. #define IMFDXGIBuffer_SetUnknown(This,guid,pUnkData) (This)->lpVtbl->SetUnknown(This,guid,pUnkData)
  1530. #else
  1531. /*** IUnknown methods ***/
  1532. static FORCEINLINE HRESULT IMFDXGIBuffer_QueryInterface(IMFDXGIBuffer* This,REFIID riid,void **ppvObject) {
  1533. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1534. }
  1535. static FORCEINLINE ULONG IMFDXGIBuffer_AddRef(IMFDXGIBuffer* This) {
  1536. return This->lpVtbl->AddRef(This);
  1537. }
  1538. static FORCEINLINE ULONG IMFDXGIBuffer_Release(IMFDXGIBuffer* This) {
  1539. return This->lpVtbl->Release(This);
  1540. }
  1541. /*** IMFDXGIBuffer methods ***/
  1542. static FORCEINLINE HRESULT IMFDXGIBuffer_GetResource(IMFDXGIBuffer* This,REFIID riid,LPVOID *ppvObject) {
  1543. return This->lpVtbl->GetResource(This,riid,ppvObject);
  1544. }
  1545. static FORCEINLINE HRESULT IMFDXGIBuffer_GetSubresourceIndex(IMFDXGIBuffer* This,UINT *puSubresource) {
  1546. return This->lpVtbl->GetSubresourceIndex(This,puSubresource);
  1547. }
  1548. static FORCEINLINE HRESULT IMFDXGIBuffer_GetUnknown(IMFDXGIBuffer* This,REFIID guid,REFIID riid,LPVOID *ppvObject) {
  1549. return This->lpVtbl->GetUnknown(This,guid,riid,ppvObject);
  1550. }
  1551. static FORCEINLINE HRESULT IMFDXGIBuffer_SetUnknown(IMFDXGIBuffer* This,REFIID guid,IUnknown *pUnkData) {
  1552. return This->lpVtbl->SetUnknown(This,guid,pUnkData);
  1553. }
  1554. #endif
  1555. #endif
  1556. #endif
  1557. #endif /* __IMFDXGIBuffer_INTERFACE_DEFINED__ */
  1558. /*****************************************************************************
  1559. * IMFMediaType interface
  1560. */
  1561. #ifndef __IMFMediaType_INTERFACE_DEFINED__
  1562. #define __IMFMediaType_INTERFACE_DEFINED__
  1563. DEFINE_GUID(IID_IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55);
  1564. #if defined(__cplusplus) && !defined(CINTERFACE)
  1565. MIDL_INTERFACE("44ae0fa8-ea31-4109-8d2e-4cae4997c555")
  1566. IMFMediaType : public IMFAttributes
  1567. {
  1568. virtual HRESULT STDMETHODCALLTYPE GetMajorType(
  1569. GUID *pguidMajorType) = 0;
  1570. virtual HRESULT STDMETHODCALLTYPE IsCompressedFormat(
  1571. WINBOOL *pfCompressed) = 0;
  1572. virtual HRESULT STDMETHODCALLTYPE IsEqual(
  1573. IMFMediaType *pIMediaType,
  1574. DWORD *pdwFlags) = 0;
  1575. virtual HRESULT STDMETHODCALLTYPE GetRepresentation(
  1576. GUID guidRepresentation,
  1577. LPVOID *ppvRepresentation) = 0;
  1578. virtual HRESULT STDMETHODCALLTYPE FreeRepresentation(
  1579. GUID guidRepresentation,
  1580. LPVOID pvRepresentation) = 0;
  1581. };
  1582. #ifdef __CRT_UUID_DECL
  1583. __CRT_UUID_DECL(IMFMediaType, 0x44ae0fa8, 0xea31, 0x4109, 0x8d,0x2e, 0x4c,0xae,0x49,0x97,0xc5,0x55)
  1584. #endif
  1585. #else
  1586. typedef struct IMFMediaTypeVtbl {
  1587. BEGIN_INTERFACE
  1588. /*** IUnknown methods ***/
  1589. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1590. IMFMediaType *This,
  1591. REFIID riid,
  1592. void **ppvObject);
  1593. ULONG (STDMETHODCALLTYPE *AddRef)(
  1594. IMFMediaType *This);
  1595. ULONG (STDMETHODCALLTYPE *Release)(
  1596. IMFMediaType *This);
  1597. /*** IMFAttributes methods ***/
  1598. HRESULT (STDMETHODCALLTYPE *GetItem)(
  1599. IMFMediaType *This,
  1600. REFGUID guidKey,
  1601. PROPVARIANT *pValue);
  1602. HRESULT (STDMETHODCALLTYPE *GetItemType)(
  1603. IMFMediaType *This,
  1604. REFGUID guidKey,
  1605. MF_ATTRIBUTE_TYPE *pType);
  1606. HRESULT (STDMETHODCALLTYPE *CompareItem)(
  1607. IMFMediaType *This,
  1608. REFGUID guidKey,
  1609. REFPROPVARIANT Value,
  1610. WINBOOL *pbResult);
  1611. HRESULT (STDMETHODCALLTYPE *Compare)(
  1612. IMFMediaType *This,
  1613. IMFAttributes *pTheirs,
  1614. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  1615. WINBOOL *pbResult);
  1616. HRESULT (STDMETHODCALLTYPE *GetUINT32)(
  1617. IMFMediaType *This,
  1618. REFGUID guidKey,
  1619. UINT32 *punValue);
  1620. HRESULT (STDMETHODCALLTYPE *GetUINT64)(
  1621. IMFMediaType *This,
  1622. REFGUID guidKey,
  1623. UINT64 *punValue);
  1624. HRESULT (STDMETHODCALLTYPE *GetDouble)(
  1625. IMFMediaType *This,
  1626. REFGUID guidKey,
  1627. double *pfValue);
  1628. HRESULT (STDMETHODCALLTYPE *GetGUID)(
  1629. IMFMediaType *This,
  1630. REFGUID guidKey,
  1631. GUID *pguidValue);
  1632. HRESULT (STDMETHODCALLTYPE *GetStringLength)(
  1633. IMFMediaType *This,
  1634. REFGUID guidKey,
  1635. UINT32 *pcchLength);
  1636. HRESULT (STDMETHODCALLTYPE *GetString)(
  1637. IMFMediaType *This,
  1638. REFGUID guidKey,
  1639. LPWSTR pwszValue,
  1640. UINT32 cchBufSize,
  1641. UINT32 *pcchLength);
  1642. HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
  1643. IMFMediaType *This,
  1644. REFGUID guidKey,
  1645. LPWSTR *ppwszValue,
  1646. UINT32 *pcchLength);
  1647. HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
  1648. IMFMediaType *This,
  1649. REFGUID guidKey,
  1650. UINT32 *pcbBlobSize);
  1651. HRESULT (STDMETHODCALLTYPE *GetBlob)(
  1652. IMFMediaType *This,
  1653. REFGUID guidKey,
  1654. UINT8 *pBuf,
  1655. UINT32 cbBufSize,
  1656. UINT32 *pcbBlobSize);
  1657. HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
  1658. IMFMediaType *This,
  1659. REFGUID guidKey,
  1660. UINT8 **ppBuf,
  1661. UINT32 *pcbSize);
  1662. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  1663. IMFMediaType *This,
  1664. REFGUID guidKey,
  1665. REFIID riid,
  1666. LPVOID *ppv);
  1667. HRESULT (STDMETHODCALLTYPE *SetItem)(
  1668. IMFMediaType *This,
  1669. REFGUID guidKey,
  1670. REFPROPVARIANT Value);
  1671. HRESULT (STDMETHODCALLTYPE *DeleteItem)(
  1672. IMFMediaType *This,
  1673. REFGUID guidKey);
  1674. HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
  1675. IMFMediaType *This);
  1676. HRESULT (STDMETHODCALLTYPE *SetUINT32)(
  1677. IMFMediaType *This,
  1678. REFGUID guidKey,
  1679. UINT32 unValue);
  1680. HRESULT (STDMETHODCALLTYPE *SetUINT64)(
  1681. IMFMediaType *This,
  1682. REFGUID guidKey,
  1683. UINT64 unValue);
  1684. HRESULT (STDMETHODCALLTYPE *SetDouble)(
  1685. IMFMediaType *This,
  1686. REFGUID guidKey,
  1687. double fValue);
  1688. HRESULT (STDMETHODCALLTYPE *SetGUID)(
  1689. IMFMediaType *This,
  1690. REFGUID guidKey,
  1691. REFGUID guidValue);
  1692. HRESULT (STDMETHODCALLTYPE *SetString)(
  1693. IMFMediaType *This,
  1694. REFGUID guidKey,
  1695. LPCWSTR wszValue);
  1696. HRESULT (STDMETHODCALLTYPE *SetBlob)(
  1697. IMFMediaType *This,
  1698. REFGUID guidKey,
  1699. const UINT8 *pBuf,
  1700. UINT32 cbBufSize);
  1701. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  1702. IMFMediaType *This,
  1703. REFGUID guidKey,
  1704. IUnknown *pUnknown);
  1705. HRESULT (STDMETHODCALLTYPE *LockStore)(
  1706. IMFMediaType *This);
  1707. HRESULT (STDMETHODCALLTYPE *UnlockStore)(
  1708. IMFMediaType *This);
  1709. HRESULT (STDMETHODCALLTYPE *GetCount)(
  1710. IMFMediaType *This,
  1711. UINT32 *pcItems);
  1712. HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
  1713. IMFMediaType *This,
  1714. UINT32 unIndex,
  1715. GUID *pguidKey,
  1716. PROPVARIANT *pValue);
  1717. HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
  1718. IMFMediaType *This,
  1719. IMFAttributes *pDest);
  1720. /*** IMFMediaType methods ***/
  1721. HRESULT (STDMETHODCALLTYPE *GetMajorType)(
  1722. IMFMediaType *This,
  1723. GUID *pguidMajorType);
  1724. HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
  1725. IMFMediaType *This,
  1726. WINBOOL *pfCompressed);
  1727. HRESULT (STDMETHODCALLTYPE *IsEqual)(
  1728. IMFMediaType *This,
  1729. IMFMediaType *pIMediaType,
  1730. DWORD *pdwFlags);
  1731. HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
  1732. IMFMediaType *This,
  1733. GUID guidRepresentation,
  1734. LPVOID *ppvRepresentation);
  1735. HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
  1736. IMFMediaType *This,
  1737. GUID guidRepresentation,
  1738. LPVOID pvRepresentation);
  1739. END_INTERFACE
  1740. } IMFMediaTypeVtbl;
  1741. interface IMFMediaType {
  1742. CONST_VTBL IMFMediaTypeVtbl* lpVtbl;
  1743. };
  1744. #ifdef COBJMACROS
  1745. #ifndef WIDL_C_INLINE_WRAPPERS
  1746. /*** IUnknown methods ***/
  1747. #define IMFMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  1748. #define IMFMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
  1749. #define IMFMediaType_Release(This) (This)->lpVtbl->Release(This)
  1750. /*** IMFAttributes methods ***/
  1751. #define IMFMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
  1752. #define IMFMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
  1753. #define IMFMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
  1754. #define IMFMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
  1755. #define IMFMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
  1756. #define IMFMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
  1757. #define IMFMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
  1758. #define IMFMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
  1759. #define IMFMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
  1760. #define IMFMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
  1761. #define IMFMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
  1762. #define IMFMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
  1763. #define IMFMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
  1764. #define IMFMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
  1765. #define IMFMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
  1766. #define IMFMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
  1767. #define IMFMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
  1768. #define IMFMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
  1769. #define IMFMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
  1770. #define IMFMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
  1771. #define IMFMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
  1772. #define IMFMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
  1773. #define IMFMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
  1774. #define IMFMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
  1775. #define IMFMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
  1776. #define IMFMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
  1777. #define IMFMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
  1778. #define IMFMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
  1779. #define IMFMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
  1780. #define IMFMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
  1781. /*** IMFMediaType methods ***/
  1782. #define IMFMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
  1783. #define IMFMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
  1784. #define IMFMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
  1785. #define IMFMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
  1786. #define IMFMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
  1787. #else
  1788. /*** IUnknown methods ***/
  1789. static FORCEINLINE HRESULT IMFMediaType_QueryInterface(IMFMediaType* This,REFIID riid,void **ppvObject) {
  1790. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  1791. }
  1792. static FORCEINLINE ULONG IMFMediaType_AddRef(IMFMediaType* This) {
  1793. return This->lpVtbl->AddRef(This);
  1794. }
  1795. static FORCEINLINE ULONG IMFMediaType_Release(IMFMediaType* This) {
  1796. return This->lpVtbl->Release(This);
  1797. }
  1798. /*** IMFAttributes methods ***/
  1799. static FORCEINLINE HRESULT IMFMediaType_GetItem(IMFMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
  1800. return This->lpVtbl->GetItem(This,guidKey,pValue);
  1801. }
  1802. static FORCEINLINE HRESULT IMFMediaType_GetItemType(IMFMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
  1803. return This->lpVtbl->GetItemType(This,guidKey,pType);
  1804. }
  1805. static FORCEINLINE HRESULT IMFMediaType_CompareItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
  1806. return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
  1807. }
  1808. static FORCEINLINE HRESULT IMFMediaType_Compare(IMFMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
  1809. return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
  1810. }
  1811. static FORCEINLINE HRESULT IMFMediaType_GetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 *punValue) {
  1812. return This->lpVtbl->GetUINT32(This,guidKey,punValue);
  1813. }
  1814. static FORCEINLINE HRESULT IMFMediaType_GetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 *punValue) {
  1815. return This->lpVtbl->GetUINT64(This,guidKey,punValue);
  1816. }
  1817. static FORCEINLINE HRESULT IMFMediaType_GetDouble(IMFMediaType* This,REFGUID guidKey,double *pfValue) {
  1818. return This->lpVtbl->GetDouble(This,guidKey,pfValue);
  1819. }
  1820. static FORCEINLINE HRESULT IMFMediaType_GetGUID(IMFMediaType* This,REFGUID guidKey,GUID *pguidValue) {
  1821. return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
  1822. }
  1823. static FORCEINLINE HRESULT IMFMediaType_GetStringLength(IMFMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
  1824. return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
  1825. }
  1826. static FORCEINLINE HRESULT IMFMediaType_GetString(IMFMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
  1827. return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
  1828. }
  1829. static FORCEINLINE HRESULT IMFMediaType_GetAllocatedString(IMFMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
  1830. return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
  1831. }
  1832. static FORCEINLINE HRESULT IMFMediaType_GetBlobSize(IMFMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
  1833. return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
  1834. }
  1835. static FORCEINLINE HRESULT IMFMediaType_GetBlob(IMFMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
  1836. return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
  1837. }
  1838. static FORCEINLINE HRESULT IMFMediaType_GetAllocatedBlob(IMFMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
  1839. return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
  1840. }
  1841. static FORCEINLINE HRESULT IMFMediaType_GetUnknown(IMFMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
  1842. return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
  1843. }
  1844. static FORCEINLINE HRESULT IMFMediaType_SetItem(IMFMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
  1845. return This->lpVtbl->SetItem(This,guidKey,Value);
  1846. }
  1847. static FORCEINLINE HRESULT IMFMediaType_DeleteItem(IMFMediaType* This,REFGUID guidKey) {
  1848. return This->lpVtbl->DeleteItem(This,guidKey);
  1849. }
  1850. static FORCEINLINE HRESULT IMFMediaType_DeleteAllItems(IMFMediaType* This) {
  1851. return This->lpVtbl->DeleteAllItems(This);
  1852. }
  1853. static FORCEINLINE HRESULT IMFMediaType_SetUINT32(IMFMediaType* This,REFGUID guidKey,UINT32 unValue) {
  1854. return This->lpVtbl->SetUINT32(This,guidKey,unValue);
  1855. }
  1856. static FORCEINLINE HRESULT IMFMediaType_SetUINT64(IMFMediaType* This,REFGUID guidKey,UINT64 unValue) {
  1857. return This->lpVtbl->SetUINT64(This,guidKey,unValue);
  1858. }
  1859. static FORCEINLINE HRESULT IMFMediaType_SetDouble(IMFMediaType* This,REFGUID guidKey,double fValue) {
  1860. return This->lpVtbl->SetDouble(This,guidKey,fValue);
  1861. }
  1862. static FORCEINLINE HRESULT IMFMediaType_SetGUID(IMFMediaType* This,REFGUID guidKey,REFGUID guidValue) {
  1863. return This->lpVtbl->SetGUID(This,guidKey,guidValue);
  1864. }
  1865. static FORCEINLINE HRESULT IMFMediaType_SetString(IMFMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
  1866. return This->lpVtbl->SetString(This,guidKey,wszValue);
  1867. }
  1868. static FORCEINLINE HRESULT IMFMediaType_SetBlob(IMFMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
  1869. return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
  1870. }
  1871. static FORCEINLINE HRESULT IMFMediaType_SetUnknown(IMFMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
  1872. return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
  1873. }
  1874. static FORCEINLINE HRESULT IMFMediaType_LockStore(IMFMediaType* This) {
  1875. return This->lpVtbl->LockStore(This);
  1876. }
  1877. static FORCEINLINE HRESULT IMFMediaType_UnlockStore(IMFMediaType* This) {
  1878. return This->lpVtbl->UnlockStore(This);
  1879. }
  1880. static FORCEINLINE HRESULT IMFMediaType_GetCount(IMFMediaType* This,UINT32 *pcItems) {
  1881. return This->lpVtbl->GetCount(This,pcItems);
  1882. }
  1883. static FORCEINLINE HRESULT IMFMediaType_GetItemByIndex(IMFMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
  1884. return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
  1885. }
  1886. static FORCEINLINE HRESULT IMFMediaType_CopyAllItems(IMFMediaType* This,IMFAttributes *pDest) {
  1887. return This->lpVtbl->CopyAllItems(This,pDest);
  1888. }
  1889. /*** IMFMediaType methods ***/
  1890. static FORCEINLINE HRESULT IMFMediaType_GetMajorType(IMFMediaType* This,GUID *pguidMajorType) {
  1891. return This->lpVtbl->GetMajorType(This,pguidMajorType);
  1892. }
  1893. static FORCEINLINE HRESULT IMFMediaType_IsCompressedFormat(IMFMediaType* This,WINBOOL *pfCompressed) {
  1894. return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
  1895. }
  1896. static FORCEINLINE HRESULT IMFMediaType_IsEqual(IMFMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
  1897. return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
  1898. }
  1899. static FORCEINLINE HRESULT IMFMediaType_GetRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
  1900. return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
  1901. }
  1902. static FORCEINLINE HRESULT IMFMediaType_FreeRepresentation(IMFMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
  1903. return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
  1904. }
  1905. #endif
  1906. #endif
  1907. #endif
  1908. #endif /* __IMFMediaType_INTERFACE_DEFINED__ */
  1909. #define MF_MEDIATYPE_EQUAL_MAJOR_TYPES 0x00000001
  1910. #define MF_MEDIATYPE_EQUAL_FORMAT_TYPES 0x00000002
  1911. #define MF_MEDIATYPE_EQUAL_FORMAT_DATA 0x00000004
  1912. #define MF_MEDIATYPE_EQUAL_FORMAT_USER_DATA 0x00000008
  1913. #endif
  1914. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  1915. /*****************************************************************************
  1916. * IMFAudioMediaType interface
  1917. */
  1918. #ifndef __IMFAudioMediaType_INTERFACE_DEFINED__
  1919. #define __IMFAudioMediaType_INTERFACE_DEFINED__
  1920. DEFINE_GUID(IID_IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf);
  1921. #if defined(__cplusplus) && !defined(CINTERFACE)
  1922. MIDL_INTERFACE("26a0adc3-ce26-4672-9304-69552edd3faf")
  1923. IMFAudioMediaType : public IMFMediaType
  1924. {
  1925. virtual const WAVEFORMATEX * STDMETHODCALLTYPE GetAudioFormat(
  1926. ) = 0;
  1927. };
  1928. #ifdef __CRT_UUID_DECL
  1929. __CRT_UUID_DECL(IMFAudioMediaType, 0x26a0adc3, 0xce26, 0x4672, 0x93,0x04, 0x69,0x55,0x2e,0xdd,0x3f,0xaf)
  1930. #endif
  1931. #else
  1932. typedef struct IMFAudioMediaTypeVtbl {
  1933. BEGIN_INTERFACE
  1934. /*** IUnknown methods ***/
  1935. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  1936. IMFAudioMediaType *This,
  1937. REFIID riid,
  1938. void **ppvObject);
  1939. ULONG (STDMETHODCALLTYPE *AddRef)(
  1940. IMFAudioMediaType *This);
  1941. ULONG (STDMETHODCALLTYPE *Release)(
  1942. IMFAudioMediaType *This);
  1943. /*** IMFAttributes methods ***/
  1944. HRESULT (STDMETHODCALLTYPE *GetItem)(
  1945. IMFAudioMediaType *This,
  1946. REFGUID guidKey,
  1947. PROPVARIANT *pValue);
  1948. HRESULT (STDMETHODCALLTYPE *GetItemType)(
  1949. IMFAudioMediaType *This,
  1950. REFGUID guidKey,
  1951. MF_ATTRIBUTE_TYPE *pType);
  1952. HRESULT (STDMETHODCALLTYPE *CompareItem)(
  1953. IMFAudioMediaType *This,
  1954. REFGUID guidKey,
  1955. REFPROPVARIANT Value,
  1956. WINBOOL *pbResult);
  1957. HRESULT (STDMETHODCALLTYPE *Compare)(
  1958. IMFAudioMediaType *This,
  1959. IMFAttributes *pTheirs,
  1960. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  1961. WINBOOL *pbResult);
  1962. HRESULT (STDMETHODCALLTYPE *GetUINT32)(
  1963. IMFAudioMediaType *This,
  1964. REFGUID guidKey,
  1965. UINT32 *punValue);
  1966. HRESULT (STDMETHODCALLTYPE *GetUINT64)(
  1967. IMFAudioMediaType *This,
  1968. REFGUID guidKey,
  1969. UINT64 *punValue);
  1970. HRESULT (STDMETHODCALLTYPE *GetDouble)(
  1971. IMFAudioMediaType *This,
  1972. REFGUID guidKey,
  1973. double *pfValue);
  1974. HRESULT (STDMETHODCALLTYPE *GetGUID)(
  1975. IMFAudioMediaType *This,
  1976. REFGUID guidKey,
  1977. GUID *pguidValue);
  1978. HRESULT (STDMETHODCALLTYPE *GetStringLength)(
  1979. IMFAudioMediaType *This,
  1980. REFGUID guidKey,
  1981. UINT32 *pcchLength);
  1982. HRESULT (STDMETHODCALLTYPE *GetString)(
  1983. IMFAudioMediaType *This,
  1984. REFGUID guidKey,
  1985. LPWSTR pwszValue,
  1986. UINT32 cchBufSize,
  1987. UINT32 *pcchLength);
  1988. HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
  1989. IMFAudioMediaType *This,
  1990. REFGUID guidKey,
  1991. LPWSTR *ppwszValue,
  1992. UINT32 *pcchLength);
  1993. HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
  1994. IMFAudioMediaType *This,
  1995. REFGUID guidKey,
  1996. UINT32 *pcbBlobSize);
  1997. HRESULT (STDMETHODCALLTYPE *GetBlob)(
  1998. IMFAudioMediaType *This,
  1999. REFGUID guidKey,
  2000. UINT8 *pBuf,
  2001. UINT32 cbBufSize,
  2002. UINT32 *pcbBlobSize);
  2003. HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
  2004. IMFAudioMediaType *This,
  2005. REFGUID guidKey,
  2006. UINT8 **ppBuf,
  2007. UINT32 *pcbSize);
  2008. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  2009. IMFAudioMediaType *This,
  2010. REFGUID guidKey,
  2011. REFIID riid,
  2012. LPVOID *ppv);
  2013. HRESULT (STDMETHODCALLTYPE *SetItem)(
  2014. IMFAudioMediaType *This,
  2015. REFGUID guidKey,
  2016. REFPROPVARIANT Value);
  2017. HRESULT (STDMETHODCALLTYPE *DeleteItem)(
  2018. IMFAudioMediaType *This,
  2019. REFGUID guidKey);
  2020. HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
  2021. IMFAudioMediaType *This);
  2022. HRESULT (STDMETHODCALLTYPE *SetUINT32)(
  2023. IMFAudioMediaType *This,
  2024. REFGUID guidKey,
  2025. UINT32 unValue);
  2026. HRESULT (STDMETHODCALLTYPE *SetUINT64)(
  2027. IMFAudioMediaType *This,
  2028. REFGUID guidKey,
  2029. UINT64 unValue);
  2030. HRESULT (STDMETHODCALLTYPE *SetDouble)(
  2031. IMFAudioMediaType *This,
  2032. REFGUID guidKey,
  2033. double fValue);
  2034. HRESULT (STDMETHODCALLTYPE *SetGUID)(
  2035. IMFAudioMediaType *This,
  2036. REFGUID guidKey,
  2037. REFGUID guidValue);
  2038. HRESULT (STDMETHODCALLTYPE *SetString)(
  2039. IMFAudioMediaType *This,
  2040. REFGUID guidKey,
  2041. LPCWSTR wszValue);
  2042. HRESULT (STDMETHODCALLTYPE *SetBlob)(
  2043. IMFAudioMediaType *This,
  2044. REFGUID guidKey,
  2045. const UINT8 *pBuf,
  2046. UINT32 cbBufSize);
  2047. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  2048. IMFAudioMediaType *This,
  2049. REFGUID guidKey,
  2050. IUnknown *pUnknown);
  2051. HRESULT (STDMETHODCALLTYPE *LockStore)(
  2052. IMFAudioMediaType *This);
  2053. HRESULT (STDMETHODCALLTYPE *UnlockStore)(
  2054. IMFAudioMediaType *This);
  2055. HRESULT (STDMETHODCALLTYPE *GetCount)(
  2056. IMFAudioMediaType *This,
  2057. UINT32 *pcItems);
  2058. HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
  2059. IMFAudioMediaType *This,
  2060. UINT32 unIndex,
  2061. GUID *pguidKey,
  2062. PROPVARIANT *pValue);
  2063. HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
  2064. IMFAudioMediaType *This,
  2065. IMFAttributes *pDest);
  2066. /*** IMFMediaType methods ***/
  2067. HRESULT (STDMETHODCALLTYPE *GetMajorType)(
  2068. IMFAudioMediaType *This,
  2069. GUID *pguidMajorType);
  2070. HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
  2071. IMFAudioMediaType *This,
  2072. WINBOOL *pfCompressed);
  2073. HRESULT (STDMETHODCALLTYPE *IsEqual)(
  2074. IMFAudioMediaType *This,
  2075. IMFMediaType *pIMediaType,
  2076. DWORD *pdwFlags);
  2077. HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
  2078. IMFAudioMediaType *This,
  2079. GUID guidRepresentation,
  2080. LPVOID *ppvRepresentation);
  2081. HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
  2082. IMFAudioMediaType *This,
  2083. GUID guidRepresentation,
  2084. LPVOID pvRepresentation);
  2085. /*** IMFAudioMediaType methods ***/
  2086. const WAVEFORMATEX * (STDMETHODCALLTYPE *GetAudioFormat)(
  2087. IMFAudioMediaType *This);
  2088. END_INTERFACE
  2089. } IMFAudioMediaTypeVtbl;
  2090. interface IMFAudioMediaType {
  2091. CONST_VTBL IMFAudioMediaTypeVtbl* lpVtbl;
  2092. };
  2093. #ifdef COBJMACROS
  2094. #ifndef WIDL_C_INLINE_WRAPPERS
  2095. /*** IUnknown methods ***/
  2096. #define IMFAudioMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  2097. #define IMFAudioMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
  2098. #define IMFAudioMediaType_Release(This) (This)->lpVtbl->Release(This)
  2099. /*** IMFAttributes methods ***/
  2100. #define IMFAudioMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
  2101. #define IMFAudioMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
  2102. #define IMFAudioMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
  2103. #define IMFAudioMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
  2104. #define IMFAudioMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
  2105. #define IMFAudioMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
  2106. #define IMFAudioMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
  2107. #define IMFAudioMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
  2108. #define IMFAudioMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
  2109. #define IMFAudioMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
  2110. #define IMFAudioMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
  2111. #define IMFAudioMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
  2112. #define IMFAudioMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
  2113. #define IMFAudioMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
  2114. #define IMFAudioMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
  2115. #define IMFAudioMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
  2116. #define IMFAudioMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
  2117. #define IMFAudioMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
  2118. #define IMFAudioMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
  2119. #define IMFAudioMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
  2120. #define IMFAudioMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
  2121. #define IMFAudioMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
  2122. #define IMFAudioMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
  2123. #define IMFAudioMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
  2124. #define IMFAudioMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
  2125. #define IMFAudioMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
  2126. #define IMFAudioMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
  2127. #define IMFAudioMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
  2128. #define IMFAudioMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
  2129. #define IMFAudioMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
  2130. /*** IMFMediaType methods ***/
  2131. #define IMFAudioMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
  2132. #define IMFAudioMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
  2133. #define IMFAudioMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
  2134. #define IMFAudioMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
  2135. #define IMFAudioMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
  2136. /*** IMFAudioMediaType methods ***/
  2137. #define IMFAudioMediaType_GetAudioFormat(This) (This)->lpVtbl->GetAudioFormat(This)
  2138. #else
  2139. /*** IUnknown methods ***/
  2140. static FORCEINLINE HRESULT IMFAudioMediaType_QueryInterface(IMFAudioMediaType* This,REFIID riid,void **ppvObject) {
  2141. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  2142. }
  2143. static FORCEINLINE ULONG IMFAudioMediaType_AddRef(IMFAudioMediaType* This) {
  2144. return This->lpVtbl->AddRef(This);
  2145. }
  2146. static FORCEINLINE ULONG IMFAudioMediaType_Release(IMFAudioMediaType* This) {
  2147. return This->lpVtbl->Release(This);
  2148. }
  2149. /*** IMFAttributes methods ***/
  2150. static FORCEINLINE HRESULT IMFAudioMediaType_GetItem(IMFAudioMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
  2151. return This->lpVtbl->GetItem(This,guidKey,pValue);
  2152. }
  2153. static FORCEINLINE HRESULT IMFAudioMediaType_GetItemType(IMFAudioMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
  2154. return This->lpVtbl->GetItemType(This,guidKey,pType);
  2155. }
  2156. static FORCEINLINE HRESULT IMFAudioMediaType_CompareItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
  2157. return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
  2158. }
  2159. static FORCEINLINE HRESULT IMFAudioMediaType_Compare(IMFAudioMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
  2160. return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
  2161. }
  2162. static FORCEINLINE HRESULT IMFAudioMediaType_GetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *punValue) {
  2163. return This->lpVtbl->GetUINT32(This,guidKey,punValue);
  2164. }
  2165. static FORCEINLINE HRESULT IMFAudioMediaType_GetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 *punValue) {
  2166. return This->lpVtbl->GetUINT64(This,guidKey,punValue);
  2167. }
  2168. static FORCEINLINE HRESULT IMFAudioMediaType_GetDouble(IMFAudioMediaType* This,REFGUID guidKey,double *pfValue) {
  2169. return This->lpVtbl->GetDouble(This,guidKey,pfValue);
  2170. }
  2171. static FORCEINLINE HRESULT IMFAudioMediaType_GetGUID(IMFAudioMediaType* This,REFGUID guidKey,GUID *pguidValue) {
  2172. return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
  2173. }
  2174. static FORCEINLINE HRESULT IMFAudioMediaType_GetStringLength(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
  2175. return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
  2176. }
  2177. static FORCEINLINE HRESULT IMFAudioMediaType_GetString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
  2178. return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
  2179. }
  2180. static FORCEINLINE HRESULT IMFAudioMediaType_GetAllocatedString(IMFAudioMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
  2181. return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
  2182. }
  2183. static FORCEINLINE HRESULT IMFAudioMediaType_GetBlobSize(IMFAudioMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
  2184. return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
  2185. }
  2186. static FORCEINLINE HRESULT IMFAudioMediaType_GetBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
  2187. return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
  2188. }
  2189. static FORCEINLINE HRESULT IMFAudioMediaType_GetAllocatedBlob(IMFAudioMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
  2190. return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
  2191. }
  2192. static FORCEINLINE HRESULT IMFAudioMediaType_GetUnknown(IMFAudioMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
  2193. return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
  2194. }
  2195. static FORCEINLINE HRESULT IMFAudioMediaType_SetItem(IMFAudioMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
  2196. return This->lpVtbl->SetItem(This,guidKey,Value);
  2197. }
  2198. static FORCEINLINE HRESULT IMFAudioMediaType_DeleteItem(IMFAudioMediaType* This,REFGUID guidKey) {
  2199. return This->lpVtbl->DeleteItem(This,guidKey);
  2200. }
  2201. static FORCEINLINE HRESULT IMFAudioMediaType_DeleteAllItems(IMFAudioMediaType* This) {
  2202. return This->lpVtbl->DeleteAllItems(This);
  2203. }
  2204. static FORCEINLINE HRESULT IMFAudioMediaType_SetUINT32(IMFAudioMediaType* This,REFGUID guidKey,UINT32 unValue) {
  2205. return This->lpVtbl->SetUINT32(This,guidKey,unValue);
  2206. }
  2207. static FORCEINLINE HRESULT IMFAudioMediaType_SetUINT64(IMFAudioMediaType* This,REFGUID guidKey,UINT64 unValue) {
  2208. return This->lpVtbl->SetUINT64(This,guidKey,unValue);
  2209. }
  2210. static FORCEINLINE HRESULT IMFAudioMediaType_SetDouble(IMFAudioMediaType* This,REFGUID guidKey,double fValue) {
  2211. return This->lpVtbl->SetDouble(This,guidKey,fValue);
  2212. }
  2213. static FORCEINLINE HRESULT IMFAudioMediaType_SetGUID(IMFAudioMediaType* This,REFGUID guidKey,REFGUID guidValue) {
  2214. return This->lpVtbl->SetGUID(This,guidKey,guidValue);
  2215. }
  2216. static FORCEINLINE HRESULT IMFAudioMediaType_SetString(IMFAudioMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
  2217. return This->lpVtbl->SetString(This,guidKey,wszValue);
  2218. }
  2219. static FORCEINLINE HRESULT IMFAudioMediaType_SetBlob(IMFAudioMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
  2220. return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
  2221. }
  2222. static FORCEINLINE HRESULT IMFAudioMediaType_SetUnknown(IMFAudioMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
  2223. return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
  2224. }
  2225. static FORCEINLINE HRESULT IMFAudioMediaType_LockStore(IMFAudioMediaType* This) {
  2226. return This->lpVtbl->LockStore(This);
  2227. }
  2228. static FORCEINLINE HRESULT IMFAudioMediaType_UnlockStore(IMFAudioMediaType* This) {
  2229. return This->lpVtbl->UnlockStore(This);
  2230. }
  2231. static FORCEINLINE HRESULT IMFAudioMediaType_GetCount(IMFAudioMediaType* This,UINT32 *pcItems) {
  2232. return This->lpVtbl->GetCount(This,pcItems);
  2233. }
  2234. static FORCEINLINE HRESULT IMFAudioMediaType_GetItemByIndex(IMFAudioMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
  2235. return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
  2236. }
  2237. static FORCEINLINE HRESULT IMFAudioMediaType_CopyAllItems(IMFAudioMediaType* This,IMFAttributes *pDest) {
  2238. return This->lpVtbl->CopyAllItems(This,pDest);
  2239. }
  2240. /*** IMFMediaType methods ***/
  2241. static FORCEINLINE HRESULT IMFAudioMediaType_GetMajorType(IMFAudioMediaType* This,GUID *pguidMajorType) {
  2242. return This->lpVtbl->GetMajorType(This,pguidMajorType);
  2243. }
  2244. static FORCEINLINE HRESULT IMFAudioMediaType_IsCompressedFormat(IMFAudioMediaType* This,WINBOOL *pfCompressed) {
  2245. return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
  2246. }
  2247. static FORCEINLINE HRESULT IMFAudioMediaType_IsEqual(IMFAudioMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
  2248. return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
  2249. }
  2250. static FORCEINLINE HRESULT IMFAudioMediaType_GetRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
  2251. return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
  2252. }
  2253. static FORCEINLINE HRESULT IMFAudioMediaType_FreeRepresentation(IMFAudioMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
  2254. return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
  2255. }
  2256. /*** IMFAudioMediaType methods ***/
  2257. static FORCEINLINE const WAVEFORMATEX * IMFAudioMediaType_GetAudioFormat(IMFAudioMediaType* This) {
  2258. return This->lpVtbl->GetAudioFormat(This);
  2259. }
  2260. #endif
  2261. #endif
  2262. #endif
  2263. #endif /* __IMFAudioMediaType_INTERFACE_DEFINED__ */
  2264. #ifndef _WINGDI_
  2265. typedef DWORD RGBQUAD;
  2266. typedef struct __WIDL_mfobjects_generated_name_00000028 {
  2267. DWORD biSize;
  2268. LONG biWidth;
  2269. LONG biHeight;
  2270. WORD biPlanes;
  2271. WORD biBitCount;
  2272. DWORD biCompression;
  2273. DWORD biSizeImage;
  2274. LONG biXPelsPerMeter;
  2275. LONG biYPelsPerMeter;
  2276. DWORD biClrUsed;
  2277. DWORD biClrImportant;
  2278. } BITMAPINFOHEADER;
  2279. typedef struct __WIDL_mfobjects_generated_name_00000029 {
  2280. BITMAPINFOHEADER bmiHeader;
  2281. RGBQUAD bmiColors[1];
  2282. } BITMAPINFO;
  2283. #endif
  2284. typedef struct __WIDL_mfobjects_generated_name_0000002A {
  2285. GUID guidMajorType;
  2286. GUID guidSubtype;
  2287. } MFT_REGISTER_TYPE_INFO;
  2288. #endif
  2289. #ifndef _MFVIDEOFORMAT_
  2290. #define _MFVIDEOFORMAT_
  2291. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  2292. typedef enum _MFVideoInterlaceMode {
  2293. MFVideoInterlace_Unknown = 0,
  2294. MFVideoInterlace_Progressive = 2,
  2295. MFVideoInterlace_FieldInterleavedUpperFirst = 3,
  2296. MFVideoInterlace_FieldInterleavedLowerFirst = 4,
  2297. MFVideoInterlace_FieldSingleUpper = 5,
  2298. MFVideoInterlace_FieldSingleLower = 6,
  2299. MFVideoInterlace_MixedInterlaceOrProgressive = 7,
  2300. MFVideoInterlace_Last = 8,
  2301. MFVideoInterlace_ForceDWORD = 0x7fffffff
  2302. } MFVideoInterlaceMode;
  2303. #define MFVideoInterlace_FieldSingleUpperFirst MFVideoInterlace_FieldSingleUpper
  2304. #define MFVideoInterlace_FieldSingleLowerFirst MFVideoInterlace_FieldSingleLower
  2305. typedef enum _MFVideoTransferFunction {
  2306. MFVideoTransFunc_Unknown = 0,
  2307. MFVideoTransFunc_10 = 1,
  2308. MFVideoTransFunc_18 = 2,
  2309. MFVideoTransFunc_20 = 3,
  2310. MFVideoTransFunc_22 = 4,
  2311. MFVideoTransFunc_709 = 5,
  2312. MFVideoTransFunc_240M = 6,
  2313. MFVideoTransFunc_sRGB = 7,
  2314. MFVideoTransFunc_28 = 8,
  2315. MFVideoTransFunc_Log_100 = 9,
  2316. MFVideoTransFunc_Log_316 = 10,
  2317. MFVideoTransFunc_709_sym = 11,
  2318. MFVideoTransFunc_2020_const = 12,
  2319. MFVideoTransFunc_2020 = 13,
  2320. MFVideoTransFunc_26 = 14,
  2321. MFVideoTransFunc_2084 = 15,
  2322. MFVideoTransFunc_HLG = 16,
  2323. MFVideoTransFunc_10_rel = 17,
  2324. MFVideoTransFunc_Last = 18,
  2325. MFVideoTransFunc_ForceDWORD = 0x7fffffff
  2326. } MFVideoTransferFunction;
  2327. typedef enum _MFVideoPrimaries {
  2328. MFVideoPrimaries_Unknown = 0,
  2329. MFVideoPrimaries_reserved = 1,
  2330. MFVideoPrimaries_BT709 = 2,
  2331. MFVideoPrimaries_BT470_2_SysM = 3,
  2332. MFVideoPrimaries_BT470_2_SysBG = 4,
  2333. MFVideoPrimaries_SMPTE170M = 5,
  2334. MFVideoPrimaries_SMPTE240M = 6,
  2335. MFVideoPrimaries_EBU3213 = 7,
  2336. MFVideoPrimaries_SMPTE_C = 8,
  2337. MFVideoPrimaries_BT2020 = 9,
  2338. MFVideoPrimaries_XYZ = 10,
  2339. MFVideoPrimaries_DCI_P3 = 11,
  2340. MFVideoPrimaries_ACES = 12,
  2341. MFVideoPrimaries_Last = 13,
  2342. MFVideoPrimaries_ForceDWORD = 0x7fffffff
  2343. } MFVideoPrimaries;
  2344. typedef enum _MFVideoLighting {
  2345. MFVideoLighting_Unknown = 0,
  2346. MFVideoLighting_bright = 1,
  2347. MFVideoLighting_office = 2,
  2348. MFVideoLighting_dim = 3,
  2349. MFVideoLighting_dark = 4,
  2350. MFVideoLighting_Last = 5,
  2351. MFVideoLighting_ForceDWORD = 0x7fffffff
  2352. } MFVideoLighting;
  2353. typedef enum _MFVideoTransferMatrix {
  2354. MFVideoTransferMatrix_Unknown = 0,
  2355. MFVideoTransferMatrix_BT709 = 1,
  2356. MFVideoTransferMatrix_BT601 = 2,
  2357. MFVideoTransferMatrix_SMPTE240M = 3,
  2358. MFVideoTransferMatrix_BT2020_10 = 4,
  2359. MFVideoTransferMatrix_BT2020_12 = 5,
  2360. MFVideoTransferMatrix_Last = 6,
  2361. MFVideoTransferMatrix_ForceDWORD = 0x7fffffff
  2362. } MFVideoTransferMatrix;
  2363. typedef enum _MFVideoChromaSubsampling {
  2364. MFVideoChromaSubsampling_Unknown = 0,
  2365. MFVideoChromaSubsampling_ProgressiveChroma = 0x8,
  2366. MFVideoChromaSubsampling_Horizontally_Cosited = 0x4,
  2367. MFVideoChromaSubsampling_Vertically_Cosited = 0x2,
  2368. MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes = 0x1,
  2369. MFVideoChromaSubsampling_MPEG2 = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
  2370. MFVideoChromaSubsampling_MPEG1 = MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
  2371. MFVideoChromaSubsampling_DV_PAL = MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited,
  2372. MFVideoChromaSubsampling_Cosited = (MFVideoChromaSubsampling_Horizontally_Cosited | MFVideoChromaSubsampling_Vertically_Cosited) | MFVideoChromaSubsampling_Vertically_AlignedChromaPlanes,
  2373. MFVideoChromaSubsampling_Last = MFVideoChromaSubsampling_Cosited + 1,
  2374. MFVideoChromaSubsampling_ForceDWORD = 0x7fffffff
  2375. } MFVideoChromaSubsampling;
  2376. typedef enum _MFNominalRange {
  2377. MFNominalRange_Unknown = 0,
  2378. MFNominalRange_Normal = 1,
  2379. MFNominalRange_Wide = 2,
  2380. MFNominalRange_0_255 = 1,
  2381. MFNominalRange_16_235 = 2,
  2382. MFNominalRange_48_208 = 3,
  2383. MFNominalRange_64_127 = 4,
  2384. MFNominalRange_Last = 5,
  2385. MFNominalRange_ForceDWORD = 0x7fffffff
  2386. } MFNominalRange;
  2387. #endif
  2388. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  2389. typedef enum _MFVideoFlags {
  2390. MFVideoFlag_PAD_TO_Mask = 0x1 | 0x2,
  2391. MFVideoFlag_PAD_TO_None = 0 * 0x1,
  2392. MFVideoFlag_PAD_TO_4x3 = 1 * 0x1,
  2393. MFVideoFlag_PAD_TO_16x9 = 2 * 0x1,
  2394. MFVideoFlag_SrcContentHintMask = (0x4 | 0x8) | 0x10,
  2395. MFVideoFlag_SrcContentHintNone = 0 * 0x4,
  2396. MFVideoFlag_SrcContentHint16x9 = 1 * 0x4,
  2397. MFVideoFlag_SrcContentHint235_1 = 2 * 0x4,
  2398. MFVideoFlag_AnalogProtected = 0x20,
  2399. MFVideoFlag_DigitallyProtected = 0x40,
  2400. MFVideoFlag_ProgressiveContent = 0x80,
  2401. MFVideoFlag_FieldRepeatCountMask = (0x100 | 0x200) | 0x400,
  2402. MFVideoFlag_FieldRepeatCountShift = 8,
  2403. MFVideoFlag_ProgressiveSeqReset = 0x800,
  2404. MFVideoFlag_PanScanEnabled = 0x20000,
  2405. MFVideoFlag_LowerFieldFirst = 0x40000,
  2406. MFVideoFlag_BottomUpLinearRep = 0x80000,
  2407. MFVideoFlags_DXVASurface = 0x100000,
  2408. MFVideoFlags_RenderTargetSurface = 0x400000,
  2409. MFVideoFlags_ForceQWORD = 0x7fffffff
  2410. } MFVideoFlags;
  2411. #endif
  2412. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  2413. typedef struct _MFRatio {
  2414. DWORD Numerator;
  2415. DWORD Denominator;
  2416. } MFRatio;
  2417. typedef struct _MFOffset {
  2418. WORD fract;
  2419. short value;
  2420. } MFOffset;
  2421. typedef struct _MFVideoArea {
  2422. MFOffset OffsetX;
  2423. MFOffset OffsetY;
  2424. SIZE Area;
  2425. } MFVideoArea;
  2426. #endif
  2427. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  2428. typedef struct _MFVideoInfo {
  2429. DWORD dwWidth;
  2430. DWORD dwHeight;
  2431. MFRatio PixelAspectRatio;
  2432. MFVideoChromaSubsampling SourceChromaSubsampling;
  2433. MFVideoInterlaceMode InterlaceMode;
  2434. MFVideoTransferFunction TransferFunction;
  2435. MFVideoPrimaries ColorPrimaries;
  2436. MFVideoTransferMatrix TransferMatrix;
  2437. MFVideoLighting SourceLighting;
  2438. MFRatio FramesPerSecond;
  2439. MFNominalRange NominalRange;
  2440. MFVideoArea GeometricAperture;
  2441. MFVideoArea MinimumDisplayAperture;
  2442. MFVideoArea PanScanAperture;
  2443. UINT64 VideoFlags;
  2444. } MFVideoInfo;
  2445. #endif
  2446. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  2447. typedef struct __MFAYUVSample {
  2448. BYTE bCrValue;
  2449. BYTE bCbValue;
  2450. BYTE bYValue;
  2451. BYTE bSampleAlpha8;
  2452. } MFAYUVSample;
  2453. typedef struct _MFARGB {
  2454. BYTE rgbBlue;
  2455. BYTE rgbGreen;
  2456. BYTE rgbRed;
  2457. BYTE rgbAlpha;
  2458. } MFARGB;
  2459. typedef union _MFPaletteEntry {
  2460. MFARGB ARGB;
  2461. MFAYUVSample AYCbCr;
  2462. } MFPaletteEntry;
  2463. #endif
  2464. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  2465. typedef struct _MFVideoSurfaceInfo {
  2466. DWORD Format;
  2467. DWORD PaletteEntries;
  2468. MFPaletteEntry Palette[1];
  2469. } MFVideoSurfaceInfo;
  2470. typedef struct _MFVideoCompressedInfo {
  2471. LONGLONG AvgBitrate;
  2472. LONGLONG AvgBitErrorRate;
  2473. DWORD MaxKeyFrameSpacing;
  2474. } MFVideoCompressedInfo;
  2475. typedef struct _MFVIDEOFORMAT {
  2476. DWORD dwSize;
  2477. MFVideoInfo videoInfo;
  2478. GUID guidFormat;
  2479. MFVideoCompressedInfo compressedInfo;
  2480. MFVideoSurfaceInfo surfaceInfo;
  2481. } MFVIDEOFORMAT;
  2482. typedef enum _MFStandardVideoFormat {
  2483. MFStdVideoFormat_reserved = 0,
  2484. MFStdVideoFormat_NTSC = 1,
  2485. MFStdVideoFormat_PAL = 2,
  2486. MFStdVideoFormat_DVD_NTSC = 3,
  2487. MFStdVideoFormat_DVD_PAL = 4,
  2488. MFStdVideoFormat_DV_PAL = 5,
  2489. MFStdVideoFormat_DV_NTSC = 6,
  2490. MFStdVideoFormat_ATSC_SD480i = 7,
  2491. MFStdVideoFormat_ATSC_HD1080i = 8,
  2492. MFStdVideoFormat_ATSC_HD720p = 9
  2493. } MFStandardVideoFormat;
  2494. #endif
  2495. #endif
  2496. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  2497. /*****************************************************************************
  2498. * IMFVideoMediaType interface
  2499. */
  2500. #ifndef __IMFVideoMediaType_INTERFACE_DEFINED__
  2501. #define __IMFVideoMediaType_INTERFACE_DEFINED__
  2502. DEFINE_GUID(IID_IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90);
  2503. #if defined(__cplusplus) && !defined(CINTERFACE)
  2504. MIDL_INTERFACE("b99f381f-a8f9-47a2-a5af-ca3a225a3890")
  2505. IMFVideoMediaType : public IMFMediaType
  2506. {
  2507. virtual const MFVIDEOFORMAT * STDMETHODCALLTYPE GetVideoFormat(
  2508. ) = 0;
  2509. virtual HRESULT STDMETHODCALLTYPE GetVideoRepresentation(
  2510. GUID guidRepresentation,
  2511. LPVOID *ppvRepresentation,
  2512. LONG lStride) = 0;
  2513. };
  2514. #ifdef __CRT_UUID_DECL
  2515. __CRT_UUID_DECL(IMFVideoMediaType, 0xb99f381f, 0xa8f9, 0x47a2, 0xa5,0xaf, 0xca,0x3a,0x22,0x5a,0x38,0x90)
  2516. #endif
  2517. #else
  2518. typedef struct IMFVideoMediaTypeVtbl {
  2519. BEGIN_INTERFACE
  2520. /*** IUnknown methods ***/
  2521. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  2522. IMFVideoMediaType *This,
  2523. REFIID riid,
  2524. void **ppvObject);
  2525. ULONG (STDMETHODCALLTYPE *AddRef)(
  2526. IMFVideoMediaType *This);
  2527. ULONG (STDMETHODCALLTYPE *Release)(
  2528. IMFVideoMediaType *This);
  2529. /*** IMFAttributes methods ***/
  2530. HRESULT (STDMETHODCALLTYPE *GetItem)(
  2531. IMFVideoMediaType *This,
  2532. REFGUID guidKey,
  2533. PROPVARIANT *pValue);
  2534. HRESULT (STDMETHODCALLTYPE *GetItemType)(
  2535. IMFVideoMediaType *This,
  2536. REFGUID guidKey,
  2537. MF_ATTRIBUTE_TYPE *pType);
  2538. HRESULT (STDMETHODCALLTYPE *CompareItem)(
  2539. IMFVideoMediaType *This,
  2540. REFGUID guidKey,
  2541. REFPROPVARIANT Value,
  2542. WINBOOL *pbResult);
  2543. HRESULT (STDMETHODCALLTYPE *Compare)(
  2544. IMFVideoMediaType *This,
  2545. IMFAttributes *pTheirs,
  2546. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  2547. WINBOOL *pbResult);
  2548. HRESULT (STDMETHODCALLTYPE *GetUINT32)(
  2549. IMFVideoMediaType *This,
  2550. REFGUID guidKey,
  2551. UINT32 *punValue);
  2552. HRESULT (STDMETHODCALLTYPE *GetUINT64)(
  2553. IMFVideoMediaType *This,
  2554. REFGUID guidKey,
  2555. UINT64 *punValue);
  2556. HRESULT (STDMETHODCALLTYPE *GetDouble)(
  2557. IMFVideoMediaType *This,
  2558. REFGUID guidKey,
  2559. double *pfValue);
  2560. HRESULT (STDMETHODCALLTYPE *GetGUID)(
  2561. IMFVideoMediaType *This,
  2562. REFGUID guidKey,
  2563. GUID *pguidValue);
  2564. HRESULT (STDMETHODCALLTYPE *GetStringLength)(
  2565. IMFVideoMediaType *This,
  2566. REFGUID guidKey,
  2567. UINT32 *pcchLength);
  2568. HRESULT (STDMETHODCALLTYPE *GetString)(
  2569. IMFVideoMediaType *This,
  2570. REFGUID guidKey,
  2571. LPWSTR pwszValue,
  2572. UINT32 cchBufSize,
  2573. UINT32 *pcchLength);
  2574. HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
  2575. IMFVideoMediaType *This,
  2576. REFGUID guidKey,
  2577. LPWSTR *ppwszValue,
  2578. UINT32 *pcchLength);
  2579. HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
  2580. IMFVideoMediaType *This,
  2581. REFGUID guidKey,
  2582. UINT32 *pcbBlobSize);
  2583. HRESULT (STDMETHODCALLTYPE *GetBlob)(
  2584. IMFVideoMediaType *This,
  2585. REFGUID guidKey,
  2586. UINT8 *pBuf,
  2587. UINT32 cbBufSize,
  2588. UINT32 *pcbBlobSize);
  2589. HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
  2590. IMFVideoMediaType *This,
  2591. REFGUID guidKey,
  2592. UINT8 **ppBuf,
  2593. UINT32 *pcbSize);
  2594. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  2595. IMFVideoMediaType *This,
  2596. REFGUID guidKey,
  2597. REFIID riid,
  2598. LPVOID *ppv);
  2599. HRESULT (STDMETHODCALLTYPE *SetItem)(
  2600. IMFVideoMediaType *This,
  2601. REFGUID guidKey,
  2602. REFPROPVARIANT Value);
  2603. HRESULT (STDMETHODCALLTYPE *DeleteItem)(
  2604. IMFVideoMediaType *This,
  2605. REFGUID guidKey);
  2606. HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
  2607. IMFVideoMediaType *This);
  2608. HRESULT (STDMETHODCALLTYPE *SetUINT32)(
  2609. IMFVideoMediaType *This,
  2610. REFGUID guidKey,
  2611. UINT32 unValue);
  2612. HRESULT (STDMETHODCALLTYPE *SetUINT64)(
  2613. IMFVideoMediaType *This,
  2614. REFGUID guidKey,
  2615. UINT64 unValue);
  2616. HRESULT (STDMETHODCALLTYPE *SetDouble)(
  2617. IMFVideoMediaType *This,
  2618. REFGUID guidKey,
  2619. double fValue);
  2620. HRESULT (STDMETHODCALLTYPE *SetGUID)(
  2621. IMFVideoMediaType *This,
  2622. REFGUID guidKey,
  2623. REFGUID guidValue);
  2624. HRESULT (STDMETHODCALLTYPE *SetString)(
  2625. IMFVideoMediaType *This,
  2626. REFGUID guidKey,
  2627. LPCWSTR wszValue);
  2628. HRESULT (STDMETHODCALLTYPE *SetBlob)(
  2629. IMFVideoMediaType *This,
  2630. REFGUID guidKey,
  2631. const UINT8 *pBuf,
  2632. UINT32 cbBufSize);
  2633. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  2634. IMFVideoMediaType *This,
  2635. REFGUID guidKey,
  2636. IUnknown *pUnknown);
  2637. HRESULT (STDMETHODCALLTYPE *LockStore)(
  2638. IMFVideoMediaType *This);
  2639. HRESULT (STDMETHODCALLTYPE *UnlockStore)(
  2640. IMFVideoMediaType *This);
  2641. HRESULT (STDMETHODCALLTYPE *GetCount)(
  2642. IMFVideoMediaType *This,
  2643. UINT32 *pcItems);
  2644. HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
  2645. IMFVideoMediaType *This,
  2646. UINT32 unIndex,
  2647. GUID *pguidKey,
  2648. PROPVARIANT *pValue);
  2649. HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
  2650. IMFVideoMediaType *This,
  2651. IMFAttributes *pDest);
  2652. /*** IMFMediaType methods ***/
  2653. HRESULT (STDMETHODCALLTYPE *GetMajorType)(
  2654. IMFVideoMediaType *This,
  2655. GUID *pguidMajorType);
  2656. HRESULT (STDMETHODCALLTYPE *IsCompressedFormat)(
  2657. IMFVideoMediaType *This,
  2658. WINBOOL *pfCompressed);
  2659. HRESULT (STDMETHODCALLTYPE *IsEqual)(
  2660. IMFVideoMediaType *This,
  2661. IMFMediaType *pIMediaType,
  2662. DWORD *pdwFlags);
  2663. HRESULT (STDMETHODCALLTYPE *GetRepresentation)(
  2664. IMFVideoMediaType *This,
  2665. GUID guidRepresentation,
  2666. LPVOID *ppvRepresentation);
  2667. HRESULT (STDMETHODCALLTYPE *FreeRepresentation)(
  2668. IMFVideoMediaType *This,
  2669. GUID guidRepresentation,
  2670. LPVOID pvRepresentation);
  2671. /*** IMFVideoMediaType methods ***/
  2672. const MFVIDEOFORMAT * (STDMETHODCALLTYPE *GetVideoFormat)(
  2673. IMFVideoMediaType *This);
  2674. HRESULT (STDMETHODCALLTYPE *GetVideoRepresentation)(
  2675. IMFVideoMediaType *This,
  2676. GUID guidRepresentation,
  2677. LPVOID *ppvRepresentation,
  2678. LONG lStride);
  2679. END_INTERFACE
  2680. } IMFVideoMediaTypeVtbl;
  2681. interface IMFVideoMediaType {
  2682. CONST_VTBL IMFVideoMediaTypeVtbl* lpVtbl;
  2683. };
  2684. #ifdef COBJMACROS
  2685. #ifndef WIDL_C_INLINE_WRAPPERS
  2686. /*** IUnknown methods ***/
  2687. #define IMFVideoMediaType_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  2688. #define IMFVideoMediaType_AddRef(This) (This)->lpVtbl->AddRef(This)
  2689. #define IMFVideoMediaType_Release(This) (This)->lpVtbl->Release(This)
  2690. /*** IMFAttributes methods ***/
  2691. #define IMFVideoMediaType_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
  2692. #define IMFVideoMediaType_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
  2693. #define IMFVideoMediaType_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
  2694. #define IMFVideoMediaType_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
  2695. #define IMFVideoMediaType_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
  2696. #define IMFVideoMediaType_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
  2697. #define IMFVideoMediaType_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
  2698. #define IMFVideoMediaType_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
  2699. #define IMFVideoMediaType_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
  2700. #define IMFVideoMediaType_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
  2701. #define IMFVideoMediaType_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
  2702. #define IMFVideoMediaType_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
  2703. #define IMFVideoMediaType_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
  2704. #define IMFVideoMediaType_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
  2705. #define IMFVideoMediaType_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
  2706. #define IMFVideoMediaType_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
  2707. #define IMFVideoMediaType_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
  2708. #define IMFVideoMediaType_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
  2709. #define IMFVideoMediaType_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
  2710. #define IMFVideoMediaType_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
  2711. #define IMFVideoMediaType_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
  2712. #define IMFVideoMediaType_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
  2713. #define IMFVideoMediaType_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
  2714. #define IMFVideoMediaType_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
  2715. #define IMFVideoMediaType_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
  2716. #define IMFVideoMediaType_LockStore(This) (This)->lpVtbl->LockStore(This)
  2717. #define IMFVideoMediaType_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
  2718. #define IMFVideoMediaType_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
  2719. #define IMFVideoMediaType_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
  2720. #define IMFVideoMediaType_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
  2721. /*** IMFMediaType methods ***/
  2722. #define IMFVideoMediaType_GetMajorType(This,pguidMajorType) (This)->lpVtbl->GetMajorType(This,pguidMajorType)
  2723. #define IMFVideoMediaType_IsCompressedFormat(This,pfCompressed) (This)->lpVtbl->IsCompressedFormat(This,pfCompressed)
  2724. #define IMFVideoMediaType_IsEqual(This,pIMediaType,pdwFlags) (This)->lpVtbl->IsEqual(This,pIMediaType,pdwFlags)
  2725. #define IMFVideoMediaType_GetRepresentation(This,guidRepresentation,ppvRepresentation) (This)->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation)
  2726. #define IMFVideoMediaType_FreeRepresentation(This,guidRepresentation,pvRepresentation) (This)->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation)
  2727. /*** IMFVideoMediaType methods ***/
  2728. #define IMFVideoMediaType_GetVideoFormat(This) (This)->lpVtbl->GetVideoFormat(This)
  2729. #define IMFVideoMediaType_GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride) (This)->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride)
  2730. #else
  2731. /*** IUnknown methods ***/
  2732. static FORCEINLINE HRESULT IMFVideoMediaType_QueryInterface(IMFVideoMediaType* This,REFIID riid,void **ppvObject) {
  2733. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  2734. }
  2735. static FORCEINLINE ULONG IMFVideoMediaType_AddRef(IMFVideoMediaType* This) {
  2736. return This->lpVtbl->AddRef(This);
  2737. }
  2738. static FORCEINLINE ULONG IMFVideoMediaType_Release(IMFVideoMediaType* This) {
  2739. return This->lpVtbl->Release(This);
  2740. }
  2741. /*** IMFAttributes methods ***/
  2742. static FORCEINLINE HRESULT IMFVideoMediaType_GetItem(IMFVideoMediaType* This,REFGUID guidKey,PROPVARIANT *pValue) {
  2743. return This->lpVtbl->GetItem(This,guidKey,pValue);
  2744. }
  2745. static FORCEINLINE HRESULT IMFVideoMediaType_GetItemType(IMFVideoMediaType* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
  2746. return This->lpVtbl->GetItemType(This,guidKey,pType);
  2747. }
  2748. static FORCEINLINE HRESULT IMFVideoMediaType_CompareItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
  2749. return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
  2750. }
  2751. static FORCEINLINE HRESULT IMFVideoMediaType_Compare(IMFVideoMediaType* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
  2752. return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
  2753. }
  2754. static FORCEINLINE HRESULT IMFVideoMediaType_GetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *punValue) {
  2755. return This->lpVtbl->GetUINT32(This,guidKey,punValue);
  2756. }
  2757. static FORCEINLINE HRESULT IMFVideoMediaType_GetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 *punValue) {
  2758. return This->lpVtbl->GetUINT64(This,guidKey,punValue);
  2759. }
  2760. static FORCEINLINE HRESULT IMFVideoMediaType_GetDouble(IMFVideoMediaType* This,REFGUID guidKey,double *pfValue) {
  2761. return This->lpVtbl->GetDouble(This,guidKey,pfValue);
  2762. }
  2763. static FORCEINLINE HRESULT IMFVideoMediaType_GetGUID(IMFVideoMediaType* This,REFGUID guidKey,GUID *pguidValue) {
  2764. return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
  2765. }
  2766. static FORCEINLINE HRESULT IMFVideoMediaType_GetStringLength(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcchLength) {
  2767. return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
  2768. }
  2769. static FORCEINLINE HRESULT IMFVideoMediaType_GetString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
  2770. return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
  2771. }
  2772. static FORCEINLINE HRESULT IMFVideoMediaType_GetAllocatedString(IMFVideoMediaType* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
  2773. return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
  2774. }
  2775. static FORCEINLINE HRESULT IMFVideoMediaType_GetBlobSize(IMFVideoMediaType* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
  2776. return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
  2777. }
  2778. static FORCEINLINE HRESULT IMFVideoMediaType_GetBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
  2779. return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
  2780. }
  2781. static FORCEINLINE HRESULT IMFVideoMediaType_GetAllocatedBlob(IMFVideoMediaType* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
  2782. return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
  2783. }
  2784. static FORCEINLINE HRESULT IMFVideoMediaType_GetUnknown(IMFVideoMediaType* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
  2785. return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
  2786. }
  2787. static FORCEINLINE HRESULT IMFVideoMediaType_SetItem(IMFVideoMediaType* This,REFGUID guidKey,REFPROPVARIANT Value) {
  2788. return This->lpVtbl->SetItem(This,guidKey,Value);
  2789. }
  2790. static FORCEINLINE HRESULT IMFVideoMediaType_DeleteItem(IMFVideoMediaType* This,REFGUID guidKey) {
  2791. return This->lpVtbl->DeleteItem(This,guidKey);
  2792. }
  2793. static FORCEINLINE HRESULT IMFVideoMediaType_DeleteAllItems(IMFVideoMediaType* This) {
  2794. return This->lpVtbl->DeleteAllItems(This);
  2795. }
  2796. static FORCEINLINE HRESULT IMFVideoMediaType_SetUINT32(IMFVideoMediaType* This,REFGUID guidKey,UINT32 unValue) {
  2797. return This->lpVtbl->SetUINT32(This,guidKey,unValue);
  2798. }
  2799. static FORCEINLINE HRESULT IMFVideoMediaType_SetUINT64(IMFVideoMediaType* This,REFGUID guidKey,UINT64 unValue) {
  2800. return This->lpVtbl->SetUINT64(This,guidKey,unValue);
  2801. }
  2802. static FORCEINLINE HRESULT IMFVideoMediaType_SetDouble(IMFVideoMediaType* This,REFGUID guidKey,double fValue) {
  2803. return This->lpVtbl->SetDouble(This,guidKey,fValue);
  2804. }
  2805. static FORCEINLINE HRESULT IMFVideoMediaType_SetGUID(IMFVideoMediaType* This,REFGUID guidKey,REFGUID guidValue) {
  2806. return This->lpVtbl->SetGUID(This,guidKey,guidValue);
  2807. }
  2808. static FORCEINLINE HRESULT IMFVideoMediaType_SetString(IMFVideoMediaType* This,REFGUID guidKey,LPCWSTR wszValue) {
  2809. return This->lpVtbl->SetString(This,guidKey,wszValue);
  2810. }
  2811. static FORCEINLINE HRESULT IMFVideoMediaType_SetBlob(IMFVideoMediaType* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
  2812. return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
  2813. }
  2814. static FORCEINLINE HRESULT IMFVideoMediaType_SetUnknown(IMFVideoMediaType* This,REFGUID guidKey,IUnknown *pUnknown) {
  2815. return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
  2816. }
  2817. static FORCEINLINE HRESULT IMFVideoMediaType_LockStore(IMFVideoMediaType* This) {
  2818. return This->lpVtbl->LockStore(This);
  2819. }
  2820. static FORCEINLINE HRESULT IMFVideoMediaType_UnlockStore(IMFVideoMediaType* This) {
  2821. return This->lpVtbl->UnlockStore(This);
  2822. }
  2823. static FORCEINLINE HRESULT IMFVideoMediaType_GetCount(IMFVideoMediaType* This,UINT32 *pcItems) {
  2824. return This->lpVtbl->GetCount(This,pcItems);
  2825. }
  2826. static FORCEINLINE HRESULT IMFVideoMediaType_GetItemByIndex(IMFVideoMediaType* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
  2827. return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
  2828. }
  2829. static FORCEINLINE HRESULT IMFVideoMediaType_CopyAllItems(IMFVideoMediaType* This,IMFAttributes *pDest) {
  2830. return This->lpVtbl->CopyAllItems(This,pDest);
  2831. }
  2832. /*** IMFMediaType methods ***/
  2833. static FORCEINLINE HRESULT IMFVideoMediaType_GetMajorType(IMFVideoMediaType* This,GUID *pguidMajorType) {
  2834. return This->lpVtbl->GetMajorType(This,pguidMajorType);
  2835. }
  2836. static FORCEINLINE HRESULT IMFVideoMediaType_IsCompressedFormat(IMFVideoMediaType* This,WINBOOL *pfCompressed) {
  2837. return This->lpVtbl->IsCompressedFormat(This,pfCompressed);
  2838. }
  2839. static FORCEINLINE HRESULT IMFVideoMediaType_IsEqual(IMFVideoMediaType* This,IMFMediaType *pIMediaType,DWORD *pdwFlags) {
  2840. return This->lpVtbl->IsEqual(This,pIMediaType,pdwFlags);
  2841. }
  2842. static FORCEINLINE HRESULT IMFVideoMediaType_GetRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation) {
  2843. return This->lpVtbl->GetRepresentation(This,guidRepresentation,ppvRepresentation);
  2844. }
  2845. static FORCEINLINE HRESULT IMFVideoMediaType_FreeRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID pvRepresentation) {
  2846. return This->lpVtbl->FreeRepresentation(This,guidRepresentation,pvRepresentation);
  2847. }
  2848. /*** IMFVideoMediaType methods ***/
  2849. static FORCEINLINE const MFVIDEOFORMAT * IMFVideoMediaType_GetVideoFormat(IMFVideoMediaType* This) {
  2850. return This->lpVtbl->GetVideoFormat(This);
  2851. }
  2852. static FORCEINLINE HRESULT IMFVideoMediaType_GetVideoRepresentation(IMFVideoMediaType* This,GUID guidRepresentation,LPVOID *ppvRepresentation,LONG lStride) {
  2853. return This->lpVtbl->GetVideoRepresentation(This,guidRepresentation,ppvRepresentation,lStride);
  2854. }
  2855. #endif
  2856. #endif
  2857. #endif
  2858. #endif /* __IMFVideoMediaType_INTERFACE_DEFINED__ */
  2859. #endif
  2860. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  2861. /*****************************************************************************
  2862. * IMFAsyncResult interface
  2863. */
  2864. #ifndef __IMFAsyncResult_INTERFACE_DEFINED__
  2865. #define __IMFAsyncResult_INTERFACE_DEFINED__
  2866. DEFINE_GUID(IID_IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6);
  2867. #if defined(__cplusplus) && !defined(CINTERFACE)
  2868. MIDL_INTERFACE("ac6b7889-0740-4d51-8619-905994a55cc6")
  2869. IMFAsyncResult : public IUnknown
  2870. {
  2871. virtual HRESULT STDMETHODCALLTYPE GetState(
  2872. IUnknown **ppunkState) = 0;
  2873. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  2874. ) = 0;
  2875. virtual HRESULT STDMETHODCALLTYPE SetStatus(
  2876. HRESULT hrStatus) = 0;
  2877. virtual HRESULT STDMETHODCALLTYPE GetObject(
  2878. IUnknown **ppObject) = 0;
  2879. virtual IUnknown * STDMETHODCALLTYPE GetStateNoAddRef(
  2880. ) = 0;
  2881. };
  2882. #ifdef __CRT_UUID_DECL
  2883. __CRT_UUID_DECL(IMFAsyncResult, 0xac6b7889, 0x0740, 0x4d51, 0x86,0x19, 0x90,0x59,0x94,0xa5,0x5c,0xc6)
  2884. #endif
  2885. #else
  2886. typedef struct IMFAsyncResultVtbl {
  2887. BEGIN_INTERFACE
  2888. /*** IUnknown methods ***/
  2889. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  2890. IMFAsyncResult *This,
  2891. REFIID riid,
  2892. void **ppvObject);
  2893. ULONG (STDMETHODCALLTYPE *AddRef)(
  2894. IMFAsyncResult *This);
  2895. ULONG (STDMETHODCALLTYPE *Release)(
  2896. IMFAsyncResult *This);
  2897. /*** IMFAsyncResult methods ***/
  2898. HRESULT (STDMETHODCALLTYPE *GetState)(
  2899. IMFAsyncResult *This,
  2900. IUnknown **ppunkState);
  2901. HRESULT (STDMETHODCALLTYPE *GetStatus)(
  2902. IMFAsyncResult *This);
  2903. HRESULT (STDMETHODCALLTYPE *SetStatus)(
  2904. IMFAsyncResult *This,
  2905. HRESULT hrStatus);
  2906. HRESULT (STDMETHODCALLTYPE *GetObject)(
  2907. IMFAsyncResult *This,
  2908. IUnknown **ppObject);
  2909. IUnknown * (STDMETHODCALLTYPE *GetStateNoAddRef)(
  2910. IMFAsyncResult *This);
  2911. END_INTERFACE
  2912. } IMFAsyncResultVtbl;
  2913. interface IMFAsyncResult {
  2914. CONST_VTBL IMFAsyncResultVtbl* lpVtbl;
  2915. };
  2916. #ifdef COBJMACROS
  2917. #ifndef WIDL_C_INLINE_WRAPPERS
  2918. /*** IUnknown methods ***/
  2919. #define IMFAsyncResult_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  2920. #define IMFAsyncResult_AddRef(This) (This)->lpVtbl->AddRef(This)
  2921. #define IMFAsyncResult_Release(This) (This)->lpVtbl->Release(This)
  2922. /*** IMFAsyncResult methods ***/
  2923. #define IMFAsyncResult_GetState(This,ppunkState) (This)->lpVtbl->GetState(This,ppunkState)
  2924. #define IMFAsyncResult_GetStatus(This) (This)->lpVtbl->GetStatus(This)
  2925. #define IMFAsyncResult_SetStatus(This,hrStatus) (This)->lpVtbl->SetStatus(This,hrStatus)
  2926. #define IMFAsyncResult_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
  2927. #define IMFAsyncResult_GetStateNoAddRef(This) (This)->lpVtbl->GetStateNoAddRef(This)
  2928. #else
  2929. /*** IUnknown methods ***/
  2930. static FORCEINLINE HRESULT IMFAsyncResult_QueryInterface(IMFAsyncResult* This,REFIID riid,void **ppvObject) {
  2931. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  2932. }
  2933. static FORCEINLINE ULONG IMFAsyncResult_AddRef(IMFAsyncResult* This) {
  2934. return This->lpVtbl->AddRef(This);
  2935. }
  2936. static FORCEINLINE ULONG IMFAsyncResult_Release(IMFAsyncResult* This) {
  2937. return This->lpVtbl->Release(This);
  2938. }
  2939. /*** IMFAsyncResult methods ***/
  2940. static FORCEINLINE HRESULT IMFAsyncResult_GetState(IMFAsyncResult* This,IUnknown **ppunkState) {
  2941. return This->lpVtbl->GetState(This,ppunkState);
  2942. }
  2943. static FORCEINLINE HRESULT IMFAsyncResult_GetStatus(IMFAsyncResult* This) {
  2944. return This->lpVtbl->GetStatus(This);
  2945. }
  2946. static FORCEINLINE HRESULT IMFAsyncResult_SetStatus(IMFAsyncResult* This,HRESULT hrStatus) {
  2947. return This->lpVtbl->SetStatus(This,hrStatus);
  2948. }
  2949. static FORCEINLINE HRESULT IMFAsyncResult_GetObject(IMFAsyncResult* This,IUnknown **ppObject) {
  2950. return This->lpVtbl->GetObject(This,ppObject);
  2951. }
  2952. static FORCEINLINE IUnknown * IMFAsyncResult_GetStateNoAddRef(IMFAsyncResult* This) {
  2953. return This->lpVtbl->GetStateNoAddRef(This);
  2954. }
  2955. #endif
  2956. #endif
  2957. #endif
  2958. #endif /* __IMFAsyncResult_INTERFACE_DEFINED__ */
  2959. /*****************************************************************************
  2960. * IMFAsyncCallback interface
  2961. */
  2962. #ifndef __IMFAsyncCallback_INTERFACE_DEFINED__
  2963. #define __IMFAsyncCallback_INTERFACE_DEFINED__
  2964. DEFINE_GUID(IID_IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
  2965. #if defined(__cplusplus) && !defined(CINTERFACE)
  2966. MIDL_INTERFACE("a27003cf-2354-4f2a-8d6a-ab7cff15437e")
  2967. IMFAsyncCallback : public IUnknown
  2968. {
  2969. virtual HRESULT STDMETHODCALLTYPE GetParameters(
  2970. DWORD *pdwFlags,
  2971. DWORD *pdwQueue) = 0;
  2972. virtual HRESULT STDMETHODCALLTYPE Invoke(
  2973. IMFAsyncResult *pAsyncResult) = 0;
  2974. };
  2975. #ifdef __CRT_UUID_DECL
  2976. __CRT_UUID_DECL(IMFAsyncCallback, 0xa27003cf, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
  2977. #endif
  2978. #else
  2979. typedef struct IMFAsyncCallbackVtbl {
  2980. BEGIN_INTERFACE
  2981. /*** IUnknown methods ***/
  2982. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  2983. IMFAsyncCallback *This,
  2984. REFIID riid,
  2985. void **ppvObject);
  2986. ULONG (STDMETHODCALLTYPE *AddRef)(
  2987. IMFAsyncCallback *This);
  2988. ULONG (STDMETHODCALLTYPE *Release)(
  2989. IMFAsyncCallback *This);
  2990. /*** IMFAsyncCallback methods ***/
  2991. HRESULT (STDMETHODCALLTYPE *GetParameters)(
  2992. IMFAsyncCallback *This,
  2993. DWORD *pdwFlags,
  2994. DWORD *pdwQueue);
  2995. HRESULT (STDMETHODCALLTYPE *Invoke)(
  2996. IMFAsyncCallback *This,
  2997. IMFAsyncResult *pAsyncResult);
  2998. END_INTERFACE
  2999. } IMFAsyncCallbackVtbl;
  3000. interface IMFAsyncCallback {
  3001. CONST_VTBL IMFAsyncCallbackVtbl* lpVtbl;
  3002. };
  3003. #ifdef COBJMACROS
  3004. #ifndef WIDL_C_INLINE_WRAPPERS
  3005. /*** IUnknown methods ***/
  3006. #define IMFAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  3007. #define IMFAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
  3008. #define IMFAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
  3009. /*** IMFAsyncCallback methods ***/
  3010. #define IMFAsyncCallback_GetParameters(This,pdwFlags,pdwQueue) (This)->lpVtbl->GetParameters(This,pdwFlags,pdwQueue)
  3011. #define IMFAsyncCallback_Invoke(This,pAsyncResult) (This)->lpVtbl->Invoke(This,pAsyncResult)
  3012. #else
  3013. /*** IUnknown methods ***/
  3014. static FORCEINLINE HRESULT IMFAsyncCallback_QueryInterface(IMFAsyncCallback* This,REFIID riid,void **ppvObject) {
  3015. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  3016. }
  3017. static FORCEINLINE ULONG IMFAsyncCallback_AddRef(IMFAsyncCallback* This) {
  3018. return This->lpVtbl->AddRef(This);
  3019. }
  3020. static FORCEINLINE ULONG IMFAsyncCallback_Release(IMFAsyncCallback* This) {
  3021. return This->lpVtbl->Release(This);
  3022. }
  3023. /*** IMFAsyncCallback methods ***/
  3024. static FORCEINLINE HRESULT IMFAsyncCallback_GetParameters(IMFAsyncCallback* This,DWORD *pdwFlags,DWORD *pdwQueue) {
  3025. return This->lpVtbl->GetParameters(This,pdwFlags,pdwQueue);
  3026. }
  3027. static FORCEINLINE HRESULT IMFAsyncCallback_Invoke(IMFAsyncCallback* This,IMFAsyncResult *pAsyncResult) {
  3028. return This->lpVtbl->Invoke(This,pAsyncResult);
  3029. }
  3030. #endif
  3031. #endif
  3032. #endif
  3033. #endif /* __IMFAsyncCallback_INTERFACE_DEFINED__ */
  3034. #endif
  3035. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  3036. /*****************************************************************************
  3037. * IMFAsyncCallbackLogging interface
  3038. */
  3039. #ifndef __IMFAsyncCallbackLogging_INTERFACE_DEFINED__
  3040. #define __IMFAsyncCallbackLogging_INTERFACE_DEFINED__
  3041. DEFINE_GUID(IID_IMFAsyncCallbackLogging, 0xc7a4dca1, 0xf5f0, 0x47b6, 0xb9,0x2b, 0xbf,0x01,0x06,0xd2,0x57,0x91);
  3042. #if defined(__cplusplus) && !defined(CINTERFACE)
  3043. MIDL_INTERFACE("c7a4dca1-f5f0-47b6-b92b-bf0106d25791")
  3044. IMFAsyncCallbackLogging : public IMFAsyncCallback
  3045. {
  3046. virtual void * STDMETHODCALLTYPE GetObjectPointer(
  3047. ) = 0;
  3048. virtual DWORD STDMETHODCALLTYPE GetObjectTag(
  3049. ) = 0;
  3050. };
  3051. #ifdef __CRT_UUID_DECL
  3052. __CRT_UUID_DECL(IMFAsyncCallbackLogging, 0xc7a4dca1, 0xf5f0, 0x47b6, 0xb9,0x2b, 0xbf,0x01,0x06,0xd2,0x57,0x91)
  3053. #endif
  3054. #else
  3055. typedef struct IMFAsyncCallbackLoggingVtbl {
  3056. BEGIN_INTERFACE
  3057. /*** IUnknown methods ***/
  3058. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  3059. IMFAsyncCallbackLogging *This,
  3060. REFIID riid,
  3061. void **ppvObject);
  3062. ULONG (STDMETHODCALLTYPE *AddRef)(
  3063. IMFAsyncCallbackLogging *This);
  3064. ULONG (STDMETHODCALLTYPE *Release)(
  3065. IMFAsyncCallbackLogging *This);
  3066. /*** IMFAsyncCallback methods ***/
  3067. HRESULT (STDMETHODCALLTYPE *GetParameters)(
  3068. IMFAsyncCallbackLogging *This,
  3069. DWORD *pdwFlags,
  3070. DWORD *pdwQueue);
  3071. HRESULT (STDMETHODCALLTYPE *Invoke)(
  3072. IMFAsyncCallbackLogging *This,
  3073. IMFAsyncResult *pAsyncResult);
  3074. /*** IMFAsyncCallbackLogging methods ***/
  3075. void * (STDMETHODCALLTYPE *GetObjectPointer)(
  3076. IMFAsyncCallbackLogging *This);
  3077. DWORD (STDMETHODCALLTYPE *GetObjectTag)(
  3078. IMFAsyncCallbackLogging *This);
  3079. END_INTERFACE
  3080. } IMFAsyncCallbackLoggingVtbl;
  3081. interface IMFAsyncCallbackLogging {
  3082. CONST_VTBL IMFAsyncCallbackLoggingVtbl* lpVtbl;
  3083. };
  3084. #ifdef COBJMACROS
  3085. #ifndef WIDL_C_INLINE_WRAPPERS
  3086. /*** IUnknown methods ***/
  3087. #define IMFAsyncCallbackLogging_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  3088. #define IMFAsyncCallbackLogging_AddRef(This) (This)->lpVtbl->AddRef(This)
  3089. #define IMFAsyncCallbackLogging_Release(This) (This)->lpVtbl->Release(This)
  3090. /*** IMFAsyncCallback methods ***/
  3091. #define IMFAsyncCallbackLogging_GetParameters(This,pdwFlags,pdwQueue) (This)->lpVtbl->GetParameters(This,pdwFlags,pdwQueue)
  3092. #define IMFAsyncCallbackLogging_Invoke(This,pAsyncResult) (This)->lpVtbl->Invoke(This,pAsyncResult)
  3093. /*** IMFAsyncCallbackLogging methods ***/
  3094. #define IMFAsyncCallbackLogging_GetObjectPointer(This) (This)->lpVtbl->GetObjectPointer(This)
  3095. #define IMFAsyncCallbackLogging_GetObjectTag(This) (This)->lpVtbl->GetObjectTag(This)
  3096. #else
  3097. /*** IUnknown methods ***/
  3098. static FORCEINLINE HRESULT IMFAsyncCallbackLogging_QueryInterface(IMFAsyncCallbackLogging* This,REFIID riid,void **ppvObject) {
  3099. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  3100. }
  3101. static FORCEINLINE ULONG IMFAsyncCallbackLogging_AddRef(IMFAsyncCallbackLogging* This) {
  3102. return This->lpVtbl->AddRef(This);
  3103. }
  3104. static FORCEINLINE ULONG IMFAsyncCallbackLogging_Release(IMFAsyncCallbackLogging* This) {
  3105. return This->lpVtbl->Release(This);
  3106. }
  3107. /*** IMFAsyncCallback methods ***/
  3108. static FORCEINLINE HRESULT IMFAsyncCallbackLogging_GetParameters(IMFAsyncCallbackLogging* This,DWORD *pdwFlags,DWORD *pdwQueue) {
  3109. return This->lpVtbl->GetParameters(This,pdwFlags,pdwQueue);
  3110. }
  3111. static FORCEINLINE HRESULT IMFAsyncCallbackLogging_Invoke(IMFAsyncCallbackLogging* This,IMFAsyncResult *pAsyncResult) {
  3112. return This->lpVtbl->Invoke(This,pAsyncResult);
  3113. }
  3114. /*** IMFAsyncCallbackLogging methods ***/
  3115. static FORCEINLINE void * IMFAsyncCallbackLogging_GetObjectPointer(IMFAsyncCallbackLogging* This) {
  3116. return This->lpVtbl->GetObjectPointer(This);
  3117. }
  3118. static FORCEINLINE DWORD IMFAsyncCallbackLogging_GetObjectTag(IMFAsyncCallbackLogging* This) {
  3119. return This->lpVtbl->GetObjectTag(This);
  3120. }
  3121. #endif
  3122. #endif
  3123. #endif
  3124. #endif /* __IMFAsyncCallbackLogging_INTERFACE_DEFINED__ */
  3125. #endif
  3126. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  3127. #define MFASYNC_FAST_IO_PROCESSING_CALLBACK 0x00000001
  3128. #define MFASYNC_SIGNAL_CALLBACK 0x00000002
  3129. #define MFASYNC_BLOCKING_CALLBACK 0x00000004
  3130. #define MFASYNC_REPLY_CALLBACK 0x00000008
  3131. #define MFASYNC_LOCALIZE_REMOTE_CALLBACK 0x00000010
  3132. #define MFASYNC_CALLBACK_QUEUE_UNDEFINED 0x00000000
  3133. #define MFASYNC_CALLBACK_QUEUE_STANDARD 0x00000001
  3134. #define MFASYNC_CALLBACK_QUEUE_RT 0x00000002
  3135. #define MFASYNC_CALLBACK_QUEUE_IO 0x00000003
  3136. #define MFASYNC_CALLBACK_QUEUE_TIMER 0x00000004
  3137. #define MFASYNC_CALLBACK_QUEUE_MULTITHREADED 0x00000005
  3138. #define MFASYNC_CALLBACK_QUEUE_LONG_FUNCTION 0x00000007
  3139. #define MFASYNC_CALLBACK_QUEUE_PRIVATE_MASK 0xFFFF0000
  3140. #define MFASYNC_CALLBACK_QUEUE_ALL 0xFFFFFFFF
  3141. enum {
  3142. MEUnknown = 0,
  3143. MEError = 1,
  3144. MEExtendedType = 2,
  3145. MENonFatalError = 3,
  3146. MEGenericV1Anchor = MENonFatalError,
  3147. MESessionUnknown = 100,
  3148. MESessionTopologySet = 101,
  3149. MESessionTopologiesCleared = 102,
  3150. MESessionStarted = 103,
  3151. MESessionPaused = 104,
  3152. MESessionStopped = 105,
  3153. MESessionClosed = 106,
  3154. MESessionEnded = 107,
  3155. MESessionRateChanged = 108,
  3156. MESessionScrubSampleComplete = 109,
  3157. MESessionCapabilitiesChanged = 110,
  3158. MESessionTopologyStatus = 111,
  3159. MESessionNotifyPresentationTime = 112,
  3160. MENewPresentation = 113,
  3161. MELicenseAcquisitionStart = 114,
  3162. MELicenseAcquisitionCompleted = 115,
  3163. MEIndividualizationStart = 116,
  3164. MEIndividualizationCompleted = 117,
  3165. MEEnablerProgress = 118,
  3166. MEEnablerCompleted = 119,
  3167. MEPolicyError = 120,
  3168. MEPolicyReport = 121,
  3169. MEBufferingStarted = 122,
  3170. MEBufferingStopped = 123,
  3171. MEConnectStart = 124,
  3172. MEConnectEnd = 125,
  3173. MEReconnectStart = 126,
  3174. MEReconnectEnd = 127,
  3175. MERendererEvent = 128,
  3176. MESessionStreamSinkFormatChanged = 129,
  3177. MESessionV1Anchor = MESessionStreamSinkFormatChanged,
  3178. MESourceUnknown = 200,
  3179. MESourceStarted = 201,
  3180. MEStreamStarted = 202,
  3181. MESourceSeeked = 203,
  3182. MEStreamSeeked = 204,
  3183. MENewStream = 205,
  3184. MEUpdatedStream = 206,
  3185. MESourceStopped = 207,
  3186. MEStreamStopped = 208,
  3187. MESourcePaused = 209,
  3188. MEStreamPaused = 210,
  3189. MEEndOfPresentation = 211,
  3190. MEEndOfStream = 212,
  3191. MEMediaSample = 213,
  3192. MEStreamTick = 214,
  3193. MEStreamThinMode = 215,
  3194. MEStreamFormatChanged = 216,
  3195. MESourceRateChanged = 217,
  3196. MEEndOfPresentationSegment = 218,
  3197. MESourceCharacteristicsChanged = 219,
  3198. MESourceRateChangeRequested = 220,
  3199. MESourceMetadataChanged = 221,
  3200. MESequencerSourceTopologyUpdated = 222,
  3201. MESourceV1Anchor = MESequencerSourceTopologyUpdated,
  3202. MESinkUnknown = 300,
  3203. MEStreamSinkStarted = 301,
  3204. MEStreamSinkStopped = 302,
  3205. MEStreamSinkPaused = 303,
  3206. MEStreamSinkRateChanged = 304,
  3207. MEStreamSinkRequestSample = 305,
  3208. MEStreamSinkMarker = 306,
  3209. MEStreamSinkPrerolled = 307,
  3210. MEStreamSinkScrubSampleComplete = 308,
  3211. MEStreamSinkFormatChanged = 309,
  3212. MEStreamSinkDeviceChanged = 310,
  3213. MEQualityNotify = 311,
  3214. MESinkInvalidated = 312,
  3215. MEAudioSessionNameChanged = 313,
  3216. MEAudioSessionVolumeChanged = 314,
  3217. MEAudioSessionDeviceRemoved = 315,
  3218. MEAudioSessionServerShutdown = 316,
  3219. MEAudioSessionGroupingParamChanged = 317,
  3220. MEAudioSessionIconChanged = 318,
  3221. MEAudioSessionFormatChanged = 319,
  3222. MEAudioSessionDisconnected = 320,
  3223. MEAudioSessionExclusiveModeOverride = 321,
  3224. MESinkV1Anchor = MEAudioSessionExclusiveModeOverride,
  3225. MECaptureAudioSessionVolumeChanged = 322,
  3226. MECaptureAudioSessionDeviceRemoved = 323,
  3227. MECaptureAudioSessionFormatChanged = 324,
  3228. MECaptureAudioSessionDisconnected = 325,
  3229. MECaptureAudioSessionExclusiveModeOverride = 326,
  3230. MECaptureAudioSessionServerShutdown = 327,
  3231. MESinkV2Anchor = MECaptureAudioSessionServerShutdown,
  3232. METrustUnknown = 400,
  3233. MEPolicyChanged = 401,
  3234. MEContentProtectionMessage = 402,
  3235. MEPolicySet = 403,
  3236. METrustV1Anchor = MEPolicySet,
  3237. MEWMDRMLicenseBackupCompleted = 500,
  3238. MEWMDRMLicenseBackupProgress = 501,
  3239. MEWMDRMLicenseRestoreCompleted = 502,
  3240. MEWMDRMLicenseRestoreProgress = 503,
  3241. MEWMDRMLicenseAcquisitionCompleted = 506,
  3242. MEWMDRMIndividualizationCompleted = 508,
  3243. MEWMDRMIndividualizationProgress = 513,
  3244. MEWMDRMProximityCompleted = 514,
  3245. MEWMDRMLicenseStoreCleaned = 515,
  3246. MEWMDRMRevocationDownloadCompleted = 516,
  3247. MEWMDRMV1Anchor = MEWMDRMRevocationDownloadCompleted,
  3248. METransformUnknown = 600,
  3249. METransformNeedInput = 601,
  3250. METransformHaveOutput = 602,
  3251. METransformDrainComplete = 603,
  3252. METransformMarker = 604,
  3253. METransformInputStreamStateChanged = 605,
  3254. MEByteStreamCharacteristicsChanged = 700,
  3255. MEVideoCaptureDeviceRemoved = 800,
  3256. MEVideoCaptureDevicePreempted = 801,
  3257. MEStreamSinkFormatInvalidated = 802,
  3258. MEEncodingParameters = 803,
  3259. MEContentProtectionMetadata = 900,
  3260. MEDeviceThermalStateChanged = 950,
  3261. MEReservedMax = 10000
  3262. };
  3263. typedef DWORD MediaEventType;
  3264. /*****************************************************************************
  3265. * IMFMediaEvent interface
  3266. */
  3267. #ifndef __IMFMediaEvent_INTERFACE_DEFINED__
  3268. #define __IMFMediaEvent_INTERFACE_DEFINED__
  3269. DEFINE_GUID(IID_IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3);
  3270. #if defined(__cplusplus) && !defined(CINTERFACE)
  3271. MIDL_INTERFACE("df598932-f10c-4e39-bba2-c308f101daa3")
  3272. IMFMediaEvent : public IMFAttributes
  3273. {
  3274. virtual HRESULT STDMETHODCALLTYPE GetType(
  3275. MediaEventType *pmet) = 0;
  3276. virtual HRESULT STDMETHODCALLTYPE GetExtendedType(
  3277. GUID *pguidExtendedType) = 0;
  3278. virtual HRESULT STDMETHODCALLTYPE GetStatus(
  3279. HRESULT *phrStatus) = 0;
  3280. virtual HRESULT STDMETHODCALLTYPE GetValue(
  3281. PROPVARIANT *pvValue) = 0;
  3282. };
  3283. #ifdef __CRT_UUID_DECL
  3284. __CRT_UUID_DECL(IMFMediaEvent, 0xdf598932, 0xf10c, 0x4e39, 0xbb,0xa2, 0xc3,0x08,0xf1,0x01,0xda,0xa3)
  3285. #endif
  3286. #else
  3287. typedef struct IMFMediaEventVtbl {
  3288. BEGIN_INTERFACE
  3289. /*** IUnknown methods ***/
  3290. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  3291. IMFMediaEvent *This,
  3292. REFIID riid,
  3293. void **ppvObject);
  3294. ULONG (STDMETHODCALLTYPE *AddRef)(
  3295. IMFMediaEvent *This);
  3296. ULONG (STDMETHODCALLTYPE *Release)(
  3297. IMFMediaEvent *This);
  3298. /*** IMFAttributes methods ***/
  3299. HRESULT (STDMETHODCALLTYPE *GetItem)(
  3300. IMFMediaEvent *This,
  3301. REFGUID guidKey,
  3302. PROPVARIANT *pValue);
  3303. HRESULT (STDMETHODCALLTYPE *GetItemType)(
  3304. IMFMediaEvent *This,
  3305. REFGUID guidKey,
  3306. MF_ATTRIBUTE_TYPE *pType);
  3307. HRESULT (STDMETHODCALLTYPE *CompareItem)(
  3308. IMFMediaEvent *This,
  3309. REFGUID guidKey,
  3310. REFPROPVARIANT Value,
  3311. WINBOOL *pbResult);
  3312. HRESULT (STDMETHODCALLTYPE *Compare)(
  3313. IMFMediaEvent *This,
  3314. IMFAttributes *pTheirs,
  3315. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  3316. WINBOOL *pbResult);
  3317. HRESULT (STDMETHODCALLTYPE *GetUINT32)(
  3318. IMFMediaEvent *This,
  3319. REFGUID guidKey,
  3320. UINT32 *punValue);
  3321. HRESULT (STDMETHODCALLTYPE *GetUINT64)(
  3322. IMFMediaEvent *This,
  3323. REFGUID guidKey,
  3324. UINT64 *punValue);
  3325. HRESULT (STDMETHODCALLTYPE *GetDouble)(
  3326. IMFMediaEvent *This,
  3327. REFGUID guidKey,
  3328. double *pfValue);
  3329. HRESULT (STDMETHODCALLTYPE *GetGUID)(
  3330. IMFMediaEvent *This,
  3331. REFGUID guidKey,
  3332. GUID *pguidValue);
  3333. HRESULT (STDMETHODCALLTYPE *GetStringLength)(
  3334. IMFMediaEvent *This,
  3335. REFGUID guidKey,
  3336. UINT32 *pcchLength);
  3337. HRESULT (STDMETHODCALLTYPE *GetString)(
  3338. IMFMediaEvent *This,
  3339. REFGUID guidKey,
  3340. LPWSTR pwszValue,
  3341. UINT32 cchBufSize,
  3342. UINT32 *pcchLength);
  3343. HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
  3344. IMFMediaEvent *This,
  3345. REFGUID guidKey,
  3346. LPWSTR *ppwszValue,
  3347. UINT32 *pcchLength);
  3348. HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
  3349. IMFMediaEvent *This,
  3350. REFGUID guidKey,
  3351. UINT32 *pcbBlobSize);
  3352. HRESULT (STDMETHODCALLTYPE *GetBlob)(
  3353. IMFMediaEvent *This,
  3354. REFGUID guidKey,
  3355. UINT8 *pBuf,
  3356. UINT32 cbBufSize,
  3357. UINT32 *pcbBlobSize);
  3358. HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
  3359. IMFMediaEvent *This,
  3360. REFGUID guidKey,
  3361. UINT8 **ppBuf,
  3362. UINT32 *pcbSize);
  3363. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  3364. IMFMediaEvent *This,
  3365. REFGUID guidKey,
  3366. REFIID riid,
  3367. LPVOID *ppv);
  3368. HRESULT (STDMETHODCALLTYPE *SetItem)(
  3369. IMFMediaEvent *This,
  3370. REFGUID guidKey,
  3371. REFPROPVARIANT Value);
  3372. HRESULT (STDMETHODCALLTYPE *DeleteItem)(
  3373. IMFMediaEvent *This,
  3374. REFGUID guidKey);
  3375. HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
  3376. IMFMediaEvent *This);
  3377. HRESULT (STDMETHODCALLTYPE *SetUINT32)(
  3378. IMFMediaEvent *This,
  3379. REFGUID guidKey,
  3380. UINT32 unValue);
  3381. HRESULT (STDMETHODCALLTYPE *SetUINT64)(
  3382. IMFMediaEvent *This,
  3383. REFGUID guidKey,
  3384. UINT64 unValue);
  3385. HRESULT (STDMETHODCALLTYPE *SetDouble)(
  3386. IMFMediaEvent *This,
  3387. REFGUID guidKey,
  3388. double fValue);
  3389. HRESULT (STDMETHODCALLTYPE *SetGUID)(
  3390. IMFMediaEvent *This,
  3391. REFGUID guidKey,
  3392. REFGUID guidValue);
  3393. HRESULT (STDMETHODCALLTYPE *SetString)(
  3394. IMFMediaEvent *This,
  3395. REFGUID guidKey,
  3396. LPCWSTR wszValue);
  3397. HRESULT (STDMETHODCALLTYPE *SetBlob)(
  3398. IMFMediaEvent *This,
  3399. REFGUID guidKey,
  3400. const UINT8 *pBuf,
  3401. UINT32 cbBufSize);
  3402. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  3403. IMFMediaEvent *This,
  3404. REFGUID guidKey,
  3405. IUnknown *pUnknown);
  3406. HRESULT (STDMETHODCALLTYPE *LockStore)(
  3407. IMFMediaEvent *This);
  3408. HRESULT (STDMETHODCALLTYPE *UnlockStore)(
  3409. IMFMediaEvent *This);
  3410. HRESULT (STDMETHODCALLTYPE *GetCount)(
  3411. IMFMediaEvent *This,
  3412. UINT32 *pcItems);
  3413. HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
  3414. IMFMediaEvent *This,
  3415. UINT32 unIndex,
  3416. GUID *pguidKey,
  3417. PROPVARIANT *pValue);
  3418. HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
  3419. IMFMediaEvent *This,
  3420. IMFAttributes *pDest);
  3421. /*** IMFMediaEvent methods ***/
  3422. HRESULT (STDMETHODCALLTYPE *GetType)(
  3423. IMFMediaEvent *This,
  3424. MediaEventType *pmet);
  3425. HRESULT (STDMETHODCALLTYPE *GetExtendedType)(
  3426. IMFMediaEvent *This,
  3427. GUID *pguidExtendedType);
  3428. HRESULT (STDMETHODCALLTYPE *GetStatus)(
  3429. IMFMediaEvent *This,
  3430. HRESULT *phrStatus);
  3431. HRESULT (STDMETHODCALLTYPE *GetValue)(
  3432. IMFMediaEvent *This,
  3433. PROPVARIANT *pvValue);
  3434. END_INTERFACE
  3435. } IMFMediaEventVtbl;
  3436. interface IMFMediaEvent {
  3437. CONST_VTBL IMFMediaEventVtbl* lpVtbl;
  3438. };
  3439. #ifdef COBJMACROS
  3440. #ifndef WIDL_C_INLINE_WRAPPERS
  3441. /*** IUnknown methods ***/
  3442. #define IMFMediaEvent_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  3443. #define IMFMediaEvent_AddRef(This) (This)->lpVtbl->AddRef(This)
  3444. #define IMFMediaEvent_Release(This) (This)->lpVtbl->Release(This)
  3445. /*** IMFAttributes methods ***/
  3446. #define IMFMediaEvent_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
  3447. #define IMFMediaEvent_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
  3448. #define IMFMediaEvent_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
  3449. #define IMFMediaEvent_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
  3450. #define IMFMediaEvent_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
  3451. #define IMFMediaEvent_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
  3452. #define IMFMediaEvent_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
  3453. #define IMFMediaEvent_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
  3454. #define IMFMediaEvent_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
  3455. #define IMFMediaEvent_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
  3456. #define IMFMediaEvent_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
  3457. #define IMFMediaEvent_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
  3458. #define IMFMediaEvent_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
  3459. #define IMFMediaEvent_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
  3460. #define IMFMediaEvent_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
  3461. #define IMFMediaEvent_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
  3462. #define IMFMediaEvent_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
  3463. #define IMFMediaEvent_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
  3464. #define IMFMediaEvent_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
  3465. #define IMFMediaEvent_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
  3466. #define IMFMediaEvent_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
  3467. #define IMFMediaEvent_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
  3468. #define IMFMediaEvent_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
  3469. #define IMFMediaEvent_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
  3470. #define IMFMediaEvent_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
  3471. #define IMFMediaEvent_LockStore(This) (This)->lpVtbl->LockStore(This)
  3472. #define IMFMediaEvent_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
  3473. #define IMFMediaEvent_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
  3474. #define IMFMediaEvent_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
  3475. #define IMFMediaEvent_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
  3476. /*** IMFMediaEvent methods ***/
  3477. #define IMFMediaEvent_GetType(This,pmet) (This)->lpVtbl->GetType(This,pmet)
  3478. #define IMFMediaEvent_GetExtendedType(This,pguidExtendedType) (This)->lpVtbl->GetExtendedType(This,pguidExtendedType)
  3479. #define IMFMediaEvent_GetStatus(This,phrStatus) (This)->lpVtbl->GetStatus(This,phrStatus)
  3480. #define IMFMediaEvent_GetValue(This,pvValue) (This)->lpVtbl->GetValue(This,pvValue)
  3481. #else
  3482. /*** IUnknown methods ***/
  3483. static FORCEINLINE HRESULT IMFMediaEvent_QueryInterface(IMFMediaEvent* This,REFIID riid,void **ppvObject) {
  3484. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  3485. }
  3486. static FORCEINLINE ULONG IMFMediaEvent_AddRef(IMFMediaEvent* This) {
  3487. return This->lpVtbl->AddRef(This);
  3488. }
  3489. static FORCEINLINE ULONG IMFMediaEvent_Release(IMFMediaEvent* This) {
  3490. return This->lpVtbl->Release(This);
  3491. }
  3492. /*** IMFAttributes methods ***/
  3493. static FORCEINLINE HRESULT IMFMediaEvent_GetItem(IMFMediaEvent* This,REFGUID guidKey,PROPVARIANT *pValue) {
  3494. return This->lpVtbl->GetItem(This,guidKey,pValue);
  3495. }
  3496. static FORCEINLINE HRESULT IMFMediaEvent_GetItemType(IMFMediaEvent* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
  3497. return This->lpVtbl->GetItemType(This,guidKey,pType);
  3498. }
  3499. static FORCEINLINE HRESULT IMFMediaEvent_CompareItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
  3500. return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
  3501. }
  3502. static FORCEINLINE HRESULT IMFMediaEvent_Compare(IMFMediaEvent* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
  3503. return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
  3504. }
  3505. static FORCEINLINE HRESULT IMFMediaEvent_GetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 *punValue) {
  3506. return This->lpVtbl->GetUINT32(This,guidKey,punValue);
  3507. }
  3508. static FORCEINLINE HRESULT IMFMediaEvent_GetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 *punValue) {
  3509. return This->lpVtbl->GetUINT64(This,guidKey,punValue);
  3510. }
  3511. static FORCEINLINE HRESULT IMFMediaEvent_GetDouble(IMFMediaEvent* This,REFGUID guidKey,double *pfValue) {
  3512. return This->lpVtbl->GetDouble(This,guidKey,pfValue);
  3513. }
  3514. static FORCEINLINE HRESULT IMFMediaEvent_GetGUID(IMFMediaEvent* This,REFGUID guidKey,GUID *pguidValue) {
  3515. return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
  3516. }
  3517. static FORCEINLINE HRESULT IMFMediaEvent_GetStringLength(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcchLength) {
  3518. return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
  3519. }
  3520. static FORCEINLINE HRESULT IMFMediaEvent_GetString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
  3521. return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
  3522. }
  3523. static FORCEINLINE HRESULT IMFMediaEvent_GetAllocatedString(IMFMediaEvent* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
  3524. return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
  3525. }
  3526. static FORCEINLINE HRESULT IMFMediaEvent_GetBlobSize(IMFMediaEvent* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
  3527. return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
  3528. }
  3529. static FORCEINLINE HRESULT IMFMediaEvent_GetBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
  3530. return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
  3531. }
  3532. static FORCEINLINE HRESULT IMFMediaEvent_GetAllocatedBlob(IMFMediaEvent* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
  3533. return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
  3534. }
  3535. static FORCEINLINE HRESULT IMFMediaEvent_GetUnknown(IMFMediaEvent* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
  3536. return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
  3537. }
  3538. static FORCEINLINE HRESULT IMFMediaEvent_SetItem(IMFMediaEvent* This,REFGUID guidKey,REFPROPVARIANT Value) {
  3539. return This->lpVtbl->SetItem(This,guidKey,Value);
  3540. }
  3541. static FORCEINLINE HRESULT IMFMediaEvent_DeleteItem(IMFMediaEvent* This,REFGUID guidKey) {
  3542. return This->lpVtbl->DeleteItem(This,guidKey);
  3543. }
  3544. static FORCEINLINE HRESULT IMFMediaEvent_DeleteAllItems(IMFMediaEvent* This) {
  3545. return This->lpVtbl->DeleteAllItems(This);
  3546. }
  3547. static FORCEINLINE HRESULT IMFMediaEvent_SetUINT32(IMFMediaEvent* This,REFGUID guidKey,UINT32 unValue) {
  3548. return This->lpVtbl->SetUINT32(This,guidKey,unValue);
  3549. }
  3550. static FORCEINLINE HRESULT IMFMediaEvent_SetUINT64(IMFMediaEvent* This,REFGUID guidKey,UINT64 unValue) {
  3551. return This->lpVtbl->SetUINT64(This,guidKey,unValue);
  3552. }
  3553. static FORCEINLINE HRESULT IMFMediaEvent_SetDouble(IMFMediaEvent* This,REFGUID guidKey,double fValue) {
  3554. return This->lpVtbl->SetDouble(This,guidKey,fValue);
  3555. }
  3556. static FORCEINLINE HRESULT IMFMediaEvent_SetGUID(IMFMediaEvent* This,REFGUID guidKey,REFGUID guidValue) {
  3557. return This->lpVtbl->SetGUID(This,guidKey,guidValue);
  3558. }
  3559. static FORCEINLINE HRESULT IMFMediaEvent_SetString(IMFMediaEvent* This,REFGUID guidKey,LPCWSTR wszValue) {
  3560. return This->lpVtbl->SetString(This,guidKey,wszValue);
  3561. }
  3562. static FORCEINLINE HRESULT IMFMediaEvent_SetBlob(IMFMediaEvent* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
  3563. return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
  3564. }
  3565. static FORCEINLINE HRESULT IMFMediaEvent_SetUnknown(IMFMediaEvent* This,REFGUID guidKey,IUnknown *pUnknown) {
  3566. return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
  3567. }
  3568. static FORCEINLINE HRESULT IMFMediaEvent_LockStore(IMFMediaEvent* This) {
  3569. return This->lpVtbl->LockStore(This);
  3570. }
  3571. static FORCEINLINE HRESULT IMFMediaEvent_UnlockStore(IMFMediaEvent* This) {
  3572. return This->lpVtbl->UnlockStore(This);
  3573. }
  3574. static FORCEINLINE HRESULT IMFMediaEvent_GetCount(IMFMediaEvent* This,UINT32 *pcItems) {
  3575. return This->lpVtbl->GetCount(This,pcItems);
  3576. }
  3577. static FORCEINLINE HRESULT IMFMediaEvent_GetItemByIndex(IMFMediaEvent* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
  3578. return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
  3579. }
  3580. static FORCEINLINE HRESULT IMFMediaEvent_CopyAllItems(IMFMediaEvent* This,IMFAttributes *pDest) {
  3581. return This->lpVtbl->CopyAllItems(This,pDest);
  3582. }
  3583. /*** IMFMediaEvent methods ***/
  3584. static FORCEINLINE HRESULT IMFMediaEvent_GetType(IMFMediaEvent* This,MediaEventType *pmet) {
  3585. return This->lpVtbl->GetType(This,pmet);
  3586. }
  3587. static FORCEINLINE HRESULT IMFMediaEvent_GetExtendedType(IMFMediaEvent* This,GUID *pguidExtendedType) {
  3588. return This->lpVtbl->GetExtendedType(This,pguidExtendedType);
  3589. }
  3590. static FORCEINLINE HRESULT IMFMediaEvent_GetStatus(IMFMediaEvent* This,HRESULT *phrStatus) {
  3591. return This->lpVtbl->GetStatus(This,phrStatus);
  3592. }
  3593. static FORCEINLINE HRESULT IMFMediaEvent_GetValue(IMFMediaEvent* This,PROPVARIANT *pvValue) {
  3594. return This->lpVtbl->GetValue(This,pvValue);
  3595. }
  3596. #endif
  3597. #endif
  3598. #endif
  3599. #endif /* __IMFMediaEvent_INTERFACE_DEFINED__ */
  3600. #define MF_EVENT_FLAG_NO_WAIT 0x00000001
  3601. #ifndef __IMFRemoteAsyncCallback_FWD_DEFINED__
  3602. #define __IMFRemoteAsyncCallback_FWD_DEFINED__
  3603. typedef interface IMFRemoteAsyncCallback IMFRemoteAsyncCallback;
  3604. #ifdef __cplusplus
  3605. interface IMFRemoteAsyncCallback;
  3606. #endif /* __cplusplus */
  3607. #endif
  3608. /*****************************************************************************
  3609. * IMFMediaEventGenerator interface
  3610. */
  3611. #ifndef __IMFMediaEventGenerator_INTERFACE_DEFINED__
  3612. #define __IMFMediaEventGenerator_INTERFACE_DEFINED__
  3613. DEFINE_GUID(IID_IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d);
  3614. #if defined(__cplusplus) && !defined(CINTERFACE)
  3615. MIDL_INTERFACE("2cd0bd52-bcd5-4b89-b62c-eadc0c031e7d")
  3616. IMFMediaEventGenerator : public IUnknown
  3617. {
  3618. virtual HRESULT STDMETHODCALLTYPE GetEvent(
  3619. DWORD dwFlags,
  3620. IMFMediaEvent **ppEvent) = 0;
  3621. virtual HRESULT STDMETHODCALLTYPE BeginGetEvent(
  3622. IMFAsyncCallback *pCallback,
  3623. IUnknown *punkState) = 0;
  3624. virtual HRESULT STDMETHODCALLTYPE EndGetEvent(
  3625. IMFAsyncResult *pResult,
  3626. IMFMediaEvent **ppEvent) = 0;
  3627. virtual HRESULT STDMETHODCALLTYPE QueueEvent(
  3628. MediaEventType met,
  3629. REFGUID guidExtendedType,
  3630. HRESULT hrStatus,
  3631. const PROPVARIANT *pvValue) = 0;
  3632. };
  3633. #ifdef __CRT_UUID_DECL
  3634. __CRT_UUID_DECL(IMFMediaEventGenerator, 0x2cd0bd52, 0xbcd5, 0x4b89, 0xb6,0x2c, 0xea,0xdc,0x0c,0x03,0x1e,0x7d)
  3635. #endif
  3636. #else
  3637. typedef struct IMFMediaEventGeneratorVtbl {
  3638. BEGIN_INTERFACE
  3639. /*** IUnknown methods ***/
  3640. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  3641. IMFMediaEventGenerator *This,
  3642. REFIID riid,
  3643. void **ppvObject);
  3644. ULONG (STDMETHODCALLTYPE *AddRef)(
  3645. IMFMediaEventGenerator *This);
  3646. ULONG (STDMETHODCALLTYPE *Release)(
  3647. IMFMediaEventGenerator *This);
  3648. /*** IMFMediaEventGenerator methods ***/
  3649. HRESULT (STDMETHODCALLTYPE *GetEvent)(
  3650. IMFMediaEventGenerator *This,
  3651. DWORD dwFlags,
  3652. IMFMediaEvent **ppEvent);
  3653. HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
  3654. IMFMediaEventGenerator *This,
  3655. IMFAsyncCallback *pCallback,
  3656. IUnknown *punkState);
  3657. HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
  3658. IMFMediaEventGenerator *This,
  3659. IMFAsyncResult *pResult,
  3660. IMFMediaEvent **ppEvent);
  3661. HRESULT (STDMETHODCALLTYPE *QueueEvent)(
  3662. IMFMediaEventGenerator *This,
  3663. MediaEventType met,
  3664. REFGUID guidExtendedType,
  3665. HRESULT hrStatus,
  3666. const PROPVARIANT *pvValue);
  3667. END_INTERFACE
  3668. } IMFMediaEventGeneratorVtbl;
  3669. interface IMFMediaEventGenerator {
  3670. CONST_VTBL IMFMediaEventGeneratorVtbl* lpVtbl;
  3671. };
  3672. #ifdef COBJMACROS
  3673. #ifndef WIDL_C_INLINE_WRAPPERS
  3674. /*** IUnknown methods ***/
  3675. #define IMFMediaEventGenerator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  3676. #define IMFMediaEventGenerator_AddRef(This) (This)->lpVtbl->AddRef(This)
  3677. #define IMFMediaEventGenerator_Release(This) (This)->lpVtbl->Release(This)
  3678. /*** IMFMediaEventGenerator methods ***/
  3679. #define IMFMediaEventGenerator_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
  3680. #define IMFMediaEventGenerator_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
  3681. #define IMFMediaEventGenerator_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
  3682. #define IMFMediaEventGenerator_QueueEvent(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue)
  3683. #else
  3684. /*** IUnknown methods ***/
  3685. static FORCEINLINE HRESULT IMFMediaEventGenerator_QueryInterface(IMFMediaEventGenerator* This,REFIID riid,void **ppvObject) {
  3686. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  3687. }
  3688. static FORCEINLINE ULONG IMFMediaEventGenerator_AddRef(IMFMediaEventGenerator* This) {
  3689. return This->lpVtbl->AddRef(This);
  3690. }
  3691. static FORCEINLINE ULONG IMFMediaEventGenerator_Release(IMFMediaEventGenerator* This) {
  3692. return This->lpVtbl->Release(This);
  3693. }
  3694. /*** IMFMediaEventGenerator methods ***/
  3695. static FORCEINLINE HRESULT IMFMediaEventGenerator_GetEvent(IMFMediaEventGenerator* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
  3696. return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
  3697. }
  3698. static FORCEINLINE HRESULT IMFMediaEventGenerator_BeginGetEvent(IMFMediaEventGenerator* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
  3699. return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
  3700. }
  3701. static FORCEINLINE HRESULT IMFMediaEventGenerator_EndGetEvent(IMFMediaEventGenerator* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
  3702. return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
  3703. }
  3704. static FORCEINLINE HRESULT IMFMediaEventGenerator_QueueEvent(IMFMediaEventGenerator* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
  3705. return This->lpVtbl->QueueEvent(This,met,guidExtendedType,hrStatus,pvValue);
  3706. }
  3707. #endif
  3708. #endif
  3709. #endif
  3710. HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteBeginGetEvent_Proxy(
  3711. IMFMediaEventGenerator* This,
  3712. IMFRemoteAsyncCallback *pCallback);
  3713. void __RPC_STUB IMFMediaEventGenerator_RemoteBeginGetEvent_Stub(
  3714. IRpcStubBuffer* This,
  3715. IRpcChannelBuffer* pRpcChannelBuffer,
  3716. PRPC_MESSAGE pRpcMessage,
  3717. DWORD* pdwStubPhase);
  3718. HRESULT STDMETHODCALLTYPE IMFMediaEventGenerator_RemoteEndGetEvent_Proxy(
  3719. IMFMediaEventGenerator* This,
  3720. IUnknown *pResult,
  3721. DWORD *pcbEvent,
  3722. BYTE **ppbEvent);
  3723. void __RPC_STUB IMFMediaEventGenerator_RemoteEndGetEvent_Stub(
  3724. IRpcStubBuffer* This,
  3725. IRpcChannelBuffer* pRpcChannelBuffer,
  3726. PRPC_MESSAGE pRpcMessage,
  3727. DWORD* pdwStubPhase);
  3728. HRESULT CALLBACK IMFMediaEventGenerator_BeginGetEvent_Proxy(
  3729. IMFMediaEventGenerator* This,
  3730. IMFAsyncCallback *pCallback,
  3731. IUnknown *punkState);
  3732. HRESULT __RPC_STUB IMFMediaEventGenerator_BeginGetEvent_Stub(
  3733. IMFMediaEventGenerator* This,
  3734. IMFRemoteAsyncCallback *pCallback);
  3735. HRESULT CALLBACK IMFMediaEventGenerator_EndGetEvent_Proxy(
  3736. IMFMediaEventGenerator* This,
  3737. IMFAsyncResult *pResult,
  3738. IMFMediaEvent **ppEvent);
  3739. HRESULT __RPC_STUB IMFMediaEventGenerator_EndGetEvent_Stub(
  3740. IMFMediaEventGenerator* This,
  3741. IUnknown *pResult,
  3742. DWORD *pcbEvent,
  3743. BYTE **ppbEvent);
  3744. #endif /* __IMFMediaEventGenerator_INTERFACE_DEFINED__ */
  3745. #endif
  3746. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  3747. /*****************************************************************************
  3748. * IMFRemoteAsyncCallback interface
  3749. */
  3750. #ifndef __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
  3751. #define __IMFRemoteAsyncCallback_INTERFACE_DEFINED__
  3752. DEFINE_GUID(IID_IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e);
  3753. #if defined(__cplusplus) && !defined(CINTERFACE)
  3754. MIDL_INTERFACE("a27003d0-2354-4f2a-8d6a-ab7cff15437e")
  3755. IMFRemoteAsyncCallback : public IUnknown
  3756. {
  3757. virtual HRESULT STDMETHODCALLTYPE Invoke(
  3758. HRESULT hr,
  3759. IUnknown *pRemoteResult) = 0;
  3760. };
  3761. #ifdef __CRT_UUID_DECL
  3762. __CRT_UUID_DECL(IMFRemoteAsyncCallback, 0xa27003d0, 0x2354, 0x4f2a, 0x8d,0x6a, 0xab,0x7c,0xff,0x15,0x43,0x7e)
  3763. #endif
  3764. #else
  3765. typedef struct IMFRemoteAsyncCallbackVtbl {
  3766. BEGIN_INTERFACE
  3767. /*** IUnknown methods ***/
  3768. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  3769. IMFRemoteAsyncCallback *This,
  3770. REFIID riid,
  3771. void **ppvObject);
  3772. ULONG (STDMETHODCALLTYPE *AddRef)(
  3773. IMFRemoteAsyncCallback *This);
  3774. ULONG (STDMETHODCALLTYPE *Release)(
  3775. IMFRemoteAsyncCallback *This);
  3776. /*** IMFRemoteAsyncCallback methods ***/
  3777. HRESULT (STDMETHODCALLTYPE *Invoke)(
  3778. IMFRemoteAsyncCallback *This,
  3779. HRESULT hr,
  3780. IUnknown *pRemoteResult);
  3781. END_INTERFACE
  3782. } IMFRemoteAsyncCallbackVtbl;
  3783. interface IMFRemoteAsyncCallback {
  3784. CONST_VTBL IMFRemoteAsyncCallbackVtbl* lpVtbl;
  3785. };
  3786. #ifdef COBJMACROS
  3787. #ifndef WIDL_C_INLINE_WRAPPERS
  3788. /*** IUnknown methods ***/
  3789. #define IMFRemoteAsyncCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  3790. #define IMFRemoteAsyncCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
  3791. #define IMFRemoteAsyncCallback_Release(This) (This)->lpVtbl->Release(This)
  3792. /*** IMFRemoteAsyncCallback methods ***/
  3793. #define IMFRemoteAsyncCallback_Invoke(This,hr,pRemoteResult) (This)->lpVtbl->Invoke(This,hr,pRemoteResult)
  3794. #else
  3795. /*** IUnknown methods ***/
  3796. static FORCEINLINE HRESULT IMFRemoteAsyncCallback_QueryInterface(IMFRemoteAsyncCallback* This,REFIID riid,void **ppvObject) {
  3797. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  3798. }
  3799. static FORCEINLINE ULONG IMFRemoteAsyncCallback_AddRef(IMFRemoteAsyncCallback* This) {
  3800. return This->lpVtbl->AddRef(This);
  3801. }
  3802. static FORCEINLINE ULONG IMFRemoteAsyncCallback_Release(IMFRemoteAsyncCallback* This) {
  3803. return This->lpVtbl->Release(This);
  3804. }
  3805. /*** IMFRemoteAsyncCallback methods ***/
  3806. static FORCEINLINE HRESULT IMFRemoteAsyncCallback_Invoke(IMFRemoteAsyncCallback* This,HRESULT hr,IUnknown *pRemoteResult) {
  3807. return This->lpVtbl->Invoke(This,hr,pRemoteResult);
  3808. }
  3809. #endif
  3810. #endif
  3811. #endif
  3812. #endif /* __IMFRemoteAsyncCallback_INTERFACE_DEFINED__ */
  3813. #endif
  3814. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  3815. typedef enum _MFBYTESTREAM_SEEK_ORIGIN {
  3816. msoBegin = 0,
  3817. msoCurrent = 1
  3818. } MFBYTESTREAM_SEEK_ORIGIN;
  3819. /*****************************************************************************
  3820. * IMFByteStream interface
  3821. */
  3822. #ifndef __IMFByteStream_INTERFACE_DEFINED__
  3823. #define __IMFByteStream_INTERFACE_DEFINED__
  3824. DEFINE_GUID(IID_IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d);
  3825. #if defined(__cplusplus) && !defined(CINTERFACE)
  3826. MIDL_INTERFACE("ad4c1b00-4bf7-422f-9175-756693d9130d")
  3827. IMFByteStream : public IUnknown
  3828. {
  3829. virtual HRESULT STDMETHODCALLTYPE GetCapabilities(
  3830. DWORD *pdwCapabilities) = 0;
  3831. virtual HRESULT STDMETHODCALLTYPE GetLength(
  3832. QWORD *pqwLength) = 0;
  3833. virtual HRESULT STDMETHODCALLTYPE SetLength(
  3834. QWORD qwLength) = 0;
  3835. virtual HRESULT STDMETHODCALLTYPE GetCurrentPosition(
  3836. QWORD *pqwPosition) = 0;
  3837. virtual HRESULT STDMETHODCALLTYPE SetCurrentPosition(
  3838. QWORD qwPosition) = 0;
  3839. virtual HRESULT STDMETHODCALLTYPE IsEndOfStream(
  3840. WINBOOL *pfEndOfStream) = 0;
  3841. virtual HRESULT STDMETHODCALLTYPE Read(
  3842. BYTE *pb,
  3843. ULONG cb,
  3844. ULONG *pcbRead) = 0;
  3845. virtual HRESULT STDMETHODCALLTYPE BeginRead(
  3846. BYTE *pb,
  3847. ULONG cb,
  3848. IMFAsyncCallback *pCallback,
  3849. IUnknown *punkState) = 0;
  3850. virtual HRESULT STDMETHODCALLTYPE EndRead(
  3851. IMFAsyncResult *pResult,
  3852. ULONG *pcbRead) = 0;
  3853. virtual HRESULT STDMETHODCALLTYPE Write(
  3854. const BYTE *pb,
  3855. ULONG cb,
  3856. ULONG *pcbWritten) = 0;
  3857. virtual HRESULT STDMETHODCALLTYPE BeginWrite(
  3858. const BYTE *pb,
  3859. ULONG cb,
  3860. IMFAsyncCallback *pCallback,
  3861. IUnknown *punkState) = 0;
  3862. virtual HRESULT STDMETHODCALLTYPE EndWrite(
  3863. IMFAsyncResult *pResult,
  3864. ULONG *pcbWritten) = 0;
  3865. virtual HRESULT STDMETHODCALLTYPE Seek(
  3866. MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
  3867. LONGLONG llSeekOffset,
  3868. DWORD dwSeekFlags,
  3869. QWORD *pqwCurrentPosition) = 0;
  3870. virtual HRESULT STDMETHODCALLTYPE Flush(
  3871. ) = 0;
  3872. virtual HRESULT STDMETHODCALLTYPE Close(
  3873. ) = 0;
  3874. };
  3875. #ifdef __CRT_UUID_DECL
  3876. __CRT_UUID_DECL(IMFByteStream, 0xad4c1b00, 0x4bf7, 0x422f, 0x91,0x75, 0x75,0x66,0x93,0xd9,0x13,0x0d)
  3877. #endif
  3878. #else
  3879. typedef struct IMFByteStreamVtbl {
  3880. BEGIN_INTERFACE
  3881. /*** IUnknown methods ***/
  3882. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  3883. IMFByteStream *This,
  3884. REFIID riid,
  3885. void **ppvObject);
  3886. ULONG (STDMETHODCALLTYPE *AddRef)(
  3887. IMFByteStream *This);
  3888. ULONG (STDMETHODCALLTYPE *Release)(
  3889. IMFByteStream *This);
  3890. /*** IMFByteStream methods ***/
  3891. HRESULT (STDMETHODCALLTYPE *GetCapabilities)(
  3892. IMFByteStream *This,
  3893. DWORD *pdwCapabilities);
  3894. HRESULT (STDMETHODCALLTYPE *GetLength)(
  3895. IMFByteStream *This,
  3896. QWORD *pqwLength);
  3897. HRESULT (STDMETHODCALLTYPE *SetLength)(
  3898. IMFByteStream *This,
  3899. QWORD qwLength);
  3900. HRESULT (STDMETHODCALLTYPE *GetCurrentPosition)(
  3901. IMFByteStream *This,
  3902. QWORD *pqwPosition);
  3903. HRESULT (STDMETHODCALLTYPE *SetCurrentPosition)(
  3904. IMFByteStream *This,
  3905. QWORD qwPosition);
  3906. HRESULT (STDMETHODCALLTYPE *IsEndOfStream)(
  3907. IMFByteStream *This,
  3908. WINBOOL *pfEndOfStream);
  3909. HRESULT (STDMETHODCALLTYPE *Read)(
  3910. IMFByteStream *This,
  3911. BYTE *pb,
  3912. ULONG cb,
  3913. ULONG *pcbRead);
  3914. HRESULT (STDMETHODCALLTYPE *BeginRead)(
  3915. IMFByteStream *This,
  3916. BYTE *pb,
  3917. ULONG cb,
  3918. IMFAsyncCallback *pCallback,
  3919. IUnknown *punkState);
  3920. HRESULT (STDMETHODCALLTYPE *EndRead)(
  3921. IMFByteStream *This,
  3922. IMFAsyncResult *pResult,
  3923. ULONG *pcbRead);
  3924. HRESULT (STDMETHODCALLTYPE *Write)(
  3925. IMFByteStream *This,
  3926. const BYTE *pb,
  3927. ULONG cb,
  3928. ULONG *pcbWritten);
  3929. HRESULT (STDMETHODCALLTYPE *BeginWrite)(
  3930. IMFByteStream *This,
  3931. const BYTE *pb,
  3932. ULONG cb,
  3933. IMFAsyncCallback *pCallback,
  3934. IUnknown *punkState);
  3935. HRESULT (STDMETHODCALLTYPE *EndWrite)(
  3936. IMFByteStream *This,
  3937. IMFAsyncResult *pResult,
  3938. ULONG *pcbWritten);
  3939. HRESULT (STDMETHODCALLTYPE *Seek)(
  3940. IMFByteStream *This,
  3941. MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,
  3942. LONGLONG llSeekOffset,
  3943. DWORD dwSeekFlags,
  3944. QWORD *pqwCurrentPosition);
  3945. HRESULT (STDMETHODCALLTYPE *Flush)(
  3946. IMFByteStream *This);
  3947. HRESULT (STDMETHODCALLTYPE *Close)(
  3948. IMFByteStream *This);
  3949. END_INTERFACE
  3950. } IMFByteStreamVtbl;
  3951. interface IMFByteStream {
  3952. CONST_VTBL IMFByteStreamVtbl* lpVtbl;
  3953. };
  3954. #ifdef COBJMACROS
  3955. #ifndef WIDL_C_INLINE_WRAPPERS
  3956. /*** IUnknown methods ***/
  3957. #define IMFByteStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  3958. #define IMFByteStream_AddRef(This) (This)->lpVtbl->AddRef(This)
  3959. #define IMFByteStream_Release(This) (This)->lpVtbl->Release(This)
  3960. /*** IMFByteStream methods ***/
  3961. #define IMFByteStream_GetCapabilities(This,pdwCapabilities) (This)->lpVtbl->GetCapabilities(This,pdwCapabilities)
  3962. #define IMFByteStream_GetLength(This,pqwLength) (This)->lpVtbl->GetLength(This,pqwLength)
  3963. #define IMFByteStream_SetLength(This,qwLength) (This)->lpVtbl->SetLength(This,qwLength)
  3964. #define IMFByteStream_GetCurrentPosition(This,pqwPosition) (This)->lpVtbl->GetCurrentPosition(This,pqwPosition)
  3965. #define IMFByteStream_SetCurrentPosition(This,qwPosition) (This)->lpVtbl->SetCurrentPosition(This,qwPosition)
  3966. #define IMFByteStream_IsEndOfStream(This,pfEndOfStream) (This)->lpVtbl->IsEndOfStream(This,pfEndOfStream)
  3967. #define IMFByteStream_Read(This,pb,cb,pcbRead) (This)->lpVtbl->Read(This,pb,cb,pcbRead)
  3968. #define IMFByteStream_BeginRead(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState)
  3969. #define IMFByteStream_EndRead(This,pResult,pcbRead) (This)->lpVtbl->EndRead(This,pResult,pcbRead)
  3970. #define IMFByteStream_Write(This,pb,cb,pcbWritten) (This)->lpVtbl->Write(This,pb,cb,pcbWritten)
  3971. #define IMFByteStream_BeginWrite(This,pb,cb,pCallback,punkState) (This)->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState)
  3972. #define IMFByteStream_EndWrite(This,pResult,pcbWritten) (This)->lpVtbl->EndWrite(This,pResult,pcbWritten)
  3973. #define IMFByteStream_Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition) (This)->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition)
  3974. #define IMFByteStream_Flush(This) (This)->lpVtbl->Flush(This)
  3975. #define IMFByteStream_Close(This) (This)->lpVtbl->Close(This)
  3976. #else
  3977. /*** IUnknown methods ***/
  3978. static FORCEINLINE HRESULT IMFByteStream_QueryInterface(IMFByteStream* This,REFIID riid,void **ppvObject) {
  3979. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  3980. }
  3981. static FORCEINLINE ULONG IMFByteStream_AddRef(IMFByteStream* This) {
  3982. return This->lpVtbl->AddRef(This);
  3983. }
  3984. static FORCEINLINE ULONG IMFByteStream_Release(IMFByteStream* This) {
  3985. return This->lpVtbl->Release(This);
  3986. }
  3987. /*** IMFByteStream methods ***/
  3988. static FORCEINLINE HRESULT IMFByteStream_GetCapabilities(IMFByteStream* This,DWORD *pdwCapabilities) {
  3989. return This->lpVtbl->GetCapabilities(This,pdwCapabilities);
  3990. }
  3991. static FORCEINLINE HRESULT IMFByteStream_GetLength(IMFByteStream* This,QWORD *pqwLength) {
  3992. return This->lpVtbl->GetLength(This,pqwLength);
  3993. }
  3994. static FORCEINLINE HRESULT IMFByteStream_SetLength(IMFByteStream* This,QWORD qwLength) {
  3995. return This->lpVtbl->SetLength(This,qwLength);
  3996. }
  3997. static FORCEINLINE HRESULT IMFByteStream_GetCurrentPosition(IMFByteStream* This,QWORD *pqwPosition) {
  3998. return This->lpVtbl->GetCurrentPosition(This,pqwPosition);
  3999. }
  4000. static FORCEINLINE HRESULT IMFByteStream_SetCurrentPosition(IMFByteStream* This,QWORD qwPosition) {
  4001. return This->lpVtbl->SetCurrentPosition(This,qwPosition);
  4002. }
  4003. static FORCEINLINE HRESULT IMFByteStream_IsEndOfStream(IMFByteStream* This,WINBOOL *pfEndOfStream) {
  4004. return This->lpVtbl->IsEndOfStream(This,pfEndOfStream);
  4005. }
  4006. static FORCEINLINE HRESULT IMFByteStream_Read(IMFByteStream* This,BYTE *pb,ULONG cb,ULONG *pcbRead) {
  4007. return This->lpVtbl->Read(This,pb,cb,pcbRead);
  4008. }
  4009. static FORCEINLINE HRESULT IMFByteStream_BeginRead(IMFByteStream* This,BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
  4010. return This->lpVtbl->BeginRead(This,pb,cb,pCallback,punkState);
  4011. }
  4012. static FORCEINLINE HRESULT IMFByteStream_EndRead(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbRead) {
  4013. return This->lpVtbl->EndRead(This,pResult,pcbRead);
  4014. }
  4015. static FORCEINLINE HRESULT IMFByteStream_Write(IMFByteStream* This,const BYTE *pb,ULONG cb,ULONG *pcbWritten) {
  4016. return This->lpVtbl->Write(This,pb,cb,pcbWritten);
  4017. }
  4018. static FORCEINLINE HRESULT IMFByteStream_BeginWrite(IMFByteStream* This,const BYTE *pb,ULONG cb,IMFAsyncCallback *pCallback,IUnknown *punkState) {
  4019. return This->lpVtbl->BeginWrite(This,pb,cb,pCallback,punkState);
  4020. }
  4021. static FORCEINLINE HRESULT IMFByteStream_EndWrite(IMFByteStream* This,IMFAsyncResult *pResult,ULONG *pcbWritten) {
  4022. return This->lpVtbl->EndWrite(This,pResult,pcbWritten);
  4023. }
  4024. static FORCEINLINE HRESULT IMFByteStream_Seek(IMFByteStream* This,MFBYTESTREAM_SEEK_ORIGIN SeekOrigin,LONGLONG llSeekOffset,DWORD dwSeekFlags,QWORD *pqwCurrentPosition) {
  4025. return This->lpVtbl->Seek(This,SeekOrigin,llSeekOffset,dwSeekFlags,pqwCurrentPosition);
  4026. }
  4027. static FORCEINLINE HRESULT IMFByteStream_Flush(IMFByteStream* This) {
  4028. return This->lpVtbl->Flush(This);
  4029. }
  4030. static FORCEINLINE HRESULT IMFByteStream_Close(IMFByteStream* This) {
  4031. return This->lpVtbl->Close(This);
  4032. }
  4033. #endif
  4034. #endif
  4035. #endif
  4036. HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteBeginRead_Proxy(
  4037. IMFByteStream* This,
  4038. ULONG cb,
  4039. IMFRemoteAsyncCallback *pCallback);
  4040. void __RPC_STUB IMFByteStream_RemoteBeginRead_Stub(
  4041. IRpcStubBuffer* This,
  4042. IRpcChannelBuffer* pRpcChannelBuffer,
  4043. PRPC_MESSAGE pRpcMessage,
  4044. DWORD* pdwStubPhase);
  4045. HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteEndRead_Proxy(
  4046. IMFByteStream* This,
  4047. IUnknown *punkResult,
  4048. BYTE *pb,
  4049. ULONG cb,
  4050. ULONG *pcbRead);
  4051. void __RPC_STUB IMFByteStream_RemoteEndRead_Stub(
  4052. IRpcStubBuffer* This,
  4053. IRpcChannelBuffer* pRpcChannelBuffer,
  4054. PRPC_MESSAGE pRpcMessage,
  4055. DWORD* pdwStubPhase);
  4056. HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteBeginWrite_Proxy(
  4057. IMFByteStream* This,
  4058. const BYTE *pb,
  4059. ULONG cb,
  4060. IMFRemoteAsyncCallback *pCallback);
  4061. void __RPC_STUB IMFByteStream_RemoteBeginWrite_Stub(
  4062. IRpcStubBuffer* This,
  4063. IRpcChannelBuffer* pRpcChannelBuffer,
  4064. PRPC_MESSAGE pRpcMessage,
  4065. DWORD* pdwStubPhase);
  4066. HRESULT STDMETHODCALLTYPE IMFByteStream_RemoteEndWrite_Proxy(
  4067. IMFByteStream* This,
  4068. IUnknown *punkResult,
  4069. ULONG *pcbWritten);
  4070. void __RPC_STUB IMFByteStream_RemoteEndWrite_Stub(
  4071. IRpcStubBuffer* This,
  4072. IRpcChannelBuffer* pRpcChannelBuffer,
  4073. PRPC_MESSAGE pRpcMessage,
  4074. DWORD* pdwStubPhase);
  4075. HRESULT CALLBACK IMFByteStream_BeginRead_Proxy(
  4076. IMFByteStream* This,
  4077. BYTE *pb,
  4078. ULONG cb,
  4079. IMFAsyncCallback *pCallback,
  4080. IUnknown *punkState);
  4081. HRESULT __RPC_STUB IMFByteStream_BeginRead_Stub(
  4082. IMFByteStream* This,
  4083. ULONG cb,
  4084. IMFRemoteAsyncCallback *pCallback);
  4085. HRESULT CALLBACK IMFByteStream_EndRead_Proxy(
  4086. IMFByteStream* This,
  4087. IMFAsyncResult *pResult,
  4088. ULONG *pcbRead);
  4089. HRESULT __RPC_STUB IMFByteStream_EndRead_Stub(
  4090. IMFByteStream* This,
  4091. IUnknown *punkResult,
  4092. BYTE *pb,
  4093. ULONG cb,
  4094. ULONG *pcbRead);
  4095. HRESULT CALLBACK IMFByteStream_BeginWrite_Proxy(
  4096. IMFByteStream* This,
  4097. const BYTE *pb,
  4098. ULONG cb,
  4099. IMFAsyncCallback *pCallback,
  4100. IUnknown *punkState);
  4101. HRESULT __RPC_STUB IMFByteStream_BeginWrite_Stub(
  4102. IMFByteStream* This,
  4103. const BYTE *pb,
  4104. ULONG cb,
  4105. IMFRemoteAsyncCallback *pCallback);
  4106. HRESULT CALLBACK IMFByteStream_EndWrite_Proxy(
  4107. IMFByteStream* This,
  4108. IMFAsyncResult *pResult,
  4109. ULONG *pcbWritten);
  4110. HRESULT __RPC_STUB IMFByteStream_EndWrite_Stub(
  4111. IMFByteStream* This,
  4112. IUnknown *punkResult,
  4113. ULONG *pcbWritten);
  4114. #endif /* __IMFByteStream_INTERFACE_DEFINED__ */
  4115. #define MFBYTESTREAM_IS_READABLE 0x00000001
  4116. #define MFBYTESTREAM_IS_WRITABLE 0x00000002
  4117. #define MFBYTESTREAM_IS_SEEKABLE 0x00000004
  4118. #define MFBYTESTREAM_IS_REMOTE 0x00000008
  4119. #define MFBYTESTREAM_IS_DIRECTORY 0x00000080
  4120. #define MFBYTESTREAM_HAS_SLOW_SEEK 0x00000100
  4121. #define MFBYTESTREAM_IS_PARTIALLY_DOWNLOADED 0x00000200
  4122. #if WINVER >= _WIN32_WINNT_WIN7
  4123. #define MFBYTESTREAM_SHARE_WRITE 0x00000400
  4124. #endif
  4125. #if WINVER >= _WIN32_WINNT_WIN8
  4126. #define MFBYTESTREAM_DOES_NOT_USE_NETWORK 0x00000800
  4127. #endif
  4128. #define MFBYTESTREAM_SEEK_FLAG_CANCEL_PENDING_IO 0x00000001
  4129. EXTERN_GUID( MF_BYTESTREAM_ORIGIN_NAME, 0xfc358288, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  4130. EXTERN_GUID( MF_BYTESTREAM_CONTENT_TYPE, 0xfc358289, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  4131. EXTERN_GUID( MF_BYTESTREAM_DURATION, 0xfc35828a, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  4132. EXTERN_GUID( MF_BYTESTREAM_LAST_MODIFIED_TIME, 0xfc35828b, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  4133. #if (WINVER >= _WIN32_WINNT_WIN7)
  4134. EXTERN_GUID( MF_BYTESTREAM_IFO_FILE_URI, 0xfc35828c, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  4135. EXTERN_GUID( MF_BYTESTREAM_DLNA_PROFILE_ID, 0xfc35828d, 0x3cb6, 0x460c, 0xa4, 0x24, 0xb6, 0x68, 0x12, 0x60, 0x37, 0x5a);
  4136. EXTERN_GUID( MF_BYTESTREAM_EFFECTIVE_URL, 0x9afa0209, 0x89d1, 0x42af, 0x84, 0x56, 0x1d, 0xe6, 0xb5, 0x62, 0xd6, 0x91);
  4137. EXTERN_GUID( MF_BYTESTREAM_TRANSCODED, 0xb6c5c282, 0x4dc9, 0x4db9, 0xab, 0x48, 0xcf, 0x3b, 0x6d, 0x8b, 0xc5, 0xe0 );
  4138. #endif
  4139. #endif
  4140. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  4141. EXTERN_GUID(CLSID_MFByteStreamProxyClassFactory, 0x770e8e77, 0x4916, 0x441c, 0xa9, 0xa7, 0xb3, 0x42, 0xd0, 0xee, 0xbc, 0x71 );
  4142. /*****************************************************************************
  4143. * IMFByteStreamProxyClassFactory interface
  4144. */
  4145. #ifndef __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__
  4146. #define __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__
  4147. DEFINE_GUID(IID_IMFByteStreamProxyClassFactory, 0xa6b43f84, 0x5c0a, 0x42e8, 0xa4,0x4d, 0xb1,0x85,0x7a,0x76,0x99,0x2f);
  4148. #if defined(__cplusplus) && !defined(CINTERFACE)
  4149. MIDL_INTERFACE("a6b43f84-5c0a-42e8-a44d-b1857a76992f")
  4150. IMFByteStreamProxyClassFactory : public IUnknown
  4151. {
  4152. virtual HRESULT STDMETHODCALLTYPE CreateByteStreamProxy(
  4153. IMFByteStream *pByteStream,
  4154. IMFAttributes *pAttributes,
  4155. REFIID riid,
  4156. LPVOID *ppvObject) = 0;
  4157. };
  4158. #ifdef __CRT_UUID_DECL
  4159. __CRT_UUID_DECL(IMFByteStreamProxyClassFactory, 0xa6b43f84, 0x5c0a, 0x42e8, 0xa4,0x4d, 0xb1,0x85,0x7a,0x76,0x99,0x2f)
  4160. #endif
  4161. #else
  4162. typedef struct IMFByteStreamProxyClassFactoryVtbl {
  4163. BEGIN_INTERFACE
  4164. /*** IUnknown methods ***/
  4165. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  4166. IMFByteStreamProxyClassFactory *This,
  4167. REFIID riid,
  4168. void **ppvObject);
  4169. ULONG (STDMETHODCALLTYPE *AddRef)(
  4170. IMFByteStreamProxyClassFactory *This);
  4171. ULONG (STDMETHODCALLTYPE *Release)(
  4172. IMFByteStreamProxyClassFactory *This);
  4173. /*** IMFByteStreamProxyClassFactory methods ***/
  4174. HRESULT (STDMETHODCALLTYPE *CreateByteStreamProxy)(
  4175. IMFByteStreamProxyClassFactory *This,
  4176. IMFByteStream *pByteStream,
  4177. IMFAttributes *pAttributes,
  4178. REFIID riid,
  4179. LPVOID *ppvObject);
  4180. END_INTERFACE
  4181. } IMFByteStreamProxyClassFactoryVtbl;
  4182. interface IMFByteStreamProxyClassFactory {
  4183. CONST_VTBL IMFByteStreamProxyClassFactoryVtbl* lpVtbl;
  4184. };
  4185. #ifdef COBJMACROS
  4186. #ifndef WIDL_C_INLINE_WRAPPERS
  4187. /*** IUnknown methods ***/
  4188. #define IMFByteStreamProxyClassFactory_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  4189. #define IMFByteStreamProxyClassFactory_AddRef(This) (This)->lpVtbl->AddRef(This)
  4190. #define IMFByteStreamProxyClassFactory_Release(This) (This)->lpVtbl->Release(This)
  4191. /*** IMFByteStreamProxyClassFactory methods ***/
  4192. #define IMFByteStreamProxyClassFactory_CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject) (This)->lpVtbl->CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject)
  4193. #else
  4194. /*** IUnknown methods ***/
  4195. static FORCEINLINE HRESULT IMFByteStreamProxyClassFactory_QueryInterface(IMFByteStreamProxyClassFactory* This,REFIID riid,void **ppvObject) {
  4196. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  4197. }
  4198. static FORCEINLINE ULONG IMFByteStreamProxyClassFactory_AddRef(IMFByteStreamProxyClassFactory* This) {
  4199. return This->lpVtbl->AddRef(This);
  4200. }
  4201. static FORCEINLINE ULONG IMFByteStreamProxyClassFactory_Release(IMFByteStreamProxyClassFactory* This) {
  4202. return This->lpVtbl->Release(This);
  4203. }
  4204. /*** IMFByteStreamProxyClassFactory methods ***/
  4205. static FORCEINLINE HRESULT IMFByteStreamProxyClassFactory_CreateByteStreamProxy(IMFByteStreamProxyClassFactory* This,IMFByteStream *pByteStream,IMFAttributes *pAttributes,REFIID riid,LPVOID *ppvObject) {
  4206. return This->lpVtbl->CreateByteStreamProxy(This,pByteStream,pAttributes,riid,ppvObject);
  4207. }
  4208. #endif
  4209. #endif
  4210. #endif
  4211. #endif /* __IMFByteStreamProxyClassFactory_INTERFACE_DEFINED__ */
  4212. typedef enum __WIDL_mfobjects_generated_name_0000002B {
  4213. MF_ACCESSMODE_READ = 1,
  4214. MF_ACCESSMODE_WRITE = 2,
  4215. MF_ACCESSMODE_READWRITE = 3
  4216. } MF_FILE_ACCESSMODE;
  4217. typedef enum __WIDL_mfobjects_generated_name_0000002C {
  4218. MF_OPENMODE_FAIL_IF_NOT_EXIST = 0,
  4219. MF_OPENMODE_FAIL_IF_EXIST = 1,
  4220. MF_OPENMODE_RESET_IF_EXIST = 2,
  4221. MF_OPENMODE_APPEND_IF_EXIST = 3,
  4222. MF_OPENMODE_DELETE_IF_EXIST = 4
  4223. } MF_FILE_OPENMODE;
  4224. typedef enum __WIDL_mfobjects_generated_name_0000002D {
  4225. MF_FILEFLAGS_NONE = 0x0,
  4226. MF_FILEFLAGS_NOBUFFERING = 0x1,
  4227. MF_FILEFLAGS_ALLOW_WRITE_SHARING = 0x2
  4228. } MF_FILE_FLAGS;
  4229. #endif
  4230. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  4231. /*****************************************************************************
  4232. * IMFSampleOutputStream interface
  4233. */
  4234. #ifndef __IMFSampleOutputStream_INTERFACE_DEFINED__
  4235. #define __IMFSampleOutputStream_INTERFACE_DEFINED__
  4236. DEFINE_GUID(IID_IMFSampleOutputStream, 0x8feed468, 0x6f7e, 0x440d, 0x86,0x9a, 0x49,0xbd,0xd2,0x83,0xad,0x0d);
  4237. #if defined(__cplusplus) && !defined(CINTERFACE)
  4238. MIDL_INTERFACE("8feed468-6f7e-440d-869a-49bdd283ad0d")
  4239. IMFSampleOutputStream : public IUnknown
  4240. {
  4241. virtual HRESULT STDMETHODCALLTYPE BeginWriteSample(
  4242. IMFSample *pSample,
  4243. IMFAsyncCallback *pCallback,
  4244. IUnknown *punkState) = 0;
  4245. virtual HRESULT STDMETHODCALLTYPE EndWriteSample(
  4246. IMFAsyncResult *pResult) = 0;
  4247. virtual HRESULT STDMETHODCALLTYPE Close(
  4248. ) = 0;
  4249. };
  4250. #ifdef __CRT_UUID_DECL
  4251. __CRT_UUID_DECL(IMFSampleOutputStream, 0x8feed468, 0x6f7e, 0x440d, 0x86,0x9a, 0x49,0xbd,0xd2,0x83,0xad,0x0d)
  4252. #endif
  4253. #else
  4254. typedef struct IMFSampleOutputStreamVtbl {
  4255. BEGIN_INTERFACE
  4256. /*** IUnknown methods ***/
  4257. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  4258. IMFSampleOutputStream *This,
  4259. REFIID riid,
  4260. void **ppvObject);
  4261. ULONG (STDMETHODCALLTYPE *AddRef)(
  4262. IMFSampleOutputStream *This);
  4263. ULONG (STDMETHODCALLTYPE *Release)(
  4264. IMFSampleOutputStream *This);
  4265. /*** IMFSampleOutputStream methods ***/
  4266. HRESULT (STDMETHODCALLTYPE *BeginWriteSample)(
  4267. IMFSampleOutputStream *This,
  4268. IMFSample *pSample,
  4269. IMFAsyncCallback *pCallback,
  4270. IUnknown *punkState);
  4271. HRESULT (STDMETHODCALLTYPE *EndWriteSample)(
  4272. IMFSampleOutputStream *This,
  4273. IMFAsyncResult *pResult);
  4274. HRESULT (STDMETHODCALLTYPE *Close)(
  4275. IMFSampleOutputStream *This);
  4276. END_INTERFACE
  4277. } IMFSampleOutputStreamVtbl;
  4278. interface IMFSampleOutputStream {
  4279. CONST_VTBL IMFSampleOutputStreamVtbl* lpVtbl;
  4280. };
  4281. #ifdef COBJMACROS
  4282. #ifndef WIDL_C_INLINE_WRAPPERS
  4283. /*** IUnknown methods ***/
  4284. #define IMFSampleOutputStream_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  4285. #define IMFSampleOutputStream_AddRef(This) (This)->lpVtbl->AddRef(This)
  4286. #define IMFSampleOutputStream_Release(This) (This)->lpVtbl->Release(This)
  4287. /*** IMFSampleOutputStream methods ***/
  4288. #define IMFSampleOutputStream_BeginWriteSample(This,pSample,pCallback,punkState) (This)->lpVtbl->BeginWriteSample(This,pSample,pCallback,punkState)
  4289. #define IMFSampleOutputStream_EndWriteSample(This,pResult) (This)->lpVtbl->EndWriteSample(This,pResult)
  4290. #define IMFSampleOutputStream_Close(This) (This)->lpVtbl->Close(This)
  4291. #else
  4292. /*** IUnknown methods ***/
  4293. static FORCEINLINE HRESULT IMFSampleOutputStream_QueryInterface(IMFSampleOutputStream* This,REFIID riid,void **ppvObject) {
  4294. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  4295. }
  4296. static FORCEINLINE ULONG IMFSampleOutputStream_AddRef(IMFSampleOutputStream* This) {
  4297. return This->lpVtbl->AddRef(This);
  4298. }
  4299. static FORCEINLINE ULONG IMFSampleOutputStream_Release(IMFSampleOutputStream* This) {
  4300. return This->lpVtbl->Release(This);
  4301. }
  4302. /*** IMFSampleOutputStream methods ***/
  4303. static FORCEINLINE HRESULT IMFSampleOutputStream_BeginWriteSample(IMFSampleOutputStream* This,IMFSample *pSample,IMFAsyncCallback *pCallback,IUnknown *punkState) {
  4304. return This->lpVtbl->BeginWriteSample(This,pSample,pCallback,punkState);
  4305. }
  4306. static FORCEINLINE HRESULT IMFSampleOutputStream_EndWriteSample(IMFSampleOutputStream* This,IMFAsyncResult *pResult) {
  4307. return This->lpVtbl->EndWriteSample(This,pResult);
  4308. }
  4309. static FORCEINLINE HRESULT IMFSampleOutputStream_Close(IMFSampleOutputStream* This) {
  4310. return This->lpVtbl->Close(This);
  4311. }
  4312. #endif
  4313. #endif
  4314. #endif
  4315. #endif /* __IMFSampleOutputStream_INTERFACE_DEFINED__ */
  4316. /*****************************************************************************
  4317. * IMFCollection interface
  4318. */
  4319. #ifndef __IMFCollection_INTERFACE_DEFINED__
  4320. #define __IMFCollection_INTERFACE_DEFINED__
  4321. DEFINE_GUID(IID_IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe);
  4322. #if defined(__cplusplus) && !defined(CINTERFACE)
  4323. MIDL_INTERFACE("5bc8a76b-869a-46a3-9b03-fa218a66aebe")
  4324. IMFCollection : public IUnknown
  4325. {
  4326. virtual HRESULT STDMETHODCALLTYPE GetElementCount(
  4327. DWORD *pcElements) = 0;
  4328. virtual HRESULT STDMETHODCALLTYPE GetElement(
  4329. DWORD dwElementIndex,
  4330. IUnknown **ppUnkElement) = 0;
  4331. virtual HRESULT STDMETHODCALLTYPE AddElement(
  4332. IUnknown *pUnkElement) = 0;
  4333. virtual HRESULT STDMETHODCALLTYPE RemoveElement(
  4334. DWORD dwElementIndex,
  4335. IUnknown **ppUnkElement) = 0;
  4336. virtual HRESULT STDMETHODCALLTYPE InsertElementAt(
  4337. DWORD dwIndex,
  4338. IUnknown *pUnknown) = 0;
  4339. virtual HRESULT STDMETHODCALLTYPE RemoveAllElements(
  4340. ) = 0;
  4341. };
  4342. #ifdef __CRT_UUID_DECL
  4343. __CRT_UUID_DECL(IMFCollection, 0x5bc8a76b, 0x869a, 0x46a3, 0x9b,0x03, 0xfa,0x21,0x8a,0x66,0xae,0xbe)
  4344. #endif
  4345. #else
  4346. typedef struct IMFCollectionVtbl {
  4347. BEGIN_INTERFACE
  4348. /*** IUnknown methods ***/
  4349. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  4350. IMFCollection *This,
  4351. REFIID riid,
  4352. void **ppvObject);
  4353. ULONG (STDMETHODCALLTYPE *AddRef)(
  4354. IMFCollection *This);
  4355. ULONG (STDMETHODCALLTYPE *Release)(
  4356. IMFCollection *This);
  4357. /*** IMFCollection methods ***/
  4358. HRESULT (STDMETHODCALLTYPE *GetElementCount)(
  4359. IMFCollection *This,
  4360. DWORD *pcElements);
  4361. HRESULT (STDMETHODCALLTYPE *GetElement)(
  4362. IMFCollection *This,
  4363. DWORD dwElementIndex,
  4364. IUnknown **ppUnkElement);
  4365. HRESULT (STDMETHODCALLTYPE *AddElement)(
  4366. IMFCollection *This,
  4367. IUnknown *pUnkElement);
  4368. HRESULT (STDMETHODCALLTYPE *RemoveElement)(
  4369. IMFCollection *This,
  4370. DWORD dwElementIndex,
  4371. IUnknown **ppUnkElement);
  4372. HRESULT (STDMETHODCALLTYPE *InsertElementAt)(
  4373. IMFCollection *This,
  4374. DWORD dwIndex,
  4375. IUnknown *pUnknown);
  4376. HRESULT (STDMETHODCALLTYPE *RemoveAllElements)(
  4377. IMFCollection *This);
  4378. END_INTERFACE
  4379. } IMFCollectionVtbl;
  4380. interface IMFCollection {
  4381. CONST_VTBL IMFCollectionVtbl* lpVtbl;
  4382. };
  4383. #ifdef COBJMACROS
  4384. #ifndef WIDL_C_INLINE_WRAPPERS
  4385. /*** IUnknown methods ***/
  4386. #define IMFCollection_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  4387. #define IMFCollection_AddRef(This) (This)->lpVtbl->AddRef(This)
  4388. #define IMFCollection_Release(This) (This)->lpVtbl->Release(This)
  4389. /*** IMFCollection methods ***/
  4390. #define IMFCollection_GetElementCount(This,pcElements) (This)->lpVtbl->GetElementCount(This,pcElements)
  4391. #define IMFCollection_GetElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement)
  4392. #define IMFCollection_AddElement(This,pUnkElement) (This)->lpVtbl->AddElement(This,pUnkElement)
  4393. #define IMFCollection_RemoveElement(This,dwElementIndex,ppUnkElement) (This)->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement)
  4394. #define IMFCollection_InsertElementAt(This,dwIndex,pUnknown) (This)->lpVtbl->InsertElementAt(This,dwIndex,pUnknown)
  4395. #define IMFCollection_RemoveAllElements(This) (This)->lpVtbl->RemoveAllElements(This)
  4396. #else
  4397. /*** IUnknown methods ***/
  4398. static FORCEINLINE HRESULT IMFCollection_QueryInterface(IMFCollection* This,REFIID riid,void **ppvObject) {
  4399. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  4400. }
  4401. static FORCEINLINE ULONG IMFCollection_AddRef(IMFCollection* This) {
  4402. return This->lpVtbl->AddRef(This);
  4403. }
  4404. static FORCEINLINE ULONG IMFCollection_Release(IMFCollection* This) {
  4405. return This->lpVtbl->Release(This);
  4406. }
  4407. /*** IMFCollection methods ***/
  4408. static FORCEINLINE HRESULT IMFCollection_GetElementCount(IMFCollection* This,DWORD *pcElements) {
  4409. return This->lpVtbl->GetElementCount(This,pcElements);
  4410. }
  4411. static FORCEINLINE HRESULT IMFCollection_GetElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
  4412. return This->lpVtbl->GetElement(This,dwElementIndex,ppUnkElement);
  4413. }
  4414. static FORCEINLINE HRESULT IMFCollection_AddElement(IMFCollection* This,IUnknown *pUnkElement) {
  4415. return This->lpVtbl->AddElement(This,pUnkElement);
  4416. }
  4417. static FORCEINLINE HRESULT IMFCollection_RemoveElement(IMFCollection* This,DWORD dwElementIndex,IUnknown **ppUnkElement) {
  4418. return This->lpVtbl->RemoveElement(This,dwElementIndex,ppUnkElement);
  4419. }
  4420. static FORCEINLINE HRESULT IMFCollection_InsertElementAt(IMFCollection* This,DWORD dwIndex,IUnknown *pUnknown) {
  4421. return This->lpVtbl->InsertElementAt(This,dwIndex,pUnknown);
  4422. }
  4423. static FORCEINLINE HRESULT IMFCollection_RemoveAllElements(IMFCollection* This) {
  4424. return This->lpVtbl->RemoveAllElements(This);
  4425. }
  4426. #endif
  4427. #endif
  4428. #endif
  4429. #endif /* __IMFCollection_INTERFACE_DEFINED__ */
  4430. /*****************************************************************************
  4431. * IMFMediaEventQueue interface
  4432. */
  4433. #ifndef __IMFMediaEventQueue_INTERFACE_DEFINED__
  4434. #define __IMFMediaEventQueue_INTERFACE_DEFINED__
  4435. DEFINE_GUID(IID_IMFMediaEventQueue, 0x36f846fc, 0x2256, 0x48b6, 0xb5,0x8e, 0xe2,0xb6,0x38,0x31,0x65,0x81);
  4436. #if defined(__cplusplus) && !defined(CINTERFACE)
  4437. MIDL_INTERFACE("36f846fc-2256-48b6-b58e-e2b638316581")
  4438. IMFMediaEventQueue : public IUnknown
  4439. {
  4440. virtual HRESULT STDMETHODCALLTYPE GetEvent(
  4441. DWORD dwFlags,
  4442. IMFMediaEvent **ppEvent) = 0;
  4443. virtual HRESULT STDMETHODCALLTYPE BeginGetEvent(
  4444. IMFAsyncCallback *pCallback,
  4445. IUnknown *punkState) = 0;
  4446. virtual HRESULT STDMETHODCALLTYPE EndGetEvent(
  4447. IMFAsyncResult *pResult,
  4448. IMFMediaEvent **ppEvent) = 0;
  4449. virtual HRESULT STDMETHODCALLTYPE QueueEvent(
  4450. IMFMediaEvent *pEvent) = 0;
  4451. virtual HRESULT STDMETHODCALLTYPE QueueEventParamVar(
  4452. MediaEventType met,
  4453. REFGUID guidExtendedType,
  4454. HRESULT hrStatus,
  4455. const PROPVARIANT *pvValue) = 0;
  4456. virtual HRESULT STDMETHODCALLTYPE QueueEventParamUnk(
  4457. MediaEventType met,
  4458. REFGUID guidExtendedType,
  4459. HRESULT hrStatus,
  4460. IUnknown *pUnk) = 0;
  4461. virtual HRESULT STDMETHODCALLTYPE Shutdown(
  4462. ) = 0;
  4463. };
  4464. #ifdef __CRT_UUID_DECL
  4465. __CRT_UUID_DECL(IMFMediaEventQueue, 0x36f846fc, 0x2256, 0x48b6, 0xb5,0x8e, 0xe2,0xb6,0x38,0x31,0x65,0x81)
  4466. #endif
  4467. #else
  4468. typedef struct IMFMediaEventQueueVtbl {
  4469. BEGIN_INTERFACE
  4470. /*** IUnknown methods ***/
  4471. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  4472. IMFMediaEventQueue *This,
  4473. REFIID riid,
  4474. void **ppvObject);
  4475. ULONG (STDMETHODCALLTYPE *AddRef)(
  4476. IMFMediaEventQueue *This);
  4477. ULONG (STDMETHODCALLTYPE *Release)(
  4478. IMFMediaEventQueue *This);
  4479. /*** IMFMediaEventQueue methods ***/
  4480. HRESULT (STDMETHODCALLTYPE *GetEvent)(
  4481. IMFMediaEventQueue *This,
  4482. DWORD dwFlags,
  4483. IMFMediaEvent **ppEvent);
  4484. HRESULT (STDMETHODCALLTYPE *BeginGetEvent)(
  4485. IMFMediaEventQueue *This,
  4486. IMFAsyncCallback *pCallback,
  4487. IUnknown *punkState);
  4488. HRESULT (STDMETHODCALLTYPE *EndGetEvent)(
  4489. IMFMediaEventQueue *This,
  4490. IMFAsyncResult *pResult,
  4491. IMFMediaEvent **ppEvent);
  4492. HRESULT (STDMETHODCALLTYPE *QueueEvent)(
  4493. IMFMediaEventQueue *This,
  4494. IMFMediaEvent *pEvent);
  4495. HRESULT (STDMETHODCALLTYPE *QueueEventParamVar)(
  4496. IMFMediaEventQueue *This,
  4497. MediaEventType met,
  4498. REFGUID guidExtendedType,
  4499. HRESULT hrStatus,
  4500. const PROPVARIANT *pvValue);
  4501. HRESULT (STDMETHODCALLTYPE *QueueEventParamUnk)(
  4502. IMFMediaEventQueue *This,
  4503. MediaEventType met,
  4504. REFGUID guidExtendedType,
  4505. HRESULT hrStatus,
  4506. IUnknown *pUnk);
  4507. HRESULT (STDMETHODCALLTYPE *Shutdown)(
  4508. IMFMediaEventQueue *This);
  4509. END_INTERFACE
  4510. } IMFMediaEventQueueVtbl;
  4511. interface IMFMediaEventQueue {
  4512. CONST_VTBL IMFMediaEventQueueVtbl* lpVtbl;
  4513. };
  4514. #ifdef COBJMACROS
  4515. #ifndef WIDL_C_INLINE_WRAPPERS
  4516. /*** IUnknown methods ***/
  4517. #define IMFMediaEventQueue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  4518. #define IMFMediaEventQueue_AddRef(This) (This)->lpVtbl->AddRef(This)
  4519. #define IMFMediaEventQueue_Release(This) (This)->lpVtbl->Release(This)
  4520. /*** IMFMediaEventQueue methods ***/
  4521. #define IMFMediaEventQueue_GetEvent(This,dwFlags,ppEvent) (This)->lpVtbl->GetEvent(This,dwFlags,ppEvent)
  4522. #define IMFMediaEventQueue_BeginGetEvent(This,pCallback,punkState) (This)->lpVtbl->BeginGetEvent(This,pCallback,punkState)
  4523. #define IMFMediaEventQueue_EndGetEvent(This,pResult,ppEvent) (This)->lpVtbl->EndGetEvent(This,pResult,ppEvent)
  4524. #define IMFMediaEventQueue_QueueEvent(This,pEvent) (This)->lpVtbl->QueueEvent(This,pEvent)
  4525. #define IMFMediaEventQueue_QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue) (This)->lpVtbl->QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue)
  4526. #define IMFMediaEventQueue_QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk) (This)->lpVtbl->QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk)
  4527. #define IMFMediaEventQueue_Shutdown(This) (This)->lpVtbl->Shutdown(This)
  4528. #else
  4529. /*** IUnknown methods ***/
  4530. static FORCEINLINE HRESULT IMFMediaEventQueue_QueryInterface(IMFMediaEventQueue* This,REFIID riid,void **ppvObject) {
  4531. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  4532. }
  4533. static FORCEINLINE ULONG IMFMediaEventQueue_AddRef(IMFMediaEventQueue* This) {
  4534. return This->lpVtbl->AddRef(This);
  4535. }
  4536. static FORCEINLINE ULONG IMFMediaEventQueue_Release(IMFMediaEventQueue* This) {
  4537. return This->lpVtbl->Release(This);
  4538. }
  4539. /*** IMFMediaEventQueue methods ***/
  4540. static FORCEINLINE HRESULT IMFMediaEventQueue_GetEvent(IMFMediaEventQueue* This,DWORD dwFlags,IMFMediaEvent **ppEvent) {
  4541. return This->lpVtbl->GetEvent(This,dwFlags,ppEvent);
  4542. }
  4543. static FORCEINLINE HRESULT IMFMediaEventQueue_BeginGetEvent(IMFMediaEventQueue* This,IMFAsyncCallback *pCallback,IUnknown *punkState) {
  4544. return This->lpVtbl->BeginGetEvent(This,pCallback,punkState);
  4545. }
  4546. static FORCEINLINE HRESULT IMFMediaEventQueue_EndGetEvent(IMFMediaEventQueue* This,IMFAsyncResult *pResult,IMFMediaEvent **ppEvent) {
  4547. return This->lpVtbl->EndGetEvent(This,pResult,ppEvent);
  4548. }
  4549. static FORCEINLINE HRESULT IMFMediaEventQueue_QueueEvent(IMFMediaEventQueue* This,IMFMediaEvent *pEvent) {
  4550. return This->lpVtbl->QueueEvent(This,pEvent);
  4551. }
  4552. static FORCEINLINE HRESULT IMFMediaEventQueue_QueueEventParamVar(IMFMediaEventQueue* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,const PROPVARIANT *pvValue) {
  4553. return This->lpVtbl->QueueEventParamVar(This,met,guidExtendedType,hrStatus,pvValue);
  4554. }
  4555. static FORCEINLINE HRESULT IMFMediaEventQueue_QueueEventParamUnk(IMFMediaEventQueue* This,MediaEventType met,REFGUID guidExtendedType,HRESULT hrStatus,IUnknown *pUnk) {
  4556. return This->lpVtbl->QueueEventParamUnk(This,met,guidExtendedType,hrStatus,pUnk);
  4557. }
  4558. static FORCEINLINE HRESULT IMFMediaEventQueue_Shutdown(IMFMediaEventQueue* This) {
  4559. return This->lpVtbl->Shutdown(This);
  4560. }
  4561. #endif
  4562. #endif
  4563. #endif
  4564. #endif /* __IMFMediaEventQueue_INTERFACE_DEFINED__ */
  4565. /*****************************************************************************
  4566. * IMFActivate interface
  4567. */
  4568. #ifndef __IMFActivate_INTERFACE_DEFINED__
  4569. #define __IMFActivate_INTERFACE_DEFINED__
  4570. DEFINE_GUID(IID_IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67);
  4571. #if defined(__cplusplus) && !defined(CINTERFACE)
  4572. MIDL_INTERFACE("7fee9e9a-4a89-47a6-899c-b6a53a70fb67")
  4573. IMFActivate : public IMFAttributes
  4574. {
  4575. virtual HRESULT STDMETHODCALLTYPE ActivateObject(
  4576. REFIID riid,
  4577. void **ppv) = 0;
  4578. virtual HRESULT STDMETHODCALLTYPE ShutdownObject(
  4579. ) = 0;
  4580. virtual HRESULT STDMETHODCALLTYPE DetachObject(
  4581. ) = 0;
  4582. };
  4583. #ifdef __CRT_UUID_DECL
  4584. __CRT_UUID_DECL(IMFActivate, 0x7fee9e9a, 0x4a89, 0x47a6, 0x89,0x9c, 0xb6,0xa5,0x3a,0x70,0xfb,0x67)
  4585. #endif
  4586. #else
  4587. typedef struct IMFActivateVtbl {
  4588. BEGIN_INTERFACE
  4589. /*** IUnknown methods ***/
  4590. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  4591. IMFActivate *This,
  4592. REFIID riid,
  4593. void **ppvObject);
  4594. ULONG (STDMETHODCALLTYPE *AddRef)(
  4595. IMFActivate *This);
  4596. ULONG (STDMETHODCALLTYPE *Release)(
  4597. IMFActivate *This);
  4598. /*** IMFAttributes methods ***/
  4599. HRESULT (STDMETHODCALLTYPE *GetItem)(
  4600. IMFActivate *This,
  4601. REFGUID guidKey,
  4602. PROPVARIANT *pValue);
  4603. HRESULT (STDMETHODCALLTYPE *GetItemType)(
  4604. IMFActivate *This,
  4605. REFGUID guidKey,
  4606. MF_ATTRIBUTE_TYPE *pType);
  4607. HRESULT (STDMETHODCALLTYPE *CompareItem)(
  4608. IMFActivate *This,
  4609. REFGUID guidKey,
  4610. REFPROPVARIANT Value,
  4611. WINBOOL *pbResult);
  4612. HRESULT (STDMETHODCALLTYPE *Compare)(
  4613. IMFActivate *This,
  4614. IMFAttributes *pTheirs,
  4615. MF_ATTRIBUTES_MATCH_TYPE MatchType,
  4616. WINBOOL *pbResult);
  4617. HRESULT (STDMETHODCALLTYPE *GetUINT32)(
  4618. IMFActivate *This,
  4619. REFGUID guidKey,
  4620. UINT32 *punValue);
  4621. HRESULT (STDMETHODCALLTYPE *GetUINT64)(
  4622. IMFActivate *This,
  4623. REFGUID guidKey,
  4624. UINT64 *punValue);
  4625. HRESULT (STDMETHODCALLTYPE *GetDouble)(
  4626. IMFActivate *This,
  4627. REFGUID guidKey,
  4628. double *pfValue);
  4629. HRESULT (STDMETHODCALLTYPE *GetGUID)(
  4630. IMFActivate *This,
  4631. REFGUID guidKey,
  4632. GUID *pguidValue);
  4633. HRESULT (STDMETHODCALLTYPE *GetStringLength)(
  4634. IMFActivate *This,
  4635. REFGUID guidKey,
  4636. UINT32 *pcchLength);
  4637. HRESULT (STDMETHODCALLTYPE *GetString)(
  4638. IMFActivate *This,
  4639. REFGUID guidKey,
  4640. LPWSTR pwszValue,
  4641. UINT32 cchBufSize,
  4642. UINT32 *pcchLength);
  4643. HRESULT (STDMETHODCALLTYPE *GetAllocatedString)(
  4644. IMFActivate *This,
  4645. REFGUID guidKey,
  4646. LPWSTR *ppwszValue,
  4647. UINT32 *pcchLength);
  4648. HRESULT (STDMETHODCALLTYPE *GetBlobSize)(
  4649. IMFActivate *This,
  4650. REFGUID guidKey,
  4651. UINT32 *pcbBlobSize);
  4652. HRESULT (STDMETHODCALLTYPE *GetBlob)(
  4653. IMFActivate *This,
  4654. REFGUID guidKey,
  4655. UINT8 *pBuf,
  4656. UINT32 cbBufSize,
  4657. UINT32 *pcbBlobSize);
  4658. HRESULT (STDMETHODCALLTYPE *GetAllocatedBlob)(
  4659. IMFActivate *This,
  4660. REFGUID guidKey,
  4661. UINT8 **ppBuf,
  4662. UINT32 *pcbSize);
  4663. HRESULT (STDMETHODCALLTYPE *GetUnknown)(
  4664. IMFActivate *This,
  4665. REFGUID guidKey,
  4666. REFIID riid,
  4667. LPVOID *ppv);
  4668. HRESULT (STDMETHODCALLTYPE *SetItem)(
  4669. IMFActivate *This,
  4670. REFGUID guidKey,
  4671. REFPROPVARIANT Value);
  4672. HRESULT (STDMETHODCALLTYPE *DeleteItem)(
  4673. IMFActivate *This,
  4674. REFGUID guidKey);
  4675. HRESULT (STDMETHODCALLTYPE *DeleteAllItems)(
  4676. IMFActivate *This);
  4677. HRESULT (STDMETHODCALLTYPE *SetUINT32)(
  4678. IMFActivate *This,
  4679. REFGUID guidKey,
  4680. UINT32 unValue);
  4681. HRESULT (STDMETHODCALLTYPE *SetUINT64)(
  4682. IMFActivate *This,
  4683. REFGUID guidKey,
  4684. UINT64 unValue);
  4685. HRESULT (STDMETHODCALLTYPE *SetDouble)(
  4686. IMFActivate *This,
  4687. REFGUID guidKey,
  4688. double fValue);
  4689. HRESULT (STDMETHODCALLTYPE *SetGUID)(
  4690. IMFActivate *This,
  4691. REFGUID guidKey,
  4692. REFGUID guidValue);
  4693. HRESULT (STDMETHODCALLTYPE *SetString)(
  4694. IMFActivate *This,
  4695. REFGUID guidKey,
  4696. LPCWSTR wszValue);
  4697. HRESULT (STDMETHODCALLTYPE *SetBlob)(
  4698. IMFActivate *This,
  4699. REFGUID guidKey,
  4700. const UINT8 *pBuf,
  4701. UINT32 cbBufSize);
  4702. HRESULT (STDMETHODCALLTYPE *SetUnknown)(
  4703. IMFActivate *This,
  4704. REFGUID guidKey,
  4705. IUnknown *pUnknown);
  4706. HRESULT (STDMETHODCALLTYPE *LockStore)(
  4707. IMFActivate *This);
  4708. HRESULT (STDMETHODCALLTYPE *UnlockStore)(
  4709. IMFActivate *This);
  4710. HRESULT (STDMETHODCALLTYPE *GetCount)(
  4711. IMFActivate *This,
  4712. UINT32 *pcItems);
  4713. HRESULT (STDMETHODCALLTYPE *GetItemByIndex)(
  4714. IMFActivate *This,
  4715. UINT32 unIndex,
  4716. GUID *pguidKey,
  4717. PROPVARIANT *pValue);
  4718. HRESULT (STDMETHODCALLTYPE *CopyAllItems)(
  4719. IMFActivate *This,
  4720. IMFAttributes *pDest);
  4721. /*** IMFActivate methods ***/
  4722. HRESULT (STDMETHODCALLTYPE *ActivateObject)(
  4723. IMFActivate *This,
  4724. REFIID riid,
  4725. void **ppv);
  4726. HRESULT (STDMETHODCALLTYPE *ShutdownObject)(
  4727. IMFActivate *This);
  4728. HRESULT (STDMETHODCALLTYPE *DetachObject)(
  4729. IMFActivate *This);
  4730. END_INTERFACE
  4731. } IMFActivateVtbl;
  4732. interface IMFActivate {
  4733. CONST_VTBL IMFActivateVtbl* lpVtbl;
  4734. };
  4735. #ifdef COBJMACROS
  4736. #ifndef WIDL_C_INLINE_WRAPPERS
  4737. /*** IUnknown methods ***/
  4738. #define IMFActivate_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  4739. #define IMFActivate_AddRef(This) (This)->lpVtbl->AddRef(This)
  4740. #define IMFActivate_Release(This) (This)->lpVtbl->Release(This)
  4741. /*** IMFAttributes methods ***/
  4742. #define IMFActivate_GetItem(This,guidKey,pValue) (This)->lpVtbl->GetItem(This,guidKey,pValue)
  4743. #define IMFActivate_GetItemType(This,guidKey,pType) (This)->lpVtbl->GetItemType(This,guidKey,pType)
  4744. #define IMFActivate_CompareItem(This,guidKey,Value,pbResult) (This)->lpVtbl->CompareItem(This,guidKey,Value,pbResult)
  4745. #define IMFActivate_Compare(This,pTheirs,MatchType,pbResult) (This)->lpVtbl->Compare(This,pTheirs,MatchType,pbResult)
  4746. #define IMFActivate_GetUINT32(This,guidKey,punValue) (This)->lpVtbl->GetUINT32(This,guidKey,punValue)
  4747. #define IMFActivate_GetUINT64(This,guidKey,punValue) (This)->lpVtbl->GetUINT64(This,guidKey,punValue)
  4748. #define IMFActivate_GetDouble(This,guidKey,pfValue) (This)->lpVtbl->GetDouble(This,guidKey,pfValue)
  4749. #define IMFActivate_GetGUID(This,guidKey,pguidValue) (This)->lpVtbl->GetGUID(This,guidKey,pguidValue)
  4750. #define IMFActivate_GetStringLength(This,guidKey,pcchLength) (This)->lpVtbl->GetStringLength(This,guidKey,pcchLength)
  4751. #define IMFActivate_GetString(This,guidKey,pwszValue,cchBufSize,pcchLength) (This)->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength)
  4752. #define IMFActivate_GetAllocatedString(This,guidKey,ppwszValue,pcchLength) (This)->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength)
  4753. #define IMFActivate_GetBlobSize(This,guidKey,pcbBlobSize) (This)->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize)
  4754. #define IMFActivate_GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize) (This)->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize)
  4755. #define IMFActivate_GetAllocatedBlob(This,guidKey,ppBuf,pcbSize) (This)->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize)
  4756. #define IMFActivate_GetUnknown(This,guidKey,riid,ppv) (This)->lpVtbl->GetUnknown(This,guidKey,riid,ppv)
  4757. #define IMFActivate_SetItem(This,guidKey,Value) (This)->lpVtbl->SetItem(This,guidKey,Value)
  4758. #define IMFActivate_DeleteItem(This,guidKey) (This)->lpVtbl->DeleteItem(This,guidKey)
  4759. #define IMFActivate_DeleteAllItems(This) (This)->lpVtbl->DeleteAllItems(This)
  4760. #define IMFActivate_SetUINT32(This,guidKey,unValue) (This)->lpVtbl->SetUINT32(This,guidKey,unValue)
  4761. #define IMFActivate_SetUINT64(This,guidKey,unValue) (This)->lpVtbl->SetUINT64(This,guidKey,unValue)
  4762. #define IMFActivate_SetDouble(This,guidKey,fValue) (This)->lpVtbl->SetDouble(This,guidKey,fValue)
  4763. #define IMFActivate_SetGUID(This,guidKey,guidValue) (This)->lpVtbl->SetGUID(This,guidKey,guidValue)
  4764. #define IMFActivate_SetString(This,guidKey,wszValue) (This)->lpVtbl->SetString(This,guidKey,wszValue)
  4765. #define IMFActivate_SetBlob(This,guidKey,pBuf,cbBufSize) (This)->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize)
  4766. #define IMFActivate_SetUnknown(This,guidKey,pUnknown) (This)->lpVtbl->SetUnknown(This,guidKey,pUnknown)
  4767. #define IMFActivate_LockStore(This) (This)->lpVtbl->LockStore(This)
  4768. #define IMFActivate_UnlockStore(This) (This)->lpVtbl->UnlockStore(This)
  4769. #define IMFActivate_GetCount(This,pcItems) (This)->lpVtbl->GetCount(This,pcItems)
  4770. #define IMFActivate_GetItemByIndex(This,unIndex,pguidKey,pValue) (This)->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue)
  4771. #define IMFActivate_CopyAllItems(This,pDest) (This)->lpVtbl->CopyAllItems(This,pDest)
  4772. /*** IMFActivate methods ***/
  4773. #define IMFActivate_ActivateObject(This,riid,ppv) (This)->lpVtbl->ActivateObject(This,riid,ppv)
  4774. #define IMFActivate_ShutdownObject(This) (This)->lpVtbl->ShutdownObject(This)
  4775. #define IMFActivate_DetachObject(This) (This)->lpVtbl->DetachObject(This)
  4776. #else
  4777. /*** IUnknown methods ***/
  4778. static FORCEINLINE HRESULT IMFActivate_QueryInterface(IMFActivate* This,REFIID riid,void **ppvObject) {
  4779. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  4780. }
  4781. static FORCEINLINE ULONG IMFActivate_AddRef(IMFActivate* This) {
  4782. return This->lpVtbl->AddRef(This);
  4783. }
  4784. static FORCEINLINE ULONG IMFActivate_Release(IMFActivate* This) {
  4785. return This->lpVtbl->Release(This);
  4786. }
  4787. /*** IMFAttributes methods ***/
  4788. static FORCEINLINE HRESULT IMFActivate_GetItem(IMFActivate* This,REFGUID guidKey,PROPVARIANT *pValue) {
  4789. return This->lpVtbl->GetItem(This,guidKey,pValue);
  4790. }
  4791. static FORCEINLINE HRESULT IMFActivate_GetItemType(IMFActivate* This,REFGUID guidKey,MF_ATTRIBUTE_TYPE *pType) {
  4792. return This->lpVtbl->GetItemType(This,guidKey,pType);
  4793. }
  4794. static FORCEINLINE HRESULT IMFActivate_CompareItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value,WINBOOL *pbResult) {
  4795. return This->lpVtbl->CompareItem(This,guidKey,Value,pbResult);
  4796. }
  4797. static FORCEINLINE HRESULT IMFActivate_Compare(IMFActivate* This,IMFAttributes *pTheirs,MF_ATTRIBUTES_MATCH_TYPE MatchType,WINBOOL *pbResult) {
  4798. return This->lpVtbl->Compare(This,pTheirs,MatchType,pbResult);
  4799. }
  4800. static FORCEINLINE HRESULT IMFActivate_GetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 *punValue) {
  4801. return This->lpVtbl->GetUINT32(This,guidKey,punValue);
  4802. }
  4803. static FORCEINLINE HRESULT IMFActivate_GetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 *punValue) {
  4804. return This->lpVtbl->GetUINT64(This,guidKey,punValue);
  4805. }
  4806. static FORCEINLINE HRESULT IMFActivate_GetDouble(IMFActivate* This,REFGUID guidKey,double *pfValue) {
  4807. return This->lpVtbl->GetDouble(This,guidKey,pfValue);
  4808. }
  4809. static FORCEINLINE HRESULT IMFActivate_GetGUID(IMFActivate* This,REFGUID guidKey,GUID *pguidValue) {
  4810. return This->lpVtbl->GetGUID(This,guidKey,pguidValue);
  4811. }
  4812. static FORCEINLINE HRESULT IMFActivate_GetStringLength(IMFActivate* This,REFGUID guidKey,UINT32 *pcchLength) {
  4813. return This->lpVtbl->GetStringLength(This,guidKey,pcchLength);
  4814. }
  4815. static FORCEINLINE HRESULT IMFActivate_GetString(IMFActivate* This,REFGUID guidKey,LPWSTR pwszValue,UINT32 cchBufSize,UINT32 *pcchLength) {
  4816. return This->lpVtbl->GetString(This,guidKey,pwszValue,cchBufSize,pcchLength);
  4817. }
  4818. static FORCEINLINE HRESULT IMFActivate_GetAllocatedString(IMFActivate* This,REFGUID guidKey,LPWSTR *ppwszValue,UINT32 *pcchLength) {
  4819. return This->lpVtbl->GetAllocatedString(This,guidKey,ppwszValue,pcchLength);
  4820. }
  4821. static FORCEINLINE HRESULT IMFActivate_GetBlobSize(IMFActivate* This,REFGUID guidKey,UINT32 *pcbBlobSize) {
  4822. return This->lpVtbl->GetBlobSize(This,guidKey,pcbBlobSize);
  4823. }
  4824. static FORCEINLINE HRESULT IMFActivate_GetBlob(IMFActivate* This,REFGUID guidKey,UINT8 *pBuf,UINT32 cbBufSize,UINT32 *pcbBlobSize) {
  4825. return This->lpVtbl->GetBlob(This,guidKey,pBuf,cbBufSize,pcbBlobSize);
  4826. }
  4827. static FORCEINLINE HRESULT IMFActivate_GetAllocatedBlob(IMFActivate* This,REFGUID guidKey,UINT8 **ppBuf,UINT32 *pcbSize) {
  4828. return This->lpVtbl->GetAllocatedBlob(This,guidKey,ppBuf,pcbSize);
  4829. }
  4830. static FORCEINLINE HRESULT IMFActivate_GetUnknown(IMFActivate* This,REFGUID guidKey,REFIID riid,LPVOID *ppv) {
  4831. return This->lpVtbl->GetUnknown(This,guidKey,riid,ppv);
  4832. }
  4833. static FORCEINLINE HRESULT IMFActivate_SetItem(IMFActivate* This,REFGUID guidKey,REFPROPVARIANT Value) {
  4834. return This->lpVtbl->SetItem(This,guidKey,Value);
  4835. }
  4836. static FORCEINLINE HRESULT IMFActivate_DeleteItem(IMFActivate* This,REFGUID guidKey) {
  4837. return This->lpVtbl->DeleteItem(This,guidKey);
  4838. }
  4839. static FORCEINLINE HRESULT IMFActivate_DeleteAllItems(IMFActivate* This) {
  4840. return This->lpVtbl->DeleteAllItems(This);
  4841. }
  4842. static FORCEINLINE HRESULT IMFActivate_SetUINT32(IMFActivate* This,REFGUID guidKey,UINT32 unValue) {
  4843. return This->lpVtbl->SetUINT32(This,guidKey,unValue);
  4844. }
  4845. static FORCEINLINE HRESULT IMFActivate_SetUINT64(IMFActivate* This,REFGUID guidKey,UINT64 unValue) {
  4846. return This->lpVtbl->SetUINT64(This,guidKey,unValue);
  4847. }
  4848. static FORCEINLINE HRESULT IMFActivate_SetDouble(IMFActivate* This,REFGUID guidKey,double fValue) {
  4849. return This->lpVtbl->SetDouble(This,guidKey,fValue);
  4850. }
  4851. static FORCEINLINE HRESULT IMFActivate_SetGUID(IMFActivate* This,REFGUID guidKey,REFGUID guidValue) {
  4852. return This->lpVtbl->SetGUID(This,guidKey,guidValue);
  4853. }
  4854. static FORCEINLINE HRESULT IMFActivate_SetString(IMFActivate* This,REFGUID guidKey,LPCWSTR wszValue) {
  4855. return This->lpVtbl->SetString(This,guidKey,wszValue);
  4856. }
  4857. static FORCEINLINE HRESULT IMFActivate_SetBlob(IMFActivate* This,REFGUID guidKey,const UINT8 *pBuf,UINT32 cbBufSize) {
  4858. return This->lpVtbl->SetBlob(This,guidKey,pBuf,cbBufSize);
  4859. }
  4860. static FORCEINLINE HRESULT IMFActivate_SetUnknown(IMFActivate* This,REFGUID guidKey,IUnknown *pUnknown) {
  4861. return This->lpVtbl->SetUnknown(This,guidKey,pUnknown);
  4862. }
  4863. static FORCEINLINE HRESULT IMFActivate_LockStore(IMFActivate* This) {
  4864. return This->lpVtbl->LockStore(This);
  4865. }
  4866. static FORCEINLINE HRESULT IMFActivate_UnlockStore(IMFActivate* This) {
  4867. return This->lpVtbl->UnlockStore(This);
  4868. }
  4869. static FORCEINLINE HRESULT IMFActivate_GetCount(IMFActivate* This,UINT32 *pcItems) {
  4870. return This->lpVtbl->GetCount(This,pcItems);
  4871. }
  4872. static FORCEINLINE HRESULT IMFActivate_GetItemByIndex(IMFActivate* This,UINT32 unIndex,GUID *pguidKey,PROPVARIANT *pValue) {
  4873. return This->lpVtbl->GetItemByIndex(This,unIndex,pguidKey,pValue);
  4874. }
  4875. static FORCEINLINE HRESULT IMFActivate_CopyAllItems(IMFActivate* This,IMFAttributes *pDest) {
  4876. return This->lpVtbl->CopyAllItems(This,pDest);
  4877. }
  4878. /*** IMFActivate methods ***/
  4879. static FORCEINLINE HRESULT IMFActivate_ActivateObject(IMFActivate* This,REFIID riid,void **ppv) {
  4880. return This->lpVtbl->ActivateObject(This,riid,ppv);
  4881. }
  4882. static FORCEINLINE HRESULT IMFActivate_ShutdownObject(IMFActivate* This) {
  4883. return This->lpVtbl->ShutdownObject(This);
  4884. }
  4885. static FORCEINLINE HRESULT IMFActivate_DetachObject(IMFActivate* This) {
  4886. return This->lpVtbl->DetachObject(This);
  4887. }
  4888. #endif
  4889. #endif
  4890. #endif
  4891. #endif /* __IMFActivate_INTERFACE_DEFINED__ */
  4892. #endif
  4893. #if WINVER >= _WIN32_WINNT_WIN7
  4894. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  4895. typedef enum _MF_Plugin_Type {
  4896. MF_Plugin_Type_MFT = 0,
  4897. MF_Plugin_Type_MediaSource = 1,
  4898. MF_Plugin_Type_MFT_MatchOutputType = 2,
  4899. MF_Plugin_Type_Other = (DWORD)-1
  4900. } MF_Plugin_Type;
  4901. /*****************************************************************************
  4902. * IMFPluginControl interface
  4903. */
  4904. #ifndef __IMFPluginControl_INTERFACE_DEFINED__
  4905. #define __IMFPluginControl_INTERFACE_DEFINED__
  4906. DEFINE_GUID(IID_IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96);
  4907. #if defined(__cplusplus) && !defined(CINTERFACE)
  4908. MIDL_INTERFACE("5c6c44bf-1db6-435b-9249-e8cd10fdec96")
  4909. IMFPluginControl : public IUnknown
  4910. {
  4911. virtual HRESULT STDMETHODCALLTYPE GetPreferredClsid(
  4912. DWORD pluginType,
  4913. LPCWSTR selector,
  4914. CLSID *clsid) = 0;
  4915. virtual HRESULT STDMETHODCALLTYPE GetPreferredClsidByIndex(
  4916. DWORD pluginType,
  4917. DWORD index,
  4918. LPWSTR *selector,
  4919. CLSID *clsid) = 0;
  4920. virtual HRESULT STDMETHODCALLTYPE SetPreferredClsid(
  4921. DWORD pluginType,
  4922. LPCWSTR selector,
  4923. const CLSID *clsid) = 0;
  4924. virtual HRESULT STDMETHODCALLTYPE IsDisabled(
  4925. DWORD pluginType,
  4926. REFCLSID clsid) = 0;
  4927. virtual HRESULT STDMETHODCALLTYPE GetDisabledByIndex(
  4928. DWORD pluginType,
  4929. DWORD index,
  4930. CLSID *clsid) = 0;
  4931. virtual HRESULT STDMETHODCALLTYPE SetDisabled(
  4932. DWORD pluginType,
  4933. REFCLSID clsid,
  4934. WINBOOL disabled) = 0;
  4935. };
  4936. #ifdef __CRT_UUID_DECL
  4937. __CRT_UUID_DECL(IMFPluginControl, 0x5c6c44bf, 0x1db6, 0x435b, 0x92,0x49, 0xe8,0xcd,0x10,0xfd,0xec,0x96)
  4938. #endif
  4939. #else
  4940. typedef struct IMFPluginControlVtbl {
  4941. BEGIN_INTERFACE
  4942. /*** IUnknown methods ***/
  4943. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  4944. IMFPluginControl *This,
  4945. REFIID riid,
  4946. void **ppvObject);
  4947. ULONG (STDMETHODCALLTYPE *AddRef)(
  4948. IMFPluginControl *This);
  4949. ULONG (STDMETHODCALLTYPE *Release)(
  4950. IMFPluginControl *This);
  4951. /*** IMFPluginControl methods ***/
  4952. HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
  4953. IMFPluginControl *This,
  4954. DWORD pluginType,
  4955. LPCWSTR selector,
  4956. CLSID *clsid);
  4957. HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
  4958. IMFPluginControl *This,
  4959. DWORD pluginType,
  4960. DWORD index,
  4961. LPWSTR *selector,
  4962. CLSID *clsid);
  4963. HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
  4964. IMFPluginControl *This,
  4965. DWORD pluginType,
  4966. LPCWSTR selector,
  4967. const CLSID *clsid);
  4968. HRESULT (STDMETHODCALLTYPE *IsDisabled)(
  4969. IMFPluginControl *This,
  4970. DWORD pluginType,
  4971. REFCLSID clsid);
  4972. HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
  4973. IMFPluginControl *This,
  4974. DWORD pluginType,
  4975. DWORD index,
  4976. CLSID *clsid);
  4977. HRESULT (STDMETHODCALLTYPE *SetDisabled)(
  4978. IMFPluginControl *This,
  4979. DWORD pluginType,
  4980. REFCLSID clsid,
  4981. WINBOOL disabled);
  4982. END_INTERFACE
  4983. } IMFPluginControlVtbl;
  4984. interface IMFPluginControl {
  4985. CONST_VTBL IMFPluginControlVtbl* lpVtbl;
  4986. };
  4987. #ifdef COBJMACROS
  4988. #ifndef WIDL_C_INLINE_WRAPPERS
  4989. /*** IUnknown methods ***/
  4990. #define IMFPluginControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  4991. #define IMFPluginControl_AddRef(This) (This)->lpVtbl->AddRef(This)
  4992. #define IMFPluginControl_Release(This) (This)->lpVtbl->Release(This)
  4993. /*** IMFPluginControl methods ***/
  4994. #define IMFPluginControl_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
  4995. #define IMFPluginControl_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
  4996. #define IMFPluginControl_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
  4997. #define IMFPluginControl_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
  4998. #define IMFPluginControl_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
  4999. #define IMFPluginControl_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
  5000. #else
  5001. /*** IUnknown methods ***/
  5002. static FORCEINLINE HRESULT IMFPluginControl_QueryInterface(IMFPluginControl* This,REFIID riid,void **ppvObject) {
  5003. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  5004. }
  5005. static FORCEINLINE ULONG IMFPluginControl_AddRef(IMFPluginControl* This) {
  5006. return This->lpVtbl->AddRef(This);
  5007. }
  5008. static FORCEINLINE ULONG IMFPluginControl_Release(IMFPluginControl* This) {
  5009. return This->lpVtbl->Release(This);
  5010. }
  5011. /*** IMFPluginControl methods ***/
  5012. static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
  5013. return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
  5014. }
  5015. static FORCEINLINE HRESULT IMFPluginControl_GetPreferredClsidByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
  5016. return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
  5017. }
  5018. static FORCEINLINE HRESULT IMFPluginControl_SetPreferredClsid(IMFPluginControl* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
  5019. return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
  5020. }
  5021. static FORCEINLINE HRESULT IMFPluginControl_IsDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid) {
  5022. return This->lpVtbl->IsDisabled(This,pluginType,clsid);
  5023. }
  5024. static FORCEINLINE HRESULT IMFPluginControl_GetDisabledByIndex(IMFPluginControl* This,DWORD pluginType,DWORD index,CLSID *clsid) {
  5025. return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
  5026. }
  5027. static FORCEINLINE HRESULT IMFPluginControl_SetDisabled(IMFPluginControl* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
  5028. return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
  5029. }
  5030. #endif
  5031. #endif
  5032. #endif
  5033. #endif /* __IMFPluginControl_INTERFACE_DEFINED__ */
  5034. typedef enum MF_PLUGIN_CONTROL_POLICY {
  5035. MF_PLUGIN_CONTROL_POLICY_USE_ALL_PLUGINS = 0,
  5036. MF_PLUGIN_CONTROL_POLICY_USE_APPROVED_PLUGINS = 1,
  5037. MF_PLUGIN_CONTROL_POLICY_USE_WEB_PLUGINS = 2,
  5038. MF_PLUGIN_CONTROL_POLICY_USE_WEB_PLUGINS_EDGEMODE = 3
  5039. } MF_PLUGIN_CONTROL_POLICY;
  5040. /*****************************************************************************
  5041. * IMFPluginControl2 interface
  5042. */
  5043. #ifndef __IMFPluginControl2_INTERFACE_DEFINED__
  5044. #define __IMFPluginControl2_INTERFACE_DEFINED__
  5045. DEFINE_GUID(IID_IMFPluginControl2, 0xc6982083, 0x3ddc, 0x45cb, 0xaf,0x5e, 0x0f,0x7a,0x8c,0xe4,0xde,0x77);
  5046. #if defined(__cplusplus) && !defined(CINTERFACE)
  5047. MIDL_INTERFACE("c6982083-3ddc-45cb-af5e-0f7a8ce4de77")
  5048. IMFPluginControl2 : public IMFPluginControl
  5049. {
  5050. virtual HRESULT STDMETHODCALLTYPE SetPolicy(
  5051. MF_PLUGIN_CONTROL_POLICY policy) = 0;
  5052. };
  5053. #ifdef __CRT_UUID_DECL
  5054. __CRT_UUID_DECL(IMFPluginControl2, 0xc6982083, 0x3ddc, 0x45cb, 0xaf,0x5e, 0x0f,0x7a,0x8c,0xe4,0xde,0x77)
  5055. #endif
  5056. #else
  5057. typedef struct IMFPluginControl2Vtbl {
  5058. BEGIN_INTERFACE
  5059. /*** IUnknown methods ***/
  5060. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  5061. IMFPluginControl2 *This,
  5062. REFIID riid,
  5063. void **ppvObject);
  5064. ULONG (STDMETHODCALLTYPE *AddRef)(
  5065. IMFPluginControl2 *This);
  5066. ULONG (STDMETHODCALLTYPE *Release)(
  5067. IMFPluginControl2 *This);
  5068. /*** IMFPluginControl methods ***/
  5069. HRESULT (STDMETHODCALLTYPE *GetPreferredClsid)(
  5070. IMFPluginControl2 *This,
  5071. DWORD pluginType,
  5072. LPCWSTR selector,
  5073. CLSID *clsid);
  5074. HRESULT (STDMETHODCALLTYPE *GetPreferredClsidByIndex)(
  5075. IMFPluginControl2 *This,
  5076. DWORD pluginType,
  5077. DWORD index,
  5078. LPWSTR *selector,
  5079. CLSID *clsid);
  5080. HRESULT (STDMETHODCALLTYPE *SetPreferredClsid)(
  5081. IMFPluginControl2 *This,
  5082. DWORD pluginType,
  5083. LPCWSTR selector,
  5084. const CLSID *clsid);
  5085. HRESULT (STDMETHODCALLTYPE *IsDisabled)(
  5086. IMFPluginControl2 *This,
  5087. DWORD pluginType,
  5088. REFCLSID clsid);
  5089. HRESULT (STDMETHODCALLTYPE *GetDisabledByIndex)(
  5090. IMFPluginControl2 *This,
  5091. DWORD pluginType,
  5092. DWORD index,
  5093. CLSID *clsid);
  5094. HRESULT (STDMETHODCALLTYPE *SetDisabled)(
  5095. IMFPluginControl2 *This,
  5096. DWORD pluginType,
  5097. REFCLSID clsid,
  5098. WINBOOL disabled);
  5099. /*** IMFPluginControl2 methods ***/
  5100. HRESULT (STDMETHODCALLTYPE *SetPolicy)(
  5101. IMFPluginControl2 *This,
  5102. MF_PLUGIN_CONTROL_POLICY policy);
  5103. END_INTERFACE
  5104. } IMFPluginControl2Vtbl;
  5105. interface IMFPluginControl2 {
  5106. CONST_VTBL IMFPluginControl2Vtbl* lpVtbl;
  5107. };
  5108. #ifdef COBJMACROS
  5109. #ifndef WIDL_C_INLINE_WRAPPERS
  5110. /*** IUnknown methods ***/
  5111. #define IMFPluginControl2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  5112. #define IMFPluginControl2_AddRef(This) (This)->lpVtbl->AddRef(This)
  5113. #define IMFPluginControl2_Release(This) (This)->lpVtbl->Release(This)
  5114. /*** IMFPluginControl methods ***/
  5115. #define IMFPluginControl2_GetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid)
  5116. #define IMFPluginControl2_GetPreferredClsidByIndex(This,pluginType,index,selector,clsid) (This)->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid)
  5117. #define IMFPluginControl2_SetPreferredClsid(This,pluginType,selector,clsid) (This)->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid)
  5118. #define IMFPluginControl2_IsDisabled(This,pluginType,clsid) (This)->lpVtbl->IsDisabled(This,pluginType,clsid)
  5119. #define IMFPluginControl2_GetDisabledByIndex(This,pluginType,index,clsid) (This)->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid)
  5120. #define IMFPluginControl2_SetDisabled(This,pluginType,clsid,disabled) (This)->lpVtbl->SetDisabled(This,pluginType,clsid,disabled)
  5121. /*** IMFPluginControl2 methods ***/
  5122. #define IMFPluginControl2_SetPolicy(This,policy) (This)->lpVtbl->SetPolicy(This,policy)
  5123. #else
  5124. /*** IUnknown methods ***/
  5125. static FORCEINLINE HRESULT IMFPluginControl2_QueryInterface(IMFPluginControl2* This,REFIID riid,void **ppvObject) {
  5126. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  5127. }
  5128. static FORCEINLINE ULONG IMFPluginControl2_AddRef(IMFPluginControl2* This) {
  5129. return This->lpVtbl->AddRef(This);
  5130. }
  5131. static FORCEINLINE ULONG IMFPluginControl2_Release(IMFPluginControl2* This) {
  5132. return This->lpVtbl->Release(This);
  5133. }
  5134. /*** IMFPluginControl methods ***/
  5135. static FORCEINLINE HRESULT IMFPluginControl2_GetPreferredClsid(IMFPluginControl2* This,DWORD pluginType,LPCWSTR selector,CLSID *clsid) {
  5136. return This->lpVtbl->GetPreferredClsid(This,pluginType,selector,clsid);
  5137. }
  5138. static FORCEINLINE HRESULT IMFPluginControl2_GetPreferredClsidByIndex(IMFPluginControl2* This,DWORD pluginType,DWORD index,LPWSTR *selector,CLSID *clsid) {
  5139. return This->lpVtbl->GetPreferredClsidByIndex(This,pluginType,index,selector,clsid);
  5140. }
  5141. static FORCEINLINE HRESULT IMFPluginControl2_SetPreferredClsid(IMFPluginControl2* This,DWORD pluginType,LPCWSTR selector,const CLSID *clsid) {
  5142. return This->lpVtbl->SetPreferredClsid(This,pluginType,selector,clsid);
  5143. }
  5144. static FORCEINLINE HRESULT IMFPluginControl2_IsDisabled(IMFPluginControl2* This,DWORD pluginType,REFCLSID clsid) {
  5145. return This->lpVtbl->IsDisabled(This,pluginType,clsid);
  5146. }
  5147. static FORCEINLINE HRESULT IMFPluginControl2_GetDisabledByIndex(IMFPluginControl2* This,DWORD pluginType,DWORD index,CLSID *clsid) {
  5148. return This->lpVtbl->GetDisabledByIndex(This,pluginType,index,clsid);
  5149. }
  5150. static FORCEINLINE HRESULT IMFPluginControl2_SetDisabled(IMFPluginControl2* This,DWORD pluginType,REFCLSID clsid,WINBOOL disabled) {
  5151. return This->lpVtbl->SetDisabled(This,pluginType,clsid,disabled);
  5152. }
  5153. /*** IMFPluginControl2 methods ***/
  5154. static FORCEINLINE HRESULT IMFPluginControl2_SetPolicy(IMFPluginControl2* This,MF_PLUGIN_CONTROL_POLICY policy) {
  5155. return This->lpVtbl->SetPolicy(This,policy);
  5156. }
  5157. #endif
  5158. #endif
  5159. #endif
  5160. #endif /* __IMFPluginControl2_INTERFACE_DEFINED__ */
  5161. #endif
  5162. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
  5163. /*****************************************************************************
  5164. * IMFDXGIDeviceManager interface
  5165. */
  5166. #ifndef __IMFDXGIDeviceManager_INTERFACE_DEFINED__
  5167. #define __IMFDXGIDeviceManager_INTERFACE_DEFINED__
  5168. DEFINE_GUID(IID_IMFDXGIDeviceManager, 0xeb533d5d, 0x2db6, 0x40f8, 0x97,0xa9, 0x49,0x46,0x92,0x01,0x4f,0x07);
  5169. #if defined(__cplusplus) && !defined(CINTERFACE)
  5170. MIDL_INTERFACE("eb533d5d-2db6-40f8-97a9-494692014f07")
  5171. IMFDXGIDeviceManager : public IUnknown
  5172. {
  5173. virtual HRESULT STDMETHODCALLTYPE CloseDeviceHandle(
  5174. HANDLE hDevice) = 0;
  5175. virtual HRESULT STDMETHODCALLTYPE GetVideoService(
  5176. HANDLE hDevice,
  5177. REFIID riid,
  5178. void **ppService) = 0;
  5179. virtual HRESULT STDMETHODCALLTYPE LockDevice(
  5180. HANDLE hDevice,
  5181. REFIID riid,
  5182. void **ppUnkDevice,
  5183. WINBOOL fBlock) = 0;
  5184. virtual HRESULT STDMETHODCALLTYPE OpenDeviceHandle(
  5185. HANDLE *phDevice) = 0;
  5186. virtual HRESULT STDMETHODCALLTYPE ResetDevice(
  5187. IUnknown *pUnkDevice,
  5188. UINT resetToken) = 0;
  5189. virtual HRESULT STDMETHODCALLTYPE TestDevice(
  5190. HANDLE hDevice) = 0;
  5191. virtual HRESULT STDMETHODCALLTYPE UnlockDevice(
  5192. HANDLE hDevice,
  5193. WINBOOL fSaveState) = 0;
  5194. };
  5195. #ifdef __CRT_UUID_DECL
  5196. __CRT_UUID_DECL(IMFDXGIDeviceManager, 0xeb533d5d, 0x2db6, 0x40f8, 0x97,0xa9, 0x49,0x46,0x92,0x01,0x4f,0x07)
  5197. #endif
  5198. #else
  5199. typedef struct IMFDXGIDeviceManagerVtbl {
  5200. BEGIN_INTERFACE
  5201. /*** IUnknown methods ***/
  5202. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  5203. IMFDXGIDeviceManager *This,
  5204. REFIID riid,
  5205. void **ppvObject);
  5206. ULONG (STDMETHODCALLTYPE *AddRef)(
  5207. IMFDXGIDeviceManager *This);
  5208. ULONG (STDMETHODCALLTYPE *Release)(
  5209. IMFDXGIDeviceManager *This);
  5210. /*** IMFDXGIDeviceManager methods ***/
  5211. HRESULT (STDMETHODCALLTYPE *CloseDeviceHandle)(
  5212. IMFDXGIDeviceManager *This,
  5213. HANDLE hDevice);
  5214. HRESULT (STDMETHODCALLTYPE *GetVideoService)(
  5215. IMFDXGIDeviceManager *This,
  5216. HANDLE hDevice,
  5217. REFIID riid,
  5218. void **ppService);
  5219. HRESULT (STDMETHODCALLTYPE *LockDevice)(
  5220. IMFDXGIDeviceManager *This,
  5221. HANDLE hDevice,
  5222. REFIID riid,
  5223. void **ppUnkDevice,
  5224. WINBOOL fBlock);
  5225. HRESULT (STDMETHODCALLTYPE *OpenDeviceHandle)(
  5226. IMFDXGIDeviceManager *This,
  5227. HANDLE *phDevice);
  5228. HRESULT (STDMETHODCALLTYPE *ResetDevice)(
  5229. IMFDXGIDeviceManager *This,
  5230. IUnknown *pUnkDevice,
  5231. UINT resetToken);
  5232. HRESULT (STDMETHODCALLTYPE *TestDevice)(
  5233. IMFDXGIDeviceManager *This,
  5234. HANDLE hDevice);
  5235. HRESULT (STDMETHODCALLTYPE *UnlockDevice)(
  5236. IMFDXGIDeviceManager *This,
  5237. HANDLE hDevice,
  5238. WINBOOL fSaveState);
  5239. END_INTERFACE
  5240. } IMFDXGIDeviceManagerVtbl;
  5241. interface IMFDXGIDeviceManager {
  5242. CONST_VTBL IMFDXGIDeviceManagerVtbl* lpVtbl;
  5243. };
  5244. #ifdef COBJMACROS
  5245. #ifndef WIDL_C_INLINE_WRAPPERS
  5246. /*** IUnknown methods ***/
  5247. #define IMFDXGIDeviceManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  5248. #define IMFDXGIDeviceManager_AddRef(This) (This)->lpVtbl->AddRef(This)
  5249. #define IMFDXGIDeviceManager_Release(This) (This)->lpVtbl->Release(This)
  5250. /*** IMFDXGIDeviceManager methods ***/
  5251. #define IMFDXGIDeviceManager_CloseDeviceHandle(This,hDevice) (This)->lpVtbl->CloseDeviceHandle(This,hDevice)
  5252. #define IMFDXGIDeviceManager_GetVideoService(This,hDevice,riid,ppService) (This)->lpVtbl->GetVideoService(This,hDevice,riid,ppService)
  5253. #define IMFDXGIDeviceManager_LockDevice(This,hDevice,riid,ppUnkDevice,fBlock) (This)->lpVtbl->LockDevice(This,hDevice,riid,ppUnkDevice,fBlock)
  5254. #define IMFDXGIDeviceManager_OpenDeviceHandle(This,phDevice) (This)->lpVtbl->OpenDeviceHandle(This,phDevice)
  5255. #define IMFDXGIDeviceManager_ResetDevice(This,pUnkDevice,resetToken) (This)->lpVtbl->ResetDevice(This,pUnkDevice,resetToken)
  5256. #define IMFDXGIDeviceManager_TestDevice(This,hDevice) (This)->lpVtbl->TestDevice(This,hDevice)
  5257. #define IMFDXGIDeviceManager_UnlockDevice(This,hDevice,fSaveState) (This)->lpVtbl->UnlockDevice(This,hDevice,fSaveState)
  5258. #else
  5259. /*** IUnknown methods ***/
  5260. static FORCEINLINE HRESULT IMFDXGIDeviceManager_QueryInterface(IMFDXGIDeviceManager* This,REFIID riid,void **ppvObject) {
  5261. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  5262. }
  5263. static FORCEINLINE ULONG IMFDXGIDeviceManager_AddRef(IMFDXGIDeviceManager* This) {
  5264. return This->lpVtbl->AddRef(This);
  5265. }
  5266. static FORCEINLINE ULONG IMFDXGIDeviceManager_Release(IMFDXGIDeviceManager* This) {
  5267. return This->lpVtbl->Release(This);
  5268. }
  5269. /*** IMFDXGIDeviceManager methods ***/
  5270. static FORCEINLINE HRESULT IMFDXGIDeviceManager_CloseDeviceHandle(IMFDXGIDeviceManager* This,HANDLE hDevice) {
  5271. return This->lpVtbl->CloseDeviceHandle(This,hDevice);
  5272. }
  5273. static FORCEINLINE HRESULT IMFDXGIDeviceManager_GetVideoService(IMFDXGIDeviceManager* This,HANDLE hDevice,REFIID riid,void **ppService) {
  5274. return This->lpVtbl->GetVideoService(This,hDevice,riid,ppService);
  5275. }
  5276. static FORCEINLINE HRESULT IMFDXGIDeviceManager_LockDevice(IMFDXGIDeviceManager* This,HANDLE hDevice,REFIID riid,void **ppUnkDevice,WINBOOL fBlock) {
  5277. return This->lpVtbl->LockDevice(This,hDevice,riid,ppUnkDevice,fBlock);
  5278. }
  5279. static FORCEINLINE HRESULT IMFDXGIDeviceManager_OpenDeviceHandle(IMFDXGIDeviceManager* This,HANDLE *phDevice) {
  5280. return This->lpVtbl->OpenDeviceHandle(This,phDevice);
  5281. }
  5282. static FORCEINLINE HRESULT IMFDXGIDeviceManager_ResetDevice(IMFDXGIDeviceManager* This,IUnknown *pUnkDevice,UINT resetToken) {
  5283. return This->lpVtbl->ResetDevice(This,pUnkDevice,resetToken);
  5284. }
  5285. static FORCEINLINE HRESULT IMFDXGIDeviceManager_TestDevice(IMFDXGIDeviceManager* This,HANDLE hDevice) {
  5286. return This->lpVtbl->TestDevice(This,hDevice);
  5287. }
  5288. static FORCEINLINE HRESULT IMFDXGIDeviceManager_UnlockDevice(IMFDXGIDeviceManager* This,HANDLE hDevice,WINBOOL fSaveState) {
  5289. return This->lpVtbl->UnlockDevice(This,hDevice,fSaveState);
  5290. }
  5291. #endif
  5292. #endif
  5293. #endif
  5294. #endif /* __IMFDXGIDeviceManager_INTERFACE_DEFINED__ */
  5295. typedef enum _MF_STREAM_STATE {
  5296. MF_STREAM_STATE_STOPPED = 0,
  5297. MF_STREAM_STATE_PAUSED = 1,
  5298. MF_STREAM_STATE_RUNNING = 2
  5299. } MF_STREAM_STATE;
  5300. #endif
  5301. #endif
  5302. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  5303. #if NTDDI_VERSION >= NTDDI_WIN10_RS2
  5304. /*****************************************************************************
  5305. * IMFMuxStreamAttributesManager interface
  5306. */
  5307. #ifndef __IMFMuxStreamAttributesManager_INTERFACE_DEFINED__
  5308. #define __IMFMuxStreamAttributesManager_INTERFACE_DEFINED__
  5309. DEFINE_GUID(IID_IMFMuxStreamAttributesManager, 0xce8bd576, 0xe440, 0x43b3, 0xbe,0x34, 0x1e,0x53,0xf5,0x65,0xf7,0xe8);
  5310. #if defined(__cplusplus) && !defined(CINTERFACE)
  5311. MIDL_INTERFACE("ce8bd576-e440-43b3-be34-1e53f565f7e8")
  5312. IMFMuxStreamAttributesManager : public IUnknown
  5313. {
  5314. virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
  5315. DWORD *pdwMuxStreamCount) = 0;
  5316. virtual HRESULT STDMETHODCALLTYPE GetAttributes(
  5317. DWORD dwMuxStreamIndex,
  5318. IMFAttributes **ppStreamAttributes) = 0;
  5319. };
  5320. #ifdef __CRT_UUID_DECL
  5321. __CRT_UUID_DECL(IMFMuxStreamAttributesManager, 0xce8bd576, 0xe440, 0x43b3, 0xbe,0x34, 0x1e,0x53,0xf5,0x65,0xf7,0xe8)
  5322. #endif
  5323. #else
  5324. typedef struct IMFMuxStreamAttributesManagerVtbl {
  5325. BEGIN_INTERFACE
  5326. /*** IUnknown methods ***/
  5327. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  5328. IMFMuxStreamAttributesManager *This,
  5329. REFIID riid,
  5330. void **ppvObject);
  5331. ULONG (STDMETHODCALLTYPE *AddRef)(
  5332. IMFMuxStreamAttributesManager *This);
  5333. ULONG (STDMETHODCALLTYPE *Release)(
  5334. IMFMuxStreamAttributesManager *This);
  5335. /*** IMFMuxStreamAttributesManager methods ***/
  5336. HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
  5337. IMFMuxStreamAttributesManager *This,
  5338. DWORD *pdwMuxStreamCount);
  5339. HRESULT (STDMETHODCALLTYPE *GetAttributes)(
  5340. IMFMuxStreamAttributesManager *This,
  5341. DWORD dwMuxStreamIndex,
  5342. IMFAttributes **ppStreamAttributes);
  5343. END_INTERFACE
  5344. } IMFMuxStreamAttributesManagerVtbl;
  5345. interface IMFMuxStreamAttributesManager {
  5346. CONST_VTBL IMFMuxStreamAttributesManagerVtbl* lpVtbl;
  5347. };
  5348. #ifdef COBJMACROS
  5349. #ifndef WIDL_C_INLINE_WRAPPERS
  5350. /*** IUnknown methods ***/
  5351. #define IMFMuxStreamAttributesManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  5352. #define IMFMuxStreamAttributesManager_AddRef(This) (This)->lpVtbl->AddRef(This)
  5353. #define IMFMuxStreamAttributesManager_Release(This) (This)->lpVtbl->Release(This)
  5354. /*** IMFMuxStreamAttributesManager methods ***/
  5355. #define IMFMuxStreamAttributesManager_GetStreamCount(This,pdwMuxStreamCount) (This)->lpVtbl->GetStreamCount(This,pdwMuxStreamCount)
  5356. #define IMFMuxStreamAttributesManager_GetAttributes(This,dwMuxStreamIndex,ppStreamAttributes) (This)->lpVtbl->GetAttributes(This,dwMuxStreamIndex,ppStreamAttributes)
  5357. #else
  5358. /*** IUnknown methods ***/
  5359. static FORCEINLINE HRESULT IMFMuxStreamAttributesManager_QueryInterface(IMFMuxStreamAttributesManager* This,REFIID riid,void **ppvObject) {
  5360. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  5361. }
  5362. static FORCEINLINE ULONG IMFMuxStreamAttributesManager_AddRef(IMFMuxStreamAttributesManager* This) {
  5363. return This->lpVtbl->AddRef(This);
  5364. }
  5365. static FORCEINLINE ULONG IMFMuxStreamAttributesManager_Release(IMFMuxStreamAttributesManager* This) {
  5366. return This->lpVtbl->Release(This);
  5367. }
  5368. /*** IMFMuxStreamAttributesManager methods ***/
  5369. static FORCEINLINE HRESULT IMFMuxStreamAttributesManager_GetStreamCount(IMFMuxStreamAttributesManager* This,DWORD *pdwMuxStreamCount) {
  5370. return This->lpVtbl->GetStreamCount(This,pdwMuxStreamCount);
  5371. }
  5372. static FORCEINLINE HRESULT IMFMuxStreamAttributesManager_GetAttributes(IMFMuxStreamAttributesManager* This,DWORD dwMuxStreamIndex,IMFAttributes **ppStreamAttributes) {
  5373. return This->lpVtbl->GetAttributes(This,dwMuxStreamIndex,ppStreamAttributes);
  5374. }
  5375. #endif
  5376. #endif
  5377. #endif
  5378. #endif /* __IMFMuxStreamAttributesManager_INTERFACE_DEFINED__ */
  5379. /*****************************************************************************
  5380. * IMFMuxStreamMediaTypeManager interface
  5381. */
  5382. #ifndef __IMFMuxStreamMediaTypeManager_INTERFACE_DEFINED__
  5383. #define __IMFMuxStreamMediaTypeManager_INTERFACE_DEFINED__
  5384. DEFINE_GUID(IID_IMFMuxStreamMediaTypeManager, 0x505a2c72, 0x42f7, 0x4690, 0xae,0xab, 0x8f,0x51,0x3d,0x0f,0xfd,0xb8);
  5385. #if defined(__cplusplus) && !defined(CINTERFACE)
  5386. MIDL_INTERFACE("505a2c72-42f7-4690-aeab-8f513d0ffdb8")
  5387. IMFMuxStreamMediaTypeManager : public IUnknown
  5388. {
  5389. virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
  5390. DWORD *pdwMuxStreamCount) = 0;
  5391. virtual HRESULT STDMETHODCALLTYPE GetMediaType(
  5392. DWORD dwMuxStreamIndex,
  5393. IMFMediaType **ppMediaType) = 0;
  5394. virtual HRESULT STDMETHODCALLTYPE GetStreamConfigurationCount(
  5395. DWORD *pdwCount) = 0;
  5396. virtual HRESULT STDMETHODCALLTYPE AddStreamConfiguration(
  5397. ULONGLONG ullStreamMask) = 0;
  5398. virtual HRESULT STDMETHODCALLTYPE RemoveStreamConfiguration(
  5399. ULONGLONG ullStreamMask) = 0;
  5400. virtual HRESULT STDMETHODCALLTYPE GetStreamConfiguration(
  5401. DWORD ulIndex,
  5402. ULONGLONG *pullStreamMask) = 0;
  5403. };
  5404. #ifdef __CRT_UUID_DECL
  5405. __CRT_UUID_DECL(IMFMuxStreamMediaTypeManager, 0x505a2c72, 0x42f7, 0x4690, 0xae,0xab, 0x8f,0x51,0x3d,0x0f,0xfd,0xb8)
  5406. #endif
  5407. #else
  5408. typedef struct IMFMuxStreamMediaTypeManagerVtbl {
  5409. BEGIN_INTERFACE
  5410. /*** IUnknown methods ***/
  5411. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  5412. IMFMuxStreamMediaTypeManager *This,
  5413. REFIID riid,
  5414. void **ppvObject);
  5415. ULONG (STDMETHODCALLTYPE *AddRef)(
  5416. IMFMuxStreamMediaTypeManager *This);
  5417. ULONG (STDMETHODCALLTYPE *Release)(
  5418. IMFMuxStreamMediaTypeManager *This);
  5419. /*** IMFMuxStreamMediaTypeManager methods ***/
  5420. HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
  5421. IMFMuxStreamMediaTypeManager *This,
  5422. DWORD *pdwMuxStreamCount);
  5423. HRESULT (STDMETHODCALLTYPE *GetMediaType)(
  5424. IMFMuxStreamMediaTypeManager *This,
  5425. DWORD dwMuxStreamIndex,
  5426. IMFMediaType **ppMediaType);
  5427. HRESULT (STDMETHODCALLTYPE *GetStreamConfigurationCount)(
  5428. IMFMuxStreamMediaTypeManager *This,
  5429. DWORD *pdwCount);
  5430. HRESULT (STDMETHODCALLTYPE *AddStreamConfiguration)(
  5431. IMFMuxStreamMediaTypeManager *This,
  5432. ULONGLONG ullStreamMask);
  5433. HRESULT (STDMETHODCALLTYPE *RemoveStreamConfiguration)(
  5434. IMFMuxStreamMediaTypeManager *This,
  5435. ULONGLONG ullStreamMask);
  5436. HRESULT (STDMETHODCALLTYPE *GetStreamConfiguration)(
  5437. IMFMuxStreamMediaTypeManager *This,
  5438. DWORD ulIndex,
  5439. ULONGLONG *pullStreamMask);
  5440. END_INTERFACE
  5441. } IMFMuxStreamMediaTypeManagerVtbl;
  5442. interface IMFMuxStreamMediaTypeManager {
  5443. CONST_VTBL IMFMuxStreamMediaTypeManagerVtbl* lpVtbl;
  5444. };
  5445. #ifdef COBJMACROS
  5446. #ifndef WIDL_C_INLINE_WRAPPERS
  5447. /*** IUnknown methods ***/
  5448. #define IMFMuxStreamMediaTypeManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  5449. #define IMFMuxStreamMediaTypeManager_AddRef(This) (This)->lpVtbl->AddRef(This)
  5450. #define IMFMuxStreamMediaTypeManager_Release(This) (This)->lpVtbl->Release(This)
  5451. /*** IMFMuxStreamMediaTypeManager methods ***/
  5452. #define IMFMuxStreamMediaTypeManager_GetStreamCount(This,pdwMuxStreamCount) (This)->lpVtbl->GetStreamCount(This,pdwMuxStreamCount)
  5453. #define IMFMuxStreamMediaTypeManager_GetMediaType(This,dwMuxStreamIndex,ppMediaType) (This)->lpVtbl->GetMediaType(This,dwMuxStreamIndex,ppMediaType)
  5454. #define IMFMuxStreamMediaTypeManager_GetStreamConfigurationCount(This,pdwCount) (This)->lpVtbl->GetStreamConfigurationCount(This,pdwCount)
  5455. #define IMFMuxStreamMediaTypeManager_AddStreamConfiguration(This,ullStreamMask) (This)->lpVtbl->AddStreamConfiguration(This,ullStreamMask)
  5456. #define IMFMuxStreamMediaTypeManager_RemoveStreamConfiguration(This,ullStreamMask) (This)->lpVtbl->RemoveStreamConfiguration(This,ullStreamMask)
  5457. #define IMFMuxStreamMediaTypeManager_GetStreamConfiguration(This,ulIndex,pullStreamMask) (This)->lpVtbl->GetStreamConfiguration(This,ulIndex,pullStreamMask)
  5458. #else
  5459. /*** IUnknown methods ***/
  5460. static FORCEINLINE HRESULT IMFMuxStreamMediaTypeManager_QueryInterface(IMFMuxStreamMediaTypeManager* This,REFIID riid,void **ppvObject) {
  5461. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  5462. }
  5463. static FORCEINLINE ULONG IMFMuxStreamMediaTypeManager_AddRef(IMFMuxStreamMediaTypeManager* This) {
  5464. return This->lpVtbl->AddRef(This);
  5465. }
  5466. static FORCEINLINE ULONG IMFMuxStreamMediaTypeManager_Release(IMFMuxStreamMediaTypeManager* This) {
  5467. return This->lpVtbl->Release(This);
  5468. }
  5469. /*** IMFMuxStreamMediaTypeManager methods ***/
  5470. static FORCEINLINE HRESULT IMFMuxStreamMediaTypeManager_GetStreamCount(IMFMuxStreamMediaTypeManager* This,DWORD *pdwMuxStreamCount) {
  5471. return This->lpVtbl->GetStreamCount(This,pdwMuxStreamCount);
  5472. }
  5473. static FORCEINLINE HRESULT IMFMuxStreamMediaTypeManager_GetMediaType(IMFMuxStreamMediaTypeManager* This,DWORD dwMuxStreamIndex,IMFMediaType **ppMediaType) {
  5474. return This->lpVtbl->GetMediaType(This,dwMuxStreamIndex,ppMediaType);
  5475. }
  5476. static FORCEINLINE HRESULT IMFMuxStreamMediaTypeManager_GetStreamConfigurationCount(IMFMuxStreamMediaTypeManager* This,DWORD *pdwCount) {
  5477. return This->lpVtbl->GetStreamConfigurationCount(This,pdwCount);
  5478. }
  5479. static FORCEINLINE HRESULT IMFMuxStreamMediaTypeManager_AddStreamConfiguration(IMFMuxStreamMediaTypeManager* This,ULONGLONG ullStreamMask) {
  5480. return This->lpVtbl->AddStreamConfiguration(This,ullStreamMask);
  5481. }
  5482. static FORCEINLINE HRESULT IMFMuxStreamMediaTypeManager_RemoveStreamConfiguration(IMFMuxStreamMediaTypeManager* This,ULONGLONG ullStreamMask) {
  5483. return This->lpVtbl->RemoveStreamConfiguration(This,ullStreamMask);
  5484. }
  5485. static FORCEINLINE HRESULT IMFMuxStreamMediaTypeManager_GetStreamConfiguration(IMFMuxStreamMediaTypeManager* This,DWORD ulIndex,ULONGLONG *pullStreamMask) {
  5486. return This->lpVtbl->GetStreamConfiguration(This,ulIndex,pullStreamMask);
  5487. }
  5488. #endif
  5489. #endif
  5490. #endif
  5491. #endif /* __IMFMuxStreamMediaTypeManager_INTERFACE_DEFINED__ */
  5492. /*****************************************************************************
  5493. * IMFMuxStreamSampleManager interface
  5494. */
  5495. #ifndef __IMFMuxStreamSampleManager_INTERFACE_DEFINED__
  5496. #define __IMFMuxStreamSampleManager_INTERFACE_DEFINED__
  5497. DEFINE_GUID(IID_IMFMuxStreamSampleManager, 0x74abbc19, 0xb1cc, 0x4e41, 0xbb,0x8b, 0x9d,0x9b,0x86,0xa8,0xf6,0xca);
  5498. #if defined(__cplusplus) && !defined(CINTERFACE)
  5499. MIDL_INTERFACE("74abbc19-b1cc-4e41-bb8b-9d9b86a8f6ca")
  5500. IMFMuxStreamSampleManager : public IUnknown
  5501. {
  5502. virtual HRESULT STDMETHODCALLTYPE GetStreamCount(
  5503. DWORD *pdwMuxStreamCount) = 0;
  5504. virtual HRESULT STDMETHODCALLTYPE GetSample(
  5505. DWORD dwMuxStreamIndex,
  5506. IMFSample **ppSample) = 0;
  5507. virtual ULONGLONG STDMETHODCALLTYPE GetStreamConfiguration(
  5508. ) = 0;
  5509. };
  5510. #ifdef __CRT_UUID_DECL
  5511. __CRT_UUID_DECL(IMFMuxStreamSampleManager, 0x74abbc19, 0xb1cc, 0x4e41, 0xbb,0x8b, 0x9d,0x9b,0x86,0xa8,0xf6,0xca)
  5512. #endif
  5513. #else
  5514. typedef struct IMFMuxStreamSampleManagerVtbl {
  5515. BEGIN_INTERFACE
  5516. /*** IUnknown methods ***/
  5517. HRESULT (STDMETHODCALLTYPE *QueryInterface)(
  5518. IMFMuxStreamSampleManager *This,
  5519. REFIID riid,
  5520. void **ppvObject);
  5521. ULONG (STDMETHODCALLTYPE *AddRef)(
  5522. IMFMuxStreamSampleManager *This);
  5523. ULONG (STDMETHODCALLTYPE *Release)(
  5524. IMFMuxStreamSampleManager *This);
  5525. /*** IMFMuxStreamSampleManager methods ***/
  5526. HRESULT (STDMETHODCALLTYPE *GetStreamCount)(
  5527. IMFMuxStreamSampleManager *This,
  5528. DWORD *pdwMuxStreamCount);
  5529. HRESULT (STDMETHODCALLTYPE *GetSample)(
  5530. IMFMuxStreamSampleManager *This,
  5531. DWORD dwMuxStreamIndex,
  5532. IMFSample **ppSample);
  5533. ULONGLONG (STDMETHODCALLTYPE *GetStreamConfiguration)(
  5534. IMFMuxStreamSampleManager *This);
  5535. END_INTERFACE
  5536. } IMFMuxStreamSampleManagerVtbl;
  5537. interface IMFMuxStreamSampleManager {
  5538. CONST_VTBL IMFMuxStreamSampleManagerVtbl* lpVtbl;
  5539. };
  5540. #ifdef COBJMACROS
  5541. #ifndef WIDL_C_INLINE_WRAPPERS
  5542. /*** IUnknown methods ***/
  5543. #define IMFMuxStreamSampleManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
  5544. #define IMFMuxStreamSampleManager_AddRef(This) (This)->lpVtbl->AddRef(This)
  5545. #define IMFMuxStreamSampleManager_Release(This) (This)->lpVtbl->Release(This)
  5546. /*** IMFMuxStreamSampleManager methods ***/
  5547. #define IMFMuxStreamSampleManager_GetStreamCount(This,pdwMuxStreamCount) (This)->lpVtbl->GetStreamCount(This,pdwMuxStreamCount)
  5548. #define IMFMuxStreamSampleManager_GetSample(This,dwMuxStreamIndex,ppSample) (This)->lpVtbl->GetSample(This,dwMuxStreamIndex,ppSample)
  5549. #define IMFMuxStreamSampleManager_GetStreamConfiguration(This) (This)->lpVtbl->GetStreamConfiguration(This)
  5550. #else
  5551. /*** IUnknown methods ***/
  5552. static FORCEINLINE HRESULT IMFMuxStreamSampleManager_QueryInterface(IMFMuxStreamSampleManager* This,REFIID riid,void **ppvObject) {
  5553. return This->lpVtbl->QueryInterface(This,riid,ppvObject);
  5554. }
  5555. static FORCEINLINE ULONG IMFMuxStreamSampleManager_AddRef(IMFMuxStreamSampleManager* This) {
  5556. return This->lpVtbl->AddRef(This);
  5557. }
  5558. static FORCEINLINE ULONG IMFMuxStreamSampleManager_Release(IMFMuxStreamSampleManager* This) {
  5559. return This->lpVtbl->Release(This);
  5560. }
  5561. /*** IMFMuxStreamSampleManager methods ***/
  5562. static FORCEINLINE HRESULT IMFMuxStreamSampleManager_GetStreamCount(IMFMuxStreamSampleManager* This,DWORD *pdwMuxStreamCount) {
  5563. return This->lpVtbl->GetStreamCount(This,pdwMuxStreamCount);
  5564. }
  5565. static FORCEINLINE HRESULT IMFMuxStreamSampleManager_GetSample(IMFMuxStreamSampleManager* This,DWORD dwMuxStreamIndex,IMFSample **ppSample) {
  5566. return This->lpVtbl->GetSample(This,dwMuxStreamIndex,ppSample);
  5567. }
  5568. static FORCEINLINE ULONGLONG IMFMuxStreamSampleManager_GetStreamConfiguration(IMFMuxStreamSampleManager* This) {
  5569. return This->lpVtbl->GetStreamConfiguration(This);
  5570. }
  5571. #endif
  5572. #endif
  5573. #endif
  5574. #endif /* __IMFMuxStreamSampleManager_INTERFACE_DEFINED__ */
  5575. #endif
  5576. #endif
  5577. /* Begin additional prototypes for all interfaces */
  5578. ULONG __RPC_USER BSTR_UserSize (ULONG *, ULONG, BSTR *);
  5579. unsigned char * __RPC_USER BSTR_UserMarshal (ULONG *, unsigned char *, BSTR *);
  5580. unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
  5581. void __RPC_USER BSTR_UserFree (ULONG *, BSTR *);
  5582. ULONG __RPC_USER LPSAFEARRAY_UserSize (ULONG *, ULONG, LPSAFEARRAY *);
  5583. unsigned char * __RPC_USER LPSAFEARRAY_UserMarshal (ULONG *, unsigned char *, LPSAFEARRAY *);
  5584. unsigned char * __RPC_USER LPSAFEARRAY_UserUnmarshal(ULONG *, unsigned char *, LPSAFEARRAY *);
  5585. void __RPC_USER LPSAFEARRAY_UserFree (ULONG *, LPSAFEARRAY *);
  5586. /* End additional prototypes */
  5587. #ifdef __cplusplus
  5588. }
  5589. #endif
  5590. #endif /* __mfobjects_h__ */