DirectShow9.pas 1.3 MB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657226582265922660226612266222663226642266522666226672266822669226702267122672226732267422675226762267722678226792268022681226822268322684226852268622687226882268922690226912269222693226942269522696226972269822699227002270122702227032270422705227062270722708227092271022711227122271322714227152271622717227182271922720227212272222723227242272522726227272272822729227302273122732227332273422735227362273722738227392274022741227422274322744227452274622747227482274922750227512275222753227542275522756227572275822759227602276122762227632276422765227662276722768227692277022771227722277322774227752277622777227782277922780227812278222783227842278522786227872278822789227902279122792227932279422795227962279722798227992280022801228022280322804228052280622807228082280922810228112281222813228142281522816228172281822819228202282122822228232282422825228262282722828228292283022831228322283322834228352283622837228382283922840228412284222843228442284522846228472284822849228502285122852228532285422855228562285722858228592286022861228622286322864228652286622867228682286922870228712287222873228742287522876228772287822879228802288122882228832288422885228862288722888228892289022891228922289322894228952289622897228982289922900229012290222903229042290522906229072290822909229102291122912229132291422915229162291722918229192292022921229222292322924229252292622927229282292922930229312293222933229342293522936229372293822939229402294122942229432294422945229462294722948229492295022951229522295322954229552295622957229582295922960229612296222963229642296522966229672296822969229702297122972229732297422975229762297722978229792298022981229822298322984229852298622987229882298922990229912299222993229942299522996229972299822999230002300123002230032300423005230062300723008230092301023011230122301323014230152301623017230182301923020230212302223023230242302523026230272302823029230302303123032230332303423035230362303723038230392304023041230422304323044230452304623047230482304923050230512305223053230542305523056230572305823059230602306123062230632306423065230662306723068230692307023071230722307323074230752307623077230782307923080230812308223083230842308523086230872308823089230902309123092230932309423095230962309723098230992310023101231022310323104231052310623107231082310923110231112311223113231142311523116231172311823119231202312123122231232312423125231262312723128231292313023131231322313323134231352313623137231382313923140231412314223143231442314523146231472314823149231502315123152231532315423155231562315723158231592316023161231622316323164231652316623167231682316923170231712317223173231742317523176231772317823179231802318123182231832318423185231862318723188231892319023191231922319323194231952319623197231982319923200232012320223203232042320523206232072320823209232102321123212232132321423215232162321723218232192322023221232222322323224232252322623227232282322923230232312323223233232342323523236232372323823239232402324123242232432324423245232462324723248232492325023251232522325323254232552325623257232582325923260232612326223263232642326523266232672326823269232702327123272232732327423275232762327723278232792328023281232822328323284232852328623287232882328923290232912329223293232942329523296232972329823299233002330123302233032330423305233062330723308233092331023311233122331323314233152331623317233182331923320233212332223323233242332523326233272332823329233302333123332233332333423335233362333723338233392334023341233422334323344233452334623347233482334923350233512335223353233542335523356233572335823359233602336123362233632336423365233662336723368233692337023371233722337323374233752337623377233782337923380233812338223383233842338523386233872338823389233902339123392233932339423395233962339723398233992340023401234022340323404234052340623407234082340923410234112341223413234142341523416234172341823419234202342123422234232342423425234262342723428234292343023431234322343323434234352343623437234382343923440234412344223443234442344523446234472344823449234502345123452234532345423455234562345723458234592346023461234622346323464234652346623467234682346923470234712347223473234742347523476234772347823479234802348123482234832348423485234862348723488234892349023491234922349323494234952349623497234982349923500235012350223503235042350523506235072350823509235102351123512235132351423515235162351723518235192352023521235222352323524235252352623527235282352923530235312353223533235342353523536235372353823539235402354123542235432354423545235462354723548235492355023551235522355323554235552355623557235582355923560235612356223563235642356523566235672356823569235702357123572235732357423575235762357723578235792358023581235822358323584235852358623587235882358923590235912359223593235942359523596235972359823599236002360123602236032360423605236062360723608236092361023611236122361323614236152361623617236182361923620236212362223623236242362523626236272362823629236302363123632236332363423635236362363723638236392364023641236422364323644236452364623647236482364923650236512365223653236542365523656236572365823659236602366123662236632366423665236662366723668236692367023671236722367323674236752367623677236782367923680236812368223683236842368523686236872368823689236902369123692236932369423695236962369723698236992370023701237022370323704237052370623707237082370923710237112371223713237142371523716237172371823719237202372123722237232372423725237262372723728237292373023731237322373323734237352373623737237382373923740237412374223743237442374523746237472374823749237502375123752237532375423755237562375723758237592376023761237622376323764237652376623767237682376923770237712377223773237742377523776237772377823779237802378123782237832378423785237862378723788237892379023791237922379323794237952379623797237982379923800238012380223803238042380523806238072380823809238102381123812238132381423815238162381723818238192382023821238222382323824238252382623827238282382923830238312383223833238342383523836238372383823839238402384123842238432384423845238462384723848238492385023851238522385323854238552385623857238582385923860238612386223863238642386523866238672386823869238702387123872238732387423875238762387723878238792388023881238822388323884238852388623887238882388923890238912389223893238942389523896238972389823899239002390123902239032390423905239062390723908239092391023911239122391323914239152391623917239182391923920239212392223923239242392523926239272392823929239302393123932239332393423935239362393723938239392394023941239422394323944239452394623947239482394923950239512395223953239542395523956239572395823959239602396123962239632396423965239662396723968239692397023971239722397323974239752397623977239782397923980239812398223983239842398523986239872398823989239902399123992239932399423995239962399723998239992400024001240022400324004240052400624007240082400924010240112401224013240142401524016240172401824019240202402124022240232402424025240262402724028240292403024031240322403324034240352403624037240382403924040240412404224043240442404524046240472404824049240502405124052240532405424055240562405724058240592406024061240622406324064240652406624067240682406924070240712407224073240742407524076240772407824079240802408124082240832408424085240862408724088240892409024091240922409324094240952409624097240982409924100241012410224103241042410524106241072410824109241102411124112241132411424115241162411724118241192412024121241222412324124241252412624127241282412924130241312413224133241342413524136241372413824139241402414124142241432414424145241462414724148241492415024151241522415324154241552415624157241582415924160241612416224163241642416524166241672416824169241702417124172241732417424175241762417724178241792418024181241822418324184241852418624187241882418924190241912419224193241942419524196241972419824199242002420124202242032420424205242062420724208242092421024211242122421324214242152421624217242182421924220242212422224223242242422524226242272422824229242302423124232242332423424235242362423724238242392424024241242422424324244242452424624247242482424924250242512425224253242542425524256242572425824259242602426124262242632426424265242662426724268242692427024271242722427324274242752427624277242782427924280242812428224283242842428524286242872428824289242902429124292242932429424295242962429724298242992430024301243022430324304243052430624307243082430924310243112431224313243142431524316243172431824319243202432124322243232432424325243262432724328243292433024331243322433324334243352433624337243382433924340243412434224343243442434524346243472434824349243502435124352243532435424355243562435724358243592436024361243622436324364243652436624367243682436924370243712437224373243742437524376243772437824379243802438124382243832438424385243862438724388243892439024391243922439324394243952439624397243982439924400244012440224403244042440524406244072440824409244102441124412244132441424415244162441724418244192442024421244222442324424244252442624427244282442924430244312443224433244342443524436244372443824439244402444124442244432444424445244462444724448244492445024451244522445324454244552445624457244582445924460244612446224463244642446524466244672446824469244702447124472244732447424475244762447724478244792448024481244822448324484244852448624487244882448924490244912449224493244942449524496244972449824499245002450124502245032450424505245062450724508245092451024511245122451324514245152451624517245182451924520245212452224523245242452524526245272452824529245302453124532245332453424535245362453724538245392454024541245422454324544245452454624547245482454924550245512455224553245542455524556245572455824559245602456124562245632456424565245662456724568245692457024571245722457324574245752457624577245782457924580245812458224583245842458524586245872458824589245902459124592245932459424595245962459724598245992460024601246022460324604246052460624607246082460924610246112461224613246142461524616246172461824619246202462124622246232462424625246262462724628246292463024631246322463324634246352463624637246382463924640246412464224643246442464524646246472464824649246502465124652246532465424655246562465724658246592466024661246622466324664246652466624667246682466924670246712467224673246742467524676246772467824679246802468124682246832468424685246862468724688246892469024691246922469324694246952469624697246982469924700247012470224703247042470524706247072470824709247102471124712247132471424715247162471724718247192472024721247222472324724247252472624727247282472924730247312473224733247342473524736247372473824739247402474124742247432474424745247462474724748247492475024751247522475324754247552475624757247582475924760247612476224763247642476524766247672476824769247702477124772247732477424775247762477724778247792478024781247822478324784247852478624787247882478924790247912479224793247942479524796247972479824799248002480124802248032480424805248062480724808248092481024811248122481324814248152481624817248182481924820248212482224823248242482524826248272482824829248302483124832248332483424835248362483724838248392484024841248422484324844248452484624847248482484924850248512485224853248542485524856248572485824859248602486124862248632486424865248662486724868248692487024871248722487324874248752487624877248782487924880248812488224883248842488524886248872488824889248902489124892248932489424895248962489724898248992490024901249022490324904249052490624907249082490924910249112491224913249142491524916249172491824919249202492124922249232492424925249262492724928249292493024931249322493324934249352493624937249382493924940249412494224943249442494524946249472494824949249502495124952249532495424955249562495724958249592496024961249622496324964249652496624967249682496924970249712497224973249742497524976249772497824979249802498124982249832498424985249862498724988249892499024991249922499324994249952499624997249982499925000250012500225003250042500525006250072500825009250102501125012250132501425015250162501725018250192502025021250222502325024250252502625027250282502925030250312503225033250342503525036250372503825039250402504125042250432504425045250462504725048250492505025051250522505325054250552505625057250582505925060250612506225063250642506525066250672506825069250702507125072250732507425075250762507725078250792508025081250822508325084250852508625087250882508925090250912509225093250942509525096250972509825099251002510125102251032510425105251062510725108251092511025111251122511325114251152511625117251182511925120251212512225123251242512525126251272512825129251302513125132251332513425135251362513725138251392514025141251422514325144251452514625147251482514925150251512515225153251542515525156251572515825159251602516125162251632516425165251662516725168251692517025171251722517325174251752517625177251782517925180251812518225183251842518525186251872518825189251902519125192251932519425195251962519725198251992520025201252022520325204252052520625207252082520925210252112521225213252142521525216252172521825219252202522125222252232522425225252262522725228252292523025231252322523325234252352523625237252382523925240252412524225243252442524525246252472524825249252502525125252252532525425255252562525725258252592526025261252622526325264252652526625267252682526925270252712527225273252742527525276252772527825279252802528125282252832528425285252862528725288252892529025291252922529325294252952529625297252982529925300253012530225303253042530525306253072530825309253102531125312253132531425315253162531725318253192532025321253222532325324253252532625327253282532925330253312533225333253342533525336253372533825339253402534125342253432534425345253462534725348253492535025351253522535325354253552535625357253582535925360253612536225363253642536525366253672536825369253702537125372253732537425375253762537725378253792538025381253822538325384253852538625387253882538925390253912539225393253942539525396253972539825399254002540125402254032540425405254062540725408254092541025411254122541325414254152541625417254182541925420254212542225423254242542525426254272542825429254302543125432254332543425435254362543725438254392544025441254422544325444254452544625447254482544925450254512545225453254542545525456254572545825459254602546125462254632546425465254662546725468254692547025471254722547325474254752547625477254782547925480254812548225483254842548525486254872548825489254902549125492254932549425495254962549725498254992550025501255022550325504255052550625507255082550925510255112551225513255142551525516255172551825519255202552125522255232552425525255262552725528255292553025531255322553325534255352553625537255382553925540255412554225543255442554525546255472554825549255502555125552255532555425555255562555725558255592556025561255622556325564255652556625567255682556925570255712557225573255742557525576255772557825579255802558125582255832558425585255862558725588255892559025591255922559325594255952559625597255982559925600256012560225603256042560525606256072560825609256102561125612256132561425615256162561725618256192562025621256222562325624256252562625627256282562925630256312563225633256342563525636256372563825639256402564125642256432564425645256462564725648256492565025651256522565325654256552565625657256582565925660256612566225663256642566525666256672566825669256702567125672256732567425675256762567725678256792568025681256822568325684256852568625687256882568925690256912569225693256942569525696256972569825699257002570125702257032570425705257062570725708257092571025711257122571325714257152571625717257182571925720257212572225723257242572525726257272572825729257302573125732257332573425735257362573725738257392574025741257422574325744257452574625747257482574925750257512575225753257542575525756257572575825759257602576125762257632576425765257662576725768257692577025771257722577325774257752577625777257782577925780257812578225783257842578525786257872578825789257902579125792257932579425795257962579725798257992580025801258022580325804258052580625807258082580925810258112581225813258142581525816258172581825819258202582125822258232582425825258262582725828258292583025831258322583325834258352583625837258382583925840258412584225843258442584525846258472584825849258502585125852258532585425855258562585725858258592586025861258622586325864258652586625867258682586925870258712587225873258742587525876258772587825879258802588125882258832588425885258862588725888258892589025891258922589325894258952589625897258982589925900259012590225903259042590525906259072590825909259102591125912259132591425915259162591725918259192592025921259222592325924259252592625927259282592925930259312593225933259342593525936259372593825939259402594125942259432594425945259462594725948259492595025951259522595325954259552595625957259582595925960259612596225963259642596525966259672596825969259702597125972259732597425975259762597725978259792598025981259822598325984259852598625987259882598925990259912599225993259942599525996259972599825999260002600126002260032600426005260062600726008260092601026011260122601326014260152601626017260182601926020260212602226023260242602526026260272602826029260302603126032260332603426035260362603726038260392604026041260422604326044260452604626047260482604926050260512605226053260542605526056260572605826059260602606126062260632606426065260662606726068260692607026071260722607326074260752607626077260782607926080260812608226083260842608526086260872608826089260902609126092260932609426095260962609726098260992610026101261022610326104261052610626107261082610926110261112611226113261142611526116261172611826119261202612126122261232612426125261262612726128261292613026131261322613326134261352613626137261382613926140261412614226143261442614526146261472614826149261502615126152261532615426155261562615726158261592616026161261622616326164261652616626167261682616926170261712617226173261742617526176261772617826179261802618126182261832618426185261862618726188261892619026191261922619326194261952619626197261982619926200262012620226203262042620526206262072620826209262102621126212262132621426215262162621726218262192622026221262222622326224262252622626227262282622926230262312623226233262342623526236262372623826239262402624126242262432624426245262462624726248262492625026251262522625326254262552625626257262582625926260262612626226263262642626526266262672626826269262702627126272262732627426275262762627726278262792628026281262822628326284262852628626287262882628926290262912629226293262942629526296262972629826299263002630126302263032630426305263062630726308263092631026311263122631326314263152631626317263182631926320263212632226323263242632526326263272632826329263302633126332263332633426335263362633726338263392634026341263422634326344263452634626347263482634926350263512635226353263542635526356263572635826359263602636126362263632636426365263662636726368263692637026371263722637326374263752637626377263782637926380263812638226383263842638526386263872638826389263902639126392263932639426395263962639726398263992640026401264022640326404264052640626407264082640926410264112641226413264142641526416264172641826419264202642126422264232642426425264262642726428264292643026431264322643326434264352643626437264382643926440264412644226443264442644526446264472644826449264502645126452264532645426455264562645726458264592646026461264622646326464264652646626467264682646926470264712647226473264742647526476264772647826479264802648126482264832648426485264862648726488264892649026491264922649326494264952649626497264982649926500265012650226503265042650526506265072650826509265102651126512265132651426515265162651726518265192652026521265222652326524265252652626527265282652926530265312653226533265342653526536265372653826539265402654126542265432654426545265462654726548265492655026551265522655326554265552655626557265582655926560265612656226563265642656526566265672656826569265702657126572265732657426575265762657726578265792658026581265822658326584265852658626587265882658926590265912659226593265942659526596265972659826599266002660126602266032660426605266062660726608266092661026611266122661326614266152661626617266182661926620266212662226623266242662526626266272662826629266302663126632266332663426635266362663726638266392664026641266422664326644266452664626647266482664926650266512665226653266542665526656266572665826659266602666126662266632666426665266662666726668266692667026671266722667326674266752667626677266782667926680266812668226683266842668526686266872668826689266902669126692266932669426695266962669726698266992670026701267022670326704267052670626707267082670926710267112671226713267142671526716267172671826719267202672126722267232672426725267262672726728267292673026731267322673326734267352673626737267382673926740267412674226743267442674526746267472674826749267502675126752267532675426755267562675726758267592676026761267622676326764267652676626767267682676926770267712677226773267742677526776267772677826779267802678126782267832678426785267862678726788267892679026791267922679326794267952679626797267982679926800268012680226803268042680526806268072680826809268102681126812268132681426815268162681726818268192682026821268222682326824268252682626827268282682926830268312683226833268342683526836268372683826839268402684126842268432684426845268462684726848268492685026851268522685326854268552685626857268582685926860268612686226863268642686526866268672686826869268702687126872268732687426875268762687726878268792688026881268822688326884268852688626887268882688926890268912689226893268942689526896268972689826899269002690126902269032690426905269062690726908269092691026911269122691326914269152691626917269182691926920269212692226923269242692526926269272692826929269302693126932269332693426935269362693726938269392694026941269422694326944269452694626947269482694926950269512695226953269542695526956269572695826959269602696126962269632696426965269662696726968269692697026971269722697326974269752697626977269782697926980269812698226983269842698526986269872698826989269902699126992269932699426995269962699726998269992700027001270022700327004270052700627007270082700927010270112701227013270142701527016270172701827019270202702127022270232702427025270262702727028270292703027031270322703327034270352703627037270382703927040270412704227043270442704527046270472704827049270502705127052270532705427055270562705727058270592706027061270622706327064270652706627067270682706927070270712707227073270742707527076270772707827079270802708127082270832708427085270862708727088270892709027091270922709327094270952709627097270982709927100271012710227103271042710527106271072710827109271102711127112271132711427115271162711727118271192712027121271222712327124271252712627127271282712927130271312713227133271342713527136271372713827139271402714127142271432714427145271462714727148271492715027151271522715327154271552715627157271582715927160271612716227163271642716527166271672716827169271702717127172271732717427175271762717727178271792718027181271822718327184271852718627187271882718927190271912719227193271942719527196271972719827199272002720127202272032720427205272062720727208272092721027211272122721327214272152721627217272182721927220272212722227223272242722527226272272722827229272302723127232272332723427235272362723727238272392724027241272422724327244272452724627247272482724927250272512725227253272542725527256272572725827259272602726127262272632726427265272662726727268272692727027271272722727327274272752727627277272782727927280272812728227283272842728527286272872728827289272902729127292272932729427295272962729727298272992730027301273022730327304273052730627307273082730927310273112731227313273142731527316273172731827319273202732127322273232732427325273262732727328273292733027331273322733327334273352733627337273382733927340273412734227343273442734527346273472734827349273502735127352273532735427355273562735727358273592736027361273622736327364273652736627367273682736927370273712737227373273742737527376273772737827379273802738127382273832738427385273862738727388273892739027391273922739327394273952739627397273982739927400274012740227403274042740527406274072740827409274102741127412274132741427415274162741727418274192742027421274222742327424274252742627427274282742927430274312743227433274342743527436274372743827439274402744127442274432744427445274462744727448274492745027451274522745327454274552745627457274582745927460274612746227463274642746527466274672746827469274702747127472274732747427475274762747727478274792748027481274822748327484274852748627487274882748927490274912749227493274942749527496274972749827499275002750127502275032750427505275062750727508275092751027511275122751327514275152751627517275182751927520275212752227523275242752527526275272752827529275302753127532275332753427535275362753727538275392754027541275422754327544275452754627547275482754927550275512755227553275542755527556275572755827559275602756127562275632756427565275662756727568275692757027571275722757327574275752757627577275782757927580275812758227583275842758527586275872758827589275902759127592275932759427595275962759727598275992760027601276022760327604276052760627607276082760927610276112761227613276142761527616276172761827619276202762127622276232762427625276262762727628276292763027631276322763327634276352763627637276382763927640276412764227643276442764527646276472764827649276502765127652276532765427655276562765727658276592766027661276622766327664276652766627667276682766927670276712767227673276742767527676276772767827679276802768127682276832768427685276862768727688276892769027691276922769327694276952769627697276982769927700277012770227703277042770527706277072770827709277102771127712277132771427715277162771727718277192772027721277222772327724277252772627727277282772927730277312773227733277342773527736277372773827739277402774127742277432774427745277462774727748277492775027751277522775327754277552775627757277582775927760277612776227763277642776527766277672776827769277702777127772277732777427775277762777727778277792778027781277822778327784277852778627787277882778927790277912779227793277942779527796277972779827799278002780127802278032780427805278062780727808278092781027811278122781327814278152781627817278182781927820278212782227823278242782527826278272782827829278302783127832278332783427835278362783727838278392784027841278422784327844278452784627847278482784927850278512785227853278542785527856278572785827859278602786127862278632786427865278662786727868278692787027871278722787327874278752787627877278782787927880278812788227883278842788527886278872788827889278902789127892278932789427895278962789727898278992790027901279022790327904279052790627907279082790927910279112791227913279142791527916279172791827919279202792127922279232792427925279262792727928279292793027931279322793327934279352793627937279382793927940279412794227943279442794527946279472794827949279502795127952279532795427955279562795727958279592796027961279622796327964279652796627967279682796927970279712797227973279742797527976279772797827979279802798127982279832798427985279862798727988279892799027991279922799327994279952799627997279982799928000280012800228003280042800528006280072800828009280102801128012280132801428015280162801728018280192802028021280222802328024280252802628027280282802928030280312803228033280342803528036280372803828039280402804128042280432804428045280462804728048280492805028051280522805328054280552805628057280582805928060280612806228063280642806528066280672806828069280702807128072280732807428075280762807728078280792808028081280822808328084280852808628087280882808928090280912809228093280942809528096280972809828099281002810128102281032810428105281062810728108281092811028111281122811328114281152811628117281182811928120281212812228123281242812528126281272812828129281302813128132281332813428135281362813728138281392814028141281422814328144281452814628147281482814928150281512815228153281542815528156281572815828159281602816128162281632816428165281662816728168281692817028171281722817328174281752817628177281782817928180281812818228183281842818528186281872818828189281902819128192281932819428195281962819728198281992820028201282022820328204282052820628207282082820928210282112821228213282142821528216282172821828219282202822128222282232822428225282262822728228282292823028231282322823328234282352823628237282382823928240282412824228243282442824528246282472824828249282502825128252282532825428255282562825728258282592826028261282622826328264282652826628267282682826928270282712827228273282742827528276282772827828279282802828128282282832828428285282862828728288282892829028291282922829328294282952829628297282982829928300283012830228303283042830528306283072830828309283102831128312283132831428315283162831728318283192832028321283222832328324283252832628327283282832928330283312833228333283342833528336283372833828339283402834128342283432834428345283462834728348283492835028351283522835328354283552835628357283582835928360283612836228363283642836528366283672836828369283702837128372283732837428375283762837728378283792838028381283822838328384283852838628387283882838928390283912839228393283942839528396283972839828399284002840128402284032840428405284062840728408284092841028411284122841328414284152841628417284182841928420284212842228423284242842528426284272842828429284302843128432284332843428435284362843728438284392844028441284422844328444284452844628447284482844928450284512845228453284542845528456284572845828459284602846128462284632846428465284662846728468284692847028471284722847328474284752847628477284782847928480284812848228483284842848528486284872848828489284902849128492284932849428495284962849728498284992850028501285022850328504285052850628507285082850928510285112851228513285142851528516285172851828519285202852128522285232852428525285262852728528285292853028531285322853328534285352853628537285382853928540285412854228543285442854528546285472854828549285502855128552285532855428555285562855728558285592856028561285622856328564285652856628567285682856928570285712857228573285742857528576285772857828579285802858128582285832858428585285862858728588285892859028591285922859328594285952859628597285982859928600286012860228603286042860528606286072860828609286102861128612286132861428615286162861728618286192862028621286222862328624286252862628627286282862928630286312863228633286342863528636286372863828639286402864128642286432864428645286462864728648286492865028651286522865328654286552865628657286582865928660286612866228663286642866528666286672866828669286702867128672286732867428675286762867728678286792868028681286822868328684286852868628687286882868928690286912869228693286942869528696286972869828699287002870128702287032870428705287062870728708287092871028711287122871328714287152871628717287182871928720287212872228723287242872528726287272872828729287302873128732287332873428735287362873728738287392874028741287422874328744287452874628747287482874928750287512875228753287542875528756287572875828759287602876128762287632876428765287662876728768287692877028771287722877328774287752877628777287782877928780287812878228783287842878528786287872878828789287902879128792287932879428795287962879728798287992880028801288022880328804288052880628807288082880928810288112881228813288142881528816288172881828819288202882128822288232882428825288262882728828288292883028831288322883328834288352883628837288382883928840288412884228843288442884528846288472884828849288502885128852288532885428855288562885728858288592886028861288622886328864288652886628867288682886928870288712887228873288742887528876288772887828879288802888128882288832888428885288862888728888288892889028891288922889328894288952889628897288982889928900289012890228903289042890528906289072890828909289102891128912289132891428915289162891728918289192892028921289222892328924289252892628927289282892928930289312893228933289342893528936289372893828939289402894128942289432894428945289462894728948289492895028951289522895328954289552895628957289582895928960289612896228963289642896528966289672896828969289702897128972289732897428975289762897728978289792898028981289822898328984289852898628987289882898928990289912899228993289942899528996289972899828999290002900129002290032900429005290062900729008290092901029011290122901329014290152901629017290182901929020290212902229023290242902529026290272902829029290302903129032290332903429035290362903729038290392904029041290422904329044290452904629047290482904929050290512905229053290542905529056290572905829059290602906129062290632906429065290662906729068290692907029071290722907329074290752907629077290782907929080290812908229083290842908529086290872908829089290902909129092290932909429095290962909729098290992910029101291022910329104291052910629107291082910929110291112911229113291142911529116291172911829119291202912129122291232912429125291262912729128291292913029131291322913329134291352913629137291382913929140291412914229143291442914529146291472914829149291502915129152291532915429155291562915729158291592916029161291622916329164291652916629167291682916929170291712917229173291742917529176291772917829179291802918129182291832918429185291862918729188291892919029191291922919329194291952919629197291982919929200292012920229203292042920529206292072920829209292102921129212292132921429215292162921729218292192922029221292222922329224292252922629227292282922929230292312923229233292342923529236292372923829239292402924129242292432924429245292462924729248292492925029251292522925329254292552925629257292582925929260292612926229263292642926529266292672926829269292702927129272292732927429275292762927729278292792928029281292822928329284292852928629287292882928929290292912929229293292942929529296292972929829299293002930129302293032930429305293062930729308293092931029311293122931329314293152931629317293182931929320293212932229323293242932529326293272932829329293302933129332293332933429335293362933729338293392934029341293422934329344293452934629347293482934929350293512935229353293542935529356293572935829359293602936129362293632936429365293662936729368293692937029371293722937329374293752937629377293782937929380293812938229383293842938529386293872938829389293902939129392293932939429395293962939729398293992940029401294022940329404294052940629407294082940929410294112941229413294142941529416294172941829419294202942129422294232942429425294262942729428294292943029431294322943329434294352943629437294382943929440294412944229443294442944529446294472944829449294502945129452294532945429455294562945729458294592946029461294622946329464294652946629467294682946929470294712947229473294742947529476294772947829479294802948129482294832948429485294862948729488294892949029491294922949329494294952949629497294982949929500295012950229503295042950529506295072950829509295102951129512295132951429515295162951729518295192952029521295222952329524295252952629527295282952929530295312953229533295342953529536295372953829539295402954129542295432954429545295462954729548295492955029551295522955329554295552955629557295582955929560295612956229563295642956529566295672956829569295702957129572295732957429575295762957729578295792958029581295822958329584295852958629587295882958929590295912959229593295942959529596295972959829599296002960129602296032960429605296062960729608296092961029611296122961329614296152961629617296182961929620296212962229623296242962529626296272962829629296302963129632296332963429635296362963729638296392964029641296422964329644296452964629647296482964929650296512965229653296542965529656296572965829659296602966129662296632966429665296662966729668296692967029671296722967329674296752967629677296782967929680296812968229683296842968529686296872968829689296902969129692296932969429695296962969729698296992970029701297022970329704297052970629707297082970929710297112971229713297142971529716297172971829719297202972129722297232972429725297262972729728297292973029731297322973329734297352973629737297382973929740297412974229743297442974529746297472974829749297502975129752297532975429755297562975729758297592976029761297622976329764297652976629767297682976929770297712977229773297742977529776297772977829779297802978129782297832978429785297862978729788297892979029791297922979329794297952979629797297982979929800298012980229803298042980529806298072980829809298102981129812298132981429815298162981729818298192982029821298222982329824298252982629827298282982929830298312983229833298342983529836298372983829839298402984129842298432984429845298462984729848298492985029851298522985329854298552985629857298582985929860298612986229863298642986529866298672986829869298702987129872298732987429875298762987729878298792988029881298822988329884298852988629887298882988929890298912989229893298942989529896298972989829899299002990129902299032990429905299062990729908299092991029911299122991329914299152991629917299182991929920299212992229923299242992529926299272992829929299302993129932299332993429935299362993729938299392994029941299422994329944299452994629947299482994929950299512995229953299542995529956299572995829959299602996129962299632996429965299662996729968299692997029971299722997329974299752997629977299782997929980299812998229983299842998529986299872998829989299902999129992299932999429995299962999729998299993000030001300023000330004300053000630007300083000930010300113001230013300143001530016300173001830019300203002130022300233002430025300263002730028300293003030031300323003330034300353003630037300383003930040300413004230043300443004530046300473004830049300503005130052300533005430055300563005730058300593006030061300623006330064300653006630067300683006930070300713007230073300743007530076300773007830079300803008130082300833008430085300863008730088300893009030091300923009330094300953009630097300983009930100301013010230103301043010530106301073010830109301103011130112301133011430115301163011730118301193012030121301223012330124301253012630127301283012930130301313013230133301343013530136301373013830139301403014130142301433014430145301463014730148301493015030151301523015330154301553015630157301583015930160301613016230163301643016530166301673016830169301703017130172301733017430175301763017730178301793018030181301823018330184301853018630187301883018930190301913019230193301943019530196301973019830199302003020130202302033020430205302063020730208302093021030211302123021330214302153021630217302183021930220302213022230223302243022530226302273022830229302303023130232302333023430235302363023730238302393024030241302423024330244302453024630247302483024930250302513025230253302543025530256302573025830259302603026130262302633026430265302663026730268302693027030271302723027330274302753027630277302783027930280302813028230283302843028530286302873028830289302903029130292302933029430295302963029730298302993030030301303023030330304303053030630307303083030930310303113031230313303143031530316303173031830319303203032130322303233032430325303263032730328303293033030331303323033330334303353033630337303383033930340303413034230343303443034530346303473034830349303503035130352303533035430355303563035730358303593036030361303623036330364303653036630367303683036930370303713037230373303743037530376303773037830379303803038130382303833038430385303863038730388303893039030391303923039330394303953039630397303983039930400304013040230403304043040530406304073040830409304103041130412304133041430415304163041730418304193042030421304223042330424304253042630427304283042930430304313043230433304343043530436304373043830439304403044130442304433044430445304463044730448304493045030451304523045330454304553045630457304583045930460304613046230463304643046530466304673046830469304703047130472304733047430475304763047730478304793048030481304823048330484304853048630487304883048930490304913049230493304943049530496304973049830499305003050130502305033050430505305063050730508305093051030511305123051330514305153051630517305183051930520305213052230523305243052530526305273052830529305303053130532305333053430535305363053730538305393054030541305423054330544305453054630547305483054930550305513055230553305543055530556305573055830559305603056130562305633056430565305663056730568305693057030571305723057330574305753057630577305783057930580305813058230583305843058530586305873058830589305903059130592305933059430595305963059730598305993060030601306023060330604306053060630607306083060930610306113061230613306143061530616306173061830619306203062130622306233062430625306263062730628306293063030631306323063330634306353063630637306383063930640306413064230643306443064530646306473064830649306503065130652306533065430655306563065730658306593066030661306623066330664306653066630667306683066930670306713067230673306743067530676306773067830679306803068130682306833068430685306863068730688306893069030691306923069330694306953069630697306983069930700307013070230703307043070530706307073070830709307103071130712307133071430715307163071730718307193072030721307223072330724307253072630727307283072930730307313073230733307343073530736307373073830739307403074130742307433074430745307463074730748307493075030751307523075330754307553075630757307583075930760307613076230763307643076530766307673076830769307703077130772307733077430775307763077730778307793078030781307823078330784307853078630787307883078930790307913079230793307943079530796307973079830799308003080130802308033080430805308063080730808308093081030811308123081330814308153081630817308183081930820308213082230823308243082530826308273082830829308303083130832308333083430835308363083730838308393084030841308423084330844308453084630847308483084930850308513085230853308543085530856308573085830859308603086130862308633086430865308663086730868308693087030871308723087330874308753087630877308783087930880308813088230883308843088530886308873088830889308903089130892308933089430895308963089730898308993090030901309023090330904309053090630907309083090930910309113091230913309143091530916309173091830919309203092130922309233092430925309263092730928309293093030931309323093330934309353093630937309383093930940309413094230943309443094530946309473094830949309503095130952309533095430955309563095730958309593096030961309623096330964309653096630967309683096930970309713097230973309743097530976309773097830979309803098130982309833098430985309863098730988309893099030991309923099330994309953099630997309983099931000310013100231003310043100531006310073100831009310103101131012310133101431015310163101731018310193102031021310223102331024310253102631027310283102931030310313103231033310343103531036310373103831039310403104131042310433104431045310463104731048310493105031051310523105331054310553105631057310583105931060310613106231063310643106531066310673106831069310703107131072310733107431075310763107731078310793108031081310823108331084310853108631087310883108931090310913109231093310943109531096310973109831099311003110131102311033110431105311063110731108311093111031111311123111331114311153111631117311183111931120311213112231123311243112531126311273112831129311303113131132311333113431135311363113731138311393114031141311423114331144311453114631147311483114931150311513115231153311543115531156311573115831159311603116131162311633116431165311663116731168311693117031171311723117331174311753117631177311783117931180311813118231183311843118531186311873118831189311903119131192311933119431195311963119731198311993120031201312023120331204312053120631207312083120931210312113121231213312143121531216312173121831219312203122131222312233122431225312263122731228312293123031231312323123331234312353123631237312383123931240312413124231243312443124531246312473124831249312503125131252312533125431255312563125731258312593126031261312623126331264312653126631267312683126931270312713127231273312743127531276312773127831279312803128131282312833128431285312863128731288312893129031291312923129331294312953129631297312983129931300313013130231303313043130531306313073130831309313103131131312313133131431315313163131731318313193132031321313223132331324313253132631327313283132931330313313133231333313343133531336313373133831339313403134131342313433134431345313463134731348313493135031351313523135331354313553135631357313583135931360313613136231363313643136531366313673136831369313703137131372313733137431375313763137731378313793138031381313823138331384313853138631387313883138931390313913139231393313943139531396313973139831399314003140131402314033140431405314063140731408314093141031411314123141331414314153141631417314183141931420314213142231423314243142531426314273142831429314303143131432314333143431435314363143731438314393144031441314423144331444314453144631447314483144931450314513145231453314543145531456314573145831459314603146131462314633146431465314663146731468314693147031471314723147331474314753147631477314783147931480314813148231483314843148531486314873148831489314903149131492314933149431495314963149731498314993150031501315023150331504315053150631507315083150931510315113151231513315143151531516315173151831519315203152131522315233152431525315263152731528315293153031531315323153331534315353153631537315383153931540315413154231543315443154531546315473154831549315503155131552315533155431555315563155731558315593156031561315623156331564315653156631567315683156931570315713157231573315743157531576315773157831579315803158131582315833158431585315863158731588315893159031591315923159331594315953159631597315983159931600316013160231603316043160531606316073160831609316103161131612316133161431615316163161731618316193162031621316223162331624316253162631627316283162931630316313163231633316343163531636316373163831639316403164131642316433164431645316463164731648316493165031651316523165331654316553165631657316583165931660316613166231663316643166531666316673166831669316703167131672316733167431675316763167731678316793168031681316823168331684316853168631687316883168931690316913169231693316943169531696316973169831699317003170131702317033170431705317063170731708317093171031711317123171331714317153171631717317183171931720317213172231723317243172531726317273172831729317303173131732317333173431735317363173731738317393174031741317423174331744317453174631747317483174931750317513175231753317543175531756317573175831759317603176131762317633176431765317663176731768317693177031771317723177331774317753177631777317783177931780317813178231783317843178531786317873178831789317903179131792317933179431795317963179731798317993180031801318023180331804318053180631807318083180931810318113181231813318143181531816318173181831819318203182131822318233182431825318263182731828318293183031831318323183331834318353183631837318383183931840318413184231843318443184531846318473184831849318503185131852318533185431855318563185731858318593186031861318623186331864318653186631867318683186931870318713187231873318743187531876318773187831879318803188131882318833188431885318863188731888
  1. {###### #### ##############################################################
  2. ## ### ### ## ,###### ## ## ###### ### ### ## ##
  3. ## ### #### ## ## ## ## ## ## # ## ## ##
  4. ## ## ### ###### ####### ## ## \## ### ##/ ##########
  5. ## ## ##### ##### ####### ## ## ######### ##
  6. ## ## ## ### ,## ## ## ## ## ### ### ###
  7. ###### ### #### ####### ## ## ###### ## ## ###########
  8. | |
  9. | Borland Delphi 4,5,6,7 API for Direct Show |
  10. | DirectX 9.0 Win 98, Me, 2000, XP |
  11. | |
  12. | Portions created by Microsoft are |
  13. | Copyright (C) 1995-2002 Microsoft Corporation. |
  14. | All Rights Reserved. |
  15. | |
  16. | The original files are: |
  17. | comlite.h, errors.h, dv.h, strmif.h, mmstream.h, amstream.h, |
  18. | ddstream.h, austream.h, mpconfig.h, control.h, qnetwork.h, |
  19. | playlist.h, il21dec.h, amvideo.h, amaudio.h, vptype.h, |
  20. | vpconfig.h, vpnotify.h, mpegtype.h, dvdevcod.h, dvdmedia.h, |
  21. | bdatypes.h, activecf.h, vfwmsgs.h,(edevdefs.h, XPrtDefs.h), |
  22. | aviriff.h, evcode.h, uuids.h, ksuuids.h, DXVA.h,AMVA.h, |
  23. | videoacc.h, regbag.h, tuner.h, DXTrans.h, QEdit.h, mpeguids.h, |
  24. | dshowasf.h, amparse.h, audevcod.h, atsmedia.h, MediaErr, |
  25. | MedParam.h, mediaobj.h, dmodshow.h, dmoreg.h, DMORt.h, |
  26. | dmoimpl.h, ks.h, ksproxy.h, ksmedia.h, dmksctrl.h, bdamedia.h, |
  27. | BDATIF.idl, AMVPE.idl, Mixerocx.idl, Mpeg2Data.idl, |
  28. | Mpeg2Structs.idl, Mpeg2Bits.h, Mpeg2Error.h, EDevCtrl.h, |
  29. | sbe.idl, vmr9.idl, iwstdec.h |
  30. | |
  31. | The original Pascal code is: DirectShow9.pas, |
  32. | released 01 Nov 2003. |
  33. | |
  34. | The initial developer of the Pascal code is Henri GOURVEST |
  35. | Email : hgourvest@progdigy.com |
  36. | WebSite : http://www.progdigy.com |
  37. | |
  38. | Portions created by Henri GOURVEST are |
  39. | Copyright (C) 2002 Henri GOURVEST. |
  40. | |
  41. | Contributors: Ivo Steinmann |
  42. | Peter NEUMANN |
  43. | Alexey Barkovoy |
  44. | Wayne Sherman |
  45. | Peter J. Haas <DSPack@pjh2.de> |
  46. | Andriy Nevhasymyy <a.n@email.com> |
  47. | Milenko Mitrovic <dcoder@dsp-worx.de> |
  48. | Michael Andersen <michael@mechdata.dk> |
  49. | Martin Offenwanger <coder@dsplayer.de |
  50. | |
  51. | Joint Endeavour of Delphi Innovators (Project JEDI) |
  52. | |
  53. | You may retrieve the latest version of this file here: |
  54. | http://www.progdigy.com |
  55. | |
  56. | The contents of this file are used with permission, subject to |
  57. | the Mozilla Public License Version 1.1 (the "License"); you may |
  58. | not use this file except in compliance with the License. You may |
  59. | obtain a copy of the License at |
  60. | http://www.mozilla.org/MPL/MPL-1.1.html |
  61. | |
  62. | Software distributed under the License is distributed on an |
  63. | "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
  64. | implied. See the License for the specific language governing |
  65. | rights and limitations under the License. |
  66. | |
  67. |******************************************************************}
  68. {$I DirectX.inc}
  69. // To Avoid mistakes with old VMR, comment
  70. {$DEFINE ENABLEVMR7}
  71. {$IFDEF DYNAMIC_LINK_ALL}
  72. {$DEFINE DIRECTSHOW9_DYNAMIC_LINK}
  73. {$ENDIF}
  74. unit DirectShow9;
  75. {$HPPEMIT '#define __KS__'}
  76. {$HPPEMIT '#define __STREAMS__'}
  77. {$HPPEMIT '#include "comlite.h"'}
  78. {$HPPEMIT '#include "errors.h"'}
  79. {$HPPEMIT '#include "dv.h"'}
  80. {$HPPEMIT '#include "strmif.h"'}
  81. {$HPPEMIT '#include "mmstream.h"'}
  82. {$HPPEMIT '#include "amstream.h"'}
  83. {$HPPEMIT '#include "ddstream.h"'}
  84. {$HPPEMIT '#include "austream.h"'}
  85. {$HPPEMIT '#include "mpconfig.h"'}
  86. {$HPPEMIT '#include "control.h"'}
  87. {$HPPEMIT '#include "qnetwork.h"'}
  88. {$HPPEMIT '#include "playlist.h"'}
  89. {$HPPEMIT '#include "il21dec.h"'}
  90. {$HPPEMIT '#include "amvideo.h"'}
  91. {$HPPEMIT '#include "amaudio.h"'}
  92. {$HPPEMIT '#include "vptype.h"'}
  93. {$HPPEMIT '#include "vpconfig.h"'}
  94. {$HPPEMIT '#include "vpnotify.h"'}
  95. {$HPPEMIT '#include "mmreg.h"'}
  96. {$HPPEMIT '#include "mpegtype.h"'}
  97. {$HPPEMIT '#include "dvdevcod.h"'}
  98. {$HPPEMIT '#include "dvdmedia.h"'}
  99. {$HPPEMIT '#include "bdatypes.h"'}
  100. {$HPPEMIT '#include "activecf.h"'}
  101. {$HPPEMIT '#include "vfwmsgs.h"'}
  102. {$HPPEMIT '#include "edevdefs.h"'}
  103. {$HPPEMIT '#include "XPrtDefs.h"'}
  104. {$HPPEMIT '#include "aviriff.h"'}
  105. {$HPPEMIT '#include "evcode.h"'}
  106. {$HPPEMIT '#include "DXVA.h"'}
  107. {$HPPEMIT '#include "AMVA.h"'}
  108. {$HPPEMIT '#include "videoacc.h"'}
  109. {$HPPEMIT '#include "regbag.h"'}
  110. {$HPPEMIT '#include "tuner.h"'}
  111. {$HPPEMIT '#include "DXTrans.h"'}
  112. {$HPPEMIT '#include "QEdit.h"'}
  113. {$HPPEMIT '#include "dshowasf.h"'}
  114. {$HPPEMIT '#include "amparse.h"'}
  115. {$HPPEMIT '#include "audevcod.h"'}
  116. {$HPPEMIT '#include "MediaErr.h"'}
  117. {$HPPEMIT '#include "MedParam.h"'}
  118. {$HPPEMIT '#include "mediaobj.h"'}
  119. {$HPPEMIT '#include "dmodshow.h"'}
  120. {$HPPEMIT '#include "dmoreg.h"'}
  121. {$HPPEMIT '#include "DMORt.h"'}
  122. {$HPPEMIT '#include "dmoimpl.h"'}
  123. {$HPPEMIT '#include "uuids.h"'}
  124. {$HPPEMIT '#include "ks.h"'}
  125. {$HPPEMIT '#include "ksproxy.h"'}
  126. {$HPPEMIT '#include "ksmedia.h"'}
  127. {$HPPEMIT '#include "bdamedia.h"'}
  128. {$HPPEMIT '#include "Bdatif.h"'}
  129. {$HPPEMIT '#include "atsmedia.h"'}
  130. {$HPPEMIT '#include "dmksctrl.h"'}
  131. {$HPPEMIT '#include "Mixerocx.h"'}
  132. {$HPPEMIT '#include "Mpeg2Data.h"'}
  133. {$HPPEMIT '#include "Mpeg2Bits.h"'}
  134. {$HPPEMIT '#include "Mpeg2Error.h"'}
  135. {$HPPEMIT '#include "sbe.h"'}
  136. {$HPPEMIT '#include "vmr9.h"'}
  137. {$HPPEMIT '#include "iwstdec.h"'}
  138. interface
  139. uses
  140. Windows,
  141. ActiveX,
  142. DirectDraw,
  143. DirectSound,
  144. Direct3D9,
  145. MMSystem,
  146. SyncObjs,
  147. ComObj;
  148. (*==========================================================================;
  149. *
  150. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  151. *
  152. * File: comlite.h
  153. *
  154. ***************************************************************************)
  155. function QzInitialize(pvReserved: Pointer): HResult; stdcall;
  156. {$EXTERNALSYM QzInitialize}
  157. procedure QzUninitialize; stdcall;
  158. {$EXTERNALSYM QzUninitialize}
  159. procedure QzFreeUnusedLibraries; stdcall;
  160. {$EXTERNALSYM QzFreeUnusedLibraries}
  161. function QzGetMalloc(dwMemContext: Longint; out malloc: IMalloc): HResult; stdcall;
  162. {$EXTERNALSYM QzGetMalloc}
  163. function QzTaskMemAlloc(cb: Longint): Pointer; stdcall;
  164. {$EXTERNALSYM QzTaskMemAlloc}
  165. function QzTaskMemRealloc(pv: Pointer; cb: Longint): Pointer; stdcall;
  166. {$EXTERNALSYM QzTaskMemRealloc}
  167. procedure QzTaskMemFree(pv: Pointer); stdcall;
  168. {$EXTERNALSYM QzTaskMemFree}
  169. function QzCreateFilterObject(const clsid: TCLSID; unkOuter: IUnknown;
  170. {$EXTERNALSYM QzCreateFilterObject}
  171. dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
  172. function QzCLSIDFromString(psz: POleStr; out clsid: TCLSID): HResult; stdcall;
  173. {$EXTERNALSYM QzCLSIDFromString}
  174. function QzStringFromGUID2(const guid: TGUID; psz: POleStr; cbMax: Integer): Integer; stdcall;
  175. {$EXTERNALSYM QzStringFromGUID2}
  176. (*==========================================================================;
  177. *
  178. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  179. *
  180. * File: errors.h
  181. *
  182. ***************************************************************************)
  183. const
  184. VFW_FIRST_CODE = $200;
  185. {$EXTERNALSYM VFW_FIRST_CODE}
  186. MAX_ERROR_TEXT_LEN = 160;
  187. {$EXTERNALSYM MAX_ERROR_TEXT_LEN}
  188. function AMGetErrorTextA(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  189. {$EXTERNALSYM AMGetErrorTextA}
  190. function AMGetErrorTextW(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  191. {$EXTERNALSYM AMGetErrorTextW}
  192. // [pjh, 2003-07-14] ANSI and UNICODE declaration exchange
  193. {$IFDEF UNICODE}
  194. function AMGetErrorText(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  195. {$ELSE}
  196. function AMGetErrorText(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  197. {$ENDIF}
  198. {$EXTERNALSYM AMGetErrorText}
  199. (*==========================================================================;
  200. *
  201. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  202. *
  203. * File: dv.h
  204. *
  205. ***************************************************************************)
  206. const
  207. DV_DVSD_NTSC_FRAMESIZE = 120000;
  208. {$EXTERNALSYM DV_DVSD_NTSC_FRAMESIZE}
  209. DV_DVSD_PAL_FRAMESIZE = 144000;
  210. {$EXTERNALSYM DV_DVSD_PAL_FRAMESIZE}
  211. DV_SMCHN = $0000e000;
  212. {$EXTERNALSYM DV_SMCHN}
  213. DV_AUDIOMODE = $00000f00;
  214. {$EXTERNALSYM DV_AUDIOMODE}
  215. DV_AUDIOSMP = $38000000;
  216. {$EXTERNALSYM DV_AUDIOSMP}
  217. DV_AUDIOQU = $07000000;
  218. {$EXTERNALSYM DV_AUDIOQU}
  219. DV_NTSCPAL = $00200000;
  220. {$EXTERNALSYM DV_NTSCPAL}
  221. DV_STYPE = $001f0000;
  222. {$EXTERNALSYM DV_STYPE}
  223. //There are NTSC or PAL DV camcorders
  224. DV_NTSC = 0;
  225. {$EXTERNALSYM DV_NTSC}
  226. DV_PAL = 1;
  227. {$EXTERNALSYM DV_PAL}
  228. //DV camcorder can output sd/hd/sl
  229. DV_SD = $00;
  230. {$EXTERNALSYM DV_SD}
  231. DV_HD = $01;
  232. {$EXTERNALSYM DV_HD}
  233. DV_SL = $02;
  234. {$EXTERNALSYM DV_SL}
  235. //user can choice 12 bits or 16 bits audio from DV camcorder
  236. DV_CAP_AUD16Bits = $00;
  237. {$EXTERNALSYM DV_CAP_AUD16Bits}
  238. DV_CAP_AUD12Bits = $01;
  239. {$EXTERNALSYM DV_CAP_AUD12Bits}
  240. SIZE_DVINFO = $20;
  241. {$EXTERNALSYM SIZE_DVINFO}
  242. type
  243. Tag_DVAudInfo = record
  244. bAudStyle: array[0..1] of Byte;
  245. //LSB 6 bits for starting DIF sequence number
  246. //MSB 2 bits: 0 for mon. 1: stereo in one 5/6 DIF sequences, 2: stereo audio in both 5/6 DIF sequences
  247. //example: 0x00: mon, audio in first 5/6 DIF sequence
  248. // 0x05: mon, audio in 2nd 5 DIF sequence
  249. // 0x15: stereo, audio only in 2nd 5 DIF sequence
  250. // 0x10: stereo, audio only in 1st 5/6 DIF sequence
  251. // 0x20: stereo, left ch in 1st 5/6 DIF sequence, right ch in 2nd 5/6 DIF sequence
  252. // 0x26: stereo, rightch in 1st 6 DIF sequence, left ch in 2nd 6 DIF sequence
  253. bAudQu: array[0..1] of Byte; //qbits, only support 12, 16,
  254. bNumAudPin: Byte; //how many pin
  255. wAvgSamplesPerPinPerFrm: array[0..1] of WORD; //samples size for one audio pin in one frame(which has 10 or 12 DIF sequence)
  256. wBlkMode : WORD; //45 for NTSC, 54 for PAL
  257. wDIFMode : WORD; //5 for NTSC, 6 for PAL
  258. wBlkDiv : WORD; //15 for NTSC, 18 for PAL
  259. end;
  260. {$EXTERNALSYM Tag_DVAudInfo}
  261. DVAudInfo = Tag_DVAudInfo;
  262. {$EXTERNALSYM DVAudInfo}
  263. TDVAudInfo = Tag_DVAudInfo;
  264. (*==========================================================================;
  265. *
  266. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  267. *
  268. * File: strmif.h
  269. *
  270. ***************************************************************************)
  271. const
  272. IID_IPin : TGUID = '{56A86891-0AD4-11CE-B03A-0020AF0BA770}';
  273. {$EXTERNALSYM IID_IPin}
  274. IID_IEnumPins : TGUID = '{56A86892-0AD4-11CE-B03A-0020AF0BA770}';
  275. {$EXTERNALSYM IID_IEnumPins}
  276. IID_IEnumMediaTypes : TGUID = '{89C31040-846B-11CE-97D3-00AA0055595A}';
  277. {$EXTERNALSYM IID_IEnumMediaTypes}
  278. IID_IFilterGraph : TGUID = '{56A8689F-0AD4-11CE-B03A-0020AF0BA770}';
  279. {$EXTERNALSYM IID_IFilterGraph}
  280. IID_IEnumFilters : TGUID = '{56A86893-0AD4-11CE-B03A-0020AF0BA770}';
  281. {$EXTERNALSYM IID_IEnumFilters}
  282. IID_IMediaFilter : TGUID = '{56A86899-0AD4-11CE-B03A-0020AF0BA770}';
  283. {$EXTERNALSYM IID_IMediaFilter}
  284. IID_IBaseFilter : TGUID = '{56A86895-0AD4-11CE-B03A-0020AF0BA770}';
  285. {$EXTERNALSYM IID_IBaseFilter}
  286. IID_IReferenceClock : TGUID = '{56A86897-0AD4-11CE-B03A-0020AF0BA770}';
  287. {$EXTERNALSYM IID_IReferenceClock}
  288. IID_IReferenceClock2 : TGUID = '{36B73885-C2C8-11CF-8B46-00805F6CEF60}';
  289. {$EXTERNALSYM IID_IReferenceClock2}
  290. IID_IMediaSample : TGUID = '{56A8689A-0AD4-11CE-B03A-0020AF0BA770}';
  291. {$EXTERNALSYM IID_IMediaSample}
  292. IID_IMediaSample2 : TGUID = '{36B73884-C2C8-11CF-8B46-00805F6CEF60}';
  293. {$EXTERNALSYM IID_IMediaSample2}
  294. IID_IMemAllocator : TGUID = '{56A8689C-0AD4-11CE-B03A-0020AF0BA770}';
  295. {$EXTERNALSYM IID_IMemAllocator}
  296. IID_IMemInputPin : TGUID = '{56A8689D-0AD4-11CE-B03A-0020AF0BA770}';
  297. {$EXTERNALSYM IID_IMemInputPin}
  298. IID_IAMovieSetup : TGUID = '{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}'; // deprecated;
  299. {$EXTERNALSYM IID_IAMovieSetup}
  300. IID_IMediaSeeking : TGUID = '{36B73880-C2C8-11CF-8B46-00805F6CEF60}';
  301. {$EXTERNALSYM IID_IMediaSeeking}
  302. IID_IEnumRegFilters : TGUID = '{56A868A4-0AD4-11CE-B03A-0020AF0BA770}'; // deprecated;
  303. {$EXTERNALSYM IID_IEnumRegFilters}
  304. IID_IFilterMapper : TGUID = '{56A868A3-0AD4-11CE-B03A-0020AF0BA770}'; // deprecated;
  305. {$EXTERNALSYM IID_IFilterMapper}
  306. IID_IFilterMapper2 : TGUID = '{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}';
  307. {$EXTERNALSYM IID_IFilterMapper2}
  308. IID_IQualityControl : TGUID = '{56A868A5-0AD4-11CE-B03A-0020AF0BA770}';
  309. {$EXTERNALSYM IID_IQualityControl}
  310. IID_IOverlayNotify : TGUID = '{56A868A0-0AD4-11CE-B03A-0020AF0BA770}';
  311. {$EXTERNALSYM IID_IOverlayNotify}
  312. IID_IOverlay : TGUID = '{56A868A1-0AD4-11CE-B03A-0020AF0BA770}';
  313. {$EXTERNALSYM IID_IOverlay}
  314. IID_IMediaEventSink : TGUID = '{56A868A2-0AD4-11CE-B03A-0020AF0BA770}';
  315. {$EXTERNALSYM IID_IMediaEventSink}
  316. IID_IFileSourceFilter : TGUID = '{56A868A6-0AD4-11CE-B03A-0020AF0BA770}';
  317. {$EXTERNALSYM IID_IFileSourceFilter}
  318. IID_IFileSinkFilter : TGUID = '{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}';
  319. {$EXTERNALSYM IID_IFileSinkFilter}
  320. IID_IFileSinkFilter2 : TGUID = '{00855B90-CE1B-11D0-BD4F-00A0C911CE86}';
  321. {$EXTERNALSYM IID_IFileSinkFilter2}
  322. IID_IFileAsyncIO : TGUID = '{56A868A7-0AD4-11CE-B03A-0020AF0BA770}';
  323. {$EXTERNALSYM IID_IFileAsyncIO}
  324. IID_IGraphBuilder : TGUID = '{56A868A9-0AD4-11CE-B03A-0020AF0BA770}';
  325. {$EXTERNALSYM IID_IGraphBuilder}
  326. IID_ICaptureGraphBuilder : TGUID = '{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}'; // deprecated;
  327. {$EXTERNALSYM IID_ICaptureGraphBuilder}
  328. IID_IAMCopyCaptureFileProgress : TGUID = '{670D1D20-A068-11D0-B3F0-00AA003761C5}';
  329. {$EXTERNALSYM IID_IAMCopyCaptureFileProgress}
  330. IID_IFilterGraph2 : TGUID = '{36B73882-C2C8-11CF-8B46-00805F6CEF60}';
  331. {$EXTERNALSYM IID_IFilterGraph2}
  332. IID_IStreamBuilder : TGUID = '{56A868BF-0AD4-11CE-B03A-0020AF0BA770}';
  333. {$EXTERNALSYM IID_IStreamBuilder}
  334. IID_IAsyncReader : TGUID = '{56A868AA-0AD4-11CE-B03A-0020AF0BA770}';
  335. {$EXTERNALSYM IID_IAsyncReader}
  336. IID_IGraphVersion : TGUID = '{56A868AB-0AD4-11CE-B03A-0020AF0BA770}';
  337. {$EXTERNALSYM IID_IGraphVersion}
  338. IID_IResourceConsumer : TGUID = '{56A868AD-0AD4-11CE-B03A-0020AF0BA770}';
  339. {$EXTERNALSYM IID_IResourceConsumer}
  340. IID_IResourceManager : TGUID = '{56A868AC-0AD4-11CE-B03A-0020AF0BA770}';
  341. {$EXTERNALSYM IID_IResourceManager}
  342. IID_IDistributorNotify : TGUID = '{56A868AF-0AD4-11CE-B03A-0020AF0BA770}';
  343. {$EXTERNALSYM IID_IDistributorNotify}
  344. IID_IAMStreamControl : TGUID = '{36b73881-c2c8-11cf-8b46-00805f6cef60}';
  345. {$EXTERNALSYM IID_IAMStreamControl}
  346. IID_ISeekingPassThru : TGUID = '{36B73883-C2C8-11CF-8B46-00805F6CEF60}';
  347. {$EXTERNALSYM IID_ISeekingPassThru}
  348. IID_IAMStreamConfig : TGUID = '{C6E13340-30AC-11d0-A18C-00A0C9118956}';
  349. {$EXTERNALSYM IID_IAMStreamConfig}
  350. IID_IConfigInterleaving : TGUID = '{BEE3D220-157B-11d0-BD23-00A0C911CE86}';
  351. {$EXTERNALSYM IID_IConfigInterleaving}
  352. IID_IConfigAviMux : TGUID = '{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}';
  353. {$EXTERNALSYM IID_IConfigAviMux}
  354. IID_IAMVideoCompression : TGUID = '{C6E13343-30AC-11d0-A18C-00A0C9118956}';
  355. {$EXTERNALSYM IID_IAMVideoCompression}
  356. IID_IAMVfwCaptureDialogs : TGUID = '{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}';
  357. {$EXTERNALSYM IID_IAMVfwCaptureDialogs}
  358. IID_IAMVfwCompressDialogs : TGUID = '{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}';
  359. {$EXTERNALSYM IID_IAMVfwCompressDialogs}
  360. IID_IAMDroppedFrames : TGUID = '{C6E13344-30AC-11d0-A18C-00A0C9118956}';
  361. {$EXTERNALSYM IID_IAMDroppedFrames}
  362. IID_IAMAudioInputMixer : TGUID = '{54C39221-8380-11d0-B3F0-00AA003761C5}';
  363. {$EXTERNALSYM IID_IAMAudioInputMixer}
  364. IID_IAMAnalogVideoDecoder : TGUID = '{C6E13350-30AC-11d0-A18C-00A0C9118956}';
  365. {$EXTERNALSYM IID_IAMAnalogVideoDecoder}
  366. IID_IAMVideoProcAmp : TGUID = '{C6E13360-30AC-11d0-A18C-00A0C9118956}';
  367. {$EXTERNALSYM IID_IAMVideoProcAmp}
  368. IID_IAMCameraControl : TGUID = '{C6E13370-30AC-11d0-A18C-00A0C9118956}';
  369. {$EXTERNALSYM IID_IAMCameraControl}
  370. IID_IAMCrossbar : TGUID = '{C6E13380-30AC-11d0-A18C-00A0C9118956}';
  371. {$EXTERNALSYM IID_IAMCrossbar}
  372. IID_IAMTuner : TGUID = '{211A8761-03AC-11d1-8D13-00AA00BD8339}';
  373. {$EXTERNALSYM IID_IAMTuner}
  374. IID_IAMTunerNotification : TGUID = '{211A8760-03AC-11d1-8D13-00AA00BD8339}';
  375. {$EXTERNALSYM IID_IAMTunerNotification}
  376. IID_IAMTVTuner : TGUID = '{211A8766-03AC-11d1-8D13-00AA00BD8339}';
  377. {$EXTERNALSYM IID_IAMTVTuner}
  378. IID_IBPCSatelliteTuner : TGUID = '{211A8765-03AC-11d1-8D13-00AA00BD8339}';
  379. {$EXTERNALSYM IID_IBPCSatelliteTuner}
  380. IID_IAMTVAudio : TGUID = '{83EC1C30-23D1-11d1-99E6-00A0C9560266}';
  381. {$EXTERNALSYM IID_IAMTVAudio}
  382. IID_IAMTVAudioNotification : TGUID = '{83EC1C33-23D1-11D1-99E6-00A0C9560266}';
  383. {$EXTERNALSYM IID_IAMTVAudioNotification}
  384. IID_IAMAnalogVideoEncoder : TGUID = '{C6E133B0-30AC-11d0-A18C-00A0C9118956}'; // deprecated;
  385. {$EXTERNALSYM IID_IAMAnalogVideoEncoder}
  386. IID_IMediaPropertyBag : TGUID = '{6025A880-C0D5-11D0-BD4E-00A0C911CE86}';
  387. {$EXTERNALSYM IID_IMediaPropertyBag}
  388. IID_IPersistMediaPropertyBag : TGUID = '{5738E040-B67F-11d0-BD4D-00A0C911CE86}';
  389. {$EXTERNALSYM IID_IPersistMediaPropertyBag}
  390. IID_IAMPhysicalPinInfo : TGUID = '{F938C991-3029-11CF-8C44-00AA006B6814}'; // deprecated;
  391. {$EXTERNALSYM IID_IAMPhysicalPinInfo}
  392. IID_IAMExtDevice : TGUID = '{B5730A90-1A2C-11CF-8C23-00AA006B6814}';
  393. {$EXTERNALSYM IID_IAMExtDevice}
  394. IID_IAMExtTransport : TGUID = '{A03CD5F0-3045-11CF-8C44-00AA006B6814}';
  395. {$EXTERNALSYM IID_IAMExtTransport}
  396. IID_IAMTimecodeReader : TGUID = '{9B496CE1-811B-11CF-8C77-00AA006B6814}';
  397. {$EXTERNALSYM IID_IAMTimecodeReader}
  398. IID_IAMTimecodeGenerator : TGUID = '{9B496CE0-811B-11CF-8C77-00AA006B6814}';
  399. {$EXTERNALSYM IID_IAMTimecodeGenerator}
  400. IID_IAMTimecodeDisplay : TGUID = '{9B496CE2-811B-11CF-8C77-00AA006B6814}';
  401. {$EXTERNALSYM IID_IAMTimecodeDisplay}
  402. IID_IAMDevMemoryAllocator : TGUID = '{C6545BF0-E76B-11D0-BD52-00A0C911CE86}'; // deprecated;
  403. {$EXTERNALSYM IID_IAMDevMemoryAllocator}
  404. IID_IAMDevMemoryControl : TGUID = '{C6545BF1-E76B-11D0-BD52-00A0C911CE86}'; // deprecated;
  405. {$EXTERNALSYM IID_IAMDevMemoryControl}
  406. IID_IAMStreamSelect : TGUID = '{C1960960-17F5-11D1-ABE1-00A0C905F375}';
  407. {$EXTERNALSYM IID_IAMStreamSelect}
  408. IID_IAMovie : TGUID = '{359ACE10-7688-11CF-8B23-00805F6CEF60}';
  409. {$EXTERNALSYM IID_IAMovie}
  410. IID_ICreateDevEnum : TGUID = '{29840822-5B84-11D0-BD3B-00A0C911CE86}';
  411. {$EXTERNALSYM IID_ICreateDevEnum}
  412. IID_IDvdControl : TGUID = '{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}'; // deprecated;
  413. {$EXTERNALSYM IID_IDvdControl}
  414. IID_IDvdControl2 : TGUID = '{33BC7430-EEC0-11D2-8201-00A0C9D74842}';
  415. {$EXTERNALSYM IID_IDvdControl2}
  416. IID_IDvdInfo : TGUID = '{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}'; // deprecated;
  417. {$EXTERNALSYM IID_IDvdInfo}
  418. IID_IDvdInfo2 : TGUID = '{34151510-EEC0-11D2-8201-00A0C9D74842}';
  419. {$EXTERNALSYM IID_IDvdInfo2}
  420. IID_IDvdGraphBuilder : TGUID = '{FCC152B6-F372-11d0-8E00-00C04FD7C08B}';
  421. {$EXTERNALSYM IID_IDvdGraphBuilder}
  422. IID_IDvdState : TGUID = '{86303d6d-1c4a-4087-ab42-f711167048ef}';
  423. {$EXTERNALSYM IID_IDvdState}
  424. IID_IDvdCmd : TGUID = '{5a4a97e4-94ee-4a55-9751-74b5643aa27d}';
  425. {$EXTERNALSYM IID_IDvdCmd}
  426. IID_IVideoFrameStep : TGUID = '{e46a9787-2b71-444d-a4b5-1fab7b708d6a}';
  427. {$EXTERNALSYM IID_IVideoFrameStep}
  428. IID_IFilterMapper3 : TGUID = '{b79bb0b1-33c1-11d1-abe1-00a0c905f375}';
  429. {$EXTERNALSYM IID_IFilterMapper3}
  430. IID_IOverlayNotify2 : TGUID = '{680EFA10-D535-11D1-87C8-00A0C9223196}';
  431. {$EXTERNALSYM IID_IOverlayNotify2}
  432. IID_ICaptureGraphBuilder2 : TGUID = '{93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D}';
  433. {$EXTERNALSYM IID_ICaptureGraphBuilder2}
  434. IID_IMemAllocatorCallbackTemp : TGUID = '{379a0cf0-c1de-11d2-abf5-00a0c905f375}';
  435. {$EXTERNALSYM IID_IMemAllocatorCallbackTemp}
  436. IID_IMemAllocatorNotifyCallbackTemp : TGUID = '{92980b30-c1de-11d2-abf5-00a0c905f375}';
  437. {$EXTERNALSYM IID_IMemAllocatorNotifyCallbackTemp}
  438. IID_IAMVideoControl : TGUID = '{6a2e0670-28e4-11d0-a18c-00a0c9118956}';
  439. {$EXTERNALSYM IID_IAMVideoControl}
  440. IID_IKsPropertySet : TGUID = '{31EFAC30-515C-11d0-A9AA-00AA0061BE93}';
  441. {$EXTERNALSYM IID_IKsPropertySet}
  442. STATIC_IID_IKsPropertySet : TGUID = '{31EFAC30-515C-11d0-A9AA-00AA0061BE93}';
  443. {$EXTERNALSYM STATIC_IID_IKsPropertySet}
  444. IID_IAMResourceControl : TGUID = '{8389d2d0-77d7-11d1-abe6-00a0c905f375}';
  445. {$EXTERNALSYM IID_IAMResourceControl}
  446. IID_IAMClockAdjust : TGUID = '{4d5466b0-a49c-11d1-abe8-00a0c905f375}';
  447. {$EXTERNALSYM IID_IAMClockAdjust}
  448. IID_IAMFilterMiscFlags : TGUID = '{2dd74950-a890-11d1-abe8-00a0c905f375}';
  449. {$EXTERNALSYM IID_IAMFilterMiscFlags}
  450. IID_IDrawVideoImage : TGUID = '{48efb120-ab49-11d2-aed2-00a0c995e8d5}';
  451. {$EXTERNALSYM IID_IDrawVideoImage}
  452. IID_IDecimateVideoImage : TGUID = '{2e5ea3e0-e924-11d2-b6da-00a0c995e8df}';
  453. {$EXTERNALSYM IID_IDecimateVideoImage}
  454. IID_IAMVideoDecimationProperties : TGUID = '{60d32930-13da-11d3-9ec6-c4fcaef5c7be}';
  455. {$EXTERNALSYM IID_IAMVideoDecimationProperties}
  456. IID_IAMLatency : TGUID = '{62EA93BA-EC62-11d2-B770-00C04FB6BD3D}';
  457. {$EXTERNALSYM IID_IAMLatency}
  458. IID_IAMPushSource : TGUID = '{F185FE76-E64E-11d2-B76E-00C04FB6BD3D}';
  459. {$EXTERNALSYM IID_IAMPushSource}
  460. IID_IAMDeviceRemoval : TGUID = '{f90a6130-b658-11d2-ae49-0000f8754b99}';
  461. {$EXTERNALSYM IID_IAMDeviceRemoval}
  462. IID_IDVEnc : TGUID = '{d18e17a0-aacb-11d0-afb0-00aa00b67a42}';
  463. {$EXTERNALSYM IID_IDVEnc}
  464. IID_IIPDVDec : TGUID = '{b8e8bd60-0bfe-11d0-af91-00aa00b67a42}';
  465. {$EXTERNALSYM IID_IIPDVDec}
  466. IID_IDVRGB219 : TGUID = '{58473A19-2BC8-4663-8012-25F81BABDDD1}'; // XP
  467. {$EXTERNALSYM IID_IDVRGB219}
  468. IID_IDVSplitter : TGUID = '{92a3a302-da7c-4a1f-ba7e-1802bb5d2d02}';
  469. {$EXTERNALSYM IID_IDVSplitter}
  470. IID_IAMAudioRendererStats : TGUID = '{22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93}';
  471. {$EXTERNALSYM IID_IAMAudioRendererStats}
  472. IID_IAMGraphStreams : TGUID = '{632105FA-072E-11d3-8AF9-00C04FB6BD3D}';
  473. {$EXTERNALSYM IID_IAMGraphStreams}
  474. IID_IAMOverlayFX : TGUID = '{62fae250-7e65-4460-bfc9-6398b322073c}';
  475. {$EXTERNALSYM IID_IAMOverlayFX}
  476. IID_IAMOpenProgress : TGUID = '{8E1C39A1-DE53-11cf-AA63-0080C744528D}';
  477. {$EXTERNALSYM IID_IAMOpenProgress}
  478. IID_IMpeg2Demultiplexer : TGUID = '{436eee9c-264f-4242-90e1-4e330c107512}';
  479. {$EXTERNALSYM IID_IMpeg2Demultiplexer}
  480. IID_IEnumStreamIdMap : TGUID = '{945C1566-6202-46fc-96C7-D87F289C6534}';
  481. {$EXTERNALSYM IID_IEnumStreamIdMap}
  482. IID_IMPEG2StreamIdMap : TGUID = '{D0E04C47-25B8-4369-925A-362A01D95444}';
  483. {$EXTERNALSYM IID_IMPEG2StreamIdMap}
  484. IID_IRegisterServiceProvider : TGUID = '{7B3A2F01-0751-48DD-B556-004785171C54}'; // XP
  485. {$EXTERNALSYM IID_IRegisterServiceProvider}
  486. IID_IAMDecoderCaps : TGUID = '{c0dff467-d499-4986-972b-e1d9090fa941}'; // XP
  487. {$EXTERNALSYM IID_IAMDecoderCaps}
  488. IID_IAMCertifiedOutputProtection : TGUID = '{6FEDED3E-0FF1-4901-A2F1-43F7012C8515}';
  489. {.$EXTERNALSYM IID_IAMCertifiedOutputProtection}
  490. IID_IAMClockSlave : TGUID = '{9FD52741-176D-4b36-8F51-CA8F933223BE}'; // XP
  491. {$EXTERNALSYM IID_IAMClockSlave}
  492. IID_IAMGraphBuilderCallback : TGUID = '{4995f511-9ddb-4f12-bd3b-f04611807b79}'; // DX9
  493. {$EXTERNALSYM IID_IAMGraphBuilderCallback}
  494. IID_IAMFilterGraphCallback : TGUID = '{56a868fd-0ad4-11ce-b0a3-0020af0ba770}'; // DX9
  495. {$EXTERNALSYM IID_IAMFilterGraphCallback}
  496. IID_ICodecAPI : TGUID = '{901db4c7-31ce-41a2-85dc-8fa0bf41b8da}'; // DX9
  497. {$EXTERNALSYM IID_ICodecAPI}
  498. IID_IEncoderAPI : TGUID = '{70423839-6ACC-4b23-B079-21DBF08156A5}'; // DX9
  499. {$EXTERNALSYM IID_IEncoderAPI}
  500. IID_IVideoEncoder : TGUID = '{02997C3B-8E1B-460e-9270-545E0DE9563E}'; // DX9
  501. {$EXTERNALSYM IID_IVideoEncoder}
  502. IID_IGetCapabilitiesKey : TGUID = '{a8809222-07bb-48ea-951c-33158100625b}'; // DX9
  503. {$EXTERNALSYM IID_IGetCapabilitiesKey}
  504. IID_IDDrawExclModeVideo : TGUID = '{153ACC21-D83B-11d1-82BF-00A0C9696C8F}';
  505. {$EXTERNALSYM IID_IDDrawExclModeVideo}
  506. IID_IDDrawExclModeVideoCallback : TGUID = '{913c24a0-20ab-11d2-9038-00a0c9697298}';
  507. {$EXTERNALSYM IID_IDDrawExclModeVideoCallback}
  508. IID_IPinConnection : TGUID = '{4a9a62d3-27d4-403d-91e9-89f540e55534}';
  509. {$EXTERNALSYM IID_IPinConnection}
  510. IID_IPinFlowControl : TGUID = '{c56e9858-dbf3-4f6b-8119-384af2060deb}';
  511. {$EXTERNALSYM IID_IPinFlowControl}
  512. IID_IGraphConfig : TGUID = '{03A1EB8E-32BF-4245-8502-114D08A9CB88}';
  513. {$EXTERNALSYM IID_IGraphConfig}
  514. IID_IGraphConfigCallback : TGUID = '{ade0fd60-d19d-11d2-abf6-00a0c905f375}';
  515. {$EXTERNALSYM IID_IGraphConfigCallback}
  516. IID_IFilterChain : TGUID = '{DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29}';
  517. {$EXTERNALSYM IID_IFilterChain}
  518. IID_IVMRImagePresenter : TGUID = '{CE704FE7-E71E-41fb-BAA2-C4403E1182F5}'; // XP
  519. {$EXTERNALSYM IID_IVMRImagePresenter}
  520. IID_IVMRSurfaceAllocator : TGUID = '{31ce832e-4484-458b-8cca-f4d7e3db0b52}'; // XP
  521. {$EXTERNALSYM IID_IVMRSurfaceAllocator}
  522. IID_IVMRSurfaceAllocatorNotify : TGUID = '{aada05a8-5a4e-4729-af0b-cea27aed51e2}'; // XP
  523. {$EXTERNALSYM IID_IVMRSurfaceAllocatorNotify}
  524. IID_IVMRWindowlessControl : TGUID = '{0eb1088c-4dcd-46f0-878f-39dae86a51b7}'; // XP
  525. {$EXTERNALSYM IID_IVMRWindowlessControl}
  526. IID_IVMRMixerControl : TGUID = '{1c1a17b0-bed0-415d-974b-dc6696131599}'; // XP
  527. {$EXTERNALSYM IID_IVMRMixerControl}
  528. IID_IVMRMonitorConfig : TGUID = '{9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce}'; // XP
  529. {$EXTERNALSYM IID_IVMRMonitorConfig}
  530. IID_IVMRFilterConfig : TGUID = '{9e5530c5-7034-48b4-bb46-0b8a6efc8e36}'; // XP
  531. {$EXTERNALSYM IID_IVMRFilterConfig}
  532. IID_IVMRMixerBitmap : TGUID = '{1E673275-0257-40aa-AF20-7C608D4A0428}'; // XP
  533. {$EXTERNALSYM IID_IVMRMixerBitmap}
  534. IID_IVMRImageCompositor : TGUID = '{7a4fb5af-479f-4074-bb40-ce6722e43c82}'; // XP
  535. {$EXTERNALSYM IID_IVMRImageCompositor}
  536. IID_IVMRVideoStreamControl : TGUID = '{058d1f11-2a54-4bef-bd54-df706626b727}'; // XP
  537. {$EXTERNALSYM IID_IVMRVideoStreamControl}
  538. IID_IVMRSurface : TGUID = '{a9849bbe-9ec8-4263-b764-62730f0d15d0}'; // XP
  539. {$EXTERNALSYM IID_IVMRSurface}
  540. IID_IVPManager : TGUID = '{aac18c18-e186-46d2-825d-a1f8dc8e395a}'; // XP
  541. {$EXTERNALSYM IID_IVPManager}
  542. IID_IVMRImagePresenterConfig : TGUID = '{9f3a1c85-8555-49ba-935f-be5b5b29d178}'; // XP
  543. {$EXTERNALSYM IID_IVMRImagePresenterConfig}
  544. IID_IVMRImagePresenterExclModeConfig: TGUID = '{e6f7ce40-4673-44f1-8f77-5499d68cb4ea}'; // XP
  545. {$EXTERNALSYM IID_IVMRImagePresenterExclModeConfig}
  546. IID_IAMBufferNegotiation : TGUID = '{56ED71A0-AF5F-11D0-B3F0-00AA003761C5}';
  547. {$EXTERNALSYM IID_IAMBufferNegotiation}
  548. const
  549. CHARS_IN_GUID = 39;
  550. {$EXTERNALSYM CHARS_IN_GUID}
  551. MAX_PIN_NAME = 128;
  552. {$EXTERNALSYM MAX_PIN_NAME}
  553. MAX_FILTER_NAME = 128;
  554. {$EXTERNALSYM MAX_FILTER_NAME}
  555. type
  556. PAMMediaType = ^TAMMediaType;
  557. _AMMediaType = record
  558. majortype : TGUID;
  559. subtype : TGUID;
  560. bFixedSizeSamples : BOOL;
  561. bTemporalCompression : BOOL;
  562. lSampleSize : ULONG;
  563. formattype : TGUID;
  564. pUnk : IUnknown;
  565. cbFormat : ULONG;
  566. pbFormat : Pointer;
  567. end;
  568. {$EXTERNALSYM _AMMediaType}
  569. AM_MEDIA_TYPE = _AMMediaType;
  570. {$EXTERNALSYM AM_MEDIA_TYPE}
  571. TAMMediaType = _AMMediaType;
  572. _PinDirection = (
  573. PINDIR_INPUT,
  574. PINDIR_OUTPUT
  575. );
  576. {$EXTERNALSYM _PinDirection}
  577. PIN_DIRECTION = _PinDirection;
  578. {$EXTERNALSYM PIN_DIRECTION}
  579. TPinDirection = PIN_DIRECTION;
  580. REFERENCE_TIME = DirectSound.REFERENCE_TIME;
  581. {$EXTERNALSYM REFERENCE_TIME}
  582. TReferenceTime = DirectSound.TReferenceTime;
  583. PReferenceTime = DirectSound.PReferenceTime;
  584. REFTIME = double;
  585. {$EXTERNALSYM REFTIME}
  586. TRefTime = REFTIME;
  587. HSEMAPHORE = Longint;
  588. {$EXTERNALSYM HSEMAPHORE}
  589. PAllocatorProperties = ^TAllocatorProperties;
  590. _AllocatorProperties = record
  591. cBuffers: Longint;
  592. cbBuffer: Longint;
  593. cbAlign : Longint;
  594. cbPrefix: Longint;
  595. end;
  596. {$EXTERNALSYM _AllocatorProperties}
  597. ALLOCATOR_PROPERTIES = _AllocatorProperties;
  598. {$EXTERNALSYM ALLOCATOR_PROPERTIES}
  599. TAllocatorProperties = _AllocatorProperties;
  600. IBaseFilter = interface;
  601. _PinInfo = record
  602. pFilter: IBaseFilter;
  603. dir : PIN_DIRECTION;
  604. achName: array[0..127] of WCHAR;
  605. end;
  606. {$EXTERNALSYM _PinInfo}
  607. PIN_INFO = _PinInfo;
  608. {$EXTERNALSYM PIN_INFO}
  609. TPinInfo = _PinInfo;
  610. IEnumMediaTypes = interface;
  611. {$HPPEMIT 'typedef System::DelphiInterface<IPin> _di_IPin;'}
  612. {$EXTERNALSYM IPin}
  613. IPin = interface(IUnknown)
  614. ['{56A86891-0AD4-11CE-B03A-0020AF0BA770}']
  615. (*** IPin methods ***)
  616. function Connect(pReceivePin: IPin; const pmt: PAMMediaType): HResult; stdcall;
  617. function ReceiveConnection(pConnector: IPin; const pmt: TAMMediaType): HResult; stdcall;
  618. function Disconnect: HResult; stdcall;
  619. function ConnectedTo(out pPin: IPin): HResult; stdcall;
  620. function ConnectionMediaType(out pmt: TAMMediaType): HResult; stdcall;
  621. function QueryPinInfo(out pInfo: TPinInfo): HResult; stdcall;
  622. function QueryDirection(out pPinDir: TPinDirection): HResult; stdcall;
  623. function QueryId(out Id: LPWSTR): HResult; stdcall;
  624. function QueryAccept(const pmt: TAMMediaType): HResult; stdcall;
  625. function EnumMediaTypes(out ppEnum: IEnumMediaTypes): HResult; stdcall;
  626. function QueryInternalConnections(out apPin: IPin; var nPin: ULONG): HResult; stdcall;
  627. function EndOfStream: HResult; stdcall;
  628. function BeginFlush: HResult; stdcall;
  629. function EndFlush: HResult; stdcall;
  630. function NewSegment(tStart, tStop: TReferenceTime; dRate: double): HResult; stdcall;
  631. end;
  632. {$HPPEMIT 'typedef System::DelphiInterface<IEnumPins> _di_IEnumPins;'}
  633. {$EXTERNALSYM IEnumPins}
  634. IEnumPins = interface(IUnknown)
  635. ['{56A86892-0AD4-11CE-B03A-0020AF0BA770}']
  636. (*** IEnumPins methods ***)
  637. function Next(cPins: ULONG; out ppPins: IPin; pcFetched: PULONG): HResult; stdcall;
  638. function Skip(cPins: ULONG): HResult; stdcall;
  639. function Reset: HResult; stdcall;
  640. function Clone(out ppEnum: IEnumPins): HResult; stdcall;
  641. end;
  642. {$HPPEMIT 'typedef System::DelphiInterface<IEnumMediaTypes> _di_IEnumMediaTypes;'}
  643. {$EXTERNALSYM IEnumMediaTypes}
  644. IEnumMediaTypes = interface(IUnknown)
  645. ['{89C31040-846B-11CE-97D3-00AA0055595A}']
  646. (*** IEnumMediaTypes methods ***)
  647. function Next(cMediaTypes: ULONG; out ppMediaTypes: PAMMediaType;
  648. pcFetched: PULONG): HResult; stdcall;
  649. function Skip(cMediaTypes: ULONG): HResult; stdcall;
  650. function Reset: HResult; stdcall;
  651. function Clone(out ppEnum: IEnumMediaTypes): HResult; stdcall;
  652. end;
  653. IEnumFilters = interface;
  654. {$HPPEMIT 'typedef System::DelphiInterface<IFilterGraph> _di_IFilterGraph;'}
  655. {$EXTERNALSYM IFilterGraph}
  656. IFilterGraph = interface(IUnknown)
  657. ['{56A8689F-0AD4-11CE-B03A-0020AF0BA770}']
  658. (*** IFilterGraph methods ***)
  659. function AddFilter(pFilter: IBaseFilter; pName: PWideChar): HResult; stdcall;
  660. function RemoveFilter(pFilter: IBaseFilter): HResult; stdcall;
  661. function EnumFilters(out ppEnum: IEnumFilters): HResult; stdcall;
  662. function FindFilterByName(pName: PWideChar; out ppFilter: IBaseFilter): HResult; stdcall;
  663. function ConnectDirect(ppinOut, ppinIn: IPin; pmt: PAMMediaType): HResult; stdcall;
  664. function Reconnect(ppin: IPin): HResult; stdcall;
  665. function Disconnect(ppin: IPin): HResult; stdcall;
  666. function SetDefaultSyncSource: HResult; stdcall;
  667. end;
  668. {$HPPEMIT 'typedef System::DelphiInterface<IEnumFilters> _di_IEnumFilters;'}
  669. {$EXTERNALSYM IEnumFilters}
  670. IEnumFilters = interface(IUnknown)
  671. ['{56A86893-0AD4-11CE-B03A-0020AF0BA770}']
  672. (*** IEnumFilters methods ***)
  673. function Next(cFilters: ULONG; out ppFilter: IBaseFilter;
  674. pcFetched: PULONG): HResult; stdcall;
  675. function Skip(cFilters: ULONG): HResult; stdcall;
  676. function Reset: HResult; stdcall;
  677. function Clone(out ppEnum: IEnumFilters): HResult; stdcall;
  678. end;
  679. _FilterState = (
  680. State_Stopped,
  681. State_Paused,
  682. State_Running
  683. );
  684. {$EXTERNALSYM _FilterState}
  685. FILTER_STATE = _FilterState;
  686. {$EXTERNALSYM FILTER_STATE}
  687. TFilterState = FILTER_STATE;
  688. {$NODEFINE IReferenceClock}
  689. IReferenceClock = DirectSound.IReferenceClock;
  690. {$HPPEMIT 'typedef System::DelphiInterface<IMediaFilter> _di_IMediaFilter;'}
  691. {$EXTERNALSYM IMediaFilter}
  692. IMediaFilter = interface(IPersist)
  693. ['{56A86899-0AD4-11CE-B03A-0020AF0BA770}']
  694. (*** IMediaFilter methods ***)
  695. function Stop: HResult; stdcall;
  696. function Pause: HResult; stdcall;
  697. function Run(tStart: TReferenceTime): HResult; stdcall;
  698. function GetState(dwMilliSecsTimeout: DWORD; out State: TFilterState): HResult; stdcall;
  699. function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
  700. function GetSyncSource(out pClock: IReferenceClock): HResult; stdcall;
  701. end;
  702. _FilterInfo = record
  703. achName : array[0..127] of WCHAR;
  704. pGraph : IFilterGraph;
  705. end;
  706. {$EXTERNALSYM _FilterInfo}
  707. FILTER_INFO = _FilterInfo;
  708. {$EXTERNALSYM FILTER_INFO}
  709. TFilterInfo = _FilterInfo;
  710. {$HPPEMIT 'typedef System::DelphiInterface<IBaseFilter> _di_IBaseFilter;'}
  711. {$EXTERNALSYM IBaseFilter}
  712. IBaseFilter = interface(IMediaFilter)
  713. ['{56A86895-0AD4-11CE-B03A-0020AF0BA770}']
  714. (*** IBaseFilter methods ***)
  715. function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
  716. function FindPin(Id: PWideChar; out ppPin: IPin): HResult; stdcall;
  717. function QueryFilterInfo(out pInfo: TFilterInfo): HResult; stdcall;
  718. function JoinFilterGraph(pGraph: IFilterGraph; pName: PWideChar): HResult; stdcall;
  719. function QueryVendorInfo(out pVendorInfo: PWideChar): HResult; stdcall;
  720. end;
  721. {$HPPEMIT 'typedef System::DelphiInterface<IReferenceClock2> _di_IReferenceClock2;'}
  722. {$EXTERNALSYM IReferenceClock2}
  723. IReferenceClock2 = interface(IReferenceClock)
  724. ['{36B73885-C2C8-11CF-8B46-00805F6CEF60}']
  725. (*** IReferenceClock2 methods ***)
  726. end;
  727. {$HPPEMIT 'typedef System::DelphiInterface<IMediaSample> _di_IMediaSample;'}
  728. {$EXTERNALSYM IMediaSample}
  729. IMediaSample = interface(IUnknown)
  730. ['{56A8689A-0AD4-11CE-B03A-0020AF0BA770}']
  731. (*** IMediaSample methods ***)
  732. function GetPointer(out ppBuffer: PBYTE): HResult; stdcall;
  733. function GetSize: Longint; stdcall;
  734. function GetTime(out pTimeStart, pTimeEnd: TReferenceTime): HResult; stdcall;
  735. function SetTime(pTimeStart, pTimeEnd: PReferenceTime): HResult; stdcall;
  736. function IsSyncPoint: HResult; stdcall;
  737. function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
  738. function IsPreroll: HResult; stdcall;
  739. function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
  740. function GetActualDataLength: Longint; stdcall;
  741. function SetActualDataLength(lLen: Longint): HResult; stdcall;
  742. function GetMediaType(out ppMediaType: PAMMediaType): HResult; stdcall;
  743. function SetMediaType(var pMediaType: TAMMediaType): HResult; stdcall;
  744. function IsDiscontinuity: HResult; stdcall;
  745. function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
  746. function GetMediaTime(out pTimeStart, pTimeEnd: int64): HResult; stdcall;
  747. function SetMediaTime(pTimeStart, pTimeEnd: Pint64): HResult; stdcall;
  748. end;
  749. const
  750. AM_SAMPLE_SPLICEPOINT = $1;
  751. {$EXTERNALSYM AM_SAMPLE_SPLICEPOINT}
  752. AM_SAMPLE_PREROLL = $2;
  753. {$EXTERNALSYM AM_SAMPLE_PREROLL}
  754. AM_SAMPLE_DATADISCONTINUITY = $4;
  755. {$EXTERNALSYM AM_SAMPLE_DATADISCONTINUITY}
  756. AM_SAMPLE_TYPECHANGED = $8;
  757. {$EXTERNALSYM AM_SAMPLE_TYPECHANGED}
  758. AM_SAMPLE_TIMEVALID = $10;
  759. {$EXTERNALSYM AM_SAMPLE_TIMEVALID}
  760. AM_SAMPLE_TIMEDISCONTINUITY = $40;
  761. {$EXTERNALSYM AM_SAMPLE_TIMEDISCONTINUITY}
  762. AM_SAMPLE_FLUSH_ON_PAUSE = $80;
  763. {$EXTERNALSYM AM_SAMPLE_FLUSH_ON_PAUSE}
  764. AM_SAMPLE_STOPVALID = $100;
  765. {$EXTERNALSYM AM_SAMPLE_STOPVALID}
  766. AM_SAMPLE_ENDOFSTREAM = $200;
  767. {$EXTERNALSYM AM_SAMPLE_ENDOFSTREAM}
  768. AM_STREAM_MEDIA = 0;
  769. {$EXTERNALSYM AM_STREAM_MEDIA}
  770. AM_STREAM_CONTROL = 1;
  771. {$EXTERNALSYM AM_STREAM_CONTROL}
  772. type
  773. PAMSample2Properties = ^TAMSample2Properties;
  774. tagAM_SAMPLE2_PROPERTIES = record
  775. cbData: DWORD;
  776. dwTypeSpecificFlags : DWORD;
  777. dwSampleFlags : DWORD;
  778. lActual : Longint;
  779. tStart : Reference_Time;
  780. tStop : Reference_Time;
  781. dwStreamId : DWORD;
  782. pMediaType : PAMMediaType;
  783. pbBuffer : Pointer;
  784. cbBuffer : Longint;
  785. end;
  786. {$EXTERNALSYM tagAM_SAMPLE2_PROPERTIES}
  787. AM_SAMPLE2_PROPERTIES = tagAM_SAMPLE2_PROPERTIES;
  788. {$EXTERNALSYM AM_SAMPLE2_PROPERTIES}
  789. TAMSample2Properties = tagAM_SAMPLE2_PROPERTIES;
  790. type
  791. {$HPPEMIT 'typedef System::DelphiInterface<IMediaSample2> _di_IMediaSample2;'}
  792. {$EXTERNALSYM IMediaSample2}
  793. IMediaSample2 = interface(IMediaSample)
  794. ['{36B73884-C2C8-11CF-8B46-00805F6CEF60}']
  795. (*** IMediaSample2 methods ***)
  796. function GetProperties(cbProperties: DWORD; out pbProperties): HResult; stdcall;
  797. function SetProperties(cbProperties: DWORD; const pbProperties): HResult; stdcall;
  798. end;
  799. const
  800. AM_GBF_PREVFRAMESKIPPED = 1;
  801. {$EXTERNALSYM AM_GBF_PREVFRAMESKIPPED}
  802. AM_GBF_NOTASYNCPOINT = 2;
  803. {$EXTERNALSYM AM_GBF_NOTASYNCPOINT}
  804. AM_GBF_NOWAIT = 4;
  805. {$EXTERNALSYM AM_GBF_NOWAIT}
  806. AM_GBF_NODDSURFACELOCK = 8;
  807. {$EXTERNALSYM AM_GBF_NODDSURFACELOCK}
  808. type
  809. {$HPPEMIT 'typedef System::DelphiInterface<IMemAllocator> _di_IMemAllocator;'}
  810. {$EXTERNALSYM IMemAllocator}
  811. IMemAllocator = interface(IUnknown)
  812. ['{56A8689C-0AD4-11CE-B03A-0020AF0BA770}']
  813. (*** IMemAllocator methods ***)
  814. function SetProperties(var pRequest: TAllocatorProperties;
  815. out pActual: TAllocatorProperties): HResult; stdcall;
  816. function GetProperties(out pProps: TAllocatorProperties): HResult; stdcall;
  817. function Commit: HResult; stdcall;
  818. function Decommit: HResult; stdcall;
  819. function GetBuffer(out ppBuffer: IMediaSample;
  820. pStartTime, pEndTime: PReferenceTime; dwFlags: DWORD): HResult; stdcall;
  821. function ReleaseBuffer(pBuffer: IMediaSample): HResult; stdcall;
  822. end;
  823. {$HPPEMIT 'typedef System::DelphiInterface<IMemAllocatorNotifyCallbackTemp> _di_IMemAllocatorNotifyCallbackTemp;'}
  824. {$EXTERNALSYM IMemAllocatorNotifyCallbackTemp}
  825. IMemAllocatorNotifyCallbackTemp = interface(IUnknown)
  826. ['{92980b30-c1de-11d2-abf5-00a0c905f375}']
  827. (*** IMemAllocatorNotifyCallbackTemp methods ***)
  828. function NotifyRelease: HResult; stdcall;
  829. end;
  830. {$HPPEMIT 'typedef System::DelphiInterface<IMemAllocatorCallbackTemp> _di_IMemAllocatorCallbackTemp;'}
  831. {$EXTERNALSYM IMemAllocatorCallbackTemp}
  832. IMemAllocatorCallbackTemp = interface(IMemAllocator)
  833. ['{379a0cf0-c1de-11d2-abf5-00a0c905f375}']
  834. (*** IMemAllocatorCallbackTemp methods ***)
  835. function SetNotify(pNotify: IMemAllocatorNotifyCallbackTemp): HResult; stdcall;
  836. function GetFreeCount(out plBuffersFree: LongInt): HResult; stdcall;
  837. end;
  838. {$HPPEMIT 'typedef System::DelphiInterface<IMemInputPin> _di_IMemInputPin;'}
  839. {$EXTERNALSYM IMemInputPin}
  840. IMemInputPin = interface(IUnknown)
  841. ['{56A8689D-0AD4-11CE-B03A-0020AF0BA770}']
  842. (*** IMemInputPin methods ***)
  843. function GetAllocator(out ppAllocator: IMemAllocator): HResult; stdcall;
  844. function NotifyAllocator(pAllocator: IMemAllocator; bReadOnly: BOOL): HResult; stdcall;
  845. function GetAllocatorRequirements(out pProps: TAllocatorProperties): HResult; stdcall;
  846. function Receive(pSample: IMediaSample): HResult; stdcall;
  847. function ReceiveMultiple(var pSamples: IMediaSample; nSamples: Longint;
  848. out nSamplesProcessed: Longint): HResult; stdcall;
  849. function ReceiveCanBlock: HResult; stdcall;
  850. end;
  851. //Deprecated Interface
  852. {$HPPEMIT 'typedef System::DelphiInterface<IAMovieSetup> _di_IAMovieSetup;'}
  853. {$EXTERNALSYM IAMovieSetup}
  854. IAMovieSetup = interface(IUnknown)
  855. ['{A3D8CEC0-7E5A-11CF-BBC5-00805F6CEF20}']
  856. (*** IAMovieSetup methods ***)
  857. function Register: HResult; stdcall;
  858. function Unregister: HResult; stdcall;
  859. end;
  860. const
  861. AM_SEEKING_NoPositioning = 0;
  862. {$EXTERNALSYM AM_SEEKING_NoPositioning}
  863. AM_SEEKING_AbsolutePositioning = $1;
  864. {$EXTERNALSYM AM_SEEKING_AbsolutePositioning}
  865. AM_SEEKING_RelativePositioning = $2;
  866. {$EXTERNALSYM AM_SEEKING_RelativePositioning}
  867. AM_SEEKING_IncrementalPositioning = $3;
  868. {$EXTERNALSYM AM_SEEKING_IncrementalPositioning}
  869. AM_SEEKING_PositioningBitsMask = $3;
  870. {$EXTERNALSYM AM_SEEKING_PositioningBitsMask}
  871. AM_SEEKING_SeekToKeyFrame = $4;
  872. {$EXTERNALSYM AM_SEEKING_SeekToKeyFrame}
  873. AM_SEEKING_ReturnTime = $8;
  874. {$EXTERNALSYM AM_SEEKING_ReturnTime}
  875. AM_SEEKING_Segment = $10;
  876. {$EXTERNALSYM AM_SEEKING_Segment}
  877. AM_SEEKING_NoFlush = $20;
  878. {$EXTERNALSYM AM_SEEKING_NoFlush}
  879. AM_SEEKING_CanSeekAbsolute = $1;
  880. {$EXTERNALSYM AM_SEEKING_CanSeekAbsolute}
  881. AM_SEEKING_CanSeekForwards = $2;
  882. {$EXTERNALSYM AM_SEEKING_CanSeekForwards}
  883. AM_SEEKING_CanSeekBackwards = $4;
  884. {$EXTERNALSYM AM_SEEKING_CanSeekBackwards}
  885. AM_SEEKING_CanGetCurrentPos = $8;
  886. {$EXTERNALSYM AM_SEEKING_CanGetCurrentPos}
  887. AM_SEEKING_CanGetStopPos = $10;
  888. {$EXTERNALSYM AM_SEEKING_CanGetStopPos}
  889. AM_SEEKING_CanGetDuration = $20;
  890. {$EXTERNALSYM AM_SEEKING_CanGetDuration}
  891. AM_SEEKING_CanPlayBackwards = $40;
  892. {$EXTERNALSYM AM_SEEKING_CanPlayBackwards}
  893. AM_SEEKING_CanDoSegments = $80;
  894. {$EXTERNALSYM AM_SEEKING_CanDoSegments}
  895. AM_SEEKING_Source = $100;
  896. {$EXTERNALSYM AM_SEEKING_Source}
  897. type
  898. {$HPPEMIT 'typedef System::DelphiInterface<IMediaSeeking> _di_IMediaSeeking;'}
  899. {$EXTERNALSYM IMediaSeeking}
  900. IMediaSeeking = interface(IUnknown)
  901. ['{36B73880-C2C8-11CF-8B46-00805F6CEF60}']
  902. (*** IMediaSeeking methods ***)
  903. function GetCapabilities(out pCapabilities: DWORD): HResult; stdcall;
  904. function CheckCapabilities(var pCapabilities: DWORD): HResult; stdcall;
  905. function IsFormatSupported(const pFormat: TGUID): HResult; stdcall;
  906. function QueryPreferredFormat(out pFormat: TGUID): HResult; stdcall;
  907. function GetTimeFormat(out pFormat: TGUID): HResult; stdcall;
  908. function IsUsingTimeFormat(const pFormat: TGUID): HResult; stdcall;
  909. function SetTimeFormat(const pFormat: TGUID): HResult; stdcall;
  910. function GetDuration(out pDuration: int64): HResult; stdcall;
  911. function GetStopPosition(out pStop: int64): HResult; stdcall;
  912. function GetCurrentPosition(out pCurrent: int64): HResult; stdcall;
  913. function ConvertTimeFormat(out pTarget: int64; pTargetFormat: PGUID;
  914. Source: int64; pSourceFormat: PGUID): HResult; stdcall;
  915. function SetPositions(var pCurrent: int64; dwCurrentFlags: DWORD;
  916. var pStop: int64; dwStopFlags: DWORD): HResult; stdcall;
  917. function GetPositions(out pCurrent, pStop: int64): HResult; stdcall;
  918. function GetAvailable(out pEarliest, pLatest: int64): HResult; stdcall;
  919. function SetRate(dRate: double): HResult; stdcall;
  920. function GetRate(out pdRate: double): HResult; stdcall;
  921. function GetPreroll(out pllPreroll: int64): HResult; stdcall;
  922. end;
  923. const
  924. AM_MEDIAEVENT_NONOTIFY = $01;
  925. {$EXTERNALSYM AM_MEDIAEVENT_NONOTIFY}
  926. type
  927. PRegFilter = ^TRegFilter;
  928. REGFILTER = record
  929. Clsid: TGUID;
  930. Name : LPWSTR;
  931. end;
  932. {$EXTERNALSYM REGFILTER}
  933. TRegFilter = REGFILTER;
  934. //Deprecated Interface
  935. {$HPPEMIT 'typedef System::DelphiInterface<IEnumRegFilters> _di_IEnumRegFilters;'}
  936. {$EXTERNALSYM IEnumRegFilters}
  937. IEnumRegFilters = interface(IUnknown)
  938. ['{56A868A4-0AD4-11CE-B03A-0020AF0BA770}']
  939. (*** IEnumRegFilters methods ***)
  940. function Next(cFilters: ULONG; out apRegFilter: TRegFilter;
  941. out pcFetched: ULONG): HResult; stdcall;
  942. function Skip(cFilters: ULONG): HResult; stdcall;
  943. function Reset: HResult; stdcall;
  944. function Clone(out ppEnum: IEnumRegFilters): HResult; stdcall;
  945. end;
  946. const
  947. MERIT_PREFERRED = $800000;
  948. {$EXTERNALSYM MERIT_PREFERRED}
  949. MERIT_NORMAL = $600000;
  950. {$EXTERNALSYM MERIT_NORMAL}
  951. MERIT_UNLIKELY = $400000;
  952. {$EXTERNALSYM MERIT_UNLIKELY}
  953. MERIT_DO_NOT_USE = $200000;
  954. {$EXTERNALSYM MERIT_DO_NOT_USE}
  955. MERIT_SW_COMPRESSOR = $100000;
  956. {$EXTERNALSYM MERIT_SW_COMPRESSOR}
  957. MERIT_HW_COMPRESSOR = $100050;
  958. {$EXTERNALSYM MERIT_HW_COMPRESSOR}
  959. type
  960. //Deprecated Interface
  961. {$HPPEMIT 'typedef System::DelphiInterface<IFilterMapper> _di_IFilterMapper;'}
  962. {$EXTERNALSYM IFilterMapper}
  963. IFilterMapper = interface(IUnknown)
  964. ['{56A868A3-0AD4-11CE-B03A-0020AF0BA770}']
  965. (*** IFilterMapper methods ***)
  966. function RegisterFilter(clsid: TGUID; Name: LPCWSTR; dwMerit: DWORD):HResult; stdcall;
  967. function RegisterFilterInstance(clsid: TGUID; Name: LPCWSTR; out MRId: TGUID): HResult; stdcall;
  968. function RegisterPin(Filter: TGUID; Name: LPCWSTR;
  969. bRendered, bOutput, bZero, bMany: BOOL; ConnectsToFilter: TGUID;
  970. ConnectsToPin: PWideChar): HResult; stdcall;
  971. function RegisterPinType(clsFilter: TGUID; strName: LPCWSTR;
  972. clsMajorType, clsSubType: TGUID): HResult; stdcall;
  973. function UnregisterFilter(Filter: TGUID): HResult; stdcall;
  974. function UnregisterFilterInstance(MRId: TGUID): HResult; stdcall;
  975. function UnregisterPin(Filter: TGUID; Name: LPCWSTR): HResult; stdcall;
  976. function EnumMatchingFilters(out ppEnum: IEnumRegFilters; dwMerit: DWORD;
  977. bInputNeeded: BOOL; const clsInMaj, clsInSub: TGUID;
  978. bRender, bOututNeeded: BOOL; const clsOutMaj, clsOutSub: TGUID): HResult; stdcall;
  979. end;
  980. PRegPinTypes = ^TRegPinTypes;
  981. REGPINTYPES = record
  982. clsMajorType: PGUID;
  983. clsMinorType: PGUID;
  984. end;
  985. {$EXTERNALSYM REGPINTYPES}
  986. TRegPinTypes = REGPINTYPES;
  987. PRegFilterPins = ^TRegFilterPins;
  988. REGFILTERPINS = record
  989. strName : PWideChar;
  990. bRendered : BOOL;
  991. bOutput : BOOL;
  992. bZero : BOOL;
  993. bMany : BOOL;
  994. oFilter : PGUID;
  995. strConnectsToPin : PWideChar;
  996. nMediaTypes : LongWord;
  997. lpMediaType : PRegPinTypes;
  998. end;
  999. {$EXTERNALSYM REGFILTERPINS}
  1000. TRegFilterPins = REGFILTERPINS;
  1001. PRegPinMedium = ^TRegPinMedium;
  1002. REGPINMEDIUM = record
  1003. clsMedium: TGUID;
  1004. dw1: DWORD;
  1005. dw2: DWORD;
  1006. end;
  1007. {$EXTERNALSYM REGPINMEDIUM}
  1008. TRegPinMedium = REGPINMEDIUM;
  1009. const
  1010. REG_PINFLAG_B_ZERO = $1;
  1011. {$EXTERNALSYM REG_PINFLAG_B_ZERO}
  1012. REG_PINFLAG_B_RENDERER = $2;
  1013. {$EXTERNALSYM REG_PINFLAG_B_RENDERER}
  1014. REG_PINFLAG_B_MANY = $4;
  1015. {$EXTERNALSYM REG_PINFLAG_B_MANY}
  1016. REG_PINFLAG_B_OUTPUT = $8;
  1017. {$EXTERNALSYM REG_PINFLAG_B_OUTPUT}
  1018. type
  1019. PRegFilterPins2 = ^TRegFilterPins2;
  1020. REGFILTERPINS2 = record
  1021. dwFlags : DWORD;
  1022. cInstances : UINT;
  1023. nMediaTypes : UINT;
  1024. lpMediaType : PRegPinTypes;
  1025. nMediums : UINT;
  1026. lpMedium : PRegPinMedium;
  1027. clsPinCategory : PGUID;
  1028. end;
  1029. {$EXTERNALSYM REGFILTERPINS2}
  1030. TRegFilterPins2 = REGFILTERPINS2;
  1031. PRegFilter2 = ^TRegFilter2;
  1032. REGFILTER2 = record
  1033. dwVersion: DWORD;
  1034. dwMerit: DWORD;
  1035. case Integer of
  1036. 0: (
  1037. cPins: ULONG;
  1038. rgPins: PRegFilterPins;
  1039. );
  1040. 1: (
  1041. cPins2: ULONG;
  1042. rgPins2: PRegFilterPins2;
  1043. );
  1044. end;
  1045. {$EXTERNALSYM REGFILTER2}
  1046. TRegFilter2 = REGFILTER2;
  1047. {$HPPEMIT 'typedef System::DelphiInterface<IFilterMapper2> _di_IFilterMapper2;'}
  1048. {$EXTERNALSYM IFilterMapper2}
  1049. IFilterMapper2 = interface(IUnknown)
  1050. ['{B79BB0B0-33C1-11D1-ABE1-00A0C905F375}']
  1051. (*** IFilterMapper2 methods ***)
  1052. function CreateCategory(const clsidCategory: TGUID; dwCategoryMerit: DWORD;
  1053. Description: PWideChar): HResult; stdcall;
  1054. function UnregisterFilter(const pclsidCategory: TGUID;
  1055. szInstance: PWideChar; const Filter: TGUID): HResult; stdcall;
  1056. function RegisterFilter(const clsidFilter: TGUID; Name: PWideChar;
  1057. ppMoniker: IMoniker; pclsidCategory: PGUID;
  1058. szInstance: PWideChar; const prf2: TRegFilter2): HResult; stdcall;
  1059. function EnumMatchingFilters(out ppEnum: IEnumMoniker; dwFlags: DWORD; bExactMatch: BOOL;
  1060. dwMerit: DWORD; bInputNeeded: BOOL; cInputTypes: DWORD; pInputTypes: PGUID;
  1061. pMedIn: PREGPINMEDIUM; pPinCategoryIn: PGUID; bRender, bOutputNeeded: BOOL;
  1062. cOutputTypes: DWORD; pOutputTypes: PGUID; pMedOut: PRegPinMedium;
  1063. pPinCategoryOut: PGUID): HResult; stdcall;
  1064. end;
  1065. tagQualityMessageType = (
  1066. Famine,
  1067. Flood
  1068. );
  1069. {$EXTERNALSYM tagQualityMessageType}
  1070. QualityMessageType = tagQualityMessageType;
  1071. {$EXTERNALSYM QualityMessageType}
  1072. TQualityMessageType = QualityMessageType;
  1073. PQuality = ^TQuality;
  1074. tagQuality = record
  1075. Typ : QualityMessageType;
  1076. Proportion : Longint;
  1077. Late : Reference_Time;
  1078. TimeStamp : Reference_Time;
  1079. end;
  1080. {$EXTERNALSYM tagQuality}
  1081. Quality = tagQuality;
  1082. {$EXTERNALSYM Quality}
  1083. TQuality = tagQuality;
  1084. {$HPPEMIT 'typedef System::DelphiInterface<IQualityControl> _di_IQualityControl;'}
  1085. {$EXTERNALSYM IQualityControl}
  1086. IQualityControl = interface(IUnknown)
  1087. ['{56A868A5-0AD4-11CE-B03A-0020AF0BA770}']
  1088. (*** IQualityControl methods ***)
  1089. function Notify(pSelf: IBaseFilter; q: TQuality): HResult; stdcall;
  1090. function SetSink(piqc: IQualityControl): HResult; stdcall;
  1091. end;
  1092. const
  1093. CK_NOCOLORKEY = $0;
  1094. {$EXTERNALSYM CK_NOCOLORKEY}
  1095. CK_INDEX = $1;
  1096. {$EXTERNALSYM CK_INDEX}
  1097. CK_RGB = $2;
  1098. {$EXTERNALSYM CK_RGB}
  1099. type
  1100. PColorKey = ^TColorKey;
  1101. tagCOLORKEY = record
  1102. KeyType : DWORD;
  1103. PaletteIndex : DWORD;
  1104. LowColorValue : COLORREF;
  1105. HighColorValue : COLORREF;
  1106. end;
  1107. {$EXTERNALSYM tagCOLORKEY}
  1108. COLORKEY = tagCOLORKEY;
  1109. {$EXTERNALSYM COLORKEY}
  1110. TColorKey = tagCOLORKEY;
  1111. const
  1112. ADVISE_NONE = 0;
  1113. {$EXTERNALSYM ADVISE_NONE}
  1114. ADVISE_CLIPPING = $1;
  1115. {$EXTERNALSYM ADVISE_CLIPPING}
  1116. ADVISE_PALETTE = $2;
  1117. {$EXTERNALSYM ADVISE_PALETTE}
  1118. ADVISE_COLORKEY = $4;
  1119. {$EXTERNALSYM ADVISE_COLORKEY}
  1120. ADVISE_POSITION = $8;
  1121. {$EXTERNALSYM ADVISE_POSITION}
  1122. ADVISE_ALL = ADVISE_CLIPPING or ADVISE_PALETTE or ADVISE_COLORKEY or ADVISE_POSITION;
  1123. {$EXTERNALSYM ADVISE_ALL}
  1124. type
  1125. {$HPPEMIT 'typedef System::DelphiInterface<IOverlayNotify> _di_IOverlayNotify;'}
  1126. {$EXTERNALSYM IOverlayNotify}
  1127. IOverlayNotify = interface(IUnknown)
  1128. ['{56A868A0-0AD4-11CE-B03A-0020AF0BA770}']
  1129. (*** IOverlayNotify methods ***)
  1130. function OnPaletteChange(dwColors: DWORD; const pPalette: PPALETTEENTRY): HResult; stdcall;
  1131. function OnClipChange(const pSourceRect, pDestinationRect: TRect;
  1132. const pRgnData: TRgnData): HResult; stdcall;
  1133. function OnColorKeyChange(const pColorKey: TColorKey): HResult; stdcall;
  1134. function OnPositionChange(const pSourceRect, pDestinationRect: TRect): HResult; stdcall;
  1135. end;
  1136. {$HPPEMIT 'typedef System::DelphiInterface<IOverlayNotify2> _di_IOverlayNotify2;'}
  1137. {$EXTERNALSYM IOverlayNotify2}
  1138. IOverlayNotify2 = interface(IOverlayNotify)
  1139. ['{680EFA10-D535-11D1-87C8-00A0C9223196}']
  1140. (*** IOverlayNotify2 methods ***)
  1141. function OnDisplayChange(var hMonitor: HMONITOR ): HResult; stdcall;
  1142. end;
  1143. {$HPPEMIT 'typedef System::DelphiInterface<IOverlay> _di_IOverlay;'}
  1144. {$EXTERNALSYM IOverlay}
  1145. IOverlay = interface(IUnknown)
  1146. ['{56A868A1-0AD4-11CE-B03A-0020AF0BA770}']
  1147. (*** IOverlay methods ***)
  1148. function GetPalette(out pdwColors: DWORD; out ppPalette: PPALETTEENTRY): HResult; stdcall;
  1149. function SetPalette(dwColors: DWORD; var pPalette: PaletteEntry): HResult; stdcall;
  1150. function GetDefaultColorKey(out pColorKey: TColorKey): HResult; stdcall;
  1151. function GetColorKey(out pColorKey: TColorKey): HResult; stdcall;
  1152. function SetColorKey(var pColorKey: TColorKey): HResult; stdcall;
  1153. function GetWindowHandle(out pHwnd: HWND): HResult; stdcall;
  1154. function GetClipList(out pSourceRect, pDestinationRect: TRect;
  1155. out ppRgnData: PRgnData): HResult; stdcall;
  1156. function GetVideoPosition(out pSourceRect, pDestinationRect: TRect): HResult; stdcall;
  1157. function Advise(pOverlayNotify: IOverlayNotify; dwInterests: DWORD): HResult; stdcall;
  1158. function Unadvise: HResult; stdcall;
  1159. end;
  1160. {$HPPEMIT 'typedef System::DelphiInterface<IMediaEventSink> _di_IMediaEventSink;'}
  1161. {$EXTERNALSYM IMediaEventSink}
  1162. IMediaEventSink = interface(IUnknown)
  1163. ['{56A868A2-0AD4-11CE-B03A-0020AF0BA770}']
  1164. (*** IMediaEventSink methods ***)
  1165. function Notify(EventCode, EventParam1, EventParam2: Longint): HResult; stdcall;
  1166. end;
  1167. {$HPPEMIT 'typedef System::DelphiInterface<IFileSourceFilter> _di_IFileSourceFilter;'}
  1168. {$EXTERNALSYM IFileSourceFilter}
  1169. IFileSourceFilter = interface(IUnknown)
  1170. ['{56A868A6-0AD4-11CE-B03A-0020AF0BA770}']
  1171. (*** IFileSourceFilter methods ***)
  1172. function Load(pszFileName: PWCHAR; const pmt: PAMMediaType): HResult; stdcall;
  1173. function GetCurFile(out ppszFileName: PWideChar; pmt: PAMMediaType): HResult; stdcall;
  1174. end;
  1175. {$HPPEMIT 'typedef System::DelphiInterface<IFileSinkFilter> _di_IFileSinkFilter;'}
  1176. {$EXTERNALSYM IFileSinkFilter}
  1177. IFileSinkFilter = interface(IUnknown)
  1178. ['{A2104830-7C70-11CF-8BCE-00AA00A3F1A6}']
  1179. (*** IFileSinkFilter methods ***)
  1180. function SetFileName(pszFileName: PWideChar; pmt: PAMMediaType): HResult; stdcall;
  1181. function GetCurFile(out ppszFileName: PWideChar; pmt: PAMMediaType): HResult; stdcall;
  1182. end;
  1183. {$HPPEMIT 'typedef System::DelphiInterface<IFileSinkFilter2> _di_IFileSinkFilter2;'}
  1184. {$EXTERNALSYM IFileSinkFilter2}
  1185. IFileSinkFilter2 = interface(IFileSinkFilter)
  1186. ['{00855B90-CE1B-11D0-BD4F-00A0C911CE86}']
  1187. (*** IFileSinkFilter2 methods ***)
  1188. function SetMode(dwFlags: DWORD): HResult; stdcall;
  1189. function GetMode(out pdwFlags: DWORD): HResult; stdcall;
  1190. end;
  1191. AM_FILESINK_FLAGS = (
  1192. {$IFNDEF COMPILER6_UP}
  1193. AM_FILE_INVALID_0 {= 0},
  1194. AM_FILE_OVERWRITE {= 1}
  1195. {$ELSE}
  1196. AM_FILE_OVERWRITE = 1
  1197. {$ENDIF}
  1198. );
  1199. {$EXTERNALSYM AM_FILESINK_FLAGS}
  1200. TAMFileSinkFlags = AM_FILESINK_FLAGS;
  1201. // Very old !!!!!
  1202. // PAsyncIOReq = ^TAsyncIOReq;
  1203. // TAsyncIOReq = record
  1204. // engine: array[0..3] of DWORD;
  1205. // lpv: Pointer;
  1206. // cb: DWORD;
  1207. // dwError: DWORD;
  1208. // cbDone: DWORD;
  1209. // liPos: TLargeInteger;
  1210. // hEvent: DWORD;
  1211. // dwUser: DWORD;
  1212. // end;
  1213. // IFileAsyncIO = interface(IUnknown)
  1214. // ['{56A868A7-0AD4-11CE-B03A-0020AF0BA770}']
  1215. // function QueryAlignment(out pdwAlign: DWORD): HResult; stdcall;
  1216. // function Read(const pReq: TAsyncIOReq): HResult; stdcall;
  1217. // function Write(const pReq: TAsyncIOReq): HResult; stdcall;
  1218. // function WaitForNext(out ppReq: PAsyncIOReq;
  1219. // dwTimeout: DWORD): HResult; stdcall;
  1220. // function WaitForSpecific(out pReq: TAsyncIOReq;
  1221. // dwTimeout: DWORD): HResult; stdcall;
  1222. // function DiscardPending: HResult; stdcall;
  1223. // function Flush: HResult; stdcall;
  1224. // end;
  1225. {$HPPEMIT 'typedef System::DelphiInterface<IGraphBuilder> _di_IGraphBuilder;'}
  1226. {$EXTERNALSYM IGraphBuilder}
  1227. IGraphBuilder = interface(IFilterGraph)
  1228. ['{56A868A9-0AD4-11CE-B03A-0020AF0BA770}']
  1229. (*** IGraphBuilder methods ***)
  1230. function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
  1231. function Render(ppinOut: IPin): HResult; stdcall;
  1232. function RenderFile(lpcwstrFile, lpcwstrPlayList: PWideChar): HResult; stdcall;
  1233. function AddSourceFilter(lpcwstrFileName, lpcwstrFilterName: LPCWSTR;
  1234. out ppFilter: IBaseFilter): HResult; stdcall;
  1235. function SetLogFile(hFile: THandle): HResult; stdcall;
  1236. function Abort: HResult; stdcall;
  1237. function ShouldOperationContinue: HResult; stdcall;
  1238. end;
  1239. IAMCopyCaptureFileProgress = interface;
  1240. //Deprecated Interface
  1241. {$HPPEMIT 'typedef System::DelphiInterface<ICaptureGraphBuilder> _di_ICaptureGraphBuilder;'}
  1242. {$EXTERNALSYM ICaptureGraphBuilder}
  1243. ICaptureGraphBuilder = interface(IUnknown)
  1244. ['{BF87B6E0-8C27-11D0-B3F0-00AA003761C5}']
  1245. (*** ICaptureGraphBuilder methods ***)
  1246. function SetFiltergraph(pfg: IGraphBuilder): HResult; stdcall;
  1247. function GetFiltergraph(out ppfg: IGraphBuilder): HResult; stdcall;
  1248. function SetOutputFileName(const pType: TGUID; lpstrFile: PWCHAR;
  1249. out ppf: IBaseFilter; out ppSink: IFileSinkFilter): HResult; stdcall;
  1250. function FindInterface(pCategory: PGUID; pf: IBaseFilter;
  1251. const riid: TGUID; out ppint): HResult; stdcall;
  1252. function RenderStream(pCategory: PGUID; pSource: IUnknown;
  1253. pfCompressor, pfRenderer: IBaseFilter): HResult; stdcall;
  1254. function ControlStream(pCategory: PGUID; pFilter: IBaseFilter;
  1255. pstart, pstop: PReferenceTime; wStartCookie, wStopCookie: WORD): HResult; stdcall;
  1256. function AllocCapFile(lpstr: PWCHAR; dwlSize: int64): HResult; stdcall;
  1257. function CopyCaptureFile(lpwstrOld, lpwstrNew: PWCHAR; fAllowEscAbort: Integer;
  1258. pCallback: IAMCopyCaptureFileProgress): HResult; stdcall;
  1259. end;
  1260. {$HPPEMIT 'typedef System::DelphiInterface<ICaptureGraphBuilder2> _di_ICaptureGraphBuilder2;'}
  1261. {$EXTERNALSYM ICaptureGraphBuilder2}
  1262. ICaptureGraphBuilder2 = interface(IUnknown)
  1263. ['{93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D}']
  1264. (*** ICaptureGraphBuilder2 methods ***)
  1265. function SetFiltergraph(pfg: IGraphBuilder): HResult; stdcall;
  1266. function GetFiltergraph(out ppfg: IGraphBuilder): HResult; stdcall;
  1267. function SetOutputFileName(const pType: TGUID; lpstrFile: PWCHAR; out ppf: IBaseFilter; out ppSink: IFileSinkFilter): HResult; stdcall;
  1268. function FindInterface(pCategory, pType: PGUID; pf: IBaseFilter; const riid: TGUID; out ppint): HResult; stdcall;
  1269. function RenderStream(pCategory, pType: PGUID; pSource: IUnknown; pfCompressor, pfRenderer: IBaseFilter): HResult; stdcall;
  1270. function ControlStream(pCategory, pType: PGUID; pFilter: IBaseFilter; pstart, pstop: PReferenceTime; wStartCookie, wStopCookie: WORD ): HResult; stdcall;
  1271. function AllocCapFile(lpstr: PWCHAR; dwlSize: int64): HResult; stdcall;
  1272. function CopyCaptureFile(lpwstrOld, lpwstrNew: PWCHAR; fAllowEscAbort: Integer; pCallback: IAMCopyCaptureFileProgress): HResult; stdcall;
  1273. function FindPin(pSource: IUnknown; pindir: TPINDIRECTION; const pCategory, pType: PGUID; fUnconnected: BOOL; num: integer; out ppPin: IPin): HResult; stdcall;
  1274. end;
  1275. {$HPPEMIT 'typedef System::DelphiInterface<IAMCopyCaptureFileProgress> _di_IAMCopyCaptureFileProgress;'}
  1276. {$EXTERNALSYM IAMCopyCaptureFileProgress}
  1277. IAMCopyCaptureFileProgress = interface(IUnknown)
  1278. ['{670D1D20-A068-11D0-B3F0-00AA003761C5}']
  1279. (*** IAMCopyCaptureFileProgress methods ***)
  1280. function Progress(iProgress: Integer): HResult; stdcall;
  1281. end;
  1282. const
  1283. AM_RENDEREX_RENDERTOEXISTINGRENDERERS = $01;
  1284. {$EXTERNALSYM AM_RENDEREX_RENDERTOEXISTINGRENDERERS}
  1285. type
  1286. {$HPPEMIT 'typedef System::DelphiInterface<IFilterGraph2> _di_IFilterGraph2;'}
  1287. {$EXTERNALSYM IFilterGraph2}
  1288. IFilterGraph2 = interface(IGraphBuilder)
  1289. ['{36B73882-C2C8-11CF-8B46-00805F6CEF60}']
  1290. (*** IFilterGraph2 methods ***)
  1291. function AddSourceFilterForMoniker(pMoniker: IMoniker; pCtx: IBindCtx;
  1292. lpcwstrFilterName: LPCWSTR; out ppFilter: IBaseFilter): HResult; stdcall;
  1293. function ReconnectEx(ppin: IPin; pmt: PAMMediaType): HResult; stdcall;
  1294. // Render a pin without adding any new renderers (pvContext = nil)
  1295. // not in the documentation ??
  1296. function RenderEx(pPinOut: IPin; dwFlags: DWORD; pvContext: PDWORD): HResult; stdcall;
  1297. end;
  1298. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBuilder> _di_IStreamBuilder;'}
  1299. {$EXTERNALSYM IStreamBuilder}
  1300. IStreamBuilder = interface(IUnknown)
  1301. ['{56A868BF-0AD4-11CE-B03A-0020AF0BA770}']
  1302. (*** IStreamBuilder methods ***)
  1303. function Render(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
  1304. function Backout(ppinOut: IPin; pGraph: IGraphBuilder): HResult; stdcall;
  1305. end;
  1306. {$HPPEMIT 'typedef System::DelphiInterface<IAsyncReader> _di_IAsyncReader;'}
  1307. {$EXTERNALSYM IAsyncReader}
  1308. IAsyncReader = interface(IUnknown)
  1309. ['{56A868AA-0AD4-11CE-B03A-0020AF0BA770}']
  1310. (*** IAsyncReader methods ***)
  1311. {nev: start}
  1312. function RequestAllocator(pPreferred: IMemAllocator;
  1313. pProps: PAllocatorProperties; out ppActual: IMemAllocator): HResult; stdcall;
  1314. {nev: end}
  1315. function Request(pSample: IMediaSample; dwUser: DWORD): HResult; stdcall;
  1316. function WaitForNext(dwTimeout: DWORD; out ppSample: IMediaSample;
  1317. out pdwUser: DWORD): HResult; stdcall;
  1318. function SyncReadAligned(pSample: IMediaSample): HResult; stdcall;
  1319. function SyncRead(llPosition: int64; lLength: Longint; pBuffer: Pbyte): HResult; stdcall;
  1320. function Length(out pTotal, pAvailable: int64): HResult; stdcall;
  1321. function BeginFlush: HResult; stdcall;
  1322. function EndFlush: HResult; stdcall;
  1323. end;
  1324. {$HPPEMIT 'typedef System::DelphiInterface<IGraphVersion> _di_IGraphVersion;'}
  1325. {$EXTERNALSYM IGraphVersion}
  1326. IGraphVersion = interface(IUnknown)
  1327. ['{56A868AB-0AD4-11CE-B03A-0020AF0BA770}']
  1328. (*** IGraphVersion methods ***)
  1329. function QueryVersion(var pVersion: Longint): HResult; stdcall;
  1330. end;
  1331. {$HPPEMIT 'typedef System::DelphiInterface<IResourceConsumer> _di_IResourceConsumer;'}
  1332. {$EXTERNALSYM IResourceConsumer}
  1333. IResourceConsumer = interface(IUnknown)
  1334. ['{56A868AD-0AD4-11CE-B03A-0020AF0BA770}']
  1335. (*** IResourceConsumer methods ***)
  1336. function AcquireResource(idResource: Longint): HResult; stdcall;
  1337. function ReleaseResource(idResource: Longint): HResult; stdcall;
  1338. end;
  1339. {$HPPEMIT 'typedef System::DelphiInterface<IResourceManager> _di_IResourceManager;'}
  1340. {$EXTERNALSYM IResourceManager}
  1341. IResourceManager = interface(IUnknown)
  1342. ['{56A868AC-0AD4-11CE-B03A-0020AF0BA770}']
  1343. (*** IResourceManager methods ***)
  1344. function Register(pName: LPCWSTR; cResource: Longint;
  1345. out plToken: Longint): HResult; stdcall;
  1346. function RegisterGroup(pName: LPCWSTR; cResource: Longint;
  1347. palTokens: PLongint; out plToken: Longint): HResult; stdcall;
  1348. function RequestResource(idResource: Longint; pFocusObject: IUnknown;
  1349. pConsumer: IResourceConsumer): HResult; stdcall;
  1350. function NotifyAcquire(idResource: Longint; pConsumer: IResourceConsumer;
  1351. hr: HResult): HResult; stdcall;
  1352. function NotifyRelease(idResource: Longint; pConsumer: IResourceConsumer;
  1353. bStillWant: BOOL): HResult; stdcall;
  1354. function CancelRequest(idResource: Longint; pConsumer: IResourceConsumer): HResult; stdcall;
  1355. function SetFocus(pFocusObject: IUnknown): HResult; stdcall;
  1356. function ReleaseFocus(pFocusObject: IUnknown): HResult; stdcall;
  1357. end;
  1358. {$HPPEMIT 'typedef System::DelphiInterface<IDistributorNotify> _di_IDistributorNotify;'}
  1359. {$EXTERNALSYM IDistributorNotify}
  1360. IDistributorNotify = interface(IUnknown)
  1361. ['{56A868AF-0AD4-11CE-B03A-0020AF0BA770}']
  1362. (*** IDistributorNotify methods ***)
  1363. function Stop: HResult; stdcall;
  1364. function Pause: HResult; stdcall;
  1365. function Run(tStart: TReferenceTime): HResult; stdcall;
  1366. function SetSyncSource(pClock: IReferenceClock): HResult; stdcall;
  1367. function NotifyGraphChange: HResult; stdcall;
  1368. end;
  1369. AM_STREAM_INFO_FLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF}DWord;
  1370. {$EXTERNALSYM AM_STREAM_INFO_FLAGS}
  1371. const
  1372. AM_STREAM_INFO_START_DEFINED = $1;
  1373. {$EXTERNALSYM AM_STREAM_INFO_START_DEFINED}
  1374. AM_STREAM_INFO_STOP_DEFINED = $2;
  1375. {$EXTERNALSYM AM_STREAM_INFO_STOP_DEFINED}
  1376. AM_STREAM_INFO_DISCARDING = $4;
  1377. {$EXTERNALSYM AM_STREAM_INFO_DISCARDING}
  1378. AM_STREAM_INFO_STOP_SEND_EXTRA = $10;
  1379. {$EXTERNALSYM AM_STREAM_INFO_STOP_SEND_EXTRA}
  1380. type
  1381. PAMStreamInfo = ^TAMStreamInfo;
  1382. AM_STREAM_INFO = record
  1383. tStart : Reference_Time;
  1384. tStop : Reference_Time;
  1385. dwStartCookie : DWORD;
  1386. dwStopCookie : DWORD;
  1387. dwFlags : DWORD;
  1388. end;
  1389. {$EXTERNALSYM AM_STREAM_INFO}
  1390. TAMStreamInfo = AM_STREAM_INFO;
  1391. {$HPPEMIT 'typedef System::DelphiInterface<IAMStreamControl> _di_IAMStreamControl;'}
  1392. {$EXTERNALSYM IAMStreamControl}
  1393. IAMStreamControl = interface(IUnknown)
  1394. ['{36b73881-c2c8-11cf-8b46-00805f6cef60}']
  1395. (*** IAMStreamControl methods ***)
  1396. function StartAt(ptStart: PReferenceTime; dwCookie: DWORD): HResult; stdcall;
  1397. function StopAt(ptStop: PReferenceTime; bSendExtra: BOOL;
  1398. dwCookie: DWORD): HResult; stdcall;
  1399. function GetInfo(out pInfo: TAMStreamInfo): HResult; stdcall;
  1400. end;
  1401. {$HPPEMIT 'typedef System::DelphiInterface<ISeekingPassThru> _di_ISeekingPassThru;'}
  1402. {$EXTERNALSYM ISeekingPassThru}
  1403. ISeekingPassThru = interface(IUnknown)
  1404. ['{36B73883-C2C8-11CF-8B46-00805F6CEF60}']
  1405. (*** ISeekingPassThru methods ***)
  1406. function Init(bSupportRendering: BOOL; pPin: IPin): HResult; stdcall;
  1407. end;
  1408. PVideoStreamConfigCaps = ^TVideoStreamConfigCaps;
  1409. _VIDEO_STREAM_CONFIG_CAPS = record
  1410. guid: TGUID;
  1411. VideoStandard : ULONG;
  1412. InputSize : TSize;
  1413. MinCroppingSize : TSize;
  1414. MaxCroppingSize : TSize;
  1415. CropGranularityX : Integer;
  1416. CropGranularityY : Integer;
  1417. CropAlignX : Integer;
  1418. CropAlignY : Integer;
  1419. MinOutputSize : TSize;
  1420. MaxOutputSize : TSize;
  1421. OutputGranularityX : Integer;
  1422. OutputGranularityY : Integer;
  1423. StretchTapsX : Integer;
  1424. StretchTapsY : Integer;
  1425. ShrinkTapsX : Integer;
  1426. ShrinkTapsY : Integer;
  1427. MinFrameInterval : Int64;
  1428. MaxFrameInterval : Int64;
  1429. MinBitsPerSecond : Longint;
  1430. MaxBitsPerSecond : Longint;
  1431. end;
  1432. {$EXTERNALSYM _VIDEO_STREAM_CONFIG_CAPS}
  1433. VIDEO_STREAM_CONFIG_CAPS = _VIDEO_STREAM_CONFIG_CAPS;
  1434. {$EXTERNALSYM VIDEO_STREAM_CONFIG_CAPS}
  1435. TVideoStreamConfigCaps = _VIDEO_STREAM_CONFIG_CAPS;
  1436. PAudioStreamConfigCaps = ^TAudioStreamConfigCaps;
  1437. _AUDIO_STREAM_CONFIG_CAPS = record
  1438. guid: TGUID;
  1439. MinimumChannels : ULONG;
  1440. MaximumChannels : ULONG;
  1441. ChannelsGranularity : ULONG;
  1442. MinimumBitsPerSample : ULONG;
  1443. MaximumBitsPerSample : ULONG;
  1444. BitsPerSampleGranularity : ULONG;
  1445. MinimumSampleFrequency : ULONG;
  1446. MaximumSampleFrequency : ULONG;
  1447. SampleFrequencyGranularity : ULONG;
  1448. end;
  1449. {$EXTERNALSYM _AUDIO_STREAM_CONFIG_CAPS}
  1450. AUDIO_STREAM_CONFIG_CAPS = _AUDIO_STREAM_CONFIG_CAPS;
  1451. {$EXTERNALSYM AUDIO_STREAM_CONFIG_CAPS}
  1452. TAudioStreamConfigCaps = _AUDIO_STREAM_CONFIG_CAPS;
  1453. {$HPPEMIT 'typedef System::DelphiInterface<IAMStreamConfig> _di_IAMStreamConfig;'}
  1454. {$EXTERNALSYM IAMStreamConfig}
  1455. IAMStreamConfig = interface(IUnknown)
  1456. ['{C6E13340-30AC-11d0-A18C-00A0C9118956}']
  1457. (*** IAMStreamConfig methods ***)
  1458. function SetFormat(const pmt: TAMMediaType): HResult; stdcall;
  1459. function GetFormat(out ppmt: PAMMediaType): HResult; stdcall;
  1460. function GetNumberOfCapabilities(out piCount, piSize: Integer): HResult; stdcall;
  1461. function GetStreamCaps(iIndex: Integer; out ppmt: PAMMediaType;
  1462. out pSCC): HResult; stdcall;
  1463. end;
  1464. InterleavingMode = (
  1465. INTERLEAVE_NONE,
  1466. INTERLEAVE_CAPTURE,
  1467. INTERLEAVE_FULL,
  1468. INTERLEAVE_NONE_BUFFERED
  1469. );
  1470. {$EXTERNALSYM InterleavingMode}
  1471. TInterleavingMode = InterleavingMode;
  1472. {$HPPEMIT 'typedef System::DelphiInterface<IConfigInterleaving> _di_IConfigInterleaving;'}
  1473. {$EXTERNALSYM IConfigInterleaving}
  1474. IConfigInterleaving = interface(IUnknown)
  1475. ['{BEE3D220-157B-11d0-BD23-00A0C911CE86}']
  1476. (*** IConfigInterleaving methods ***)
  1477. function put_Mode(mode: TInterleavingMode): HResult; stdcall;
  1478. function get_Mode(out pMode: TInterleavingMode): HResult; stdcall;
  1479. function put_Interleaving(prtInterleave, prtPreroll: PReferenceTime): HResult; stdcall;
  1480. function get_Interleaving(out prtInterleave, prtPreroll: TReferenceTime): HResult; stdcall;
  1481. end;
  1482. {$HPPEMIT 'typedef System::DelphiInterface<IConfigAviMux> _di_IConfigAviMux;'}
  1483. {$EXTERNALSYM IConfigAviMux}
  1484. IConfigAviMux = interface(IUnknown)
  1485. ['{5ACD6AA0-F482-11ce-8B67-00AA00A3F1A6}']
  1486. (*** IConfigAviMux methods ***)
  1487. function SetMasterStream(iStream: Longint): HResult; stdcall;
  1488. function GetMasterStream(out pStream: Longint): HResult; stdcall;
  1489. function SetOutputCompatibilityIndex(fOldIndex: BOOL): HResult; stdcall;
  1490. function GetOutputCompatibilityIndex(out pfOldIndex: BOOL): HResult; stdcall;
  1491. end;
  1492. const
  1493. CompressionCaps_CanQuality = $1;
  1494. {$EXTERNALSYM CompressionCaps_CanQuality}
  1495. CompressionCaps_CanCrunch = $2;
  1496. {$EXTERNALSYM CompressionCaps_CanCrunch}
  1497. CompressionCaps_CanKeyFrame = $4;
  1498. {$EXTERNALSYM CompressionCaps_CanKeyFrame}
  1499. CompressionCaps_CanBFrame = $8;
  1500. {$EXTERNALSYM CompressionCaps_CanBFrame}
  1501. CompressionCaps_CanWindow = $10;
  1502. {$EXTERNALSYM CompressionCaps_CanWindow}
  1503. type
  1504. {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoCompression> _di_IAMVideoCompression;'}
  1505. {$EXTERNALSYM IAMVideoCompression}
  1506. IAMVideoCompression = interface(IUnknown)
  1507. ['{C6E13343-30AC-11d0-A18C-00A0C9118956}']
  1508. (*** IAMVideoCompression methods ***)
  1509. function put_KeyFrameRate(KeyFrameRate: Longint): HResult; stdcall;
  1510. function get_KeyFrameRate(out pKeyFrameRate: Longint): HResult; stdcall;
  1511. function put_PFramesPerKeyFrame(PFramesPerKeyFrame: Longint): HResult; stdcall;
  1512. function get_PFramesPerKeyFrame(out pPFramesPerKeyFrame: Longint): HResult; stdcall;
  1513. function put_Quality(Quality: double): HResult; stdcall;
  1514. function get_Quality(out pQuality: double): HResult; stdcall;
  1515. function put_WindowSize(WindowSize: int64): HResult; stdcall;
  1516. function get_WindowSize(out pWindowSize: int64): HResult; stdcall;
  1517. function GetInfo(pszVersion: PWideChar; var pcbVersion: Integer;
  1518. pszDescription: PWideChar; var pcbDescription: Integer;
  1519. out pDefaultKeyFrameRate, pDefaultPFramesPerKey: Longint;
  1520. out pDefaultQuality: double; out pCapabilities: Longint): HResult; stdcall;
  1521. function OverrideKeyFrame(FrameNumber: Longint): HResult; stdcall;
  1522. function OverrideFrameSize(FrameNumber, Size: Longint): HResult; stdcall;
  1523. end;
  1524. const
  1525. VfwCaptureDialog_Source = $1;
  1526. {$EXTERNALSYM VfwCaptureDialog_Source}
  1527. VfwCaptureDialog_Format = $2;
  1528. {$EXTERNALSYM VfwCaptureDialog_Format}
  1529. VfwCaptureDialog_Display = $4;
  1530. {$EXTERNALSYM VfwCaptureDialog_Display}
  1531. VfwCompressDialog_Config = $1;
  1532. {$EXTERNALSYM VfwCompressDialog_Config}
  1533. VfwCompressDialog_About = $2;
  1534. {$EXTERNALSYM VfwCompressDialog_About}
  1535. VfwCompressDialog_QueryConfig = $4;
  1536. {$EXTERNALSYM VfwCompressDialog_QueryConfig}
  1537. VfwCompressDialog_QueryAbout = $8;
  1538. {$EXTERNALSYM VfwCompressDialog_QueryAbout}
  1539. type
  1540. {$HPPEMIT 'typedef System::DelphiInterface<IAMVfwCaptureDialogs> _di_IAMVfwCaptureDialogs;'}
  1541. {$EXTERNALSYM IAMVfwCaptureDialogs}
  1542. IAMVfwCaptureDialogs = interface(IUnknown)
  1543. ['{D8D715A0-6E5E-11D0-B3F0-00AA003761C5}']
  1544. (*** IAMVfwCaptureDialogs methods ***)
  1545. function HasDialog(iDialog: Integer): HResult; stdcall;
  1546. function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
  1547. function SendDriverMessage(iDialog: Integer; uMsg: Integer;
  1548. dw1, dw2: Longint): HResult; stdcall;
  1549. end;
  1550. {$HPPEMIT 'typedef System::DelphiInterface<IAMVfwCompressDialogs> _di_IAMVfwCompressDialogs;'}
  1551. {$EXTERNALSYM IAMVfwCompressDialogs}
  1552. IAMVfwCompressDialogs = interface(IUnknown)
  1553. ['{D8D715A3-6E5E-11D0-B3F0-00AA003761C5}']
  1554. (*** IAMVfwCompressDialogs methods ***)
  1555. function ShowDialog(iDialog: Integer; hwnd: HWND): HResult; stdcall;
  1556. function GetState(out pState; var pcbState: Integer): HResult; stdcall;
  1557. function SetState(var pState; cbState: Integer): HResult; stdcall;
  1558. function SendDriverMessage(uMsg: Integer; dw1, dw2: Longint): HResult; stdcall;
  1559. end;
  1560. {$HPPEMIT 'typedef System::DelphiInterface<IAMDroppedFrames> _di_IAMDroppedFrames;'}
  1561. {$EXTERNALSYM IAMDroppedFrames}
  1562. IAMDroppedFrames = interface(IUnknown)
  1563. ['{C6E13344-30AC-11d0-A18C-00A0C9118956}']
  1564. (*** IAMDroppedFrames methods ***)
  1565. function GetNumDropped(out plDropped: Longint): HResult; stdcall;
  1566. function GetNumNotDropped(out plNotDropped: Longint): HResult; stdcall;
  1567. function GetDroppedInfo(lSize: Longint; out plArray: Longint;
  1568. out plNumCopied: Longint): HResult; stdcall;
  1569. function GetAverageFrameSize(out plAverageSize: Longint): HResult; stdcall;
  1570. end;
  1571. const
  1572. AMF_AUTOMATICGAIN = -1;
  1573. {$EXTERNALSYM AMF_AUTOMATICGAIN}
  1574. type
  1575. {$HPPEMIT 'typedef System::DelphiInterface<IAMAudioInputMixer> _di_IAMAudioInputMixer;'}
  1576. {$EXTERNALSYM IAMAudioInputMixer}
  1577. IAMAudioInputMixer = interface(IUnknown)
  1578. ['{54C39221-8380-11d0-B3F0-00AA003761C5}']
  1579. (*** IAMAudioInputMixer methods ***)
  1580. function put_Enable(fEnable: BOOL): HResult; stdcall;
  1581. function get_Enable(out pfEnable: BOOL): HResult; stdcall;
  1582. function put_Mono(fMono: BOOL): HResult; stdcall;
  1583. function get_Mono(out pfMono: BOOL): HResult; stdcall;
  1584. function put_MixLevel(Level: double): HResult; stdcall;
  1585. function get_MixLevel(out pLevel: double): HResult; stdcall;
  1586. function put_Pan(Pan: double): HResult; stdcall;
  1587. function get_Pan(out pPan: double): HResult; stdcall;
  1588. function put_Loudness(fLoudness: BOOL): HResult; stdcall;
  1589. function get_Loudness(out pfLoudness: BOOL): HResult; stdcall;
  1590. function put_Treble(Treble: double): HResult; stdcall;
  1591. function get_Treble(out pTreble: double): HResult; stdcall;
  1592. function get_TrebleRange(out pRange: double): HResult; stdcall;
  1593. function put_Bass(Bass: double): HResult; stdcall;
  1594. function get_Bass(out pBass: double): HResult; stdcall;
  1595. function get_BassRange(out pRange: double): HResult; stdcall;
  1596. end;
  1597. {$HPPEMIT 'typedef System::DelphiInterface<IAMBufferNegotiation> _di_IAMBufferNegotiation;'}
  1598. {$EXTERNALSYM IAMBufferNegotiation}
  1599. IAMBufferNegotiation = interface(IUnknown)
  1600. ['{56ED71A0-AF5F-11D0-B3F0-00AA003761C5}']
  1601. (*** IAMBufferNegotiation methods ***)
  1602. function SuggestAllocatorProperties(const pprop: TAllocatorProperties): HResult; stdcall;
  1603. function GetAllocatorProperties(var pprop: TAllocatorProperties): HResult; stdcall;
  1604. end;
  1605. const
  1606. AnalogVideo_None = 0;
  1607. {$EXTERNALSYM AnalogVideo_None}
  1608. AnalogVideo_NTSC_M = $1;
  1609. {$EXTERNALSYM AnalogVideo_NTSC_M}
  1610. AnalogVideo_NTSC_M_J = $2;
  1611. {$EXTERNALSYM AnalogVideo_NTSC_M_J}
  1612. AnalogVideo_NTSC_433 = $4;
  1613. {$EXTERNALSYM AnalogVideo_NTSC_433}
  1614. AnalogVideo_PAL_B = $10;
  1615. {$EXTERNALSYM AnalogVideo_PAL_B}
  1616. AnalogVideo_PAL_D = $20;
  1617. {$EXTERNALSYM AnalogVideo_PAL_D}
  1618. AnalogVideo_PAL_G = $40;
  1619. {$EXTERNALSYM AnalogVideo_PAL_G}
  1620. AnalogVideo_PAL_H = $80;
  1621. {$EXTERNALSYM AnalogVideo_PAL_H}
  1622. AnalogVideo_PAL_I = $100;
  1623. {$EXTERNALSYM AnalogVideo_PAL_I}
  1624. AnalogVideo_PAL_M = $200;
  1625. {$EXTERNALSYM AnalogVideo_PAL_M}
  1626. AnalogVideo_PAL_N = $400;
  1627. {$EXTERNALSYM AnalogVideo_PAL_N}
  1628. AnalogVideo_PAL_60 = $800;
  1629. {$EXTERNALSYM AnalogVideo_PAL_60}
  1630. AnalogVideo_SECAM_B = $1000;
  1631. {$EXTERNALSYM AnalogVideo_SECAM_B}
  1632. AnalogVideo_SECAM_D = $2000;
  1633. {$EXTERNALSYM AnalogVideo_SECAM_D}
  1634. AnalogVideo_SECAM_G = $4000;
  1635. {$EXTERNALSYM AnalogVideo_SECAM_G}
  1636. AnalogVideo_SECAM_H = $8000;
  1637. {$EXTERNALSYM AnalogVideo_SECAM_H}
  1638. AnalogVideo_SECAM_K = $10000;
  1639. {$EXTERNALSYM AnalogVideo_SECAM_K}
  1640. AnalogVideo_SECAM_K1 = $20000;
  1641. {$EXTERNALSYM AnalogVideo_SECAM_K1}
  1642. AnalogVideo_SECAM_L = $40000;
  1643. {$EXTERNALSYM AnalogVideo_SECAM_L}
  1644. AnalogVideo_SECAM_L1 = $80000;
  1645. {$EXTERNALSYM AnalogVideo_SECAM_L1}
  1646. AnalogVideo_NTSC_Mask = $00000007;
  1647. {$EXTERNALSYM AnalogVideo_NTSC_Mask}
  1648. AnalogVideo_PAL_Mask = $00000FF0;
  1649. {$EXTERNALSYM AnalogVideo_PAL_Mask}
  1650. AnalogVideo_SECAM_Mask = $000FF000;
  1651. {$EXTERNALSYM AnalogVideo_SECAM_Mask}
  1652. type
  1653. tagTunerInputType =(
  1654. TunerInputCable,
  1655. TunerInputAntenna
  1656. );
  1657. {$EXTERNALSYM tagTunerInputType}
  1658. TunerInputType = tagTunerInputType;
  1659. {$EXTERNALSYM TunerInputType}
  1660. TTunerInputType = TunerInputType;
  1661. VideoCopyProtectionType = (
  1662. VideoCopyProtectionMacrovisionBasic,
  1663. VideoCopyProtectionMacrovisionCBI
  1664. );
  1665. {$EXTERNALSYM VideoCopyProtectionType}
  1666. TVideoCopyProtectionType = VideoCopyProtectionType;
  1667. TPhysicalConnectorType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  1668. const
  1669. PhysConn_Video_Tuner = 1;
  1670. {$EXTERNALSYM PhysConn_Video_Tuner}
  1671. PhysConn_Video_Composite = PhysConn_Video_Tuner + 1;
  1672. {$EXTERNALSYM PhysConn_Video_Composite}
  1673. PhysConn_Video_SVideo = PhysConn_Video_Composite + 1;
  1674. {$EXTERNALSYM PhysConn_Video_SVideo}
  1675. PhysConn_Video_RGB = PhysConn_Video_SVideo + 1;
  1676. {$EXTERNALSYM PhysConn_Video_RGB}
  1677. PhysConn_Video_YRYBY = PhysConn_Video_RGB + 1;
  1678. {$EXTERNALSYM PhysConn_Video_YRYBY}
  1679. PhysConn_Video_SerialDigital = PhysConn_Video_YRYBY + 1;
  1680. {$EXTERNALSYM PhysConn_Video_SerialDigital}
  1681. PhysConn_Video_ParallelDigital = PhysConn_Video_SerialDigital + 1;
  1682. {$EXTERNALSYM PhysConn_Video_ParallelDigital}
  1683. PhysConn_Video_SCSI = PhysConn_Video_ParallelDigital + 1;
  1684. {$EXTERNALSYM PhysConn_Video_SCSI}
  1685. PhysConn_Video_AUX = PhysConn_Video_SCSI + 1;
  1686. {$EXTERNALSYM PhysConn_Video_AUX}
  1687. PhysConn_Video_1394 = PhysConn_Video_AUX + 1;
  1688. {$EXTERNALSYM PhysConn_Video_1394}
  1689. PhysConn_Video_USB = PhysConn_Video_1394 + 1;
  1690. {$EXTERNALSYM PhysConn_Video_USB}
  1691. PhysConn_Video_VideoDecoder = PhysConn_Video_USB + 1;
  1692. {$EXTERNALSYM PhysConn_Video_VideoDecoder}
  1693. PhysConn_Video_VideoEncoder = PhysConn_Video_VideoDecoder + 1;
  1694. {$EXTERNALSYM PhysConn_Video_VideoEncoder}
  1695. PhysConn_Video_SCART = PhysConn_Video_VideoEncoder + 1;
  1696. {$EXTERNALSYM PhysConn_Video_SCART}
  1697. PhysConn_Video_Black = PhysConn_Video_SCART + 1;
  1698. {$EXTERNALSYM PhysConn_Video_Black}
  1699. PhysConn_Audio_Tuner = $1000;
  1700. {$EXTERNALSYM PhysConn_Audio_Tuner}
  1701. PhysConn_Audio_Line = PhysConn_Audio_Tuner + 1;
  1702. {$EXTERNALSYM PhysConn_Audio_Line}
  1703. PhysConn_Audio_Mic = PhysConn_Audio_Line + 1;
  1704. {$EXTERNALSYM PhysConn_Audio_Mic}
  1705. PhysConn_Audio_AESDigital = PhysConn_Audio_Mic + 1;
  1706. {$EXTERNALSYM PhysConn_Audio_AESDigital}
  1707. PhysConn_Audio_SPDIFDigital = PhysConn_Audio_AESDigital + 1;
  1708. {$EXTERNALSYM PhysConn_Audio_SPDIFDigital}
  1709. PhysConn_Audio_SCSI = PhysConn_Audio_SPDIFDigital + 1;
  1710. {$EXTERNALSYM PhysConn_Audio_SCSI}
  1711. PhysConn_Audio_AUX = PhysConn_Audio_SCSI + 1;
  1712. {$EXTERNALSYM PhysConn_Audio_AUX}
  1713. PhysConn_Audio_1394 = PhysConn_Audio_AUX + 1;
  1714. {$EXTERNALSYM PhysConn_Audio_1394}
  1715. PhysConn_Audio_USB = PhysConn_Audio_1394 + 1;
  1716. {$EXTERNALSYM PhysConn_Audio_USB}
  1717. PhysConn_Audio_AudioDecoder = PhysConn_Audio_USB + 1;
  1718. {$EXTERNALSYM PhysConn_Audio_AudioDecoder}
  1719. type
  1720. {$HPPEMIT 'typedef System::DelphiInterface<IAMAnalogVideoDecoder> _di_IAMAnalogVideoDecoder;'}
  1721. {$EXTERNALSYM IAMAnalogVideoDecoder}
  1722. IAMAnalogVideoDecoder = interface(IUnknown)
  1723. ['{C6E13350-30AC-11d0-A18C-00A0C9118956}']
  1724. (*** IAMAnalogVideoDecoder methods ***)
  1725. function get_AvailableTVFormats(out lAnalogVideoStandard: Longint): HResult; stdcall;
  1726. function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
  1727. function get_TVFormat(out plAnalogVideoStandard: Longint): HResult; stdcall;
  1728. function get_HorizontalLocked(out plLocked: Longint): HResult; stdcall;
  1729. function put_VCRHorizontalLocking(lVCRHorizontalLocking: Longint): HResult; stdcall;
  1730. function get_VCRHorizontalLocking(out plVCRHorizontalLocking: Longint): HResult; stdcall;
  1731. function get_NumberOfLines(out plNumberOfLines: Longint): HResult; stdcall;
  1732. function put_OutputEnable(lOutputEnable: LongBool): HResult; stdcall;
  1733. function get_OutputEnable(out plOutputEnable: LongBool): HResult; stdcall;
  1734. end;
  1735. tagVideoProcAmpProperty = (
  1736. VideoProcAmp_Brightness,
  1737. VideoProcAmp_Contrast,
  1738. VideoProcAmp_Hue,
  1739. VideoProcAmp_Saturation,
  1740. VideoProcAmp_Sharpness,
  1741. VideoProcAmp_Gamma,
  1742. VideoProcAmp_ColorEnable,
  1743. VideoProcAmp_WhiteBalance,
  1744. VideoProcAmp_BacklightCompensation,
  1745. VideoProcAmp_Gain
  1746. );
  1747. {$EXTERNALSYM tagVideoProcAmpProperty}
  1748. VideoProcAmpProperty = tagVideoProcAmpProperty;
  1749. {$EXTERNALSYM VideoProcAmpProperty}
  1750. TVideoProcAmpProperty = VideoProcAmpProperty;
  1751. tagVideoProcAmpFlags = (
  1752. {$IFNDEF COMPILER6_UP}
  1753. VideoProcAmp_Flags_INVALID_0,
  1754. VideoProcAmp_Flags_Manual,
  1755. VideoProcAmp_Flags_Auto
  1756. {$ELSE}
  1757. VideoProcAmp_Flags_Manual = 1,
  1758. VideoProcAmp_Flags_Auto
  1759. {$ENDIF}
  1760. );
  1761. {$EXTERNALSYM tagVideoProcAmpFlags}
  1762. VideoProcAmpFlags = tagVideoProcAmpFlags;
  1763. {$EXTERNALSYM VideoProcAmpFlags}
  1764. TVideoProcAmpFlags = VideoProcAmpFlags;
  1765. {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoProcAmp> _di_IAMVideoProcAmp;'}
  1766. {$EXTERNALSYM IAMVideoProcAmp}
  1767. IAMVideoProcAmp = interface(IUnknown)
  1768. ['{C6E13360-30AC-11d0-A18C-00A0C9118956}']
  1769. (*** IAMVideoProcAmp methods ***)
  1770. function GetRange(Property_:TVideoProcAmpProperty; out pMin, pMax, pSteppingDelta,
  1771. pDefault: Longint; out pCapsFlags: TVideoProcAmpFlags): HResult; stdcall;
  1772. function Set_(Property_: TVideoProcAmpProperty; lValue: Longint;
  1773. Flags: TVideoProcAmpFlags): HResult; stdcall;
  1774. function Get(Property_: TVideoProcAmpProperty; out lValue: Longint;
  1775. out Flags: TVideoProcAmpFlags): HResult; stdcall;
  1776. end;
  1777. tagCameraControlProperty = (
  1778. CameraControl_Pan,
  1779. CameraControl_Tilt,
  1780. CameraControl_Roll,
  1781. CameraControl_Zoom,
  1782. CameraControl_Exposure,
  1783. CameraControl_Iris,
  1784. CameraControl_Focus
  1785. );
  1786. {$EXTERNALSYM tagCameraControlProperty}
  1787. CameraControlProperty = tagCameraControlProperty;
  1788. {$EXTERNALSYM CameraControlProperty}
  1789. TCameraControlProperty = CameraControlProperty;
  1790. tagCameraControlFlags = (
  1791. {$IFNDEF COMPILER6_UP}
  1792. CameraControl_Flags_INVALID_0,
  1793. CameraControl_Flags_Manual,
  1794. CameraControl_Flags_Auto
  1795. {$ELSE}
  1796. CameraControl_Flags_Manual = 1,
  1797. CameraControl_Flags_Auto
  1798. {$ENDIF}
  1799. );
  1800. {$EXTERNALSYM tagCameraControlFlags}
  1801. CameraControlFlags = tagCameraControlFlags;
  1802. {$EXTERNALSYM CameraControlFlags}
  1803. TCameraControlFlags = CameraControlFlags;
  1804. {$HPPEMIT 'typedef System::DelphiInterface<IAMCameraControl> _di_IAMCameraControl;'}
  1805. {$EXTERNALSYM IAMCameraControl}
  1806. IAMCameraControl = interface(IUnknown)
  1807. ['{C6E13370-30AC-11d0-A18C-00A0C9118956}']
  1808. (*** IAMCameraControl methods ***)
  1809. function GetRange(Property_: TCameraControlProperty;
  1810. out pMin, pMax, pSteppingDelta, pDefault, pCapsFlags: Longint): HResult; stdcall;
  1811. function Set_(Property_: TCameraControlProperty; lValue: Longint;
  1812. Flags: TCameraControlFlags): HResult; stdcall;
  1813. function Get(Property_: TCameraControlProperty; out lValue: Longint;
  1814. out Flags: TCameraControlFlags): HResult; stdcall;
  1815. end;
  1816. const
  1817. VideoControlFlag_FlipHorizontal = $1;
  1818. {$EXTERNALSYM VideoControlFlag_FlipHorizontal}
  1819. VideoControlFlag_FlipVertical = $2;
  1820. {$EXTERNALSYM VideoControlFlag_FlipVertical}
  1821. VideoControlFlag_ExternalTriggerEnable = $4;
  1822. {$EXTERNALSYM VideoControlFlag_ExternalTriggerEnable}
  1823. VideoControlFlag_Trigger = $8;
  1824. {$EXTERNALSYM VideoControlFlag_Trigger}
  1825. type
  1826. {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoControl> _di_IAMVideoControl;'}
  1827. {$EXTERNALSYM IAMVideoControl}
  1828. IAMVideoControl = interface(IUnknown)
  1829. ['{6a2e0670-28e4-11d0-a18c-00a0c9118956}']
  1830. (*** IAMVideoControl methods ***)
  1831. function GetCaps(pPin: IPin; out pCapsFlags: Longint): HResult; stdcall;
  1832. function SetMode(pPin: IPin; Mode: Longint): HResult; stdcall;
  1833. function GetMode(pPin: IPin; out Mode: Longint): HResult; stdcall;
  1834. function GetCurrentActualFrameRate(pPin: IPin; out ActualFrameRate: Int64): HResult; stdcall;
  1835. function GetMaxAvailableFrameRate(pPin: IPin; iIndex: Longint; Dimensions: TSize; out MaxAvailableFrameRate: Int64): HResult; stdcall;
  1836. function GetFrameRateList(pPin: IPin; iIndex: Longint; Dimensions: TSize; out ListSize: Longint; out FrameRates: PInt64): HResult; stdcall;
  1837. end;
  1838. {$HPPEMIT 'typedef System::DelphiInterface<IAMCrossbar> _di_IAMCrossbar;'}
  1839. {$EXTERNALSYM IAMCrossbar}
  1840. IAMCrossbar = interface(IUnknown)
  1841. ['{C6E13380-30AC-11d0-A18C-00A0C9118956}']
  1842. (*** IAMCrossbar methods ***)
  1843. function get_PinCounts(out OutputPinCount, InputPinCount: Longint): HResult; stdcall;
  1844. function CanRoute(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
  1845. function Route(OutputPinIndex, InputPinIndex: Longint): HResult; stdcall;
  1846. function get_IsRoutedTo(OutputPinIndex: Longint;
  1847. out InputPinIndex: Longint): HResult; stdcall;
  1848. function get_CrossbarPinInfo(IsInputPin: BOOL; PinIndex: Longint;
  1849. out PinIndexRelated : longint; out PhysicalType: TPhysicalConnectorType): HResult; stdcall;
  1850. end;
  1851. type
  1852. {$IFNDEF COMPILER6_UP}
  1853. tagAMTunerSubChannel = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  1854. const
  1855. AMTUNER_SUBCHAN_NO_TUNE = -2;
  1856. {$EXTERNALSYM AMTUNER_SUBCHAN_NO_TUNE}
  1857. AMTUNER_SUBCHAN_DEFAULT = -1;
  1858. {$EXTERNALSYM AMTUNER_SUBCHAN_DEFAULT}
  1859. {$ELSE}
  1860. tagAMTunerSubChannel = (
  1861. AMTUNER_SUBCHAN_NO_TUNE = -2,
  1862. AMTUNER_SUBCHAN_DEFAULT = -1
  1863. );
  1864. {$ENDIF}
  1865. type
  1866. {$EXTERNALSYM tagAMTunerSubChannel}
  1867. AMTunerSubChannel = tagAMTunerSubChannel;
  1868. {$EXTERNALSYM AMTunerSubChannel}
  1869. TAMTunerSubChannel = AMTunerSubChannel;
  1870. type
  1871. {$IFNDEF COMPILER6_UP}
  1872. tagAMTunerSignalStrength = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  1873. const
  1874. AMTUNER_HASNOSIGNALSTRENGTH = -1;
  1875. {$EXTERNALSYM AMTUNER_HASNOSIGNALSTRENGTH}
  1876. AMTUNER_NOSIGNAL = 0;
  1877. {$EXTERNALSYM AMTUNER_NOSIGNAL}
  1878. AMTUNER_SIGNALPRESENT = 1;
  1879. {$EXTERNALSYM AMTUNER_SIGNALPRESENT}
  1880. {$ELSE}
  1881. tagAMTunerSignalStrength = (
  1882. AMTUNER_HASNOSIGNALSTRENGTH = -1,
  1883. AMTUNER_NOSIGNAL = 0,
  1884. AMTUNER_SIGNALPRESENT = 1
  1885. );
  1886. {$ENDIF}
  1887. type
  1888. {$EXTERNALSYM tagAMTunerSignalStrength}
  1889. AMTunerSignalStrength = tagAMTunerSignalStrength;
  1890. {$EXTERNALSYM AMTunerSignalStrength}
  1891. TAMTunerSignalStrength = AMTunerSignalStrength;
  1892. type
  1893. {$IFNDEF COMPILER6_UP}
  1894. tagAMTunerModeType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  1895. const
  1896. AMTUNER_MODE_DEFAULT = 0;
  1897. {$EXTERNALSYM AMTUNER_MODE_DEFAULT}
  1898. AMTUNER_MODE_TV = 1;
  1899. {$EXTERNALSYM AMTUNER_MODE_TV}
  1900. AMTUNER_MODE_FM_RADIO = 2;
  1901. {$EXTERNALSYM AMTUNER_MODE_FM_RADIO}
  1902. AMTUNER_MODE_AM_RADIO = 4;
  1903. {$EXTERNALSYM AMTUNER_MODE_AM_RADIO}
  1904. AMTUNER_MODE_DSS = 8;
  1905. {$EXTERNALSYM AMTUNER_MODE_DSS}
  1906. {$ELSE}
  1907. tagAMTunerModeType = (
  1908. AMTUNER_MODE_DEFAULT = 0,
  1909. AMTUNER_MODE_TV = 1,
  1910. AMTUNER_MODE_FM_RADIO = 2,
  1911. AMTUNER_MODE_AM_RADIO = 4,
  1912. AMTUNER_MODE_DSS = 8
  1913. );
  1914. {$ENDIF}
  1915. type
  1916. {$EXTERNALSYM tagAMTunerModeType}
  1917. AMTunerModeType = tagAMTunerModeType;
  1918. {$EXTERNALSYM AMTunerModeType}
  1919. TAMTunerModeType = AMTunerModeType;
  1920. type
  1921. tagAMTunerEventType = (
  1922. {$IFNDEF COMPILER6_UP}
  1923. AMTUNER_EVENT_INVALID_0,
  1924. AMTUNER_EVENT_CHANGED
  1925. {$ELSE}
  1926. AMTUNER_EVENT_CHANGED = 1
  1927. {$ENDIF}
  1928. );
  1929. {$EXTERNALSYM tagAMTunerEventType}
  1930. AMTunerEventType = tagAMTunerEventType;
  1931. {$EXTERNALSYM AMTunerEventType}
  1932. TAMTunerEventType = AMTunerEventType;
  1933. IAMTunerNotification = interface;
  1934. {$HPPEMIT 'typedef System::DelphiInterface<IAMTuner> _di_IAMTuner;'}
  1935. {$EXTERNALSYM IAMTuner}
  1936. IAMTuner = interface(IUnknown)
  1937. ['{211A8761-03AC-11d1-8D13-00AA00BD8339}']
  1938. (*** IAMTuner methods ***)
  1939. function put_Channel(lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
  1940. function get_Channel(out lChannel, lVideoSubChannel, lAudioSubChannel: Longint): HResult; stdcall;
  1941. function ChannelMinMax(out lChannelMin, lChannelMax: Longint): HResult; stdcall;
  1942. function put_CountryCode(lCountryCode: Longint): HResult; stdcall;
  1943. function get_CountryCode(out lCountryCode: Longint): HResult; stdcall;
  1944. function put_TuningSpace(lTuningSpace: Longint): HResult; stdcall;
  1945. function get_TuningSpace(out lTuningSpace: Longint): HResult; stdcall;
  1946. function Logon(hCurrentUser: THandle): HResult; stdcall;
  1947. function Logout: HResult; stdcall;
  1948. function SignalPresent(out plSignalStrength: Longint): HResult; stdcall;
  1949. function put_Mode(lMode: TAMTunerModeType): HResult; stdcall;
  1950. function get_Mode(out plMode: TAMTunerModeType): HResult; stdcall;
  1951. function GetAvailableModes(out plModes: Longint): HResult; stdcall;
  1952. function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
  1953. lEvents: Longint): HResult; stdcall;
  1954. function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
  1955. end;
  1956. {$HPPEMIT 'typedef System::DelphiInterface<IAMTunerNotification> _di_IAMTunerNotification;'}
  1957. {$EXTERNALSYM IAMTunerNotification}
  1958. IAMTunerNotification = interface(IUnknown)
  1959. ['{211A8760-03AC-11d1-8D13-00AA00BD8339}']
  1960. (*** IAMTunerNotification methods ***)
  1961. function OnEvent(Event: TAMTunerEventType): HResult; stdcall;
  1962. end;
  1963. {$HPPEMIT 'typedef System::DelphiInterface<IAMTVTuner> _di_IAMTVTuner;'}
  1964. {$EXTERNALSYM IAMTVTuner}
  1965. IAMTVTuner = interface(IAMTuner)
  1966. ['{211A8766-03AC-11d1-8D13-00AA00BD8339}']
  1967. (*** IAMTVTuner methods ***)
  1968. function get_AvailableTVFormats(out lAnalogVideoStandard: Longint): HResult; stdcall;
  1969. function get_TVFormat(out plAnalogVideoStandard: Longint): HResult; stdcall;
  1970. function AutoTune(lChannel: Longint; out plFoundSignal: Longint): HResult; stdcall;
  1971. function StoreAutoTune: HResult; stdcall;
  1972. function get_NumInputConnections(out plNumInputConnections: Longint): HResult; stdcall;
  1973. function put_InputType(lIndex: Longint; InputType: TTunerInputType): HResult; stdcall;
  1974. function get_InputType(lIndex: Longint; out InputType: TTunerInputType): HResult; stdcall;
  1975. function put_ConnectInput(lIndex: Longint): HResult; stdcall;
  1976. function get_ConnectInput(out plIndex: Longint): HResult; stdcall;
  1977. function get_VideoFrequency(out lFreq: Longint): HResult; stdcall;
  1978. function get_AudioFrequency(out lFreq: Longint): HResult; stdcall;
  1979. end;
  1980. {$HPPEMIT 'typedef System::DelphiInterface<IBPCSatelliteTuner> _di_IBPCSatelliteTuner;'}
  1981. {$EXTERNALSYM IBPCSatelliteTuner}
  1982. IBPCSatelliteTuner = interface(IAMTuner)
  1983. ['{211A8765-03AC-11d1-8D13-00AA00BD8339}']
  1984. (*** IBPCSatelliteTuner methods ***)
  1985. function get_DefaultSubChannelTypes(out plDefaultVideoType, plDefaultAudioType: Longint): HResult; stdcall;
  1986. function put_DefaultSubChannelTypes(lDefaultVideoType, lDefaultAudioType: Longint): HResult; stdcall;
  1987. function IsTapingPermitted: HResult; stdcall;
  1988. end;
  1989. {$IFNDEF COMPILER6_UP}
  1990. tagTVAudioMode = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  1991. const
  1992. AMTVAUDIO_MODE_MONO = $1;
  1993. {$EXTERNALSYM AMTVAUDIO_MODE_MONO}
  1994. AMTVAUDIO_MODE_STEREO = $2;
  1995. {$EXTERNALSYM AMTVAUDIO_MODE_STEREO}
  1996. AMTVAUDIO_MODE_LANG_A = $10;
  1997. {$EXTERNALSYM AMTVAUDIO_MODE_LANG_A}
  1998. AMTVAUDIO_MODE_LANG_B = $20;
  1999. {$EXTERNALSYM AMTVAUDIO_MODE_LANG_B}
  2000. AMTVAUDIO_MODE_LANG_C = $40;
  2001. {$EXTERNALSYM AMTVAUDIO_MODE_LANG_C}
  2002. {$ELSE}
  2003. tagTVAudioMode = (
  2004. AMTVAUDIO_MODE_MONO = $1,
  2005. AMTVAUDIO_MODE_STEREO = $2,
  2006. AMTVAUDIO_MODE_LANG_A = $10,
  2007. AMTVAUDIO_MODE_LANG_B = $20,
  2008. AMTVAUDIO_MODE_LANG_C = $40
  2009. );
  2010. {$ENDIF}
  2011. type
  2012. {$EXTERNALSYM tagTVAudioMode}
  2013. TVAudioMode = tagTVAudioMode;
  2014. {$EXTERNALSYM TVAudioMode}
  2015. TTVAudioMode = TVAudioMode;
  2016. type
  2017. tagAMTVAudioEventType = (
  2018. {$IFNDEF COMPILER6_UP}
  2019. AMTVAUDIO_EVENT_INVALID_0,
  2020. AMTVAUDIO_EVENT_CHANGED
  2021. {$ELSE}
  2022. AMTVAUDIO_EVENT_CHANGED = 1
  2023. {$ENDIF}
  2024. );
  2025. {$EXTERNALSYM tagAMTVAudioEventType}
  2026. AMTVAudioEventType = tagAMTVAudioEventType;
  2027. {$EXTERNALSYM AMTVAudioEventType}
  2028. TAMTVAudioEventType = AMTVAudioEventType;
  2029. {$HPPEMIT 'typedef System::DelphiInterface<IAMTVAudio> _di_IAMTVAudio;'}
  2030. {$EXTERNALSYM IAMTVAudio}
  2031. IAMTVAudio = interface(IUnknown)
  2032. ['{83EC1C30-23D1-11d1-99E6-00A0C9560266}']
  2033. (*** IAMTVAudio methods ***)
  2034. function GetHardwareSupportedTVAudioModes(out plModes: Longint): HResult; stdcall;
  2035. function GetAvailableTVAudioModes(out plModes: Longint): HResult; stdcall;
  2036. function get_TVAudioMode(out plMode: Longint): HResult; stdcall;
  2037. function put_TVAudioMode(lMode: Longint): HResult; stdcall;
  2038. function RegisterNotificationCallBack(pNotify: IAMTunerNotification;
  2039. lEvents: Longint): HResult; stdcall;
  2040. function UnRegisterNotificationCallBack(pNotify: IAMTunerNotification): HResult; stdcall;
  2041. end;
  2042. {$HPPEMIT 'typedef System::DelphiInterface<IAMTVAudioNotification> _di_IAMTVAudioNotification;'}
  2043. {$EXTERNALSYM IAMTVAudioNotification}
  2044. IAMTVAudioNotification = interface(IUnknown)
  2045. ['{83EC1C33-23D1-11D1-99E6-00A0C9560266}']
  2046. (*** IAMTVAudioNotification methods ***)
  2047. function OnEvent(Event: TAMTVAudioEventType): HResult; stdcall;
  2048. end;
  2049. {$HPPEMIT 'typedef System::DelphiInterface<IAMAnalogVideoEncoder> _di_IAMAnalogVideoEncoder;'}
  2050. {$EXTERNALSYM IAMAnalogVideoEncoder}
  2051. IAMAnalogVideoEncoder = interface(IUnknown)
  2052. ['{C6E133B0-30AC-11d0-A18C-00A0C9118956}']
  2053. (*** IAMAnalogVideoEncoder methods ***)
  2054. function get_AvailableTVFormats(out lAnalogVideoStandard: Longint): HResult; stdcall;
  2055. function put_TVFormat(lAnalogVideoStandard: Longint): HResult; stdcall;
  2056. function get_TVFormat(out plAnalogVideoStandard: Longint): HResult; stdcall;
  2057. function put_CopyProtection(lVideoCopyProtection: Longint): HResult; stdcall;
  2058. function get_CopyProtection(out lVideoCopyProtection: Longint): HResult; stdcall;
  2059. function put_CCEnable(lCCEnable: LongBool): HResult; stdcall;
  2060. function get_CCEnable(out lCCEnable: LongBool): HResult; stdcall;
  2061. end ;
  2062. AMPROPERTY_PIN = (
  2063. AMPROPERTY_PIN_CATEGORY,
  2064. AMPROPERTY_PIN_MEDIUM
  2065. );
  2066. {$EXTERNALSYM AMPROPERTY_PIN}
  2067. TAMPropertyPin = AMPROPERTY_PIN;
  2068. const
  2069. KSPROPERTY_SUPPORT_GET = 1;
  2070. {$EXTERNALSYM KSPROPERTY_SUPPORT_GET}
  2071. KSPROPERTY_SUPPORT_SET = 2;
  2072. {$EXTERNALSYM KSPROPERTY_SUPPORT_SET}
  2073. type
  2074. {$HPPEMIT 'typedef System::DelphiInterface<IKsPropertySet> _di_IKsPropertySet;'}
  2075. {$EXTERNALSYM IKsPropertySet}
  2076. IKsPropertySet = interface(IUnknown)
  2077. ['{31EFAC30-515C-11d0-A9AA-00AA0061BE93}']
  2078. (*** IKsPropertySet methods ***)
  2079. function Set_(const guidPropSet: TGUID; dwPropID: TAMPropertyPin;
  2080. pInstanceData: pointer; cbInstanceData: DWORD; pPropData: pointer; cbPropData: DWORD): HResult; stdcall;
  2081. function Get(const guidPropSet: TGUID; dwPropID: TAMPropertyPin;
  2082. pInstanceData: pointer; cbInstanceData: DWORD; out pPropData ; cbPropData: DWORD;
  2083. out pcbReturned: DWORD): HResult; stdcall;
  2084. function QuerySupported(const guidPropSet: TGUID; dwPropID: TAMPropertyPin;
  2085. out pTypeSupport: DWORD): HResult; stdcall;
  2086. end;
  2087. {$HPPEMIT 'typedef System::DelphiInterface<IMediaPropertyBag> _di_IMediaPropertyBag;'}
  2088. {$EXTERNALSYM IMediaPropertyBag}
  2089. IMediaPropertyBag = interface(IPropertyBag)
  2090. ['{6025A880-C0D5-11D0-BD4E-00A0C911CE86}']
  2091. (*** IMediaPropertyBag methods ***)
  2092. function EnumProperty(iProperty: ULONG; var pvarPropertyName,
  2093. pvarPropertyValue: OleVariant): HResult; stdcall;
  2094. end;
  2095. {$HPPEMIT 'typedef System::DelphiInterface<IPersistMediaPropertyBag> _di_IPersistMediaPropertyBag;'}
  2096. {$EXTERNALSYM IPersistMediaPropertyBag}
  2097. IPersistMediaPropertyBag = interface(IPersist)
  2098. ['{5738E040-B67F-11d0-BD4D-00A0C911CE86}']
  2099. (*** IPersistMediaPropertyBag methods ***)
  2100. function InitNew: HResult; stdcall;
  2101. function Load(pPropBag: IMediaPropertyBag; pErrorLog: IErrorLog): HResult; stdcall;
  2102. function Save(pPropBag: IMediaPropertyBag; fClearDirty, fSaveAllProperties: BOOL): HResult; stdcall;
  2103. end;
  2104. //Deprecated Interface
  2105. {$HPPEMIT 'typedef System::DelphiInterface<IAMPhysicalPinInfo> _di_IAMPhysicalPinInfo;'}
  2106. {$EXTERNALSYM IAMPhysicalPinInfo}
  2107. IAMPhysicalPinInfo = interface(IUnknown)
  2108. ['{F938C991-3029-11CF-8C44-00AA006B6814}']
  2109. (*** IAMPhysicalPinInfo methods ***)
  2110. function GetPhysicalType(out pType: Longint; out ppszType: PWideChar): HResult; stdcall;
  2111. end;
  2112. {$HPPEMIT 'typedef System::DelphiInterface<IAMExtDevice> _di_IAMExtDevice;'}
  2113. {$EXTERNALSYM IAMExtDevice}
  2114. IAMExtDevice = interface(IUnknown)
  2115. ['{B5730A90-1A2C-11CF-8C23-00AA006B6814}']
  2116. (*** IAMExtDevice methods ***)
  2117. function GetCapability(Capability: Longint; out pValue: Longint; out pdblValue: double): HResult; stdcall;
  2118. function get_ExternalDeviceID(out ppszData: PWideChar): HResult; stdcall;
  2119. function get_ExternalDeviceVersion(out ppszData: PWideChar): HResult; stdcall;
  2120. function put_DevicePower(PowerMode: Longint): HResult; stdcall;
  2121. function get_DevicePower(out pPowerMode: Longint): HResult; stdcall;
  2122. function Calibrate(hEvent: THandle; Mode: Longint; out pStatus: Longint): HResult; stdcall;
  2123. function put_DevicePort(DevicePort: Longint): HResult; stdcall;
  2124. function get_DevicePort(out pDevicePort: Longint): HResult; stdcall;
  2125. end;
  2126. {$HPPEMIT 'typedef System::DelphiInterface<IAMExtTransport> _di_IAMExtTransport;'}
  2127. {$EXTERNALSYM IAMExtTransport}
  2128. IAMExtTransport = interface(IUnknown)
  2129. ['{A03CD5F0-3045-11CF-8C44-00AA006B6814}']
  2130. (*** IAMExtTransport methods ***)
  2131. function GetCapability(Capability: Longint; out pValue: Longint; out pdblValue: double): HResult; stdcall;
  2132. function put_MediaState(State: Longint): HResult; stdcall;
  2133. function get_MediaState(out pState: Longint): HResult; stdcall;
  2134. function put_LocalControl(State: Longint): HResult; stdcall;
  2135. function get_LocalControl(out pState: Longint): HResult; stdcall;
  2136. function GetStatus(StatusItem: Longint; out pValue: Longint): HResult; stdcall;
  2137. function GetTransportBasicParameters(Param: Longint; var pValue: Longint; ppszData: pointer): HResult; stdcall;
  2138. function SetTransportBasicParameters(Param: Longint; Value: Longint; pszData: PWideChar): HResult; stdcall;
  2139. function GetTransportVideoParameters(Param: Longint; out pValue: Longint): HResult; stdcall;
  2140. function SetTransportVideoParameters(Param: Longint; Value: Longint): HResult; stdcall;
  2141. function GetTransportAudioParameters(Param: Longint; out pValue: Longint): HResult; stdcall;
  2142. function SetTransportAudioParameters(Param: Longint; Value: Longint): HResult; stdcall;
  2143. function put_Mode(Mode: Longint): HResult; stdcall;
  2144. function get_Mode(out pMode: Longint): HResult; stdcall;
  2145. function put_Rate(dblRate: double): HResult; stdcall;
  2146. function get_Rate(out pdblRate: double): HResult; stdcall;
  2147. function GetChase(out pEnabled, pOffset: Longint; var phEvent: THandle): HResult; stdcall;
  2148. function SetChase(Enable, Offset: Longint; hEvent: THandle): HResult; stdcall;
  2149. function GetBump(out pSpeed, pDuration: Longint): HResult; stdcall;
  2150. function SetBump(Speed, Duration: Longint): HResult; stdcall;
  2151. function get_AntiClogControl(out pEnabled: Longint): HResult; stdcall;
  2152. function put_AntiClogControl(Enable: Longint): HResult; stdcall;
  2153. function GetEditPropertySet(EditID: Longint; out pState: Longint): HResult; stdcall;
  2154. function SetEditPropertySet(var pEditID: Longint; State: Longint): HResult; stdcall;
  2155. function GetEditProperty(EditID, Param: Longint; out pValue: Longint): HResult; stdcall;
  2156. function SetEditProperty(EditID, Param, Value: Longint): HResult; stdcall;
  2157. function get_EditStart(out pValue: Longint): HResult; stdcall;
  2158. function put_EditStart(Value: Longint): HResult; stdcall;
  2159. end;
  2160. PTimeCode = ^TTimeCode;
  2161. _timecode = record
  2162. wFrameRate : Word;
  2163. wFrameFract : Word;
  2164. dwFrames : DWORD;
  2165. end;
  2166. {$EXTERNALSYM _timecode}
  2167. TIMECODE = _timecode;
  2168. {$EXTERNALSYM TIMECODE}
  2169. TTimeCode = _timecode;
  2170. PTimeCodeSample = ^TTimeCodeSample;
  2171. tagTIMECODE_SAMPLE = record
  2172. qwTick : Int64;
  2173. timecode : TIMECODE;
  2174. dwUser : DWORD;
  2175. dwFlags : DWORD;
  2176. end;
  2177. {$EXTERNALSYM tagTIMECODE_SAMPLE}
  2178. TIMECODE_SAMPLE = tagTIMECODE_SAMPLE;
  2179. {$EXTERNALSYM TIMECODE_SAMPLE}
  2180. TTimeCodeSample = tagTIMECODE_SAMPLE;
  2181. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimecodeReader> _di_IAMTimecodeReader;'}
  2182. {$EXTERNALSYM IAMTimecodeReader}
  2183. IAMTimecodeReader = interface(IUnknown)
  2184. ['{9B496CE1-811B-11CF-8C77-00AA006B6814}']
  2185. (*** IAMTimecodeReader methods ***)
  2186. function GetTCRMode(Param: Longint; out pValue: Longint): HResult; stdcall;
  2187. function SetTCRMode(Param: Longint; Value: Longint): HResult; stdcall;
  2188. function put_VITCLine(Line: Longint): HResult; stdcall;
  2189. function get_VITCLine(out pLine: Longint): HResult; stdcall;
  2190. function GetTimecode(out pTimecodeSample: TTimeCodeSample): HResult; stdcall;
  2191. end;
  2192. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimecodeGenerator> _di_IAMTimecodeGenerator;'}
  2193. {$EXTERNALSYM IAMTimecodeGenerator}
  2194. IAMTimecodeGenerator = interface(IUnknown)
  2195. ['{9B496CE0-811B-11CF-8C77-00AA006B6814}']
  2196. (*** IAMTimecodeGenerator methods ***)
  2197. function GetTCGMode(Param: Longint; out pValue: Longint): HResult; stdcall;
  2198. function SetTCGMode(Param: Longint; Value: Longint): HResult; stdcall;
  2199. function put_VITCLine(Line: Longint): HResult; stdcall;
  2200. function get_VITCLine(out Line: Longint): HResult; stdcall;
  2201. function SetTimecode(var pTimecodeSample: TTimeCodeSample): HResult; stdcall;
  2202. function GetTimecode(out pTimecodeSample: TTimeCodeSample): HResult; stdcall;
  2203. end;
  2204. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimecodeDisplay> _di_IAMTimecodeDisplay;'}
  2205. {$EXTERNALSYM IAMTimecodeDisplay}
  2206. IAMTimecodeDisplay = interface(IUnknown)
  2207. ['{9B496CE2-811B-11CF-8C77-00AA006B6814}']
  2208. (*** IAMTimecodeDisplay methods ***)
  2209. function GetTCDisplayEnable(out pState: Longint): HResult; stdcall;
  2210. function SetTCDisplayEnable(State: Longint): HResult; stdcall;
  2211. function GetTCDisplay(Param: Longint; out pValue: Longint): HResult; stdcall;
  2212. function SetTCDisplay(Param, Value: Longint): HResult; stdcall;
  2213. end;
  2214. //Deprecated Interface
  2215. {$HPPEMIT 'typedef System::DelphiInterface<IAMDevMemoryAllocator> _di_IAMDevMemoryAllocator;'}
  2216. {$EXTERNALSYM IAMDevMemoryAllocator}
  2217. IAMDevMemoryAllocator = interface(IUnknown)
  2218. ['{C6545BF0-E76B-11D0-BD52-00A0C911CE86}']
  2219. (*** IAMDevMemoryAllocator methods ***)
  2220. function GetInfo(out pdwcbTotalFree, pdwcbLargestFree, pdwcbTotalMemory, pdwcbMinimumChunk: DWORD): HResult; stdcall;
  2221. function CheckMemory(pBuffer: Pointer): HResult; stdcall;
  2222. function Alloc(out ppBuffer: Pointer; var pdwcbBuffer: DWORD): HResult; stdcall;
  2223. function Free(pBuffer: Pointer): HResult; stdcall;
  2224. function GetDevMemoryObject(out ppUnkInnner: IUnknown; pUnkOuter: IUnknown): HResult; stdcall;
  2225. end;
  2226. //Deprecated Interface
  2227. {$HPPEMIT 'typedef System::DelphiInterface<IAMDevMemoryControl> _di_IAMDevMemoryControl;'}
  2228. {$EXTERNALSYM IAMDevMemoryControl}
  2229. IAMDevMemoryControl = interface(IUnknown)
  2230. ['{C6545BF1-E76B-11D0-BD52-00A0C911CE86}']
  2231. (*** IAMDevMemoryControl methods ***)
  2232. function QueryWriteSync: HResult; stdcall;
  2233. function WriteSync: HResult; stdcall;
  2234. function GetDevId(out pdwDevId: DWORD): HResult; stdcall;
  2235. end;
  2236. const
  2237. AMSTREAMSELECTINFO_ENABLED = $1;
  2238. {$EXTERNALSYM AMSTREAMSELECTINFO_ENABLED}
  2239. AMSTREAMSELECTINFO_EXCLUSIVE = $2;
  2240. {$EXTERNALSYM AMSTREAMSELECTINFO_EXCLUSIVE}
  2241. AMSTREAMSELECTENABLE_ENABLE = $1;
  2242. {$EXTERNALSYM AMSTREAMSELECTENABLE_ENABLE}
  2243. AMSTREAMSELECTENABLE_ENABLEALL = $2;
  2244. {$EXTERNALSYM AMSTREAMSELECTENABLE_ENABLEALL}
  2245. type
  2246. {$HPPEMIT 'typedef System::DelphiInterface<IAMStreamSelect> _di_IAMStreamSelect;'}
  2247. {$EXTERNALSYM IAMStreamSelect}
  2248. IAMStreamSelect = interface(IUnknown)
  2249. ['{C1960960-17F5-11D1-ABE1-00A0C905F375}']
  2250. (*** IAMStreamSelect methods ***)
  2251. function Count(out pcStreams: DWORD): HResult; stdcall;
  2252. function Info(lIndex: Longint; out ppmt: PAMMediaType;
  2253. out pdwFlags: DWORD; out plcid: LCID; out pdwGroup: DWORD;
  2254. out ppszName: PWCHAR; out ppObject: IUnknown; out ppUnk : IUnknown): HResult; stdcall;
  2255. function Enable(lIndex: Longint; dwFlags: DWORD): HResult; stdcall;
  2256. end;
  2257. {$HPPEMIT 'typedef System::DelphiInterface<IAMResourceControl> _di_IAMResourceControl;'}
  2258. {$EXTERNALSYM IAMResourceControl}
  2259. IAMResourceControl = interface(IUnknown)
  2260. ['{8389d2d0-77d7-11d1-abe6-00a0c905f375}']
  2261. (*** IAMResourceControl methods ***)
  2262. function Reserve(dwFlags: DWORD; var pvReserved: pointer): HResult; stdcall;
  2263. end;
  2264. {$HPPEMIT 'typedef System::DelphiInterface<IAMClockAdjust> _di_IAMClockAdjust;'}
  2265. {$EXTERNALSYM IAMClockAdjust}
  2266. IAMClockAdjust = interface(IUnknown)
  2267. ['{4d5466b0-a49c-11d1-abe8-00a0c905f375}']
  2268. (*** IAMClockAdjust methods ***)
  2269. function SetClockDelta(rtDelta: TReferenceTime): HResult; stdcall;
  2270. end;
  2271. const
  2272. AM_FILTER_MISC_FLAGS_IS_RENDERER = $1;
  2273. {$EXTERNALSYM AM_FILTER_MISC_FLAGS_IS_RENDERER}
  2274. AM_FILTER_MISC_FLAGS_IS_SOURCE = $2;
  2275. {$EXTERNALSYM AM_FILTER_MISC_FLAGS_IS_SOURCE}
  2276. type
  2277. {$HPPEMIT 'typedef System::DelphiInterface<IAMFilterMiscFlags> _di_IAMFilterMiscFlags;'}
  2278. {$EXTERNALSYM IAMFilterMiscFlags}
  2279. IAMFilterMiscFlags = interface(IUnknown)
  2280. ['{2dd74950-a890-11d1-abe8-00a0c905f375}']
  2281. (*** IAMFilterMiscFlags methods ***)
  2282. function GetMiscFlags: ULONG; stdcall;
  2283. end;
  2284. {$HPPEMIT 'typedef System::DelphiInterface<IDrawVideoImage> _di_IDrawVideoImage;'}
  2285. {$EXTERNALSYM IDrawVideoImage}
  2286. IDrawVideoImage = interface(IUnknown)
  2287. ['{48efb120-ab49-11d2-aed2-00a0c995e8d5}']
  2288. (*** IDrawVideoImage methods ***)
  2289. function DrawVideoImageBegin: HResult; stdcall;
  2290. function DrawVideoImageEnd: HResult; stdcall;
  2291. function DrawVideoImageDraw(hdc: HDC; lprcSrc, lprcDst: PRECT): HResult; stdcall;
  2292. end;
  2293. {$HPPEMIT 'typedef System::DelphiInterface<IDecimateVideoImage> _di_IDecimateVideoImage;'}
  2294. {$EXTERNALSYM IDecimateVideoImage}
  2295. IDecimateVideoImage = interface(IUnknown)
  2296. ['{2e5ea3e0-e924-11d2-b6da-00a0c995e8df}']
  2297. (*** IDecimateVideoImage methods ***)
  2298. function SetDecimationImageSize(lWidth, lHeight: Longint):HResult; stdcall;
  2299. function ResetDecimationImageSize: HResult; stdcall;
  2300. end;
  2301. _DECIMATION_USAGE = (
  2302. DECIMATION_LEGACY,
  2303. DECIMATION_USE_DECODER_ONLY,
  2304. DECIMATION_USE_VIDEOPORT_ONLY,
  2305. DECIMATION_USE_OVERLAY_ONLY,
  2306. DECIMATION_DEFAULT
  2307. );
  2308. {$EXTERNALSYM _DECIMATION_USAGE}
  2309. DECIMATION_USAGE = _DECIMATION_USAGE;
  2310. {$EXTERNALSYM DECIMATION_USAGE}
  2311. TDecimationUsage = DECIMATION_USAGE;
  2312. {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoDecimationProperties> _di_IAMVideoDecimationProperties;'}
  2313. {$EXTERNALSYM IAMVideoDecimationProperties}
  2314. IAMVideoDecimationProperties = interface(IUnknown)
  2315. ['{60d32930-13da-11d3-9ec6-c4fcaef5c7be}']
  2316. (*** IAMVideoDecimationProperties methods ***)
  2317. function QueryDecimationUsage(out lpUsage: TDecimationUsage):HResult; stdcall;
  2318. function SetDecimationUsage(Usage: TDecimationUsage):HResult; stdcall;
  2319. end;
  2320. const
  2321. AM_PUSHSOURCECAPS_INTERNAL_RM = $1;
  2322. {$EXTERNALSYM AM_PUSHSOURCECAPS_INTERNAL_RM}
  2323. AM_PUSHSOURCECAPS_NOT_LIVE = $2;
  2324. {$EXTERNALSYM AM_PUSHSOURCECAPS_NOT_LIVE}
  2325. AM_PUSHSOURCECAPS_PRIVATE_CLOCK = $4;
  2326. {$EXTERNALSYM AM_PUSHSOURCECAPS_PRIVATE_CLOCK}
  2327. AM_PUSHSOURCEREQS_USE_STREAM_CLOCK = $10000;
  2328. {$EXTERNALSYM AM_PUSHSOURCEREQS_USE_STREAM_CLOCK}
  2329. AM_PUSHSOURCEREQS_USE_CLOCK_CHAIN = $20000;
  2330. {$EXTERNALSYM AM_PUSHSOURCEREQS_USE_CLOCK_CHAIN}
  2331. type
  2332. {$HPPEMIT 'typedef System::DelphiInterface<IAMLatency> _di_IAMLatency;'}
  2333. {$EXTERNALSYM IAMLatency}
  2334. IAMLatency = interface(IUnknown)
  2335. ['{62EA93BA-EC62-11d2-B770-00C04FB6BD3D}']
  2336. (*** IAMLatency methods ***)
  2337. function GetLatency(var prtLatency: TReferenceTime): HResult; stdcall;
  2338. end;
  2339. {$HPPEMIT 'typedef System::DelphiInterface<IAMPushSource> _di_IAMPushSource;'}
  2340. {$EXTERNALSYM IAMPushSource}
  2341. IAMPushSource = interface(IAMLatency)
  2342. ['{F185FE76-E64E-11d2-B76E-00C04FB6BD3D}']
  2343. (*** IAMPushSource methods ***)
  2344. function GetPushSourceFlags(out pFlags: ULONG): HResult; stdcall;
  2345. function SetPushSourceFlags(Flags: ULONG): HResult; stdcall;
  2346. function SetStreamOffset(rtOffset: TReferenceTime): HResult; stdcall;
  2347. function GetStreamOffset(out prtOffset: TReferenceTime): HResult; stdcall;
  2348. function GetMaxStreamOffset(out prtMaxOffset: TReferenceTime): HResult; stdcall;
  2349. function SetMaxStreamOffset(rtMaxOffset: TReferenceTime): HResult; stdcall;
  2350. end;
  2351. {$HPPEMIT 'typedef System::DelphiInterface<IAMDeviceRemoval> _di_IAMDeviceRemoval;'}
  2352. {$EXTERNALSYM IAMDeviceRemoval}
  2353. IAMDeviceRemoval = interface(IUnknown)
  2354. ['{f90a6130-b658-11d2-ae49-0000f8754b99}']
  2355. (*** IAMDeviceRemoval methods ***)
  2356. function DeviceInfo(out pclsidInterfaceClass: TGUID;
  2357. out pwszSymbolicLink: PWideChar): HResult; stdcall;
  2358. function Reassociate: HResult; stdcall;
  2359. function Disassociate: HResult; stdcall;
  2360. end;
  2361. type
  2362. PTDVInfo = ^TDVInfo;
  2363. DVINFO = record
  2364. //for 1st 5/6 DIF seq.
  2365. dwDVAAuxSrc : DWORD;
  2366. dwDVAAuxCtl : DWORD;
  2367. //for 2nd 5/6 DIF seq.
  2368. dwDVAAuxSrc1 : DWORD;
  2369. dwDVAAuxCtl1 : DWORD;
  2370. //for video information
  2371. dwDVVAuxSrc : DWORD;
  2372. dwDVVAuxCtl : DWORD;
  2373. dwDVReserved: array[0..1] of DWORD;
  2374. end;
  2375. {$EXTERNALSYM DVINFO}
  2376. TDVInfo = DVINFO;
  2377. const
  2378. //DVENCODERRESOLUTION
  2379. DVENCODERRESOLUTION_720x480 = 2012;
  2380. {$EXTERNALSYM DVENCODERRESOLUTION_720x480}
  2381. DVENCODERRESOLUTION_360x240 = 2013;
  2382. {$EXTERNALSYM DVENCODERRESOLUTION_360x240}
  2383. DVENCODERRESOLUTION_180x120 = 2014;
  2384. {$EXTERNALSYM DVENCODERRESOLUTION_180x120}
  2385. DVENCODERRESOLUTION_88x60 = 2015;
  2386. {$EXTERNALSYM DVENCODERRESOLUTION_88x60}
  2387. //DVENCODERVIDEOFORMAT
  2388. DVENCODERVIDEOFORMAT_NTSC = 2000;
  2389. {$EXTERNALSYM DVENCODERVIDEOFORMAT_NTSC}
  2390. DVENCODERVIDEOFORMAT_PAL = 2001;
  2391. {$EXTERNALSYM DVENCODERVIDEOFORMAT_PAL}
  2392. //DVENCODERFORMAT
  2393. DVENCODERFORMAT_DVSD = 2007;
  2394. {$EXTERNALSYM DVENCODERFORMAT_DVSD}
  2395. DVENCODERFORMAT_DVHD = 2008;
  2396. {$EXTERNALSYM DVENCODERFORMAT_DVHD}
  2397. DVENCODERFORMAT_DVSL = 2009;
  2398. {$EXTERNALSYM DVENCODERFORMAT_DVSL}
  2399. type
  2400. {$HPPEMIT 'typedef System::DelphiInterface<IDVEnc> _di_IDVEnc;'}
  2401. {$EXTERNALSYM IDVEnc}
  2402. IDVEnc = interface(IUnknown)
  2403. ['{d18e17a0-aacb-11d0-afb0-00aa00b67a42}']
  2404. (*** IDVEnc methods ***)
  2405. function get_IFormatResolution(out VideoFormat, DVFormat, Resolution: integer;
  2406. fDVInfo: ByteBool; out sDVInfo: TDVINFO): HResult; stdcall;
  2407. function put_IFormatResolution(VideoFormat, DVFormat, Resolution: integer;
  2408. fDVInfo: ByteBool; var sDVInfo: TDVINFO): HResult; stdcall;
  2409. end;
  2410. const
  2411. //DVDECODERRESOLUTION
  2412. DVDECODERRESOLUTION_720x480 = 1000;
  2413. {$EXTERNALSYM DVDECODERRESOLUTION_720x480}
  2414. DVDECODERRESOLUTION_360x240 = 1001;
  2415. {$EXTERNALSYM DVDECODERRESOLUTION_360x240}
  2416. DVDECODERRESOLUTION_180x120 = 1002;
  2417. {$EXTERNALSYM DVDECODERRESOLUTION_180x120}
  2418. DVDECODERRESOLUTION_88x60 = 1003;
  2419. {$EXTERNALSYM DVDECODERRESOLUTION_88x60}
  2420. //DVRESOLUTION
  2421. DVRESOLUTION_FULL = 1000;
  2422. {$EXTERNALSYM DVRESOLUTION_FULL}
  2423. DVRESOLUTION_HALF = 1001;
  2424. {$EXTERNALSYM DVRESOLUTION_HALF}
  2425. DVRESOLUTION_QUARTER = 1002;
  2426. {$EXTERNALSYM DVRESOLUTION_QUARTER}
  2427. DVRESOLUTION_DC = 1003;
  2428. {$EXTERNALSYM DVRESOLUTION_DC}
  2429. type
  2430. {$HPPEMIT 'typedef System::DelphiInterface<IIPDVDec> _di_IIPDVDec;'}
  2431. {$EXTERNALSYM IIPDVDec}
  2432. IIPDVDec = interface(IUnknown)
  2433. ['{b8e8bd60-0bfe-11d0-af91-00aa00b67a42}']
  2434. (*** IIPDVDec methods ***)
  2435. function get_IPDisplay(out displayPix : integer): HResult; stdcall;
  2436. function put_IPDisplay(displayPix: integer): HResult; stdcall;
  2437. end;
  2438. {$HPPEMIT 'typedef System::DelphiInterface<IDVRGB219> _di_IDVRGB219;'}
  2439. {$EXTERNALSYM IDVRGB219}
  2440. IDVRGB219 = interface(IUnknown)
  2441. ['{58473A19-2BC8-4663-8012-25F81BABDDD1}']
  2442. (*** IDVRGB219 methods ***)
  2443. function SetRGB219(bState: BOOL): HResult; stdcall;
  2444. end;
  2445. {$HPPEMIT 'typedef System::DelphiInterface<IDVSplitter> _di_IDVSplitter;'}
  2446. {$EXTERNALSYM IDVSplitter}
  2447. IDVSplitter = interface(IUnknown)
  2448. ['{92a3a302-da7c-4a1f-ba7e-1802bb5d2d02}']
  2449. (*** IDVSplitter methods ***)
  2450. function DiscardAlternateVideoFrames(nDiscard: integer): HResult; stdcall;
  2451. end;
  2452. //_AM_AUDIO_RENDERER_STAT_PARAM
  2453. const
  2454. AM_AUDREND_STAT_PARAM_BREAK_COUNT = 1;
  2455. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_BREAK_COUNT}
  2456. AM_AUDREND_STAT_PARAM_SLAVE_MODE = AM_AUDREND_STAT_PARAM_BREAK_COUNT + 1;
  2457. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_MODE}
  2458. AM_AUDREND_STAT_PARAM_SILENCE_DUR = AM_AUDREND_STAT_PARAM_SLAVE_MODE + 1;
  2459. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SILENCE_DUR}
  2460. AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR = AM_AUDREND_STAT_PARAM_SILENCE_DUR + 1;
  2461. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR}
  2462. AM_AUDREND_STAT_PARAM_DISCONTINUITIES = AM_AUDREND_STAT_PARAM_LAST_BUFFER_DUR + 1;
  2463. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_DISCONTINUITIES}
  2464. AM_AUDREND_STAT_PARAM_SLAVE_RATE = AM_AUDREND_STAT_PARAM_DISCONTINUITIES + 1;
  2465. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_RATE}
  2466. AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR = AM_AUDREND_STAT_PARAM_SLAVE_RATE + 1;
  2467. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR}
  2468. AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR = AM_AUDREND_STAT_PARAM_SLAVE_DROPWRITE_DUR + 1;
  2469. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR}
  2470. AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR = AM_AUDREND_STAT_PARAM_SLAVE_HIGHLOWERROR + 1;
  2471. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR}
  2472. AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR = AM_AUDREND_STAT_PARAM_SLAVE_LASTHIGHLOWERROR + 1;
  2473. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR}
  2474. AM_AUDREND_STAT_PARAM_BUFFERFULLNESS = AM_AUDREND_STAT_PARAM_SLAVE_ACCUMERROR + 1;
  2475. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_BUFFERFULLNESS}
  2476. AM_AUDREND_STAT_PARAM_JITTER = AM_AUDREND_STAT_PARAM_BUFFERFULLNESS + 1;
  2477. {$EXTERNALSYM AM_AUDREND_STAT_PARAM_JITTER}
  2478. type
  2479. {$HPPEMIT 'typedef System::DelphiInterface<IAMAudioRendererStats> _di_IAMAudioRendererStats;'}
  2480. {$EXTERNALSYM IAMAudioRendererStats}
  2481. IAMAudioRendererStats = interface(IUnknown)
  2482. ['{22320CB2-D41A-11d2-BF7C-D7CB9DF0BF93}']
  2483. (*** IAMAudioRendererStats methods ***)
  2484. function GetStatParam(dwParam: DWORD; out pdwParam1, pdwParam2: DWORD): HResult; stdcall;
  2485. end;
  2486. //AM_INTF_SEARCH_FLAGS
  2487. const
  2488. AM_INTF_SEARCH_INPUT_PIN = $1;
  2489. {$EXTERNALSYM AM_INTF_SEARCH_INPUT_PIN}
  2490. AM_INTF_SEARCH_OUTPUT_PIN = $2;
  2491. {$EXTERNALSYM AM_INTF_SEARCH_OUTPUT_PIN}
  2492. AM_INTF_SEARCH_FILTER = $4;
  2493. {$EXTERNALSYM AM_INTF_SEARCH_FILTER}
  2494. type
  2495. {$HPPEMIT 'typedef System::DelphiInterface<IAMGraphStreams> _di_IAMGraphStreams;'}
  2496. {$EXTERNALSYM IAMGraphStreams}
  2497. IAMGraphStreams = interface(IUnknown)
  2498. ['{632105FA-072E-11d3-8AF9-00C04FB6BD3D}']
  2499. (*** IAMGraphStreams methods ***)
  2500. function FindUpstreamInterface(pPin: IPin; const riid: TGUID; out ppvInterface;
  2501. dwFlags: DWORD): HResult; stdcall;
  2502. function SyncUsingStreamOffset(bUseStreamOffset: BOOL): HResult; stdcall;
  2503. function SetMaxGraphLatency(rtMaxGraphLatency: TReferenceTime): HResult; stdcall;
  2504. end;
  2505. //AMOVERLAYFX
  2506. const
  2507. AMOVERFX_NOFX = 0;
  2508. {$EXTERNALSYM AMOVERFX_NOFX}
  2509. AMOVERFX_MIRRORLEFTRIGHT = $2;
  2510. {$EXTERNALSYM AMOVERFX_MIRRORLEFTRIGHT}
  2511. AMOVERFX_MIRRORUPDOWN = $4;
  2512. {$EXTERNALSYM AMOVERFX_MIRRORUPDOWN}
  2513. AMOVERFX_DEINTERLACE = $8;
  2514. {$EXTERNALSYM AMOVERFX_DEINTERLACE}
  2515. type
  2516. {$HPPEMIT 'typedef System::DelphiInterface<IAMOverlayFX> _di_IAMOverlayFX;'}
  2517. {$EXTERNALSYM IAMOverlayFX}
  2518. IAMOverlayFX = interface(IUnknown)
  2519. ['{62fae250-7e65-4460-bfc9-6398b322073c}']
  2520. (*** IAMOverlayFX methods ***)
  2521. function QueryOverlayFXCaps(out lpdwOverlayFXCaps: DWORD): HResult; stdcall;
  2522. function SetOverlayFX(dwOverlayFX: DWORD): HResult; stdcall;
  2523. function GetOverlayFX(out lpdwOverlayFX: DWORD): HResult; stdcall;
  2524. end;
  2525. {$HPPEMIT 'typedef System::DelphiInterface<IAMOpenProgress> _di_IAMOpenProgress;'}
  2526. {$EXTERNALSYM IAMOpenProgress}
  2527. IAMOpenProgress = interface(IUnknown)
  2528. ['{8E1C39A1-DE53-11cf-AA63-0080C744528D}']
  2529. (*** IAMOpenProgress methods ***)
  2530. function QueryProgress(out pllTotal, pllCurrent: int64): HResult; stdcall;
  2531. function AbortOperation: HResult; stdcall;
  2532. end;
  2533. {$HPPEMIT 'typedef System::DelphiInterface<IMpeg2Demultiplexer> _di_IMpeg2Demultiplexer;'}
  2534. {$EXTERNALSYM IMpeg2Demultiplexer}
  2535. IMpeg2Demultiplexer = interface(IUnknown)
  2536. ['{436eee9c-264f-4242-90e1-4e330c107512}']
  2537. (*** IMpeg2Demultiplexer methods ***)
  2538. function CreateOutputPin(var pMediaType: TAMMediaType; pszPinName: PWideChar;
  2539. out ppIPin: IPin): HResult; stdcall;
  2540. function SetOutputPinMediaType(pszPinName: PWideChar; var pMediaType: TAMMediaType): HResult; stdcall;
  2541. function DeleteOutputPin(pszPinName: PWideChar): HResult; stdcall;
  2542. end;
  2543. const
  2544. MPEG2_PROGRAM_STREAM_MAP = $00000000;
  2545. {$EXTERNALSYM MPEG2_PROGRAM_STREAM_MAP}
  2546. MPEG2_PROGRAM_ELEMENTARY_STREAM = $00000001;
  2547. {$EXTERNALSYM MPEG2_PROGRAM_ELEMENTARY_STREAM}
  2548. MPEG2_PROGRAM_DIRECTORY_PES_PACKET = $00000002;
  2549. {$EXTERNALSYM MPEG2_PROGRAM_DIRECTORY_PES_PACKET}
  2550. MPEG2_PROGRAM_PACK_HEADER = $00000003;
  2551. {$EXTERNALSYM MPEG2_PROGRAM_PACK_HEADER}
  2552. MPEG2_PROGRAM_PES_STREAM = $00000004;
  2553. {$EXTERNALSYM MPEG2_PROGRAM_PES_STREAM}
  2554. MPEG2_PROGRAM_SYSTEM_HEADER = $00000005;
  2555. {$EXTERNALSYM MPEG2_PROGRAM_SYSTEM_HEADER}
  2556. SUBSTREAM_FILTER_VAL_NONE = $10000000;
  2557. {$EXTERNALSYM SUBSTREAM_FILTER_VAL_NONE}
  2558. type
  2559. PStreamIDMap = ^TStreamIDMap;
  2560. STREAM_ID_MAP = record
  2561. stream_id : ULONG;
  2562. dwMediaSampleContent : DWORD;
  2563. ulSubstreamFilterValue: ULONG;
  2564. iDataOffset : integer;
  2565. end;
  2566. {$EXTERNALSYM STREAM_ID_MAP}
  2567. TStreamIDMap = STREAM_ID_MAP;
  2568. {$HPPEMIT 'typedef System::DelphiInterface<IEnumStreamIdMap> _di_IEnumStreamIdMap;'}
  2569. {$EXTERNALSYM IEnumStreamIdMap}
  2570. IEnumStreamIdMap = interface(IUnknown)
  2571. ['{945C1566-6202-46fc-96C7-D87F289C6534}']
  2572. (*** IEnumStreamIdMap methods ***)
  2573. function Next(cRequest: ULONG; pStreamIdMap: PStreamIDMap;
  2574. out pcReceived: ULONG): HResult; stdcall;
  2575. function Skip(cRecords: ULONG): HResult; stdcall;
  2576. function Reset: HResult; stdcall;
  2577. function Clone(out ppIEnumStreamIdMap: IEnumStreamIdMap): HResult; stdcall;
  2578. end;
  2579. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2StreamIdMap> _di_IMPEG2StreamIdMap;'}
  2580. {$EXTERNALSYM IMPEG2StreamIdMap}
  2581. IMPEG2StreamIdMap = interface(IUnknown)
  2582. ['{D0E04C47-25B8-4369-925A-362A01D95444}']
  2583. (*** IMPEG2StreamIdMap methods ***)
  2584. function MapStreamId(ulStreamId: ULONG; MediaSampleContent: DWORD;
  2585. ulSubstreamFilterValue: ULONG; iDataOffset: integer): HResult; stdcall;
  2586. function UnmapStreamId(culStreamId: ULONG; var pulStreamId: ULONG): HResult; stdcall;
  2587. function EnumStreamIdMap(out ppIEnumStreamIdMap: IEnumStreamIdMap): HResult; stdcall;
  2588. end;
  2589. {$NODEFINE IAMovie} // deprecated
  2590. IAMovie = interface(IFilterGraph)
  2591. ['{359ACE10-7688-11CF-8B23-00805F6CEF60}']
  2592. (*** IAMovie methods ***)
  2593. function Connect(ppinOut, ppinIn: IPin): HResult; stdcall;
  2594. function Render(ppinOut: IPin): HResult; stdcall;
  2595. function Run: HResult; stdcall;
  2596. function Pause: HResult; stdcall;
  2597. function Stop: HResult; stdcall;
  2598. function GetState(msTimeout: DWORD; out pfs: TFilterState): HResult; stdcall;
  2599. function RenderFile(strFilename: PWideChar): HResult; stdcall;
  2600. function AddSourceFilter(strFilename: PWideChar; out ppUnk: IBaseFilter): HResult; stdcall;
  2601. function GetEventHandle(out hEvent: THandle): HResult; stdcall;
  2602. function GetEvent(out lEventCode, lParam1, lParam2: Longint; msTimeout: DWORD): HResult; stdcall;
  2603. function WaitForCompletion(msTimeout: DWORD; out pEvCode: Longint): HResult; stdcall;
  2604. function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
  2605. function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
  2606. function get_Duration(out plength: TRefTime): HResult; stdcall;
  2607. function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
  2608. function get_CurrentPosition(out pllTime: TRefTime): HResult; stdcall;
  2609. function get_StopTime(out pllTime: TRefTime): HResult; stdcall;
  2610. function put_StopTime(llTime: TRefTime): HResult; stdcall;
  2611. function get_PrerollTime(out pllTime: TRefTime): HResult; stdcall;
  2612. function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
  2613. function put_Rate(dRate: double): HResult; stdcall;
  2614. function get_Rate(out pdRate: double): HResult; stdcall;
  2615. function RemoveAllFilters: HResult; stdcall;
  2616. function Play: HResult; stdcall;
  2617. function PlayFile(strFilename: PWideChar): HResult; stdcall;
  2618. function EnumFiltersByInterface(const riid: TGUID;
  2619. out ppEnum: IEnumFilters): HResult; stdcall;
  2620. function EnumPins(out ppEnum: IEnumPins): HResult; stdcall;
  2621. function EnumPinsIn(out ppEnum: IEnumPins): HResult; stdcall;
  2622. function EnumPinsOut(out ppEnum: IEnumPins): HResult; stdcall;
  2623. function RenderAll: HResult; stdcall;
  2624. function RenderNewFile(strFilename: PWideChar): HResult; stdcall;
  2625. function FreeEventParams(lEvCode, lParam1, lParam2: Longint): HResult; stdcall;
  2626. end;
  2627. {$HPPEMIT 'typedef System::DelphiInterface<IRegisterServiceProvider> _di_IRegisterServiceProvider;'}
  2628. {$EXTERNALSYM IRegisterServiceProvider}
  2629. IRegisterServiceProvider = interface(IUnknown)
  2630. ['{7B3A2F01-0751-48DD-B556-004785171C54}']
  2631. (*** IRegisterServiceProvider methods ***)
  2632. function RegisterService(const guidService: TGUID; pUnkObject: IUnknown): HResult; stdcall;
  2633. end;
  2634. {$HPPEMIT 'typedef System::DelphiInterface<IAMClockSlave> _di_IAMClockSlave;'}
  2635. {$EXTERNALSYM IAMClockSlave}
  2636. IAMClockSlave = interface(IUnknown)
  2637. ['{9FD52741-176D-4b36-8F51-CA8F933223BE}']
  2638. (*** IAMClockSlave methods ***)
  2639. function SetErrorTolerance(dwTolerance: DWORD): HResult; stdcall;
  2640. function GetErrorTolerance(out dwTolerance: DWORD): HResult; stdcall;
  2641. end;
  2642. //---------------------------------------------------------------------
  2643. //
  2644. // IAMGraphBuilderCallback interface
  2645. //
  2646. // Interface which gives the app a chance to configure filters
  2647. // before a connection is attempted.
  2648. //
  2649. // If this interface is supported by the site passed in to the graph
  2650. // via IObjectWithSite::SetSite, the graph will call back with each
  2651. // filter it creates as part of the Render or Connect process. Does
  2652. // not call back for source filters. Filter may be discarded and not
  2653. // used in graph or may be connected and disconnected more than once
  2654. //
  2655. // The callback occurs with the graph lock held, so do not call into
  2656. // the graph again and do not wait on other threads calling into the
  2657. // graph.
  2658. //
  2659. //---------------------------------------------------------------------
  2660. {$HPPEMIT 'typedef System::DelphiInterface<IAMGraphBuilderCallback> _di_IAMGraphBuilderCallback;'}
  2661. {$EXTERNALSYM IAMGraphBuilderCallback}
  2662. IAMGraphBuilderCallback = interface(IUnknown)
  2663. ['{4995f511-9ddb-4f12-bd3b-f04611807b79}']
  2664. (*** IAMGraphBuilderCallback methods ***)
  2665. // graph builder selected a filter to create and attempt to
  2666. // connect. failure indicates filter should be rejected.
  2667. function SelectedFilter(pMon: IMoniker): HResult; stdcall;
  2668. // app configures filter during this call. failure indicates
  2669. // filter should be rejected.
  2670. function CreatedFilter(pFil: IBaseFilter): HResult; stdcall;
  2671. end;
  2672. // Note: Because this interface was not defined as a proper interface it is")
  2673. // supported under C++ only. Methods aren't stdcall.")
  2674. {$HPPEMIT 'typedef System::DelphiInterface<IAMFilterGraphCallback> _di_IAMFilterGraphCallback;'}
  2675. {$EXTERNALSYM IAMFilterGraphCallback}
  2676. IAMFilterGraphCallback = interface(IUnknown)
  2677. ['{56a868fd-0ad4-11ce-b0a3-0020af0ba770}']
  2678. (*** IAMFilterGraphCallback methods ***)
  2679. // S_OK means rendering complete, S_FALSE means retry now.")
  2680. // DCoder: thiscall fix. DON'T use ph1 and ph2, these are just placeholders
  2681. // to get the real address of pPin !!!
  2682. function UnableToRender(ph1, ph2: integer; pPin: IPin): HResult; // thiscall
  2683. end;
  2684. //------------------------------------------------------------------------------
  2685. // File: EncAPI.idl
  2686. //
  2687. // Desc: Encoder (and future decoder) interface definitions.
  2688. //
  2689. // Copyright (c) 1992 - 2002, Microsoft Corporation. All rights reserved.
  2690. //------------------------------------------------------------------------------
  2691. CodecAPIEventData = record
  2692. guid : TGUID;
  2693. dataLength : DWORD;
  2694. reserved : array[0..2] of DWORD;
  2695. // data: array[0..dataLength-1] of Byte;
  2696. end;
  2697. {$EXTERNALSYM CodecAPIEventData}
  2698. TCodecAPIEventData = CodecAPIEventData;
  2699. // Applications can pass the CODECAPI_VIDEO_ENCODER to IsSupported to test for video encoders
  2700. // Similarly, the GUIDs for audio encoders, video decoders, audio decoders and muxes can be
  2701. // used to test for the codec classification
  2702. //
  2703. // See uuids.h for a more detailed list.
  2704. {$HPPEMIT 'typedef System::DelphiInterface<ICodecAPI> _di_ICodecAPI;'}
  2705. {$EXTERNALSYM ICodecAPI}
  2706. ICodecAPI = interface(IUnknown)
  2707. ['{901db4c7-31ce-41a2-85dc-8fa0bf41b8da}']
  2708. (*** ICodecAPI methods ***)
  2709. // Query whether a given parameter is supported.
  2710. function IsSupported(const Api: TGUID): HResult; stdcall;
  2711. // Query whether a given parameter can be changed given the codec selection
  2712. // and other parameter selections.
  2713. function IsModifiable(const Api: TGUID): HResult; stdcall;
  2714. // Returns the valid range of values that the parameter supports should
  2715. // the parameter support a stepped range as opposed to a list of specific
  2716. // values. The support is [ValueMin .. ValueMax] by SteppingDelta.
  2717. //
  2718. // Ranged variant types must fall into one of the below types. Each
  2719. // parameter will, by definition, return a specific type.
  2720. //
  2721. // If the range has no stepping delta (any delta will do), the Stepping
  2722. // delta will be empty (VT_EMPTY).
  2723. function GetParameterRange(const Api: TGUID; out ValueMin, ValueMax,
  2724. SteppingDelta: OleVariant): HResult; stdcall;
  2725. // Returns the list of values supported by the given parameter as a
  2726. // COM allocated array. The total number of values will be placed in
  2727. // the ValuesCount parameter and the Values array will contain the
  2728. // individual values. This array must be freed by the caller through
  2729. // CoTaskMemFree().
  2730. function GetParameterValues(const Api: TGUID; out Values: POleVariant;
  2731. out ValuesCount: ULONG): HResult; stdcall;
  2732. // Get the default value for a parameter, if one exists. Otherwise,
  2733. // an error will be returned.
  2734. function GetDefaultValue(const Aoi: TGUID; out Value: OleVariant): HResult; stdcall;
  2735. // Get the current value of a parameter.
  2736. function GetValue(const Api: TGUID; out Value: OleVariant): HResult;
  2737. // Set the current value of a parameter.
  2738. function SetValue(const Api: TGUID; var Value: OleVariant): HResult; stdcall;
  2739. // new methods beyond IEncoderAPI
  2740. // Enable events to be reported for the given event GUID. For DShow
  2741. // events, the event is returned as
  2742. // (EC_CODECAPI_EVENT, lParam=userData, lParam2=CodecAPIEventData* Data)
  2743. // where
  2744. // - the CodecAPIEventData is COM allocated memory and must be handled and freed
  2745. // by the application using CoTaskMemFree().
  2746. // - the userData is the same pointer passed to RegisterForEvent
  2747. //
  2748. // Each data block starts with the following structure:
  2749. // struct CodecAPIEventData
  2750. // {
  2751. // GUID guid;
  2752. // DWORD dataLength;
  2753. // DWORD reserved[3]; // pad to 16 byte alignment
  2754. // BYTE data[dataLength];
  2755. // }
  2756. // The guid parameter identifies the event. The data associated with the event follows the
  2757. // structure (represented by the variable length BYTE data[dataLength] array).
  2758. //
  2759. // If guid is equal to CODECAPI_CHANGELISTS, then data is an array of GUIDs that changed as
  2760. // a result of setting the parameter, as follows:
  2761. // GUID changedGuids[ header.dataLength / sizeof(GUID) ]
  2762. //
  2763. // The current array is limited, so a driver may send multiple messages if the array size is
  2764. // exceeded.
  2765. //
  2766. function RegisterForEvent(const Api: TGUID; userData: Pointer): HResult; stdcall;
  2767. // Disable event reporting for the given event GUID.
  2768. function UnregisterForEvent(const Api: TGUID): HResult; stdcall;
  2769. // SetAllDefaults
  2770. function SetAllDefaults: HResult; stdcall;
  2771. // Extended SetValue & SetAllDefaults:
  2772. // Changes the current value of a parameter and returns back an alteration list
  2773. // The secondary arguments return back a list of other settings
  2774. // that changed as a result of the SetValue() call (for UI updates etc)
  2775. // The client must free the buffer.
  2776. function SetValueWithNotify(const Api: TGUID; var Value: Olevariant;
  2777. out ChangedParam: PGUID; out ChangedParamCount: ULONG): HResult; stdcall;
  2778. function SetAllDefaultsWithNotify(out ChangedParam: PGUID;
  2779. out ChangedParamCount: ULONG): HResult; stdcall;
  2780. // Load the current settings from a stream
  2781. function GetAllSettings(Stream: IStream): HResult; stdcall;
  2782. // Save the current settings to a stream
  2783. function SetAllSettings(Stream: IStream): HResult; stdcall;
  2784. function SetAllSettingsWithNotify(Stream: IStream; out ChangedParam: PGUID;
  2785. out ChangedParamCount: ULONG): HResult; stdcall;
  2786. end;
  2787. {$HPPEMIT 'typedef System::DelphiInterface<IGetCapabilitiesKey> _di_IGetCapabilitiesKey;'}
  2788. {$EXTERNALSYM IGetCapabilitiesKey}
  2789. IGetCapabilitiesKey = interface(IUnknown)
  2790. ['{a8809222-07bb-48ea-951c-33158100625b}']
  2791. (*** IGetCapabilitiesKey methods ***)
  2792. function GetCapabilitiesKey(out pHKey: HKEY): HResult; stdcall;
  2793. end;
  2794. // -----------------------------------------------------------------------------------------
  2795. // From this point on, this is retained for backwards compatiblity only
  2796. // Do not use this for future encoders
  2797. // -----------------------------------------------------------------------------------------
  2798. {$HPPEMIT 'typedef System::DelphiInterface<IEncoderAPI> _di_IEncoderAPI;'}
  2799. {$EXTERNALSYM IEncoderAPI}
  2800. IEncoderAPI = interface(IUnknown)
  2801. ['{70423839-6ACC-4b23-B079-21DBF08156A5}']
  2802. (*** IEncoderAPI methods ***)
  2803. function IsSupported(const Api: TGUID): HResult; stdcall;
  2804. function IsAvailable(const Api: TGUID): HResult; stdcall;
  2805. function GetParameterRange(const Api: TGUID; out ValueMin, ValueMax,
  2806. SteppingDelta: OleVariant): HResult; stdcall;
  2807. function GetParameterValues(const Api: TGUID; out Values: POleVariant;
  2808. out ValuesCount: ULONG): HResult; stdcall;
  2809. function GetDefaultValue (const Api: TGUID; out Value: OleVariant): HResult; stdcall;
  2810. function GetValue(const Api: TGUID; out Value: OleVariant): HResult; stdcall;
  2811. function SetValue(const Api: TGUID; var Value: OleVariant): HResult; stdcall;
  2812. end;
  2813. {$HPPEMIT 'typedef System::DelphiInterface<IVideoEncoder> _di_IVideoEncoder;'}
  2814. {$EXTERNALSYM IVideoEncoder}
  2815. IVideoEncoder = interface(IEncoderAPI)
  2816. ['{02997C3B-8E1B-460e-9270-545E0DE9563E}']
  2817. (*** IVideoEncoder methods ***)
  2818. end;
  2819. //---------------------------------------------------------------------
  2820. //
  2821. // Old Encoder API Interfaces
  2822. //
  2823. //---------------------------------------------------------------------
  2824. VIDEOENCODER_BITRATE_MODE = (
  2825. // Bit rate used for encoding is constant
  2826. ConstantBitRate,
  2827. // Bit rate used for encoding is variable with the specified bitrate used
  2828. // as a guaranteed average over a specified window. The default window
  2829. // size is considered to be 5 minutes.
  2830. VariableBitRateAverage,
  2831. // Bit rate used for encoding is variable with the specified bitrate used
  2832. // as a peak rate over a specified window. The default window size
  2833. // is considered to be 500ms (classically one GOP).
  2834. VariableBitRatePeak
  2835. );
  2836. {$EXTERNALSYM VIDEOENCODER_BITRATE_MODE}
  2837. TVideoEncoderBitrateMode = VIDEOENCODER_BITRATE_MODE;
  2838. const
  2839. AM_GETDECODERCAP_QUERY_VMR_SUPPORT = $00000001;
  2840. {$EXTERNALSYM AM_GETDECODERCAP_QUERY_VMR_SUPPORT}
  2841. VMR_NOTSUPPORTED = $00000000;
  2842. {$EXTERNALSYM VMR_NOTSUPPORTED}
  2843. VMR_SUPPORTED = $00000001;
  2844. {$EXTERNALSYM VMR_SUPPORTED}
  2845. AM_QUERY_DECODER_VMR_SUPPORT = $00000001;
  2846. {$EXTERNALSYM AM_QUERY_DECODER_VMR_SUPPORT}
  2847. AM_QUERY_DECODER_DXVA_1_SUPPORT = $00000002;
  2848. {$EXTERNALSYM AM_QUERY_DECODER_DXVA_1_SUPPORT}
  2849. AM_QUERY_DECODER_DVD_SUPPORT = $00000003;
  2850. {$EXTERNALSYM AM_QUERY_DECODER_DVD_SUPPORT}
  2851. AM_QUERY_DECODER_ATSC_SD_SUPPORT = $00000004;
  2852. {$EXTERNALSYM AM_QUERY_DECODER_ATSC_SD_SUPPORT}
  2853. AM_QUERY_DECODER_ATSC_HD_SUPPORT = $00000005;
  2854. {$EXTERNALSYM AM_QUERY_DECODER_ATSC_HD_SUPPORT}
  2855. AM_GETDECODERCAP_QUERY_VMR9_SUPPORT = $00000006;
  2856. {$EXTERNALSYM AM_GETDECODERCAP_QUERY_VMR9_SUPPORT}
  2857. DECODER_CAP_NOTSUPPORTED = $00000000;
  2858. {$EXTERNALSYM DECODER_CAP_NOTSUPPORTED}
  2859. DECODER_CAP_SUPPORTED = $00000001;
  2860. {$EXTERNALSYM DECODER_CAP_SUPPORTED}
  2861. CDEF_CLASS_DEFAULT = $0001;
  2862. {$EXTERNALSYM CDEF_CLASS_DEFAULT}
  2863. CDEF_BYPASS_CLASS_MANAGER = $0002;
  2864. {$EXTERNALSYM CDEF_BYPASS_CLASS_MANAGER}
  2865. //CDEF_CLASS_LEGACY = $0004;
  2866. CDEF_MERIT_ABOVE_DO_NOT_USE = $0008;
  2867. {$EXTERNALSYM CDEF_MERIT_ABOVE_DO_NOT_USE}
  2868. CDEF_DEVMON_CMGR_DEVICE = $0010;
  2869. {$EXTERNALSYM CDEF_DEVMON_CMGR_DEVICE}
  2870. CDEF_DEVMON_DMO = $0020;
  2871. {$EXTERNALSYM CDEF_DEVMON_DMO}
  2872. CDEF_DEVMON_PNP_DEVICE = $0040;
  2873. {$EXTERNALSYM CDEF_DEVMON_PNP_DEVICE}
  2874. CDEF_DEVMON_FILTER = $0080;
  2875. {$EXTERNALSYM CDEF_DEVMON_FILTER}
  2876. CDEF_DEVMON_SELECTIVE_MASK = $00f0;
  2877. {$EXTERNALSYM CDEF_DEVMON_SELECTIVE_MASK}
  2878. type
  2879. {$HPPEMIT 'typedef System::DelphiInterface<IAMDecoderCaps> _di_IAMDecoderCaps;'}
  2880. {$EXTERNALSYM IAMDecoderCaps}
  2881. IAMDecoderCaps = interface(IUnknown)
  2882. ['{c0dff467-d499-4986-972b-e1d9090fa941}']
  2883. (*** IAMDecoderCaps methods ***)
  2884. function GetDecoderCaps(dwCapIndex: DWORD; out lpdwCap: DWORD): HResult; stdcall;
  2885. end;
  2886. ///////////////////////////////////////////////////////////////////////////////
  2887. //
  2888. // IAMCertifiedOutputProtection
  2889. //
  2890. ///////////////////////////////////////////////////////////////////////////////
  2891. PAMCOPPSignature = ^TAMCOPPSignature;
  2892. AMCOPPSignature = packed record
  2893. Signature: array[0..255] of byte;
  2894. end;
  2895. {.$EXTERNALSYM AMCOPPSignature}
  2896. TAMCOPPSignature = AMCOPPSignature;
  2897. AMCOPPCommand = packed record
  2898. macKDI: TGUID; // 16 bytes
  2899. guidCommandID: TGUID; // 16 bytes
  2900. dwSequence: DWORD; // 4 bytes
  2901. cbSizeData: DWORD; // 4 bytes
  2902. CommandData: array[0..4055] of byte; // 4056 bytes (4056+4+4+16+16 = 4096)
  2903. end;
  2904. {.$EXTERNALSYM AMCOPPCommand}
  2905. TAMCOPPCommand = AMCOPPCommand;
  2906. LPAMCOPPCommand = ^AMCOPPCommand;
  2907. {.$EXTERNALSYM LPAMCOPPCommand}
  2908. PAMCOPPCommand = LPAMCOPPCommand;
  2909. AMCOPPStatusInput = packed record
  2910. rApp: TGUID; // 16 bytes
  2911. guidStatusRequestID: TGUID;// 16 bytes
  2912. dwSequence: DWORD; // 4 bytes
  2913. cbSizeData: DWORD; // 4 bytes
  2914. StatusData: array[0..4055] of byte; // 4056 bytes (4056+4+4+16+16 = 4096)
  2915. end;
  2916. {.$EXTERNALSYM AMCOPPStatusInput}
  2917. TAMCOPPStatusInput = AMCOPPStatusInput;
  2918. LPAMCOPPStatusInput = ^AMCOPPStatusInput;
  2919. {.$EXTERNALSYM LPAMCOPPStatusInput}
  2920. PAMCOPPStatusInput = LPAMCOPPStatusInput;
  2921. AMCOPPStatusOutput = packed record
  2922. macKDI: TGUID; // 16 bytes
  2923. cbSizeData: DWORD; // 4 bytes
  2924. COPPStatus: array[0..4075] of byte; // 4076 bytes (4076+16+4 = 4096)
  2925. end;
  2926. {.$EXTERNALSYM AMCOPPStatusOutput}
  2927. TAMCOPPStatusOutput = AMCOPPStatusOutput;
  2928. LPAMCOPPStatusOutput = ^AMCOPPStatusOutput;
  2929. {.$EXTERNALSYM LPAMCOPPStatusOutput}
  2930. PAMCOPPStatusOutput = LPAMCOPPStatusOutput;
  2931. {.$HPPEMIT 'typedef System::DelphiInterface<IAMCertifiedOutputProtection> _di_IAMCertifiedOutputProtection;'}
  2932. {.$EXTERNALSYM IAMCertifiedOutputProtection}
  2933. IAMCertifiedOutputProtection = interface(IUnknown)
  2934. ['{6FEDED3E-0FF1-4901-A2F1-43F7012C8515}']
  2935. function KeyExchange(
  2936. pRandom: PGUID; // 128-bit random number generated by Graphics Driver
  2937. var VarLenCertGH: PByte; // Graphics Hardware certificate, memory released by CoTaskMemFree
  2938. pdwLengthCertGH: PDWORD // Length of Graphics Hardware certificate
  2939. ): HRESULT; stdcall;
  2940. // Concatenation of 128-bit random data security session key,
  2941. // 128-bit random data integrity session key, 32-bit random
  2942. // starting status sequence number and 32-bit random starting
  2943. // command sequence number encrypted with the public key of
  2944. // the graphic hardware. This value is 2048 bits long.
  2945. function SessionSequenceStart(pSig: PAMCOPPSignature): HRESULT; stdcall;
  2946. function ProtectionCommand(cmd: PAMCOPPCommand): HRESULT; stdcall; // Encrypted command
  2947. function ProtectionStatus(
  2948. pStatusInput: PAMCOPPStatusInput; // Encrypted Status request
  2949. pStatusOutput: PAMCOPPStatusOutput): HRESULT; stdcall; // Encrypted Status results
  2950. end;
  2951. ////////////////////////////////////////////////////////////////////////////////
  2952. {$HPPEMIT 'typedef System::DelphiInterface<ICreateDevEnum> _di_ICreateDevEnum;'}
  2953. {$EXTERNALSYM ICreateDevEnum}
  2954. ICreateDevEnum = interface(IUnknown)
  2955. ['{29840822-5B84-11D0-BD3B-00A0C911CE86}']
  2956. (*** ICreateDevEnum methods ***)
  2957. function CreateClassEnumerator(const clsidDeviceClass: TGUID;
  2958. out ppEnumMoniker: IEnumMoniker; dwFlags: DWORD): HResult; stdcall;
  2959. end;
  2960. {$HPPEMIT 'typedef System::DelphiInterface<IFilterMapper3> _di_IFilterMapper3;'}
  2961. {$EXTERNALSYM IFilterMapper3}
  2962. IFilterMapper3 = interface(IFilterMapper2)
  2963. ['{b79bb0b1-33c1-11d1-abe1-00a0c905f375}']
  2964. (*** IFilterMapper3 methods ***)
  2965. function GetICreateDevEnum(out ppEnum: ICreateDevEnum): HResult; stdcall;
  2966. end;
  2967. //replacement for DVD_TextStringType in GetDVDTextStringAsNative, GetDVDTextStringAsUnicode
  2968. {$IFNDEF COMPILER6_UP}
  2969. type
  2970. DVD_TextStringType = {$IFDEF TYPE_IDENTITY}type {$ENDIF}LongWord;
  2971. const
  2972. DVD_Struct_Volume = $00000001;
  2973. DVD_Struct_Title = $00000002;
  2974. DVD_Struct_ParentalID = $00000003;
  2975. DVD_Struct_PartOfTitle = $00000004;
  2976. DVD_Struct_Cell = $00000005;
  2977. DVD_Stream_Audio = $00000010;
  2978. DVD_Stream_Subpicture = $00000011;
  2979. DVD_Stream_Angle = $00000012;
  2980. DVD_Channel_Audio = $00000020;
  2981. DVD_General_Name = $00000030;
  2982. DVD_General_Comments = $00000031;
  2983. DVD_Title_Series = $00000038;
  2984. DVD_Title_Movie = $00000039;
  2985. DVD_Title_Video = $0000003A;
  2986. DVD_Title_Album = $0000003B;
  2987. DVD_Title_Song = $0000003C;
  2988. DVD_Title_Other = $0000003F;
  2989. DVD_Title_Sub_Series = $00000040;
  2990. DVD_Title_Sub_Movie = $00000041;
  2991. DVD_Title_Sub_Video = $00000042;
  2992. DVD_Title_Sub_Album = $00000043;
  2993. DVD_Title_Sub_Song = $00000044;
  2994. DVD_Title_Sub_Other = $00000047;
  2995. DVD_Title_Orig_Series = $00000048;
  2996. DVD_Title_Orig_Movie = $00000049;
  2997. DVD_Title_Orig_Video = $0000004A;
  2998. DVD_Title_Orig_Album = $0000004B;
  2999. DVD_Title_Orig_Song = $0000004C;
  3000. DVD_Title_Orig_Other = $0000004F;
  3001. DVD_Other_Scene = $00000050;
  3002. DVD_Other_Cut = $00000051;
  3003. DVD_Other_Take = $00000052;
  3004. {$ELSE}
  3005. type
  3006. DVD_TextStringType = (
  3007. DVD_Struct_Volume = $00000001,
  3008. DVD_Struct_Title = $00000002,
  3009. DVD_Struct_ParentalID = $00000003,
  3010. DVD_Struct_PartOfTitle = $00000004,
  3011. DVD_Struct_Cell = $00000005,
  3012. DVD_Stream_Audio = $00000010,
  3013. DVD_Stream_Subpicture = $00000011,
  3014. DVD_Stream_Angle = $00000012,
  3015. DVD_Channel_Audio = $00000020,
  3016. DVD_General_Name = $00000030,
  3017. DVD_General_Comments = $00000031,
  3018. DVD_Title_Series = $00000038,
  3019. DVD_Title_Movie = $00000039,
  3020. DVD_Title_Video = $0000003A,
  3021. DVD_Title_Album = $0000003B,
  3022. DVD_Title_Song = $0000003C,
  3023. DVD_Title_Other = $0000003F,
  3024. DVD_Title_Sub_Series = $00000040,
  3025. DVD_Title_Sub_Movie = $00000041,
  3026. DVD_Title_Sub_Video = $00000042,
  3027. DVD_Title_Sub_Album = $00000043,
  3028. DVD_Title_Sub_Song = $00000044,
  3029. DVD_Title_Sub_Other = $00000047,
  3030. DVD_Title_Orig_Series = $00000048,
  3031. DVD_Title_Orig_Movie = $00000049,
  3032. DVD_Title_Orig_Video = $0000004A,
  3033. DVD_Title_Orig_Album = $0000004B,
  3034. DVD_Title_Orig_Song = $0000004C,
  3035. DVD_Title_Orig_Other = $0000004F,
  3036. DVD_Other_Scene = $00000050,
  3037. DVD_Other_Cut = $00000051,
  3038. DVD_Other_Take = $00000052
  3039. );
  3040. {$ENDIF}
  3041. {$EXTERNALSYM DVD_TextStringType}
  3042. type
  3043. TDVDTextStringType = DVD_TextStringType;
  3044. // For IDVDControl2.SetOption flags
  3045. DVD_OPTION_FLAG = (
  3046. {$IFNDEF COMPILER6_UP}
  3047. DVD_Option_INVALID_0,
  3048. DVD_ResetOnStop,
  3049. {$ELSE}
  3050. DVD_ResetOnStop = 1,
  3051. {$ENDIF}
  3052. DVD_NotifyParentalLevelChange,
  3053. DVD_HMSF_TimeCodeEvents,
  3054. DVD_AudioDuringFFwdRew // default FALSE (or by reg) // DirectX9 Specific
  3055. );
  3056. {$EXTERNALSYM DVD_OPTION_FLAG}
  3057. TDVDOptionFlag = DVD_OPTION_FLAG;
  3058. tagDVD_DOMAIN = (
  3059. {$IFNDEF COMPILER6_UP}
  3060. DVD_DOMAIN_INVALID_0,
  3061. DVD_DOMAIN_FirstPlay,
  3062. {$ELSE}
  3063. DVD_DOMAIN_FirstPlay = 1,
  3064. {$ENDIF}
  3065. DVD_DOMAIN_VideoManagerMenu,
  3066. DVD_DOMAIN_VideoTitleSetMenu,
  3067. DVD_DOMAIN_Title,
  3068. DVD_DOMAIN_Stop
  3069. );
  3070. {$EXTERNALSYM tagDVD_DOMAIN}
  3071. DVD_DOMAIN = tagDVD_DOMAIN;
  3072. {$EXTERNALSYM DVD_DOMAIN}
  3073. TDVDDomain = DVD_DOMAIN;
  3074. tagDVD_MENU_ID = (
  3075. {$EXTERNALSYM tagDVD_MENU_ID}
  3076. {$IFNDEF COMPILER6_UP}
  3077. DVD_MENU_INVALID_0,
  3078. DVD_MENU_INVALID_1,
  3079. DVD_MENU_Title,
  3080. {$ELSE}
  3081. DVD_MENU_Title = 2,
  3082. {$ENDIF}
  3083. DVD_MENU_Root,
  3084. DVD_MENU_Subpicture,
  3085. DVD_MENU_Audio,
  3086. DVD_MENU_Angle,
  3087. DVD_MENU_Chapter
  3088. );
  3089. DVD_MENU_ID = tagDVD_MENU_ID;
  3090. {$EXTERNALSYM DVD_MENU_ID}
  3091. TDVDMenuID = DVD_MENU_ID;
  3092. tagDVD_DISC_SIDE = (
  3093. {$IFNDEF COMPILER6_UP}
  3094. DVD_SIDE_INVALID_0,
  3095. DVD_SIDE_A,
  3096. DVD_SIDE_B
  3097. {$ELSE}
  3098. DVD_SIDE_A = 1,
  3099. DVD_SIDE_B = 2
  3100. {$ENDIF}
  3101. );
  3102. {$EXTERNALSYM tagDVD_DISC_SIDE}
  3103. DVD_DISC_SIDE = tagDVD_DISC_SIDE;
  3104. {$EXTERNALSYM DVD_DISC_SIDE}
  3105. TDVDDiscSide = DVD_DISC_SIDE;
  3106. tagDVD_PREFERRED_DISPLAY_MODE = (
  3107. DISPLAY_CONTENT_DEFAULT,
  3108. DISPLAY_16x9,
  3109. DISPLAY_4x3_PANSCAN_PREFERRED,
  3110. DISPLAY_4x3_LETTERBOX_PREFERRED
  3111. );
  3112. {$EXTERNALSYM tagDVD_PREFERRED_DISPLAY_MODE}
  3113. DVD_PREFERRED_DISPLAY_MODE = tagDVD_PREFERRED_DISPLAY_MODE;
  3114. {$EXTERNALSYM DVD_PREFERRED_DISPLAY_MODE}
  3115. TDVDPreferredDisplayMode = DVD_PREFERRED_DISPLAY_MODE;
  3116. tagDVD_VIDEO_COMPRESSION = (
  3117. DVD_VideoCompression_Other,
  3118. DVD_VideoCompression_MPEG1,
  3119. DVD_VideoCompression_MPEG22
  3120. );
  3121. {$EXTERNALSYM tagDVD_VIDEO_COMPRESSION}
  3122. DVD_VIDEO_COMPRESSION = tagDVD_VIDEO_COMPRESSION;
  3123. {$EXTERNALSYM DVD_VIDEO_COMPRESSION}
  3124. TDVDVideoCompression = DVD_VIDEO_COMPRESSION;
  3125. tagDVD_AUDIO_APPMODE = (
  3126. DVD_AudioMode_None,
  3127. DVD_AudioMode_Karaoke,
  3128. DVD_AudioMode_Surround,
  3129. DVD_AudioMode_Other
  3130. );
  3131. {$EXTERNALSYM tagDVD_AUDIO_APPMODE}
  3132. DVD_AUDIO_APPMODE = tagDVD_AUDIO_APPMODE;
  3133. {$EXTERNALSYM DVD_AUDIO_APPMODE}
  3134. TDVDAudioAPPMode = DVD_AUDIO_APPMODE;
  3135. tagDVD_AUDIO_FORMAT = (
  3136. DVD_AudioFormat_AC3,
  3137. DVD_AudioFormat_MPEG1,
  3138. DVD_AudioFormat_MPEG1_DRC,
  3139. DVD_AudioFormat_MPEG2,
  3140. DVD_AudioFormat_MPEG2_DRC,
  3141. DVD_AudioFormat_LPCM,
  3142. DVD_AudioFormat_DTS,
  3143. DVD_AudioFormat_SDDS,
  3144. DVD_AudioFormat_Other
  3145. );
  3146. {$EXTERNALSYM tagDVD_AUDIO_FORMAT}
  3147. DVD_AUDIO_FORMAT = tagDVD_AUDIO_FORMAT;
  3148. {$EXTERNALSYM DVD_AUDIO_FORMAT}
  3149. TDVDAudioFormat = DVD_AUDIO_FORMAT;
  3150. // DVD_KARAOKE_DOWNMIX
  3151. const
  3152. DVD_Mix_0to0 = $1 ;
  3153. {$EXTERNALSYM DVD_Mix_0to0}
  3154. DVD_Mix_1to0 = $2 ;
  3155. {$EXTERNALSYM DVD_Mix_1to0}
  3156. DVD_Mix_2to0 = $4 ;
  3157. {$EXTERNALSYM DVD_Mix_2to0}
  3158. DVD_Mix_3to0 = $8 ;
  3159. {$EXTERNALSYM DVD_Mix_3to0}
  3160. DVD_Mix_4to0 = $10 ;
  3161. {$EXTERNALSYM DVD_Mix_4to0}
  3162. DVD_Mix_Lto0 = $20 ;
  3163. {$EXTERNALSYM DVD_Mix_Lto0}
  3164. DVD_Mix_Rto0 = $40 ;
  3165. {$EXTERNALSYM DVD_Mix_Rto0}
  3166. DVD_Mix_0to1 = $100 ;
  3167. {$EXTERNALSYM DVD_Mix_0to1}
  3168. DVD_Mix_1to1 = $200 ;
  3169. {$EXTERNALSYM DVD_Mix_1to1}
  3170. DVD_Mix_2to1 = $400 ;
  3171. {$EXTERNALSYM DVD_Mix_2to1}
  3172. DVD_Mix_3to1 = $800 ;
  3173. {$EXTERNALSYM DVD_Mix_3to1}
  3174. DVD_Mix_4to1 = $1000;
  3175. {$EXTERNALSYM DVD_Mix_4to1}
  3176. DVD_Mix_Lto1 = $2000;
  3177. {$EXTERNALSYM DVD_Mix_Lto1}
  3178. DVD_Mix_Rto1 = $4000;
  3179. {$EXTERNALSYM DVD_Mix_Rto1}
  3180. type
  3181. tagDVD_AUDIO_LANG_EXT = (
  3182. DVD_AUD_EXT_NotSpecified,
  3183. DVD_AUD_EXT_Captions,
  3184. DVD_AUD_EXT_VisuallyImpaired,
  3185. DVD_AUD_EXT_DirectorComments1,
  3186. DVD_AUD_EXT_DirectorComments2
  3187. );
  3188. {$EXTERNALSYM tagDVD_AUDIO_LANG_EXT}
  3189. DVD_AUDIO_LANG_EXT = tagDVD_AUDIO_LANG_EXT;
  3190. {$EXTERNALSYM DVD_AUDIO_LANG_EXT}
  3191. TDVDAudioLangExt = DVD_AUDIO_LANG_EXT;
  3192. tagDVD_SUBPICTURE_TYPE = (
  3193. DVD_SPType_NotSpecified,
  3194. DVD_SPType_Language,
  3195. DVD_SPType_Other
  3196. );
  3197. {$EXTERNALSYM tagDVD_SUBPICTURE_TYPE}
  3198. DVD_SUBPICTURE_TYPE = tagDVD_SUBPICTURE_TYPE;
  3199. {$EXTERNALSYM DVD_SUBPICTURE_TYPE}
  3200. TDVDSubpictureType = DVD_SUBPICTURE_TYPE;
  3201. tagDVD_SUBPICTURE_CODING = (
  3202. DVD_SPCoding_RunLength,
  3203. DVD_SPCoding_Extended,
  3204. DVD_SPCoding_Other
  3205. );
  3206. {$EXTERNALSYM tagDVD_SUBPICTURE_CODING}
  3207. DVD_SUBPICTURE_CODING = tagDVD_SUBPICTURE_CODING;
  3208. {$EXTERNALSYM DVD_SUBPICTURE_CODING}
  3209. TDVDSubpictureCoding = DVD_SUBPICTURE_CODING;
  3210. {$IFNDEF COMPILER6_UP}
  3211. tagDVD_SUBPICTURE_LANG_EXT = {$IFDEF TYPE_IDENTITY}type {$ENDIF}LongWord;
  3212. const
  3213. DVD_SP_EXT_NotSpecified = 0;
  3214. DVD_SP_EXT_Caption_Normal = 1;
  3215. DVD_SP_EXT_Caption_Big = 2;
  3216. DVD_SP_EXT_Caption_Children = 3;
  3217. DVD_SP_EXT_CC_Normal = 5;
  3218. DVD_SP_EXT_CC_Big = 6;
  3219. DVD_SP_EXT_CC_Children = 7;
  3220. DVD_SP_EXT_Forced = 9;
  3221. DVD_SP_EXT_DirectorComments_Normal = 13;
  3222. DVD_SP_EXT_DirectorComments_Big = 14;
  3223. DVD_SP_EXT_DirectorComments_Children = 15;
  3224. {$ELSE}
  3225. tagDVD_SUBPICTURE_LANG_EXT = (
  3226. DVD_SP_EXT_NotSpecified = 0,
  3227. DVD_SP_EXT_Caption_Normal = 1,
  3228. DVD_SP_EXT_Caption_Big = 2,
  3229. DVD_SP_EXT_Caption_Children = 3,
  3230. DVD_SP_EXT_CC_Normal = 5,
  3231. DVD_SP_EXT_CC_Big = 6,
  3232. DVD_SP_EXT_CC_Children = 7,
  3233. DVD_SP_EXT_Forced = 9,
  3234. DVD_SP_EXT_DirectorComments_Normal = 13,
  3235. DVD_SP_EXT_DirectorComments_Big = 14,
  3236. DVD_SP_EXT_DirectorComments_Children = 15
  3237. );
  3238. {$ENDIF}
  3239. type
  3240. {$EXTERNALSYM tagDVD_SUBPICTURE_LANG_EXT}
  3241. DVD_SUBPICTURE_LANG_EXT = tagDVD_SUBPICTURE_LANG_EXT;
  3242. {$EXTERNALSYM DVD_SUBPICTURE_LANG_EXT}
  3243. TDVDSubpictureLangExt = DVD_SUBPICTURE_LANG_EXT;
  3244. type
  3245. tagDVD_KARAOKE_ASSIGNMENT = (
  3246. DVD_Assignment_reserved0,
  3247. DVD_Assignment_reserved1,
  3248. DVD_Assignment_LR,
  3249. DVD_Assignment_LRM,
  3250. DVD_Assignment_LR1,
  3251. DVD_Assignment_LRM1,
  3252. DVD_Assignment_LR12,
  3253. DVD_Assignment_LRM12
  3254. );
  3255. {$EXTERNALSYM tagDVD_KARAOKE_ASSIGNMENT}
  3256. DVD_KARAOKE_ASSIGNMENT = tagDVD_KARAOKE_ASSIGNMENT;
  3257. {$EXTERNALSYM DVD_KARAOKE_ASSIGNMENT}
  3258. TDVDKaraokeAssignment = DVD_KARAOKE_ASSIGNMENT;
  3259. DVD_RELATIVE_BUTTON = (
  3260. {$IFNDEF COMPILER6_UP}
  3261. DVD_Relative_INVALID_0,
  3262. DVD_Relative_Upper,
  3263. DVD_Relative_Lower,
  3264. DVD_Relative_Left,
  3265. DVD_Relative_Right
  3266. {$ELSE}
  3267. DVD_Relative_Upper = 1,
  3268. DVD_Relative_Lower = 2,
  3269. DVD_Relative_Left = 3,
  3270. DVD_Relative_Right = 4
  3271. {$ENDIF}
  3272. );
  3273. {$EXTERNALSYM DVD_RELATIVE_BUTTON}
  3274. TDVDRelativeButton = DVD_RELATIVE_BUTTON;
  3275. DVD_REGISTER = {$IFDEF TYPE_IDENTITY}type {$ENDIF}Word;
  3276. {$EXTERNALSYM DVD_REGISTER}
  3277. GPRMArray = array[0..15] of DVD_REGISTER;
  3278. {$EXTERNALSYM GPRMArray}
  3279. SPRMArray = array[0..23] of DVD_REGISTER;
  3280. {$EXTERNALSYM SPRMArray}
  3281. TSPRMArray = SPRMArray;
  3282. tagDVD_ATR = record
  3283. ulCAT : ULONG;
  3284. pbATRI: array[0..767] of Byte;
  3285. end;
  3286. {$EXTERNALSYM tagDVD_ATR}
  3287. DVD_ATR = tagDVD_ATR;
  3288. {$EXTERNALSYM DVD_ATR}
  3289. TDVDAtr = tagDVD_ATR;
  3290. DVD_VideoATR = array[0..1] of Byte;
  3291. {$EXTERNALSYM DVD_VideoATR}
  3292. DVD_AudioATR = array[0..7] of Byte;
  3293. {$EXTERNALSYM DVD_AudioATR}
  3294. DVD_SubpictureATR = array[0..5] of Byte;
  3295. {$EXTERNALSYM DVD_SubpictureATR}
  3296. (*** DVD_SubpictureATR methods ***)
  3297. tagDVD_FRAMERATE = (
  3298. {$IFNDEF COMPILER6_UP}
  3299. DVD_FPS_INVALID_0,
  3300. DVD_FPS_25,
  3301. DVD_FPS_INVALID_2,
  3302. DVD_FPS_30NonDrop
  3303. {$ELSE}
  3304. DVD_FPS_25 = 1,
  3305. DVD_FPS_30NonDrop = 3
  3306. {$ENDIF}
  3307. );
  3308. {$EXTERNALSYM tagDVD_FRAMERATE}
  3309. DVD_FRAMERATE = tagDVD_FRAMERATE;
  3310. {$EXTERNALSYM DVD_FRAMERATE}
  3311. TDVDFramerate = DVD_FRAMERATE;
  3312. //typedef struct tagDVD_TIMECODE
  3313. //{
  3314. // ULONG Hours1 :4; // Hours
  3315. // ULONG Hours10 :4; // Tens of Hours
  3316. //
  3317. // ULONG Minutes1 :4; // Minutes
  3318. // ULONG Minutes10:4; // Tens of Minutes
  3319. //
  3320. // ULONG Seconds1 :4; // Seconds
  3321. // ULONG Seconds10:4; // Tens of Seconds
  3322. //
  3323. // ULONG Frames1 :4; // Frames
  3324. // ULONG Frames10 :2; // Tens of Frames
  3325. //
  3326. // ULONG FrameRateCode: 2; // use DVD_FRAMERATE to indicate frames/sec and drop/non-drop
  3327. //} DVD_TIMECODE;
  3328. tagDVD_TIMECODE = record
  3329. Hours1 : byte;
  3330. Hours10 : byte;
  3331. Minutes1 : byte;
  3332. Minutes10 : byte;
  3333. Seconds1 : byte;
  3334. Seconds10 : byte;
  3335. Frames1 : byte;
  3336. Frames10 : byte;
  3337. FrameRateCode: byte;
  3338. end;
  3339. {$EXTERNALSYM tagDVD_TIMECODE}
  3340. DVD_TIMECODE = tagDVD_TIMECODE;
  3341. {$EXTERNALSYM DVD_TIMECODE}
  3342. TDVDTimeCode = tagDVD_TIMECODE;
  3343. //DVD_TIMECODE_FLAGS
  3344. const
  3345. DVD_TC_FLAG_25fps = $1;
  3346. {$EXTERNALSYM DVD_TC_FLAG_25fps}
  3347. DVD_TC_FLAG_30fps = $2;
  3348. {$EXTERNALSYM DVD_TC_FLAG_30fps}
  3349. DVD_TC_FLAG_DropFrame = $4;
  3350. {$EXTERNALSYM DVD_TC_FLAG_DropFrame}
  3351. DVD_TC_FLAG_Interpolated = $8;
  3352. {$EXTERNALSYM DVD_TC_FLAG_Interpolated}
  3353. type
  3354. PDVDHMSFTimeCode = ^TDVDHMSFTimeCode;
  3355. tagDVD_HMSF_TIMECODE = record
  3356. {$EXTERNALSYM tagDVD_HMSF_TIMECODE}
  3357. bHours : BYTE;
  3358. bMinutes : BYTE;
  3359. bSeconds : BYTE;
  3360. bFrames : BYTE;
  3361. end;
  3362. DVD_HMSF_TIMECODE = tagDVD_HMSF_TIMECODE;
  3363. {$EXTERNALSYM DVD_HMSF_TIMECODE}
  3364. TDVDHMSFTimeCode = tagDVD_HMSF_TIMECODE;
  3365. tagDVD_PLAYBACK_LOCATION2 = record
  3366. TitleNum : ULONG;
  3367. ChapterNum : ULONG;
  3368. TimeCode : DVD_HMSF_TIMECODE;
  3369. TimeCodeFlags : ULONG;
  3370. end;
  3371. {$EXTERNALSYM tagDVD_PLAYBACK_LOCATION2}
  3372. DVD_PLAYBACK_LOCATION2 = tagDVD_PLAYBACK_LOCATION2;
  3373. {$EXTERNALSYM DVD_PLAYBACK_LOCATION2}
  3374. TDVDPlayBackLocation2 = tagDVD_PLAYBACK_LOCATION2;
  3375. tagDVD_PLAYBACK_LOCATION = record
  3376. TitleNum : ULONG;
  3377. ChapterNum : ULONG;
  3378. TimeCode : ULONG;
  3379. end;
  3380. {$EXTERNALSYM tagDVD_PLAYBACK_LOCATION}
  3381. DVD_PLAYBACK_LOCATION = tagDVD_PLAYBACK_LOCATION;
  3382. {$EXTERNALSYM DVD_PLAYBACK_LOCATION}
  3383. TDVDPlaybackLocation = tagDVD_PLAYBACK_LOCATION;
  3384. VALID_UOP_SOMTHING_OR_OTHER = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWord;
  3385. {$EXTERNALSYM VALID_UOP_SOMTHING_OR_OTHER}
  3386. VALID_UOP_FLAG = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWord;
  3387. {$EXTERNALSYM VALID_UOP_FLAG}
  3388. const
  3389. UOP_FLAG_Play_Title_Or_AtTime = $1;
  3390. {$EXTERNALSYM UOP_FLAG_Play_Title_Or_AtTime}
  3391. UOP_FLAG_Play_Chapter = $2;
  3392. {$EXTERNALSYM UOP_FLAG_Play_Chapter}
  3393. UOP_FLAG_Play_Title = $4;
  3394. {$EXTERNALSYM UOP_FLAG_Play_Title}
  3395. UOP_FLAG_Stop = $8;
  3396. {$EXTERNALSYM UOP_FLAG_Stop}
  3397. UOP_FLAG_ReturnFromSubMenu = $10;
  3398. {$EXTERNALSYM UOP_FLAG_ReturnFromSubMenu}
  3399. UOP_FLAG_Play_Chapter_Or_AtTime = $20;
  3400. {$EXTERNALSYM UOP_FLAG_Play_Chapter_Or_AtTime}
  3401. UOP_FLAG_PlayPrev_Or_Replay_Chapter = $40;
  3402. {$EXTERNALSYM UOP_FLAG_PlayPrev_Or_Replay_Chapter}
  3403. UOP_FLAG_PlayNext_Chapter = $80;
  3404. {$EXTERNALSYM UOP_FLAG_PlayNext_Chapter}
  3405. UOP_FLAG_Play_Forwards = $100;
  3406. {$EXTERNALSYM UOP_FLAG_Play_Forwards}
  3407. UOP_FLAG_Play_Backwards = $200;
  3408. {$EXTERNALSYM UOP_FLAG_Play_Backwards}
  3409. UOP_FLAG_ShowMenu_Title = $400;
  3410. {$EXTERNALSYM UOP_FLAG_ShowMenu_Title}
  3411. UOP_FLAG_ShowMenu_Root = $800;
  3412. {$EXTERNALSYM UOP_FLAG_ShowMenu_Root}
  3413. UOP_FLAG_ShowMenu_SubPic = $1000;
  3414. {$EXTERNALSYM UOP_FLAG_ShowMenu_SubPic}
  3415. UOP_FLAG_ShowMenu_Audio = $2000;
  3416. {$EXTERNALSYM UOP_FLAG_ShowMenu_Audio}
  3417. UOP_FLAG_ShowMenu_Angle = $4000;
  3418. {$EXTERNALSYM UOP_FLAG_ShowMenu_Angle}
  3419. UOP_FLAG_ShowMenu_Chapter = $8000;
  3420. {$EXTERNALSYM UOP_FLAG_ShowMenu_Chapter}
  3421. UOP_FLAG_Resume = $10000;
  3422. {$EXTERNALSYM UOP_FLAG_Resume}
  3423. UOP_FLAG_Select_Or_Activate_Button = $20000;
  3424. {$EXTERNALSYM UOP_FLAG_Select_Or_Activate_Button}
  3425. UOP_FLAG_Still_Off = $40000;
  3426. {$EXTERNALSYM UOP_FLAG_Still_Off}
  3427. UOP_FLAG_Pause_On = $80000;
  3428. {$EXTERNALSYM UOP_FLAG_Pause_On}
  3429. UOP_FLAG_Select_Audio_Stream = $100000;
  3430. {$EXTERNALSYM UOP_FLAG_Select_Audio_Stream}
  3431. UOP_FLAG_Select_SubPic_Stream = $200000;
  3432. {$EXTERNALSYM UOP_FLAG_Select_SubPic_Stream}
  3433. UOP_FLAG_Select_Angle = $400000;
  3434. {$EXTERNALSYM UOP_FLAG_Select_Angle}
  3435. UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode = $800000;
  3436. {$EXTERNALSYM UOP_FLAG_Select_Karaoke_Audio_Presentation_Mode}
  3437. UOP_FLAG_Select_Video_Mode_Preference = $1000000;
  3438. {$EXTERNALSYM UOP_FLAG_Select_Video_Mode_Preference}
  3439. type
  3440. DVD_TextCharSet = (
  3441. DVD_CharSet_Unicode,
  3442. DVD_CharSet_ISO646,
  3443. DVD_CharSet_JIS_Roman_Kanji,
  3444. DVD_CharSet_ISO8859_1,
  3445. DVD_CharSet_ShiftJIS_Kanji_Roman_Katakana
  3446. );
  3447. {$EXTERNALSYM DVD_TextCharSet}
  3448. TDVDTextCharSet = DVD_TextCharSet;
  3449. const
  3450. DVD_TITLE_MENU = $000;
  3451. {$EXTERNALSYM DVD_TITLE_MENU}
  3452. DVD_STREAM_DATA_CURRENT = $800;
  3453. {$EXTERNALSYM DVD_STREAM_DATA_CURRENT}
  3454. DVD_STREAM_DATA_VMGM = $400;
  3455. {$EXTERNALSYM DVD_STREAM_DATA_VMGM}
  3456. DVD_STREAM_DATA_VTSM = $401;
  3457. {$EXTERNALSYM DVD_STREAM_DATA_VTSM}
  3458. DVD_DEFAULT_AUDIO_STREAM = $0f ;
  3459. {$EXTERNALSYM DVD_DEFAULT_AUDIO_STREAM}
  3460. type
  3461. tagDVD_DECODER_CAPS = record
  3462. dwSize : DWORD;
  3463. dwAudioCaps : DWORD;
  3464. dFwdMaxRateVideo : double;
  3465. dFwdMaxRateAudio : double;
  3466. dFwdMaxRateSP : double;
  3467. dBwdMaxRateVideo : double;
  3468. dBwdMaxRateAudio : double;
  3469. dBwdMaxRateSP : double;
  3470. dwRes1 : DWORD;
  3471. dwRes2 : DWORD;
  3472. dwRes3 : DWORD;
  3473. dwRes4 : DWORD;
  3474. end;
  3475. {$EXTERNALSYM tagDVD_DECODER_CAPS}
  3476. DVD_DECODER_CAPS = tagDVD_DECODER_CAPS;
  3477. {$EXTERNALSYM DVD_DECODER_CAPS}
  3478. TDVDDecoderCaps = tagDVD_DECODER_CAPS;
  3479. const
  3480. DVD_AUDIO_CAPS_AC3 = $00000001;
  3481. {$EXTERNALSYM DVD_AUDIO_CAPS_AC3}
  3482. DVD_AUDIO_CAPS_MPEG2 = $00000002;
  3483. {$EXTERNALSYM DVD_AUDIO_CAPS_MPEG2}
  3484. DVD_AUDIO_CAPS_LPCM = $00000004;
  3485. {$EXTERNALSYM DVD_AUDIO_CAPS_LPCM}
  3486. DVD_AUDIO_CAPS_DTS = $00000008;
  3487. {$EXTERNALSYM DVD_AUDIO_CAPS_DTS}
  3488. DVD_AUDIO_CAPS_SDDS = $00000010;
  3489. {$EXTERNALSYM DVD_AUDIO_CAPS_SDDS}
  3490. type
  3491. tagDVD_VideoAttributes = record
  3492. fPanscanPermitted : BOOL;
  3493. fLetterboxPermitted : BOOL;
  3494. ulAspectX : ULONG;
  3495. ulAspectY : ULONG;
  3496. ulFrameRate : ULONG;
  3497. ulFrameHeight : ULONG;
  3498. Compression : DVD_VIDEO_COMPRESSION;
  3499. fLine21Field1InGOP : BOOL;
  3500. fLine21Field2InGOP : BOOL;
  3501. ulSourceResolutionX : ULONG;
  3502. ulSourceResolutionY : ULONG;
  3503. fIsSourceLetterboxed : BOOL;
  3504. fIsFilmMode : BOOL;
  3505. end;
  3506. {$EXTERNALSYM tagDVD_VideoAttributes}
  3507. DVD_VideoAttributes = tagDVD_VideoAttributes;
  3508. {$EXTERNALSYM DVD_VideoAttributes}
  3509. TDVDVideoAttributes = tagDVD_VideoAttributes;
  3510. tagDVD_SubpictureAttributes = record
  3511. Type_ : DVD_SUBPICTURE_TYPE ;
  3512. CodingMode : DVD_SUBPICTURE_CODING ;
  3513. Language : LCID ;
  3514. LanguageExtension : DVD_SUBPICTURE_LANG_EXT ;
  3515. end;
  3516. {$EXTERNALSYM tagDVD_SubpictureAttributes}
  3517. DVD_SubpictureAttributes = tagDVD_SubpictureAttributes;
  3518. {$EXTERNALSYM DVD_SubpictureAttributes}
  3519. TDVDSubpictureAttributes = tagDVD_SubpictureAttributes;
  3520. tagDVD_TITLE_APPMODE = (
  3521. {$IFNDEF COMPILER6_UP}
  3522. DVD_AppMode_Not_Specified,
  3523. DVD_AppMode_Karaoke,
  3524. DVD_AppMode_INVALID_2,
  3525. DVD_AppMode_Other
  3526. {$ELSE}
  3527. DVD_AppMode_Not_Specified = 0,
  3528. DVD_AppMode_Karaoke = 1,
  3529. DVD_AppMode_Other = 3
  3530. {$ENDIF}
  3531. );
  3532. {$EXTERNALSYM tagDVD_TITLE_APPMODE}
  3533. DVD_TITLE_APPMODE = tagDVD_TITLE_APPMODE;
  3534. {$EXTERNALSYM DVD_TITLE_APPMODE}
  3535. TDVDTitleAPPMode = DVD_TITLE_APPMODE;
  3536. tagDVD_MUA_MixingInfo = record
  3537. fMixTo0 : BOOL;
  3538. fMixTo1 : BOOL;
  3539. fMix0InPhase : BOOL;
  3540. fMix1InPhase : BOOL;
  3541. dwSpeakerPosition : DWORD;
  3542. end;
  3543. {$EXTERNALSYM tagDVD_MUA_MixingInfo}
  3544. DVD_MUA_MixingInfo = tagDVD_MUA_MixingInfo;
  3545. {$EXTERNALSYM DVD_MUA_MixingInfo}
  3546. TDVDMUAMixingInfo = tagDVD_MUA_MixingInfo;
  3547. tagDVD_MUA_Coeff = record
  3548. log2_alpha : Double;
  3549. log2_beta : Double;
  3550. end;
  3551. {$EXTERNALSYM tagDVD_MUA_Coeff}
  3552. DVD_MUA_Coeff = tagDVD_MUA_Coeff;
  3553. {$EXTERNALSYM DVD_MUA_Coeff}
  3554. TDVDMUACoeff = tagDVD_MUA_Coeff;
  3555. tagDVD_MultichannelAudioAttributes = record
  3556. Info : array[0..7] of DVD_MUA_MixingInfo;
  3557. Coeff : array[0..7] of DVD_MUA_Coeff;
  3558. end;
  3559. {$EXTERNALSYM tagDVD_MultichannelAudioAttributes}
  3560. DVD_MultichannelAudioAttributes = tagDVD_MultichannelAudioAttributes;
  3561. {$EXTERNALSYM DVD_MultichannelAudioAttributes}
  3562. TDVDMultichannelAudioAttributes = tagDVD_MultichannelAudioAttributes;
  3563. // DVD_KARAOKE_CONTENTS
  3564. const
  3565. DVD_Karaoke_GuideVocal1 = $1;
  3566. {$EXTERNALSYM DVD_Karaoke_GuideVocal1}
  3567. DVD_Karaoke_GuideVocal2 = $2;
  3568. {$EXTERNALSYM DVD_Karaoke_GuideVocal2}
  3569. DVD_Karaoke_GuideMelody1 = $4;
  3570. {$EXTERNALSYM DVD_Karaoke_GuideMelody1}
  3571. DVD_Karaoke_GuideMelody2 = $8;
  3572. {$EXTERNALSYM DVD_Karaoke_GuideMelody2}
  3573. DVD_Karaoke_GuideMelodyA = $10;
  3574. {$EXTERNALSYM DVD_Karaoke_GuideMelodyA}
  3575. DVD_Karaoke_GuideMelodyB = $20;
  3576. {$EXTERNALSYM DVD_Karaoke_GuideMelodyB}
  3577. DVD_Karaoke_SoundEffectA = $40;
  3578. {$EXTERNALSYM DVD_Karaoke_SoundEffectA}
  3579. DVD_Karaoke_SoundEffectB = $80;
  3580. {$EXTERNALSYM DVD_Karaoke_SoundEffectB}
  3581. type
  3582. tagDVD_AudioAttributes = record
  3583. AppMode : DVD_AUDIO_APPMODE;
  3584. AppModeData : BYTE;
  3585. AudioFormat : DVD_AUDIO_FORMAT;
  3586. Language : LCID;
  3587. LanguageExtension : DVD_AUDIO_LANG_EXT;
  3588. fHasMultichannelInfo : BOOL;
  3589. dwFrequency : DWORD;
  3590. bQuantization : BYTE;
  3591. bNumberOfChannels : BYTE;
  3592. dwReserved : array[0..1] of DWORD;
  3593. end;
  3594. {$EXTERNALSYM tagDVD_AudioAttributes}
  3595. DVD_AudioAttributes = tagDVD_AudioAttributes;
  3596. {$EXTERNALSYM DVD_AudioAttributes}
  3597. TDVDAudioAttributes = tagDVD_AudioAttributes;
  3598. tagDVD_TitleMainAttributes = record
  3599. AppMode: DVD_TITLE_APPMODE ;
  3600. VideoAttributes : DVD_VideoAttributes;
  3601. ulNumberOfAudioStreams : ULONG ;
  3602. AudioAttributes : array[0..7] of DVD_AudioAttributes;
  3603. MultichannelAudioAttributes : array[0..7] of DVD_MultichannelAudioAttributes;
  3604. ulNumberOfSubpictureStreams : ULONG ;
  3605. SubpictureAttributes : array[0..31] of DVD_SubpictureAttributes;
  3606. end;
  3607. {$EXTERNALSYM tagDVD_TitleMainAttributes}
  3608. DVD_TitleAttributes = tagDVD_TitleMainAttributes;
  3609. {$EXTERNALSYM DVD_TitleAttributes}
  3610. TDVDTitleAttributes = tagDVD_TitleMainAttributes;
  3611. tagDVD_MenuAttributes = record
  3612. fCompatibleRegion : array[0..7] of BOOL;
  3613. VideoAttributes : DVD_VideoAttributes;
  3614. fAudioPresent : BOOL;
  3615. AudioAttributes : DVD_AudioAttributes;
  3616. fSubpicturePresent : BOOL;
  3617. SubpictureAttributes : DVD_SubpictureAttributes;
  3618. end;
  3619. {$EXTERNALSYM tagDVD_MenuAttributes}
  3620. DVD_MenuAttributes = tagDVD_MenuAttributes;
  3621. {$EXTERNALSYM DVD_MenuAttributes}
  3622. TDVDMenuAttributes = tagDVD_MenuAttributes;
  3623. tagDVD_KaraokeAttributes = record
  3624. bVersion : BYTE;
  3625. fMasterOfCeremoniesInGuideVocal1 : BOOL;
  3626. fDuet : BOOL;
  3627. ChannelAssignment : TDVDKaraokeAssignment;
  3628. wChannelContents : array[0..7] of WORD;
  3629. end;
  3630. {$EXTERNALSYM tagDVD_KaraokeAttributes}
  3631. DVD_KaraokeAttributes = tagDVD_KaraokeAttributes;
  3632. {$EXTERNALSYM DVD_KaraokeAttributes}
  3633. TDVDKaraokeAttributes = tagDVD_KaraokeAttributes;
  3634. const
  3635. DVD_PARENTAL_LEVEL_8 = $8000;
  3636. {$EXTERNALSYM DVD_PARENTAL_LEVEL_8}
  3637. DVD_PARENTAL_LEVEL_7 = $4000;
  3638. {$EXTERNALSYM DVD_PARENTAL_LEVEL_7}
  3639. DVD_PARENTAL_LEVEL_6 = $2000;
  3640. {$EXTERNALSYM DVD_PARENTAL_LEVEL_6}
  3641. DVD_PARENTAL_LEVEL_5 = $1000;
  3642. {$EXTERNALSYM DVD_PARENTAL_LEVEL_5}
  3643. DVD_PARENTAL_LEVEL_4 = $0800;
  3644. {$EXTERNALSYM DVD_PARENTAL_LEVEL_4}
  3645. DVD_PARENTAL_LEVEL_3 = $0400;
  3646. {$EXTERNALSYM DVD_PARENTAL_LEVEL_3}
  3647. DVD_PARENTAL_LEVEL_2 = $0200;
  3648. {$EXTERNALSYM DVD_PARENTAL_LEVEL_2}
  3649. DVD_PARENTAL_LEVEL_1 = $0100;
  3650. {$EXTERNALSYM DVD_PARENTAL_LEVEL_1}
  3651. type
  3652. DVD_CMD_FLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  3653. {$EXTERNALSYM DVD_CMD_FLAGS}
  3654. const
  3655. DVD_CMD_FLAG_None = $00000000;
  3656. {$EXTERNALSYM DVD_CMD_FLAG_None}
  3657. DVD_CMD_FLAG_Flush = $00000001;
  3658. {$EXTERNALSYM DVD_CMD_FLAG_Flush}
  3659. DVD_CMD_FLAG_SendEvents = $00000002;
  3660. {$EXTERNALSYM DVD_CMD_FLAG_SendEvents}
  3661. DVD_CMD_FLAG_Block = $00000004;
  3662. {$EXTERNALSYM DVD_CMD_FLAG_Block}
  3663. DVD_CMD_FLAG_StartWhenRendered = $00000008;
  3664. {$EXTERNALSYM DVD_CMD_FLAG_StartWhenRendered}
  3665. DVD_CMD_FLAG_EndAfterRendered = $00000010;
  3666. {$EXTERNALSYM DVD_CMD_FLAG_EndAfterRendered}
  3667. type
  3668. CountryCode = array[0..1] of BYTE;
  3669. {$HPPEMIT 'typedef System::DelphiInterface<IDvdState> _di_IDvdState;'}
  3670. {$EXTERNALSYM IDvdState}
  3671. IDvdState = interface(IUnknown)
  3672. ['{86303d6d-1c4a-4087-ab42-f711167048ef}']
  3673. (*** IDvdState methods ***)
  3674. function GetDiscID(out pullUniqueID: Double): HResult; stdcall;
  3675. function GetParentalLevel(out pulParentalLevel: ULONG): HResult; stdcall;
  3676. end;
  3677. {$HPPEMIT 'typedef System::DelphiInterface<IDvdCmd> _di_IDvdCmd;'}
  3678. {$EXTERNALSYM IDvdCmd}
  3679. IDvdCmd = interface(IUnknown)
  3680. ['{5A4A97E4-94EE-4A55-9751-74B5643AA27D}']
  3681. (*** IDvdCmd methods ***)
  3682. function WaitForStart: HResult; stdcall;
  3683. function WaitForEnd: HResult; stdcall;
  3684. end;
  3685. //Deprecated Interface
  3686. {$HPPEMIT 'typedef System::DelphiInterface<IDvdControl> _di_IDvdControl;'}
  3687. {$EXTERNALSYM IDvdControl}
  3688. IDvdControl = interface(IUnknown)
  3689. ['{A70EFE61-E2A3-11D0-A9BE-00AA0061BE93}']
  3690. (*** IDvdControl methods ***)
  3691. function TitlePlay(uiTitle: ULONG): HResult; stdcall;
  3692. function ChapterPlay(uiTitle: ULONG; uiChapter: ULONG): HResult; stdcall;
  3693. function TimePlay(uiTitle: ULONG; bcdTime: ULONG): HResult; stdcall;
  3694. function StopForResume: HResult; stdcall;
  3695. function GoUp: HResult; stdcall;
  3696. function TimeSearch(bcdTime: ULONG): HResult; stdcall;
  3697. function ChapterSearch(Chapter: ULONG): HResult; stdcall;
  3698. function PrevPGSearch: HResult; stdcall;
  3699. function TopPGSearch: HResult; stdcall;
  3700. function NextPGSearch: HResult; stdcall;
  3701. function ForwardScan(dwSpeed: double): HResult; stdcall;
  3702. function BackwardScan(dwSpeed: double): HResult; stdcall;
  3703. function MenuCall(MenuID: TDVDMenuID): HResult; stdcall;
  3704. function Resume: HResult; stdcall;
  3705. function UpperButtonSelect: HResult; stdcall;
  3706. function LowerButtonSelect: HResult; stdcall;
  3707. function LeftButtonSelect: HResult; stdcall;
  3708. function RightButtonSelect: HResult; stdcall;
  3709. function ButtonActivate: HResult; stdcall;
  3710. function ButtonSelectAndActivate(uiButton: ULONG): HResult; stdcall;
  3711. function StillOff: HResult; stdcall;
  3712. function PauseOn: HResult; stdcall;
  3713. function PauseOff: HResult; stdcall;
  3714. function MenuLanguageSelect(Language: LCID): HResult; stdcall;
  3715. function AudioStreamChange(nAudio: ULONG): HResult; stdcall;
  3716. function SubpictureStreamChange(nSubPicture: ULONG; bDisplay: BOOL): HResult; stdcall;
  3717. function AngleChange(ulAngle: ULONG): HResult; stdcall;
  3718. function ParentalLevelSelect(ulParentalLevel: ULONG): HResult; stdcall;
  3719. function ParentalCountrySelect(wCountry: Word): HResult; stdcall;
  3720. function KaraokeAudioPresentationModeChange(ulMode: ULONG): HResult; stdcall;
  3721. function VideoModePreferrence(ulPreferredDisplayMode: ULONG): HResult; stdcall;
  3722. function SetRoot(pszPath: LPCWSTR): HResult; stdcall;
  3723. function MouseActivate(point: TPoint): HResult; stdcall;
  3724. function MouseSelect(point: TPoint): HResult; stdcall;
  3725. function ChapterPlayAutoStop(ulTitle, ulChapter, ulChaptersToPlay: ULONG): HResult; stdcall;
  3726. end;
  3727. {$HPPEMIT 'typedef System::DelphiInterface<IDvdControl2> _di_IDvdControl2;'}
  3728. {$EXTERNALSYM IDvdControl2}
  3729. IDvdControl2 = interface(IUnknown)
  3730. ['{33BC7430-EEC0-11D2-8201-00A0C9D74842}']
  3731. (*** IDvdControl2 methods ***)
  3732. function PlayTitle(ulTitle, dwFlags: ULONG; var ppCmd: IDvdCmd): HResult; stdcall;
  3733. function PlayChapterInTitle(ulTitle, ulChapter: ULONG; dwFlags: DWORD; var ppCmd: IDvdCmd): HResult; stdcall;
  3734. function PlayAtTimeInTitle(ulTitle: ULONG; var pStartTime: TDVDHMSFTimeCode; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3735. function Stop: HResult; stdcall;
  3736. function ReturnFromSubmenu(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3737. function PlayAtTime(pTime: PDVDHMSFTimeCode; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3738. function PlayChapter(ulChapter: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3739. function PlayPrevChapter(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3740. function ReplayChapter(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3741. function PlayNextChapter(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3742. function PlayForwards(dSpeed: double; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3743. function PlayBackwards(dSpeed: double; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3744. function ShowMenu(MenuID: TDVDMenuID; dwFlags: DVD_CMD_FLAGS;out ppCmd: IDvdCmd): HResult; stdcall;
  3745. function Resume(dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3746. function SelectRelativeButton(buttonDir: TDVDRelativeButton): HResult; stdcall;
  3747. function ActivateButton: HResult; stdcall;
  3748. function SelectButton(ulButton: ULONG): HResult; stdcall;
  3749. function SelectAndActivateButton(ulButton: ULONG): HResult; stdcall;
  3750. function StillOff: HResult; stdcall;
  3751. function Pause(bState: BOOL): HResult; stdcall;
  3752. function SelectAudioStream(ulAudio: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3753. function SelectSubpictureStream(ulSubPicture: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3754. function SetSubpictureState(bState: BOOL; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3755. function SelectAngle(ulAngle: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3756. function SelectParentalLevel(ulParentalLevel: ULONG): HResult; stdcall;
  3757. function SelectParentalCountry(bCountry: CountryCode): HResult; stdcall;
  3758. function SelectKaraokeAudioPresentationMode(ulMode: ULONG): HResult; stdcall;
  3759. function SelectVideoModePreference(ulPreferredDisplayMode: ULONG): HResult; stdcall;
  3760. function SetDVDDirectory(pszwPath: LPCWSTR): HResult; stdcall;
  3761. function ActivateAtPosition(point: TPoint): HResult; stdcall;
  3762. function SelectAtPosition(point : TPoint): HResult; stdcall;
  3763. function PlayChaptersAutoStop(ulTitle, ulChapter, ulChaptersToPlay: ULONG; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3764. function AcceptParentalLevelChange(bAccept: BOOL): HResult; stdcall;
  3765. function SetOption(flag: TDVDOptionFlag; fState: BOOL): HResult; stdcall;
  3766. function SetState(pState: IDvdState; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3767. function PlayPeriodInTitleAutoStop(ulTitle: ULONG; var pStartTime, pEndTime: TDVDHMSFTimeCode; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3768. function SetGPRM(ulIndex: ULONG; wValue: WORD; dwFlags: DWORD; out ppCmd: IDvdCmd): HResult; stdcall;
  3769. function SelectDefaultMenuLanguage(Language: LCID): HResult; stdcall;
  3770. function SelectDefaultAudioLanguage(Language: LCID; audioExtension: TDVDAudioLangExt): HResult; stdcall;
  3771. function SelectDefaultSubpictureLanguage(Language: LCID; subpictureExtension: TDVDSubpictureLangExt): HResult; stdcall;
  3772. end;
  3773. //Deprecated Interface
  3774. {$HPPEMIT 'typedef System::DelphiInterface<IDvdInfo> _di_IDvdInfo;'}
  3775. {$EXTERNALSYM IDvdInfo}
  3776. IDvdInfo = interface(IUnknown)
  3777. ['{A70EFE60-E2A3-11D0-A9BE-00AA0061BE93}']
  3778. (*** IDvdInfo methods ***)
  3779. function GetCurrentDomain(out pDomain: TDVDDomain): HResult; stdcall;
  3780. function GetCurrentLocation(out pLocation: TDVDPlaybackLocation): HResult; stdcall;
  3781. function GetTotalTitleTime(out pTotalTime: ULONG): HResult; stdcall;
  3782. function GetCurrentButton(out pnButtonsAvailable, pnCurrentButton: ULONG): HResult; stdcall;
  3783. function GetCurrentAngle(out pnAnglesAvailable, pnCurrentAngle: ULONG): HResult; stdcall;
  3784. function GetCurrentAudio(out pnStreamsAvailable, pnCurrentStream: ULONG): HResult; stdcall;
  3785. function GetCurrentSubpicture(out pnStreamsAvailable, pnCurrentStream: ULONG;
  3786. out pIsDisabled: BOOL): HResult; stdcall;
  3787. function GetCurrentUOPS(out pUOP: VALID_UOP_SOMTHING_OR_OTHER): HResult; stdcall;
  3788. function GetAllSPRMs(var pRegisterArray: TSPRMArray): HResult; stdcall;
  3789. function GetAllGPRMs(var pRegisterArray: GPRMArray): HResult; stdcall;
  3790. function GetAudioLanguage(nStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  3791. function GetSubpictureLanguage(nStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  3792. function GetTitleAttributes(nTitle: ULONG; out pATR: TDVDAtr): HResult; stdcall;
  3793. function GetVMGAttributes(out pATR: TDVDAtr): HResult; stdcall;
  3794. function GetCurrentVideoAttributes(out pATR: DVD_VideoATR): HResult; stdcall;
  3795. function GetCurrentAudioAttributes(out pATR: DVD_AudioATR): HResult; stdcall;
  3796. function GetCurrentSubpictureAttributes(out pATR: DVD_SubpictureATR): HResult; stdcall;
  3797. function GetCurrentVolumeInfo(out pNumOfVol, pThisVolNum: ULONG;
  3798. out pSide: TDVDDiscSide; out pNumOfTitles: ULONG): HResult; stdcall;
  3799. function GetDVDTextInfo(out pTextManager: Byte; cbBufSize: ULONG;
  3800. out pcbActualSize: ULONG): HResult; stdcall;
  3801. function GetPlayerParentalLevel(out pParentalLevel, pCountryCode: ULONG): HResult; stdcall;
  3802. function GetNumberOfChapters(ulTitle: ULONG; out pNumberOfChapters: ULONG): HResult; stdcall;
  3803. function GetTitleParentalLevels(ulTitle: ULONG; out pParentalLevels: ULONG): HResult; stdcall;
  3804. function GetRoot(pRoot: PChar; cbBufSize: ULONG; out pcbActualSize: ULONG): HResult; stdcall;
  3805. end;
  3806. {$HPPEMIT 'typedef System::DelphiInterface<IDvdInfo2> _di_IDvdInfo2;'}
  3807. {$EXTERNALSYM IDvdInfo2}
  3808. IDvdInfo2 = interface(IUnknown)
  3809. ['{34151510-EEC0-11D2-8201-00A0C9D74842}']
  3810. (*** IDvdInfo2 methods ***)
  3811. function GetCurrentDomain(out pDomain: TDVDDomain): HResult; stdcall;
  3812. function GetCurrentLocation(out pLocation: TDVDPlaybackLocation2): HResult; stdcall;
  3813. function GetTotalTitleTime(out pTotalTime: TDVDHMSFTimeCode; out ulTimeCodeFlags: ULONG): HResult; stdcall;
  3814. function GetCurrentButton(out pulButtonsAvailable, pulCurrentButton: ULONG): HResult; stdcall;
  3815. function GetCurrentAngle(out pulAnglesAvailable, pulCurrentAngle: ULONG): HResult; stdcall;
  3816. function GetCurrentAudio(out pulStreamsAvailable, pulCurrentStream: ULONG): HResult; stdcall;
  3817. function GetCurrentSubpicture(out pulStreamsAvailable, pulCurrentStream: ULONG; out pbIsDisabled: BOOL): HResult; stdcall;
  3818. function GetCurrentUOPS(out pulUOPs: ULONG): HResult; stdcall;
  3819. function GetAllSPRMs(out pRegisterArray: TSPRMArray): HResult; stdcall;
  3820. function GetAllGPRMs(out pRegisterArray: GPRMArray): HResult; stdcall;
  3821. function GetAudioLanguage(ulStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  3822. function GetSubpictureLanguage(ulStream: ULONG; out pLanguage: LCID): HResult; stdcall;
  3823. function GetTitleAttributes(ulTitle: ULONG; out pMenu: TDVDMenuAttributes; out pTitle: TDVDTitleAttributes): HResult; stdcall;
  3824. function GetVMGAttributes(out pATR: TDVDMenuAttributes): HResult; stdcall;
  3825. function GetCurrentVideoAttributes(out pATR: TDVDVideoAttributes): HResult; stdcall;
  3826. function GetAudioAttributes(ulStream: ULONG; out pATR: TDVDAudioAttributes): HResult; stdcall;
  3827. function GetKaraokeAttributes(ulStream: ULONG; out pAttributes: TDVDKaraokeAttributes): HResult; stdcall;
  3828. function GetSubpictureAttributes(ulStream :ULONG; out pATR: TDVDSubpictureAttributes): HResult; stdcall;
  3829. function GetDVDVolumeInfo(out pulNumOfVolumes, pulVolume: ULONG; out pSide: TDVDDiscSide; out pulNumOfTitles: ULONG): HResult; stdcall;
  3830. function GetDVDTextNumberOfLanguages(out pulNumOfLangs: ULONG): HResult; stdcall;
  3831. function GetDVDTextLanguageInfo(ulLangIndex: ULONG; out pulNumOfStrings: ULONG; out pLangCode: LCID; out pbCharacterSet: TDVDTextCharSet): HResult; stdcall;
  3832. function GetDVDTextStringAsNative(ulLangIndex, ulStringIndex: ULONG; out pbBuffer; ulMaxBufferSize: ULONG; out pulActualSize: ULONG; out pType: TDVDTextStringType): HResult; stdcall;
  3833. function GetDVDTextStringAsUnicode(ulLangIndex, ulStringIndex: ULONG; out pchwBuffer; ulMaxBufferSize: ULONG; out pulActualSize: ULONG; out pType: TDVDTextStringType): HResult; stdcall;
  3834. function GetPlayerParentalLevel(out pulParentalLevel: ULONG; out pbCountryCode: CountryCode): HResult; stdcall;
  3835. function GetNumberOfChapters(ulTitle: ULONG; out pulNumOfChapters: ULONG): HResult; stdcall;
  3836. function GetTitleParentalLevels(ulTitle: ULONG; out pulParentalLevels: ULONG): HResult; stdcall;
  3837. function GetDVDDirectory(out pszwPath; ulMaxSize: ULONG; out pulActualSize: ULONG): HResult; stdcall;
  3838. function IsAudioStreamEnabled(ulStreamNum: ULONG; out pbEnabled: BOOL): HResult; stdcall;
  3839. function GetDiscID(pszwPath: LPCWSTR; out pullDiscID: Int64): HResult; stdcall;
  3840. function GetState(out pStateData: IDvdState): HResult; stdcall;
  3841. function GetMenuLanguages(out pLanguages: LCID; ulMaxLanguages: ULONG; out pulActualLanguages: ULONG): HResult; stdcall;
  3842. function GetButtonAtPosition(point: Tpoint;out pulButtonIndex: ULONG): HResult; stdcall;
  3843. function GetCmdFromEvent(lParam1: integer; out pCmdObj: IDvdCmd): HResult; stdcall;
  3844. function GetDefaultMenuLanguage(out pLanguage: LCID): HResult; stdcall;
  3845. function GetDefaultAudioLanguage(out pLanguage: LCID; out pAudioExtension: TDVDAudioLangExt): HResult; stdcall;
  3846. function GetDefaultSubpictureLanguage(out pLanguage: LCID; out pSubpictureExtension: TDVDSubpictureLangExt): HResult; stdcall;
  3847. function GetDecoderCaps(out pCaps: TDVDDecoderCaps): HResult; stdcall;
  3848. function GetButtonRect(ulButton: ULONG; out pRect: TRect): HResult; stdcall;
  3849. function IsSubpictureStreamEnabled(ulStreamNum: ULONG; out pbEnabled: BOOL): HResult; stdcall;
  3850. end;
  3851. {$HPPEMIT 'typedef System::DelphiInterface<IVideoFrameStep> _di_IVideoFrameStep;'}
  3852. {$EXTERNALSYM IVideoFrameStep}
  3853. IVideoFrameStep = interface(IUnknown)
  3854. ['{e46a9787-2b71-444d-a4b5-1fab7b708d6a}']
  3855. (*** IVideoFrameStep methods ***)
  3856. function Step(dwFrames: DWORD; pStepObject: IUnKnown): HResult; stdcall;
  3857. function CanStep(bMultiple: longint; pStepObject: IUnknown): HResult; stdcall;
  3858. function CancelStep: HResult; stdcall;
  3859. end;
  3860. const
  3861. AM_DVD_HWDEC_PREFER = $01; // default
  3862. {$EXTERNALSYM AM_DVD_HWDEC_PREFER}
  3863. AM_DVD_HWDEC_ONLY = $02;
  3864. {$EXTERNALSYM AM_DVD_HWDEC_ONLY}
  3865. AM_DVD_SWDEC_PREFER = $04;
  3866. {$EXTERNALSYM AM_DVD_SWDEC_PREFER}
  3867. AM_DVD_SWDEC_ONLY = $08;
  3868. {$EXTERNALSYM AM_DVD_SWDEC_ONLY}
  3869. AM_DVD_NOVPE = $100;
  3870. {$EXTERNALSYM AM_DVD_NOVPE}
  3871. // DirectX9 Specific
  3872. AM_DVD_VMR9_ONLY = $800; // only use VMR9 (otherwise fail) for rendering
  3873. {$EXTERNALSYM AM_DVD_VMR9_ONLY}
  3874. AM_DVD_STREAM_VIDEO = $1;
  3875. {$EXTERNALSYM AM_DVD_STREAM_VIDEO}
  3876. AM_DVD_STREAM_AUDIO = $2;
  3877. {$EXTERNALSYM AM_DVD_STREAM_AUDIO}
  3878. AM_DVD_STREAM_SUBPIC = $4;
  3879. {$EXTERNALSYM AM_DVD_STREAM_SUBPIC}
  3880. type
  3881. AM_DVD_RENDERSTATUS = record
  3882. hrVPEStatus: HResult;
  3883. bDvdVolInvalid: BOOL;
  3884. bDvdVolUnknown: BOOL;
  3885. bNoLine21In: BOOL;
  3886. bNoLine21Out: BOOL;
  3887. iNumStreams: Integer;
  3888. iNumStreamsFailed: Integer;
  3889. dwFailedStreamsFlag: DWORD;
  3890. end;
  3891. {$EXTERNALSYM AM_DVD_RENDERSTATUS}
  3892. TAMDVDRenderStatus = AM_DVD_RENDERSTATUS;
  3893. {$HPPEMIT 'typedef System::DelphiInterface<IDvdGraphBuilder> _di_IDvdGraphBuilder;'}
  3894. {$EXTERNALSYM IDvdGraphBuilder}
  3895. IDvdGraphBuilder = interface(IUnknown)
  3896. ['{FCC152B6-F372-11d0-8E00-00C04FD7C08B}']
  3897. (*** IDvdGraphBuilder methods ***)
  3898. function GetFiltergraph(out ppGB: IGraphBuilder): HResult; stdcall;
  3899. function GetDvdInterface(const riid: TGUID; out ppvIF): HResult; stdcall;
  3900. function RenderDvdVideoVolume(lpcwszPathName: PWideChar; dwFlags: DWORD;
  3901. out pStatus: TAMDVDRenderStatus): HResult; stdcall;
  3902. end;
  3903. //_AM_OVERLAY_NOTIFY_FLAGS
  3904. const
  3905. AM_OVERLAY_NOTIFY_VISIBLE_CHANGE = $1;
  3906. {$EXTERNALSYM AM_OVERLAY_NOTIFY_VISIBLE_CHANGE}
  3907. AM_OVERLAY_NOTIFY_SOURCE_CHANGE = $2;
  3908. {$EXTERNALSYM AM_OVERLAY_NOTIFY_SOURCE_CHANGE}
  3909. AM_OVERLAY_NOTIFY_DEST_CHANGE = $4;
  3910. {$EXTERNALSYM AM_OVERLAY_NOTIFY_DEST_CHANGE}
  3911. type
  3912. {$HPPEMIT 'typedef System::DelphiInterface<IDDrawExclModeVideoCallback> _di_IDDrawExclModeVideoCallback;'}
  3913. {$EXTERNALSYM IDDrawExclModeVideoCallback}
  3914. IDDrawExclModeVideoCallback = interface(IUnknown)
  3915. ['{913c24a0-20ab-11d2-9038-00a0c9697298}']
  3916. (*** IDDrawExclModeVideoCallback methods ***)
  3917. function OnUpdateOverlay(bBefore: BOOL; dwFlags: DWORD; bOldVisible: BOOL;
  3918. var prcOldSrc, prcOldDest: TRECT; bNewVisible: BOOL; var prcNewSrc, prcNewDest: TRECT): HResult; stdcall;
  3919. function OnUpdateColorKey(var pKey: TCOLORKEY; dwColor: DWORD): HResult; stdcall;
  3920. function OnUpdateSize(dwWidth, dwHeight, dwARWidth, dwARHeight: DWORD): HResult; stdcall;
  3921. end;
  3922. {$HPPEMIT 'typedef System::DelphiInterface<IDDrawExclModeVideo> _di_IDDrawExclModeVideo;'}
  3923. {$EXTERNALSYM IDDrawExclModeVideo}
  3924. IDDrawExclModeVideo = interface(IUnknown)
  3925. ['{153ACC21-D83B-11d1-82BF-00A0C9696C8F}']
  3926. (*** IDDrawExclModeVideo methods ***)
  3927. function SetDDrawObject(pDDrawObject: IDirectDraw): HResult; stdcall;
  3928. function GetDDrawObject(out ppDDrawObject: IDirectDraw; out pbUsingExternal: BOOL): HResult; stdcall;
  3929. function SetDDrawSurface(pDDrawSurface: IDirectDrawSurface): HResult; stdcall;
  3930. function GetDDrawSurface(out ppDDrawSurface: IDirectDrawSurface; out pbUsingExternal: BOOL): HResult; stdcall;
  3931. function SetDrawParameters(prcSource, prcTarget: PRECT): HResult; stdcall;
  3932. function GetNativeVideoProps(out pdwVideoWidth, pdwVideoHeight, pdwPictAspectRatioX,pdwPictAspectRatioY: DWORD): HResult; stdcall;
  3933. function SetCallbackInterface(pCallback: IDDrawExclModeVideoCallback; dwFlags: DWORD): HResult; stdcall;
  3934. end;
  3935. {$HPPEMIT 'typedef System::DelphiInterface<IPinConnection> _di_IPinConnection;'}
  3936. {$EXTERNALSYM IPinConnection}
  3937. IPinConnection = interface(IUnknown)
  3938. ['{4a9a62d3-27d4-403d-91e9-89f540e55534}']
  3939. (*** IPinConnection methods ***)
  3940. function DynamicQueryAccept(var pmt: TAMMediaType): HResult; stdcall;
  3941. function NotifyEndOfStream(hNotifyEvent: THandle): HResult; stdcall;
  3942. function IsEndPin: HResult; stdcall;
  3943. function DynamicDisconnect: HResult; stdcall;
  3944. end;
  3945. {$HPPEMIT 'typedef System::DelphiInterface<IPinFlowControl> _di_IPinFlowControl;'}
  3946. {$EXTERNALSYM IPinFlowControl}
  3947. IPinFlowControl = interface(IUnknown)
  3948. ['{c56e9858-dbf3-4f6b-8119-384af2060deb}']
  3949. (*** IPinFlowControl methods ***)
  3950. function Block(dwBlockFlags: DWORD; hEvent: THandle): HResult; stdcall;
  3951. end;
  3952. {$HPPEMIT 'typedef System::DelphiInterface<IGraphConfigCallback> _di_IGraphConfigCallback;'}
  3953. {$EXTERNALSYM IGraphConfigCallback}
  3954. IGraphConfigCallback = interface(IUnknown)
  3955. ['{ade0fd60-d19d-11d2-abf6-00a0c905f375}']
  3956. (*** IGraphConfigCallback methods ***)
  3957. function Reconfigure(var pvContext; dwFlags: DWORD): HResult; stdcall;
  3958. end;
  3959. const
  3960. //_AM_PIN_FLOW_CONTROL_BLOCK_FLAGS
  3961. AM_PIN_FLOW_CONTROL_BLOCK = $1;
  3962. {$EXTERNALSYM AM_PIN_FLOW_CONTROL_BLOCK}
  3963. //_AM_GRAPH_CONFIG_RECONNECT_FLAGS
  3964. AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT = $1;
  3965. {$EXTERNALSYM AM_GRAPH_CONFIG_RECONNECT_DIRECTCONNECT}
  3966. AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS = $2;
  3967. {$EXTERNALSYM AM_GRAPH_CONFIG_RECONNECT_CACHE_REMOVED_FILTERS}
  3968. AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS = $4;
  3969. {$EXTERNALSYM AM_GRAPH_CONFIG_RECONNECT_USE_ONLY_CACHED_FILTERS}
  3970. //_AM_FILTER_FLAGS
  3971. AM_FILTER_FLAGS_REMOVABLE = $1;
  3972. {$EXTERNALSYM AM_FILTER_FLAGS_REMOVABLE}
  3973. //_REM_FILTER_FLAGS
  3974. REMFILTERF_LEAVECONNECTED = $1;
  3975. {$EXTERNALSYM REMFILTERF_LEAVECONNECTED}
  3976. type
  3977. {$HPPEMIT 'typedef System::DelphiInterface<IGraphConfig> _di_IGraphConfig;'}
  3978. {$EXTERNALSYM IGraphConfig}
  3979. IGraphConfig = interface(IUnknown)
  3980. ['{03A1EB8E-32BF-4245-8502-114D08A9CB88}']
  3981. (*** IGraphConfig methods ***)
  3982. function Reconnect(pOutputPin, pInputPin: IPin; pmtFirstConnection: PAMMediaType;
  3983. pUsingFilter: IBaseFilter; hAbortEvent: THandle; dwFlags: DWORD): HResult; stdcall;
  3984. function Reconfigure(pCallback: IGraphConfigCallback; var pvContext;
  3985. dwFlags: DWORD; hAbortEvent: THandle): HResult; stdcall;
  3986. function AddFilterToCache(pFilter: IBaseFilter): HResult; stdcall;
  3987. function EnumCacheFilter(out pEnum: IEnumFilters): HResult; stdcall;
  3988. function RemoveFilterFromCache(pFilter: IBaseFilter): HResult; stdcall;
  3989. function GetStartTime(out prtStart: TReferenceTime): HResult; stdcall;
  3990. function PushThroughData(pOutputPin: IPin; pConnection: IPinConnection; hEventAbort: PHANDLE): HResult; stdcall;
  3991. function SetFilterFlags(pFilter: IBaseFilter; dwFlags: DWORD): HResult; stdcall;
  3992. function GetFilterFlags(pFilter: IBaseFilter; out pdwFlags: DWORD): HResult; stdcall;
  3993. function RemoveFilterEx(pFilter: IBaseFilter; Flags: DWORD): HResult; stdcall;
  3994. end;
  3995. // Filter Chain Definition
  3996. //
  3997. // Filter chains have the following properties:
  3998. //
  3999. // - Each filter chain has one or more filters.
  4000. //
  4001. // - Each filter in a filter chain has at most one connected input pin and one
  4002. // connected output pin. For example, filters A, C, D, F, G, H, I, J and K
  4003. // (see the diagram below) can be in a filter chain because each one has at
  4004. // most one connected input pin and one connected output pin.
  4005. //
  4006. // - Any filter in a chain is reachable by any other filter in the chain.
  4007. // For example, in the filter chain F-G-H, F can reach H by following the F-
  4008. // G connection to G and then following the G-H connection to H. Filters F
  4009. // and J cannot be in the same filter chain because J is not reachable from
  4010. // F. Anotherwords, there no sequence of connected filters between F and J.
  4011. //
  4012. // - The start filter is the only filter in the filter chain who's input
  4013. // pin is not connected to another filter in the chain. For instance, F is
  4014. // the start filter in F-G-H because F's input pin is connected to E and E
  4015. // is not in the filter chain. G's input pin is connected to F and H's is
  4016. // connected to G. Both F and G are in the filter chain.
  4017. //
  4018. // - The end filter is the only filter in the filter chain who's output pin
  4019. // is not connected to another filter in the chain. For example, in the
  4020. // filter chain J-K, K is the end filter because K's output pin is
  4021. // connected to L. J's output pin is connected to K and K is in the J-K
  4022. // filter chain.
  4023. //
  4024. //
  4025. // --->|---| |---|--->
  4026. // | C |--->| D |
  4027. // |---| |---|--->|---| |---|--->|---| |---| |---| |---|
  4028. // | A |--->| B | | E |--->| F |--->| G |--->| H |
  4029. // |---| |---|--->|---|------------>|---| |---| |---| |---|
  4030. // | I |--->
  4031. // --->|---|--->
  4032. //
  4033. // |---| |---| |---|
  4034. // | J |--->| K |--->| L |
  4035. // |---| |---| |---|
  4036. //
  4037. // Example Filter Graph
  4038. //
  4039. //
  4040. //
  4041. // IFilterChain Methods Documentation
  4042. //
  4043. // HResult StartChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4044. //
  4045. // StartChain() switches all the filters in the chain into the running state
  4046. // If one of the filters will not switch to the running state, then all the filters
  4047. // in the chain are stopped. This method can only be called if the filter graph is
  4048. // running.
  4049. //
  4050. // Parameters:
  4051. // - pStartFilter [in]
  4052. // The first filter in the filter chain. Note that this can be the same
  4053. // filter as pEndFilter .
  4054. //
  4055. // - pEndFilter [in]
  4056. // The last filter in the filter chain. Note that this can be the same
  4057. // filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
  4058. // from pStartFilter to the last downstream filter which can be in a filter chain.
  4059. // For example, IFilterChain::StartChain( A, NULL ) would start filter A.
  4060. // IFilterChain::StartChain( G, NULL ) would start filters G and H.
  4061. // IFilterChain::StartChain( C, NULL ) would start filters C and D. Finally,
  4062. // IFilterChain::StartChain( E, NULL ) would fail because E cannot be in a
  4063. // filter chain (see the Filter Chain Definition section for more information).
  4064. //
  4065. // Return Value:
  4066. // An HResult. See the Direct Show SDK and COM SDK documentation for more
  4067. // information on interpreting HRESULTs.
  4068. //
  4069. //
  4070. //
  4071. //
  4072. // HResult PauseChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4073. //
  4074. // PauseChain() switches all the filters in a chain to the paused state. If it cannot
  4075. // switch one of the filtres into the paused state, all the filters in the chain are
  4076. // stopped. This method can only be called if the filter graph is paused.
  4077. //
  4078. // Parameters:
  4079. // - pStartFilter [in]
  4080. // The first filter in the filter chain. Note that this can be the same
  4081. // filter as pEndFilter .
  4082. //
  4083. // - pEndFilter [in]
  4084. // The last filter in the filter chain. Note that this can be the same
  4085. // filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
  4086. // from pStartFilter to the last downstream filter which can be in a filter chain.
  4087. // For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
  4088. // IFilterChain::StopChain( G, NULL ) would stop filters G and H.
  4089. // IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
  4090. // IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
  4091. // chain (see the Filter Chain Definition section for more information).
  4092. //
  4093. //
  4094. // Return Value:
  4095. // An HResult. See the Direct Show SDK and COM SDK documentation for more
  4096. // information on interpreting HRESULTs.
  4097. //
  4098. //
  4099. //
  4100. // HResult StopChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4101. //
  4102. // StopChain() switches all the filters in chain to the stopped state.
  4103. //
  4104. // Parameters:
  4105. // - pStartFilter [in]
  4106. // The first filter in the filter chain. Note that this can be the same
  4107. // filter as pEndFilter .
  4108. //
  4109. // - pEndFilter [in]
  4110. // The last filter in the filter chain. Note that this can be the same
  4111. // filter as pStartFilter. If pEndFilter is NULL then the filter chain extends
  4112. // from pStartFilter to the last downstream filter which can be in a filter chain.
  4113. // For example, IFilterChain::StopChain( A, NULL ) would stop filter A.
  4114. // IFilterChain::StopChain( G, NULL ) would stop filters G and H.
  4115. // IFilterChain::StopChain( C, NULL ) would stop filters C and D. Finally,
  4116. // IFilterChain::StopChain( E, NULL ) would fail because E cannot be in a filter
  4117. // chain (see the Filter Chain Definition section for more information).
  4118. //
  4119. //
  4120. // Return Value:
  4121. // An HResult. See the Direct Show SDK and COM SDK documentation for more
  4122. // information on interpreting HRESULTs.
  4123. //
  4124. //
  4125. //
  4126. //
  4127. //
  4128. // HResult RemoveChain( [in] IBaseFilter *pStartFilter, [in] IBaseFilter *pEndFilter );
  4129. //
  4130. // RemoveChain() removes every filter in a chain from the filter graph.
  4131. // The filters can be removed while the graph is running.
  4132. //
  4133. // Parameters:
  4134. // - pStartFilter [in]
  4135. // The first filter in the filter chain. Note that this can be the same
  4136. // filter as pEndFilter .
  4137. //
  4138. // - pEndFilter [in]
  4139. // The last filter in the filter chain. Note that this can be the same
  4140. // filter as pStartFilter. If pEndFilter is NULL then the filter chain
  4141. // extends from pStartFilter to the last downstream filter which can be in a
  4142. // filter chain. For example, IFilterChain::RemoveChain( A, NULL ) would remove
  4143. // filter A from the filter graph. IFilterChain::RemoveChain( G, NULL ) would
  4144. // remove filters G and H. IFilterChain::RemoveChain( C, NULL ) would remove
  4145. // filters C and D. Finally, IFilterChain::RemoveChain( E, NULL ) would fail
  4146. // because E cannot be in a filter chain (see the Filter Chain Definition
  4147. // section for more information).
  4148. //
  4149. //
  4150. // Return Value:
  4151. // An HResult. See the Direct Show SDK and COM SDK documentation for more
  4152. // information on interpreting HRESULTs.
  4153. //
  4154. //
  4155. {$HPPEMIT 'typedef System::DelphiInterface<IFilterChain> _di_IFilterChain;'}
  4156. {$EXTERNALSYM IFilterChain}
  4157. IFilterChain = interface(IUnknown)
  4158. ['{DCFBDCF6-0DC2-45f5-9AB2-7C330EA09C29}']
  4159. (*** IFilterChain methods ***)
  4160. function StartChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4161. function PauseChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4162. function StopChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4163. function RemoveChain(pStartFilter, pEndFilter: IBaseFilter): HResult; stdcall;
  4164. end;
  4165. ///////////////////////////////////////////////////////////////////////////////
  4166. //
  4167. // Allocator Presenter interfaces
  4168. //
  4169. ///////////////////////////////////////////////////////////////////////////////
  4170. {$IFDEF ENABLEVMR7}
  4171. //=====================================================================
  4172. //
  4173. // IVMRImagePresenter
  4174. //
  4175. //=====================================================================
  4176. type
  4177. VMRPresentationFlags = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  4178. {$EXTERNALSYM VMRPresentationFlags}
  4179. const
  4180. VMRSample_SyncPoint = $00000001;
  4181. {$EXTERNALSYM VMRSample_SyncPoint}
  4182. VMRSample_Preroll = $00000002;
  4183. {$EXTERNALSYM VMRSample_Preroll}
  4184. VMRSample_Discontinuity = $00000004;
  4185. {$EXTERNALSYM VMRSample_Discontinuity}
  4186. VMRSample_TimeValid = $00000008;
  4187. {$EXTERNALSYM VMRSample_TimeValid}
  4188. VMRSample_SrcDstRectsValid = $00000010;
  4189. {$EXTERNALSYM VMRSample_SrcDstRectsValid}
  4190. type
  4191. PVMRPresentationInfo = ^TVMRPresentationInfo;
  4192. tagVMRPRESENTATIONINFO = record
  4193. dwFlags : DWORD;
  4194. lpSurf : IDIRECTDRAWSURFACE7;
  4195. rtStart : TReferenceTime;
  4196. rtEnd : TReferenceTime;
  4197. szAspectRatio : TSIZE;
  4198. rcSrc : TRECT;
  4199. rcDst : TRECT;
  4200. dwTypeSpecificFlags : DWORD;
  4201. dwInterlaceFlags : DWORD;
  4202. end;
  4203. {$EXTERNALSYM tagVMRPRESENTATIONINFO}
  4204. VMRPRESENTATIONINFO = tagVMRPRESENTATIONINFO;
  4205. {$EXTERNALSYM VMRPRESENTATIONINFO}
  4206. TVMRPresentationInfo = tagVMRPRESENTATIONINFO;
  4207. {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenter> _di_IVMRImagePresenter;'}
  4208. {$EXTERNALSYM IVMRImagePresenter}
  4209. IVMRImagePresenter = interface(IUnknown)
  4210. ['{CE704FE7-E71E-41fb-BAA2-C4403E1182F5}']
  4211. (*** IVMRImagePresenter methods ***)
  4212. function StartPresenting(dwUserID: DWORD): HResult; stdcall;
  4213. function StopPresenting(dwUserID: DWORD): HResult; stdcall;
  4214. function PresentImage(dwUserID: DWORD; lpPresInfo: PVMRPRESENTATIONINFO): HResult; stdcall;
  4215. end;
  4216. {$ENDIF}
  4217. {$IFDEF ENABLEVMR7}
  4218. //=====================================================================
  4219. //
  4220. // IVMRSurfaceAllocator
  4221. //
  4222. //=====================================================================
  4223. const
  4224. AMAP_PIXELFORMAT_VALID = $01;
  4225. {$EXTERNALSYM AMAP_PIXELFORMAT_VALID}
  4226. AMAP_3D_TARGET = $02;
  4227. {$EXTERNALSYM AMAP_3D_TARGET}
  4228. AMAP_ALLOW_SYSMEM = $04;
  4229. {$EXTERNALSYM AMAP_ALLOW_SYSMEM}
  4230. AMAP_FORCE_SYSMEM = $08;
  4231. {$EXTERNALSYM AMAP_FORCE_SYSMEM}
  4232. AMAP_DIRECTED_FLIP = $10;
  4233. {$EXTERNALSYM AMAP_DIRECTED_FLIP}
  4234. AMAP_NO_EXTRA_BUFFERS = $20;
  4235. {$EXTERNALSYM AMAP_NO_EXTRA_BUFFERS}
  4236. type
  4237. PVMRAllocationInfo = ^TVMRAllocationInfo;
  4238. tagVMRALLOCATIONINFO = record
  4239. dwFlags : DWORD;
  4240. lpHdr : PBITMAPINFOHEADER;
  4241. lpPixFmt : PDDPIXELFORMAT;
  4242. szAspectRatio : TSIZE;
  4243. dwMinBuffers : DWORD;
  4244. dwMaxBuffers : DWORD;
  4245. dwInterlaceFlags : DWORD;
  4246. szNativeSize : TSIZE ;
  4247. end;
  4248. {$EXTERNALSYM tagVMRALLOCATIONINFO}
  4249. VMRALLOCATIONINFO = tagVMRALLOCATIONINFO;
  4250. {$EXTERNALSYM VMRALLOCATIONINFO}
  4251. TVMRAllocationInfo = tagVMRALLOCATIONINFO;
  4252. IVMRSurfaceAllocatorNotify = interface;
  4253. {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurfaceAllocator> _di_IVMRSurfaceAllocator;'}
  4254. {$EXTERNALSYM IVMRSurfaceAllocator}
  4255. IVMRSurfaceAllocator = interface(IUnknown)
  4256. ['{31ce832e-4484-458b-8cca-f4d7e3db0b52}']
  4257. (*** IVMRSurfaceAllocator methods ***)
  4258. function AllocateSurface(dwUserID: DWORD; lpAllocInfo: PVMRALLOCATIONINFO;
  4259. var lpdwActualBuffers: DWORD; out lplpSurface: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4260. function FreeSurface(dwID: DWORD): HResult; stdcall;
  4261. function PrepareSurface(dwUserID: DWORD; lpSurface: IDIRECTDRAWSURFACE7;
  4262. dwSurfaceFlags: DWORD): HResult; stdcall;
  4263. function AdviseNotify(lpIVMRSurfAllocNotify: IVMRSurfaceAllocatorNotify): HResult; stdcall;
  4264. end;
  4265. {$ENDIF}
  4266. {$IFDEF ENABLEVMR7}
  4267. //=====================================================================
  4268. //
  4269. // IVMRSurfaceAllocatorNotify
  4270. //
  4271. //=====================================================================
  4272. {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurfaceAllocatorNotify> _di_IVMRSurfaceAllocatorNotify;'}
  4273. {$EXTERNALSYM IVMRSurfaceAllocatorNotify}
  4274. IVMRSurfaceAllocatorNotify = interface(IUnknown)
  4275. ['{aada05a8-5a4e-4729-af0b-cea27aed51e2}']
  4276. (*** IVMRSurfaceAllocatorNotify methods ***)
  4277. function AdviseSurfaceAllocator(dwUserID: DWORD; lpIVRMSurfaceAllocator: IVMRSurfaceAllocator): HResult; stdcall;
  4278. function SetDDrawDevice(lpDDrawDevice: IDirectDraw7; hMonitor: HMONITOR): HResult; stdcall;
  4279. function ChangeDDrawDevice(lpDDrawDevice: IDIRECTDRAW7; hMonitor: HMONITOR): HResult; stdcall;
  4280. function RestoreDDrawSurfaces: HResult; stdcall;
  4281. function NotifyEvent(EventCode: LongInt; Param1, Param2: LongInt): HResult; stdcall;
  4282. function SetBorderColor(clrBorder: COLORREF): HResult; stdcall;
  4283. end;
  4284. {$ENDIF}
  4285. ///////////////////////////////////////////////////////////////////////////////
  4286. //
  4287. // Application control and configuration interfaces
  4288. //
  4289. ///////////////////////////////////////////////////////////////////////////////
  4290. //=====================================================================
  4291. //
  4292. // IVMRWindowlessControl
  4293. //
  4294. //=====================================================================
  4295. VMR_ASPECT_RATIO_MODE = (
  4296. VMR_ARMODE_NONE,
  4297. VMR_ARMODE_LETTER_BOX
  4298. );
  4299. {$EXTERNALSYM VMR_ASPECT_RATIO_MODE}
  4300. TVMRAspectRatioMode = VMR_ASPECT_RATIO_MODE;
  4301. {$IFDEF ENABLEVMR7}
  4302. {$HPPEMIT 'typedef System::DelphiInterface<IVMRWindowlessControl> _di_IVMRWindowlessControl;'}
  4303. {$EXTERNALSYM IVMRWindowlessControl}
  4304. IVMRWindowlessControl = interface(IUnknown)
  4305. ['{0eb1088c-4dcd-46f0-878f-39dae86a51b7}']
  4306. (*** IVMRWindowlessControl methods ***)
  4307. //////////////////////////////////////////////////////////
  4308. // Video size and position information
  4309. //////////////////////////////////////////////////////////
  4310. function GetNativeVideoSize(out lpWidth, lpHeight, lpARWidth, lpARHeight: LongInt): HResult; stdcall;
  4311. function GetMinIdealVideoSize(out lpWidth, lpHeight: longint): HResult; stdcall;
  4312. function GetMaxIdealVideoSize(out lpWidth, lpHeight: longint): HResult; stdcall;
  4313. function SetVideoPosition(lpSRCRect, lpDSTRect: PRECT): HResult; stdcall;
  4314. function GetVideoPosition(out lpSRCRect, lpDSTRect: TRECT): HResult; stdcall;
  4315. function GetAspectRatioMode(out lpAspectRatioMode: DWORD): HResult; stdcall;
  4316. function SetAspectRatioMode(AspectRatioMode: TVMRAspectRatioMode): HResult; stdcall;
  4317. //////////////////////////////////////////////////////////
  4318. // Display and clipping management
  4319. //////////////////////////////////////////////////////////
  4320. function SetVideoClippingWindow(hwnd: HWND): HResult; stdcall;
  4321. function RepaintVideo(hwnd: HWND; hdc: HDC): HResult; stdcall;
  4322. function DisplayModeChanged: HResult; stdcall;
  4323. //////////////////////////////////////////////////////////
  4324. // GetCurrentImage
  4325. //
  4326. // Returns the current image being displayed. This images
  4327. // is returned in the form of packed Windows DIB.
  4328. //
  4329. // GetCurrentImage can be called at any time, also
  4330. // the caller is responsible for free the returned memory
  4331. // by calling CoTaskMemFree.
  4332. //
  4333. // Excessive use of this function will degrade video
  4334. // playback performed.
  4335. //////////////////////////////////////////////////////////
  4336. function GetCurrentImage(out lpDib): HResult; stdcall;
  4337. //////////////////////////////////////////////////////////
  4338. // Border Color control
  4339. //
  4340. // The border color is color used to fill any area of the
  4341. // the destination rectangle that does not contain video.
  4342. // It is typically used in two instances. When the video
  4343. // straddles two monitors and when the VMR is trying
  4344. // to maintain the aspect ratio of the movies by letter
  4345. // boxing the video to fit within the specified destination
  4346. // rectangle. See SetAspectRatioMode above.
  4347. //////////////////////////////////////////////////////////
  4348. function SetBorderColor(Clr: COLORREF): HResult; stdcall;
  4349. function GetBorderColor(out lpClr: COLORREF): HResult; stdcall;
  4350. //////////////////////////////////////////////////////////
  4351. // Color key control only meaningful when the VMR is using
  4352. // and overlay
  4353. //////////////////////////////////////////////////////////
  4354. function SetColorKey(Clr: COLORREF): HResult; stdcall;
  4355. function GetColorKey(out lpClr: COLORREF): HResult; stdcall;
  4356. end;
  4357. {$ENDIF}
  4358. {$IFDEF ENABLEVMR7}
  4359. //=====================================================================
  4360. //
  4361. // IVMRMixerControl
  4362. //
  4363. //=====================================================================
  4364. //
  4365. // Normalized relative rectangle
  4366. // Coordinate ranges: x=[0...1) y=[0...1)
  4367. // Where the output window goes from 0,0 (closed inclusive lower bound)
  4368. // to 1,1 (open exclusive upper bound)
  4369. //
  4370. const
  4371. MixerPref_NoDecimation = $1;
  4372. {$EXTERNALSYM MixerPref_NoDecimation}
  4373. MixerPref_DecimateOutput = $2;
  4374. {$EXTERNALSYM MixerPref_DecimateOutput}
  4375. MixerPref_ARAdjustXorY = $4; // adjust the aspect ratio in x or y
  4376. {$EXTERNALSYM MixerPref_ARAdjustXorY}
  4377. MixerPref_DecimationReserved = $8; // bits reserved for future use.
  4378. {$EXTERNALSYM MixerPref_DecimationReserved}
  4379. MixerPref_DecimateMask = $f;
  4380. {$EXTERNALSYM MixerPref_DecimateMask}
  4381. MixerPref_BiLinearFiltering = $10;
  4382. {$EXTERNALSYM MixerPref_BiLinearFiltering}
  4383. MixerPref_PointFiltering = $20;
  4384. {$EXTERNALSYM MixerPref_PointFiltering}
  4385. MixerPref_FilteringMask = $f0;
  4386. {$EXTERNALSYM MixerPref_FilteringMask}
  4387. MixerPref_RenderTargetRGB = $00000100; // Uses D3D to perform mixing
  4388. {$EXTERNALSYM MixerPref_RenderTargetRGB}
  4389. MixerPref_RenderTargetYUV = $00001000; // Uses DXVA to perform mixing
  4390. {$EXTERNALSYM MixerPref_RenderTargetYUV}
  4391. MixerPref_RenderTargetYUV420 = $00000200; // Deprecated render target
  4392. {$EXTERNALSYM MixerPref_RenderTargetYUV420}
  4393. MixerPref_RenderTargetYUV422 = $00000400; // Deprecated render target
  4394. {$EXTERNALSYM MixerPref_RenderTargetYUV422}
  4395. MixerPref_RenderTargetYUV444 = $00000800; // Deprecated render target
  4396. {$EXTERNALSYM MixerPref_RenderTargetYUV444}
  4397. MixerPref_RenderTargetReserved = $0000E000; // 3 bits reserved for future use.
  4398. {$EXTERNALSYM MixerPref_RenderTargetReserved}
  4399. MixerPref_RenderTargetMask = $ff00;
  4400. {$EXTERNALSYM MixerPref_RenderTargetMask}
  4401. //
  4402. // Dynamic changes that can be performed when the VMR's mixer is
  4403. // configured to use the YUV Render target (see MixerPref_RenderTargetYUV)
  4404. // These preferences can be applied while the graph is running and take effect
  4405. // when the next frame is composed by the mixer.
  4406. //
  4407. MixerPref_DynamicSwitchToBOB = $00010000;
  4408. {$EXTERNALSYM MixerPref_DynamicSwitchToBOB}
  4409. MixerPref_DynamicDecimateBy2 = $00020000;
  4410. {$EXTERNALSYM MixerPref_DynamicDecimateBy2}
  4411. MixerPref_DynamicReserved = $000C0000;
  4412. {$EXTERNALSYM MixerPref_DynamicReserved}
  4413. MixerPref_DynamicMask = $000F0000;
  4414. {$EXTERNALSYM MixerPref_DynamicMask}
  4415. type
  4416. PNormalizedRect = ^TNormalizedRect;
  4417. _NORMALIZEDRECT = record
  4418. left : Single;
  4419. top : Single;
  4420. right : Single;
  4421. bottom : Single;
  4422. end;
  4423. {$EXTERNALSYM _NORMALIZEDRECT}
  4424. NORMALIZEDRECT = _NORMALIZEDRECT;
  4425. {$EXTERNALSYM NORMALIZEDRECT}
  4426. TNormalizedRect = _NORMALIZEDRECT;
  4427. {$HPPEMIT 'typedef System::DelphiInterface<IVMRMixerControl> _di_IVMRMixerControl;'}
  4428. {$EXTERNALSYM IVMRMixerControl}
  4429. IVMRMixerControl = interface(IUnknown)
  4430. ['{1c1a17b0-bed0-415d-974b-dc6696131599}']
  4431. (*** IVMRMixerControl methods ***)
  4432. //Alpha = Source alpha premultication factor (global alpha for source)
  4433. function SetAlpha(dwStreamID: DWORD; Alpha: single): HResult; stdcall;
  4434. function GetAlpha(dwStreamID: DWORD; out pAlpha: single): HResult; stdcall;
  4435. function SetZOrder(dwStreamID, dwZ: DWORD): HResult; stdcall;
  4436. function GetZOrder(dwStreamID: DWORD; out pZ: DWORD): HResult; stdcall;
  4437. function SetOutputRect(dwStreamID: DWORD; const pRect: TNORMALIZEDRECT): HResult; stdcall;
  4438. function GetOutputRect(dwStreamID: DWORD; out pRect: TNORMALIZEDRECT): HResult; stdcall;
  4439. function SetBackgroundClr(ClrBkg: COLORREF): HResult; stdcall;
  4440. function GetBackgroundClr(out lpClrBkg: COLORREF): HResult; stdcall;
  4441. function SetMixingPrefs(dwMixerPrefs: DWORD): HResult; stdcall;
  4442. function GetMixingPrefs(pdwMixerPrefs: DWORD): HResult; stdcall;
  4443. end;
  4444. {$ENDIF}
  4445. {$IFDEF ENABLEVMR7}
  4446. ///////////////////////////////////////////////////////////////////////////////
  4447. //
  4448. // VMR Multimon configuration interface
  4449. //
  4450. ///////////////////////////////////////////////////////////////////////////////
  4451. tagVMRGUID = record
  4452. pGUID : PGUID; // is NULL if the default DDraw device
  4453. GUID : TGUID; // otherwise points to this GUID
  4454. end;
  4455. {$EXTERNALSYM tagVMRGUID}
  4456. VMRGUID = tagVMRGUID;
  4457. {$EXTERNALSYM VMRGUID}
  4458. TVMRGuid = tagVMRGUID;
  4459. tagVMRMONITORINFO = record
  4460. guid : VMRGUID;
  4461. rcMonitor : TRECT;
  4462. hMon : HMONITOR;
  4463. dwFlags : DWORD; // described in MONITORINFOEX, currently only MONITORINFOF_PRIMARY
  4464. szDevice : array[0..31] of wchar;
  4465. szDescription : array[0..255] of wchar;
  4466. liDriverVersion : int64;
  4467. dwVendorId : DWORD;
  4468. dwDeviceId : DWORD;
  4469. dwSubSysId : DWORD;
  4470. dwRevision : DWORD;
  4471. end;
  4472. {$EXTERNALSYM tagVMRMONITORINFO}
  4473. VMRMONITORINFO = tagVMRMONITORINFO;
  4474. {$EXTERNALSYM VMRMONITORINFO}
  4475. TVMRMonitorInfo = tagVMRMONITORINFO;
  4476. {$HPPEMIT 'typedef System::DelphiInterface<IVMRMonitorConfig> _di_IVMRMonitorConfig;'}
  4477. {$EXTERNALSYM IVMRMonitorConfig}
  4478. IVMRMonitorConfig = interface(IUnknown)
  4479. ['{9cf0b1b6-fbaa-4b7f-88cf-cf1f130a0dce}']
  4480. (*** IVMRMonitorConfig methods ***)
  4481. // Use this method on a Multi-Monitor system to specify to the
  4482. // mixer filter which Direct Draw driver should be used when connecting
  4483. // to an upstream decoder filter.
  4484. function SetMonitor(const pGUID: TVMRGUID): HResult; stdcall;
  4485. // Use this method to determine the direct draw object that will be used when
  4486. // connecting the mixer filter to an upstream decoder filter.
  4487. function GetMonitor(out pGUID: TVMRGUID): HResult; stdcall;
  4488. // Use this method on a multi-monitor system to specify to the
  4489. // mixer filter the default Direct Draw device to use when
  4490. // connecting to an upstream filter. The default direct draw device
  4491. // can be overriden for a particular connection by SetMonitor method
  4492. // described above.
  4493. function SetDefaultMonitor(const pGUID: TVMRGUID): HResult; stdcall;
  4494. // Use this method on a multi-monitor system to determine which
  4495. // is the default direct draw device the overlay mixer filter
  4496. // will use when connecting to an upstream filter.
  4497. function GetDefaultMonitor(out pGUID: TVMRGUID): HResult; stdcall;
  4498. // Use this method to get a list of Direct Draw device GUIDs and thier
  4499. // associated monitor information that the mixer can use when
  4500. // connecting to an upstream decoder filter. Passing down a NULL pInfo
  4501. // parameter allows the app to determine the required array size (returned
  4502. // in pdwNumDevices). Otherwise, dwNumDevices returns the actual
  4503. // number of devices retrieved.
  4504. function GetAvailableMonitors(out pInfo: TVMRMONITORINFO; //if it fail try : "out pInfo" only /hg
  4505. dwMaxInfoArraySize: DWORD; // in array members
  4506. out pdwNumDevices: DWORD): HResult; stdcall; // actual number of devices retrieved
  4507. end;
  4508. {$ENDIF}
  4509. {$IFDEF ENABLEVMR7}
  4510. //=====================================================================
  4511. //
  4512. // IVMRImageCompositor
  4513. //
  4514. //=====================================================================
  4515. type
  4516. PVMRVideoStreamInfo = ^TVMRVideoStreamInfo;
  4517. _VMRVIDEOSTREAMINFO = record
  4518. pddsVideoSurface : IDIRECTDRAWSURFACE7;
  4519. dwWidth : DWORD;
  4520. dwHeight : DWORD;
  4521. dwStrmID : DWORD;
  4522. fAlpha : single;
  4523. ddClrKey : TDDCOLORKEY;
  4524. rNormal : TNORMALIZEDRECT;
  4525. end;
  4526. {$EXTERNALSYM _VMRVIDEOSTREAMINFO}
  4527. VMRVIDEOSTREAMINFO = _VMRVIDEOSTREAMINFO;
  4528. {$EXTERNALSYM VMRVIDEOSTREAMINFO}
  4529. TVMRVideoStreamInfo = _VMRVIDEOSTREAMINFO;
  4530. {$HPPEMIT 'typedef System::DelphiInterface<IVMRImageCompositor> _di_IVMRImageCompositor;'}
  4531. {$EXTERNALSYM IVMRImageCompositor}
  4532. IVMRImageCompositor = interface(IUnknown)
  4533. ['{7a4fb5af-479f-4074-bb40-ce6722e43c82}']
  4534. (*** IVMRImageCompositor methods ***)
  4535. function InitCompositionTarget(pD3DDevice: IUnknown; pddsRenderTarget: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4536. function TermCompositionTarget(pD3DDevice: IUnknown; pddsRenderTarget: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4537. function SetStreamMediaType(dwStrmID: DWORD; pmt: PAMMediaType; fTexture: BOOL): HResult; stdcall;
  4538. function CompositeImage(pD3DDevice: IUnknown; pddsRenderTarget: IDIRECTDRAWSURFACE7;
  4539. pmtRenderTarget: PAMMediaType; rtStart, rtEnd: TReferenceTime;
  4540. dwClrBkGnd: DWORD; pVideoStreamInfo: PVMRVIDEOSTREAMINFO; cStreams: cardinal): HResult; stdcall;
  4541. end;
  4542. {$ENDIF}
  4543. {$IFDEF ENABLEVMR7}
  4544. ///////////////////////////////////////////////////////////////////////////////
  4545. //
  4546. // VMR Filter configuration interfaces
  4547. //
  4548. ///////////////////////////////////////////////////////////////////////////////
  4549. const
  4550. RenderPrefs_RestrictToInitialMonitor = $00000000; // not implemented do not use
  4551. {$EXTERNALSYM RenderPrefs_RestrictToInitialMonitor}
  4552. RenderPrefs_ForceOffscreen = $00000001;
  4553. {$EXTERNALSYM RenderPrefs_ForceOffscreen}
  4554. RenderPrefs_ForceOverlays = $00000002; // fail if no overlays
  4555. {$EXTERNALSYM RenderPrefs_ForceOverlays}
  4556. RenderPrefs_AllowOverlays = $00000000; // overlay used by default
  4557. {$EXTERNALSYM RenderPrefs_AllowOverlays}
  4558. RenderPrefs_AllowOffscreen = $00000000; // offscreen used if no overlay
  4559. {$EXTERNALSYM RenderPrefs_AllowOffscreen}
  4560. RenderPrefs_DoNotRenderColorKeyAndBorder = $00000008; // app paints color keys
  4561. {$EXTERNALSYM RenderPrefs_DoNotRenderColorKeyAndBorder}
  4562. RenderPrefs_Reserved = $00000010; // note: used to be RestrictToInitialMonitor
  4563. {$EXTERNALSYM RenderPrefs_Reserved}
  4564. RenderPrefs_PreferAGPMemWhenMixing = $00000020;
  4565. {$EXTERNALSYM RenderPrefs_PreferAGPMemWhenMixing}
  4566. RenderPrefs_Mask = $0000003f; // OR of all above flags
  4567. {$EXTERNALSYM RenderPrefs_Mask}
  4568. VMRMode_Windowed = $00000001;
  4569. {$EXTERNALSYM VMRMode_Windowed}
  4570. VMRMode_Windowless = $00000002;
  4571. {$EXTERNALSYM VMRMode_Windowless}
  4572. VMRMode_Renderless = $00000004;
  4573. {$EXTERNALSYM VMRMode_Renderless}
  4574. VMRMode_Mask = $00000007; // OR of all above flags
  4575. {$EXTERNALSYM VMRMode_Mask}
  4576. // not a valid value to pass to SetRenderMode
  4577. MAX_NUMBER_OF_STREAMS = 16;
  4578. {$EXTERNALSYM MAX_NUMBER_OF_STREAMS}
  4579. type
  4580. {$HPPEMIT 'typedef System::DelphiInterface<IVMRFilterConfig> _di_IVMRFilterConfig;'}
  4581. {$EXTERNALSYM IVMRFilterConfig}
  4582. IVMRFilterConfig = interface(IUnknown)
  4583. ['{9e5530c5-7034-48b4-bb46-0b8a6efc8e36}']
  4584. (*** IVMRFilterConfig methods ***)
  4585. function SetImageCompositor(lpVMRImgCompositor: IVMRImageCompositor): HResult; stdcall;
  4586. function SetNumberOfStreams(dwMaxStreams: DWORD): HResult; stdcall;
  4587. function GetNumberOfStreams(out pdwMaxStreams: DWORD): HResult; stdcall;
  4588. function SetRenderingPrefs(dwRenderFlags: DWORD): HResult; stdcall; // a combination of VMRRenderingPrefFlags
  4589. function GetRenderingPrefs(out pdwRenderFlags: DWORD): HResult; stdcall;
  4590. function SetRenderingMode(Mode: DWORD): HResult; stdcall; // a combination of VMRMode
  4591. function GetRenderingMode(out pMode: DWORD): HResult; stdcall;
  4592. end;
  4593. {$ENDIF}
  4594. {$IFDEF ENABLEVMR7}
  4595. //=====================================================================
  4596. //
  4597. // IVMRAspectRatioControl
  4598. //
  4599. //=====================================================================
  4600. {$HPPEMIT 'typedef System::DelphiInterface<IVMRAspectRatioControl> _di_IVMRAspectRatioControl;'}
  4601. {$EXTERNALSYM IVMRAspectRatioControl}
  4602. IVMRAspectRatioControl = interface(IUnknown)
  4603. ['{ede80b5c-bad6-4623-b537-65586c9f8dfd}']
  4604. (*** IVMRAspectRatioControl methods ***)
  4605. function GetAspectRatioMode(out lpdwARMode: TVMRAspectRatioMode): HResult; stdcall;
  4606. function SetAspectRatioMode(dwARMode: TVMRAspectRatioMode): HResult; stdcall;
  4607. end;
  4608. {$ENDIF}
  4609. {$IFDEF ENABLEVMR7}
  4610. //=====================================================================
  4611. //
  4612. // IVMRDeinterlaceControl
  4613. //
  4614. // New interfaced introduced into the WindowsXP SP1 release of the VMR.
  4615. // This interface allows applications to control the DX-VA deinterlacing
  4616. // support provided by the VMR.
  4617. //
  4618. // The VMR needs to be set into "mixing" mode for this interface to work.
  4619. //
  4620. // SetDeinterlaceMode is only effective for new connections made to the
  4621. // VMR. It should be noted that the graphics device driver may refuse
  4622. // to use the specified deinterlace mode, in which case 3 fallback
  4623. // policies are offered by the VMR, these being:
  4624. //
  4625. // 1. Fallback to the next best mode offered by the driver.
  4626. // 2. Fallback to the BOB deinterlace mode.
  4627. // 3. Fallback to the WEAVE deinterlace mode (ie. turn deinterlacing off).
  4628. //
  4629. //=====================================================================
  4630. type
  4631. VMRDeinterlacePrefs = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  4632. {$EXTERNALSYM VMRDeinterlacePrefs}
  4633. const
  4634. DeinterlacePref_NextBest = $01;
  4635. {$EXTERNALSYM DeinterlacePref_NextBest}
  4636. DeinterlacePref_BOB = $02;
  4637. {$EXTERNALSYM DeinterlacePref_BOB}
  4638. DeinterlacePref_Weave = $04;
  4639. {$EXTERNALSYM DeinterlacePref_Weave}
  4640. DeinterlacePref_Mask = $07;
  4641. {$EXTERNALSYM DeinterlacePref_Mask}
  4642. type
  4643. VMRDeinterlaceTech = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  4644. {$EXTERNALSYM VMRDeinterlaceTech}
  4645. const
  4646. // the algorithm is unknown or proprietary
  4647. DeinterlaceTech_Unknown = $0000;
  4648. {$EXTERNALSYM DeinterlaceTech_Unknown}
  4649. // the algorithm creates the missing lines by repeating
  4650. // the line either above or below it - this method will look very jaggy and
  4651. // isn't recommended
  4652. DeinterlaceTech_BOBLineReplicate = $0001;
  4653. {$EXTERNALSYM DeinterlaceTech_BOBLineReplicate}
  4654. // the algorithm creates the missing lines by vertically stretching each
  4655. // video field by a factor of two, for example by averaging two lines or
  4656. // using a [-1, 9, 9, -1]/16 filter across four lines.
  4657. // Slight vertical adjustments are made to ensure that the resulting image
  4658. // does not "bob" up and down.
  4659. DeinterlaceTech_BOBVerticalStretch = $0002;
  4660. {$EXTERNALSYM DeinterlaceTech_BOBVerticalStretch}
  4661. // the pixels in the missing line are recreated by a median filtering operation
  4662. DeinterlaceTech_MedianFiltering = $0004;
  4663. {$EXTERNALSYM DeinterlaceTech_MedianFiltering}
  4664. // the pixels in the missing line are recreated by an edge filter.
  4665. // In this process, spatial directional filters are applied to determine
  4666. // the orientation of edges in the picture content, and missing
  4667. // pixels are created by filtering along (rather than across) the
  4668. // detected edges.
  4669. DeinterlaceTech_EdgeFiltering = $0010;
  4670. {$EXTERNALSYM DeinterlaceTech_EdgeFiltering}
  4671. // the pixels in the missing line are recreated by switching on a field by
  4672. // field basis between using either spatial or temporal interpolation
  4673. // depending on the amount of motion.
  4674. DeinterlaceTech_FieldAdaptive = $0020;
  4675. {$EXTERNALSYM DeinterlaceTech_FieldAdaptive}
  4676. // the pixels in the missing line are recreated by switching on a pixel by pixel
  4677. // basis between using either spatial or temporal interpolation depending on
  4678. // the amount of motion..
  4679. DeinterlaceTech_PixelAdaptive = $0040;
  4680. {$EXTERNALSYM DeinterlaceTech_PixelAdaptive}
  4681. // Motion Vector Steering identifies objects within a sequence of video
  4682. // fields. The missing pixels are recreated after first aligning the
  4683. // movement axes of the individual objects in the scene to make them
  4684. // parallel with the time axis.
  4685. DeinterlaceTech_MotionVectorSteered = $0080;
  4686. {$EXTERNALSYM DeinterlaceTech_MotionVectorSteered}
  4687. type
  4688. PVMRFrequency = ^TVMRFrequency;
  4689. _VMRFrequency = record
  4690. dwNumerator : DWORD;
  4691. dwDenominator : DWORD;
  4692. end;
  4693. {$EXTERNALSYM _VMRFrequency}
  4694. VMRFrequency = _VMRFrequency;
  4695. {$EXTERNALSYM VMRFrequency}
  4696. TVMRFrequency = _VMRFrequency;
  4697. PVMRVideoDesc = ^TVMRVideoDesc;
  4698. _VMRVideoDesc = record
  4699. dwSize : DWORD;
  4700. dwSampleWidth : DWORD;
  4701. dwSampleHeight : DWORD;
  4702. SingleFieldPerSample : BOOL;
  4703. dwFourCC : DWORD;
  4704. InputSampleFreq : VMRFrequency;
  4705. OutputFrameFreq : VMRFrequency;
  4706. end;
  4707. {$EXTERNALSYM _VMRVideoDesc}
  4708. VMRVideoDesc = _VMRVideoDesc;
  4709. {$EXTERNALSYM VMRVideoDesc}
  4710. TVMRVideoDesc = _VMRVideoDesc;
  4711. PVMRDeinterlaceCaps = ^TVMRDeinterlaceCaps;
  4712. _VMRDeinterlaceCaps = record
  4713. dwSize : DWORD;
  4714. dwNumPreviousOutputFrames : DWORD;
  4715. dwNumForwardRefSamples : DWORD;
  4716. dwNumBackwardRefSamples : DWORD;
  4717. DeinterlaceTechnology : VMRDeinterlaceTech;
  4718. end;
  4719. {$EXTERNALSYM _VMRDeinterlaceCaps}
  4720. VMRDeinterlaceCaps = _VMRDeinterlaceCaps;
  4721. {$EXTERNALSYM VMRDeinterlaceCaps}
  4722. TVMRDeinterlaceCaps = _VMRDeinterlaceCaps;
  4723. {$HPPEMIT 'typedef System::DelphiInterface<IVMRDeinterlaceControl> _di_IVMRDeinterlaceControl;'}
  4724. {$EXTERNALSYM IVMRDeinterlaceControl}
  4725. IVMRDeinterlaceControl = interface(IUnknown)
  4726. ['{bb057577-0db8-4e6a-87a7-1a8c9a505a0f}']
  4727. (*** IVMRDeinterlaceControl methods ***)
  4728. // For the specified video description returns the
  4729. // number of deinterlacing modes available to the VMR.
  4730. // The deinterlacing modes are returned in descending
  4731. // quality order ie. the best quality mode is at
  4732. // lpdwNumDeinterlaceModes[0], the next best at
  4733. // lpdwNumDeinterlaceModes[1] and so on.
  4734. //
  4735. // To determine how big an array of guids to pass to the
  4736. // GetNumberOfDeinterlaceModes method call
  4737. // GetNumberOfDeinterlaceModes(lpVideoDescription, &dwNumModes, NULL);
  4738. //
  4739. function GetNumberOfDeinterlaceModes(lpVideoDescription: PVMRVideoDesc;
  4740. var lpdwNumDeinterlaceModes: DWORD; lpDeinterlaceModes: PGUID): HResult; stdcall;
  4741. // For the given video description get the capabilities of the
  4742. // specified de-interlace mode.
  4743. function GetDeinterlaceModeCaps(const lpDeinterlaceMode: TGUID;
  4744. lpVideoDescription: PVMRVideoDesc; lpDeinterlaceCaps: PVMRDeinterlaceCaps): HResult; stdcall;
  4745. // Get/Set the deinterlace mode that you would like the
  4746. // VMR to use when de-interlacing the specified stream.
  4747. // It should be noted that the VMR may not actually be able
  4748. // to use the requested deinterlace mode, in which case the
  4749. // the VMR will fall back to other de-interlace modes as specified
  4750. // by the de-interlace preferences (see SetDeinterlacePrefs below).
  4751. function GetDeinterlaceMode(
  4752. dwStreamID: DWORD;
  4753. out lpDeinterlaceMode: TGUID // returns GUID_NULL if SetDeinterlaceMode
  4754. ): HResult; stdcall; // has not been called yet.
  4755. function SetDeinterlaceMode(
  4756. dwStreamID: DWORD; // use $FFFFFFFF to set mode for all streams
  4757. const lpDeinterlaceMode: TGUID // GUID_NULL == turn deinterlacing off
  4758. ): HResult; stdcall;
  4759. function GetDeinterlacePrefs(out lpdwDeinterlacePrefs: VMRDeinterlacePrefs): HResult; stdcall;
  4760. function SetDeinterlacePrefs(dwDeinterlacePrefs: VMRDeinterlacePrefs): HResult; stdcall;
  4761. // Get the DeinterlaceMode currently in use for the specified
  4762. // video stream (ie. pin). The returned GUID will be NULL if
  4763. // the de-interlacing h/w has not been created by the VMR at the
  4764. // time the function is called, or if the VMR determines that
  4765. // this stream should not or can be de-interlaced.
  4766. function GetActualDeinterlaceMode(
  4767. dwStreamID: DWORD; out lpDeinterlaceMode: TGUID): HResult; stdcall;
  4768. end;
  4769. {$ENDIF}
  4770. {$IFDEF ENABLEVMR7}
  4771. //=====================================================================
  4772. //
  4773. // IVMRMixerBitmap
  4774. //
  4775. //=====================================================================
  4776. PVMRAlphaBitmap = ^TVMRAlphaBitmap;
  4777. _VMRALPHABITMAP = record
  4778. dwFlags : DWORD; // flags word
  4779. hdc : HDC; // DC for the bitmap to copy
  4780. pDDS : IDIRECTDRAWSURFACE7; // DirectDraw surface to copy
  4781. rSrc : TRECT; // rectangle to copy from the DC/DDS
  4782. rDest : NORMALIZEDRECT; // output rectangle in composition space
  4783. fAlpha : single; // opacity of the bitmap
  4784. clrSrcKey : COLORREF; // src color key
  4785. end;
  4786. {$EXTERNALSYM _VMRALPHABITMAP}
  4787. VMRALPHABITMAP = _VMRALPHABITMAP;
  4788. {$EXTERNALSYM VMRALPHABITMAP}
  4789. TVMRAlphaBitmap = _VMRALPHABITMAP;
  4790. const
  4791. // Disable the alpha bitmap for now
  4792. VMRBITMAP_DISABLE = $00000001;
  4793. {$EXTERNALSYM VMRBITMAP_DISABLE}
  4794. // Take the bitmap from the HDC rather than the DirectDraw surface
  4795. VMRBITMAP_HDC = $00000002;
  4796. {$EXTERNALSYM VMRBITMAP_HDC}
  4797. // Take the entire DDraw surface - rSrc is ignored
  4798. VMRBITMAP_ENTIREDDS = $00000004;
  4799. {$EXTERNALSYM VMRBITMAP_ENTIREDDS}
  4800. // Indicates that the clrTrans value is valid and should be
  4801. // used when blending
  4802. VMRBITMAP_SRCCOLORKEY = $00000008;
  4803. {$EXTERNALSYM VMRBITMAP_SRCCOLORKEY}
  4804. VMRBITMAP_SRCRECT = $00000010;
  4805. {$EXTERNALSYM VMRBITMAP_SRCRECT}
  4806. type
  4807. {$HPPEMIT 'typedef System::DelphiInterface<IVMRMixerBitmap> _di_IVMRMixerBitmap;'}
  4808. {$EXTERNALSYM IVMRMixerBitmap}
  4809. IVMRMixerBitmap = interface(IUnknown)
  4810. ['{1E673275-0257-40aa-AF20-7C608D4A0428}']
  4811. (*** IVMRMixerBitmap methods ***)
  4812. // Set bitmap, location to blend it, and blending value
  4813. function SetAlphaBitmap(var pBmpParms: TVMRALPHABITMAP): HResult; stdcall;
  4814. // Change bitmap location, size and blending value,
  4815. // graph must be running for change to take effect.
  4816. function UpdateAlphaBitmapParameters(pBmpParms: PVMRALPHABITMAP): HResult; stdcall;
  4817. // Get bitmap, location to blend it, and blending value
  4818. function GetAlphaBitmapParameters(out pBmpParms: TVMRALPHABITMAP): HResult; stdcall;
  4819. end;
  4820. {$ENDIF}
  4821. {$IFDEF ENABLEVMR7}
  4822. //=====================================================================
  4823. //
  4824. // IVMRVideoStreamControl
  4825. //
  4826. //=====================================================================
  4827. {$HPPEMIT 'typedef System::DelphiInterface<IVMRVideoStreamControl> _di_IVMRVideoStreamControl;'}
  4828. {$EXTERNALSYM IVMRVideoStreamControl}
  4829. IVMRVideoStreamControl = interface(IUnknown)
  4830. ['{058d1f11-2a54-4bef-bd54-df706626b727}']
  4831. (*** IVMRVideoStreamControl methods ***)
  4832. function SetColorKey(clr: PDDCOLORKEY): HResult; stdcall; // Source color key, set to 0xFFFFFFFF to disable
  4833. function GetColorKey(out pclr: TDDCOLORKEY): HResult; stdcall;
  4834. function SetStreamActiveState(fActive: BOOL): HResult; stdcall;
  4835. function GetStreamActiveState(out lpfActive: BOOL): HResult; stdcall;
  4836. end;
  4837. {$ENDIF}
  4838. {$IFDEF ENABLEVMR7}
  4839. //=====================================================================
  4840. //
  4841. // IVMRSurface
  4842. //
  4843. //=====================================================================
  4844. {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurface> _di_IVMRSurface;'}
  4845. {$EXTERNALSYM IVMRSurface}
  4846. IVMRSurface = interface(IUnknown)
  4847. ['{a9849bbe-9ec8-4263-b764-62730f0d15d0}']
  4848. (*** IVMRSurface methods ***)
  4849. function IsSurfaceLocked: HResult; stdcall;
  4850. function LockSurface(out lpSurface: PBYTE): HResult; stdcall;
  4851. function UnlockSurface: HResult; stdcall;
  4852. function GetSurface(lplpSurface: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4853. end;
  4854. {$ENDIF}
  4855. {$IFDEF ENABLEVMR7}
  4856. //=====================================================================
  4857. //
  4858. // IVMRImagePresenterConfig
  4859. //
  4860. //=====================================================================
  4861. {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenterConfig> _di_IVMRImagePresenterConfig;'}
  4862. {$EXTERNALSYM IVMRImagePresenterConfig}
  4863. IVMRImagePresenterConfig = interface(IUnknown)
  4864. ['{9f3a1c85-8555-49ba-935f-be5b5b29d178}']
  4865. (*** IVMRImagePresenterConfig methods ***)
  4866. function SetRenderingPrefs(dwRenderFlags: DWORD): HResult; stdcall;
  4867. function GetRenderingPrefs(out dwRenderFlags: DWORD): HResult; stdcall;
  4868. end;
  4869. //=====================================================================
  4870. //
  4871. // IVMRImagePresenterExclModeConfig
  4872. //
  4873. //=====================================================================
  4874. {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenterExclModeConfig> _di_IVMRImagePresenterExclModeConfig;'}
  4875. {$EXTERNALSYM IVMRImagePresenterExclModeConfig}
  4876. IVMRImagePresenterExclModeConfig = interface(IVMRImagePresenterConfig)
  4877. ['{e6f7ce40-4673-44f1-8f77-5499d68cb4ea}']
  4878. (*** IVMRImagePresenterExclModeConfig methods ***)
  4879. function SetXlcModeDDObjAndPrimarySurface(lpDDObj: IDIRECTDRAW7; lpPrimarySurf: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4880. function GetXlcModeDDObjAndPrimarySurface(lpDDObj: IDIRECTDRAW7; lpPrimarySurf: IDIRECTDRAWSURFACE7): HResult; stdcall;
  4881. end;
  4882. {$ENDIF}
  4883. //=====================================================================
  4884. //
  4885. // IVPManager
  4886. //
  4887. //=====================================================================
  4888. {$HPPEMIT 'typedef System::DelphiInterface<IVPManager> _di_IVPManager;'}
  4889. {$EXTERNALSYM IVPManager}
  4890. IVPManager = interface(IUnknown)
  4891. ['{aac18c18-e186-46d2-825d-a1f8dc8e395a}']
  4892. (*** IVPManager methods ***)
  4893. // Use this method on a Multi-Monitor system to specify to the
  4894. // video port manager filter which videoport index is used
  4895. // to an upstream decoder filter.
  4896. function SetVideoPortIndex(dwVideoPortIndex: DWORD): HResult; stdcall; // the video port number that this is connected to
  4897. // This method returns the current video port index being used by the VPM.
  4898. function GetVideoPortIndex(out pdwVideoPortIndex: DWORD): HResult; stdcall; // the video port number that this is connected to
  4899. end;
  4900. (*==========================================================================;
  4901. *
  4902. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  4903. *
  4904. * File: mmstream.h
  4905. *
  4906. ***************************************************************************)
  4907. const
  4908. IID_IMultiMediaStream: TGUID = '{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}';
  4909. {$EXTERNALSYM IID_IMultiMediaStream}
  4910. IID_IMediaStream: TGUID = '{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}';
  4911. {$EXTERNALSYM IID_IMediaStream}
  4912. IID_IStreamSample: TGUID = '{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}';
  4913. {$EXTERNALSYM IID_IStreamSample}
  4914. const
  4915. MS_S_PENDING = $00040001;
  4916. {$EXTERNALSYM MS_S_PENDING}
  4917. MS_S_NOUPDATE = $00040002;
  4918. {$EXTERNALSYM MS_S_NOUPDATE}
  4919. MS_S_ENDOFSTREAM = $00040003;
  4920. {$EXTERNALSYM MS_S_ENDOFSTREAM}
  4921. MS_E_SAMPLEALLOC = $80040401;
  4922. {$EXTERNALSYM MS_E_SAMPLEALLOC}
  4923. MS_E_PURPOSEID = $80040402;
  4924. {$EXTERNALSYM MS_E_PURPOSEID}
  4925. MS_E_NOSTREAM = $80040403;
  4926. {$EXTERNALSYM MS_E_NOSTREAM}
  4927. MS_E_NOSEEKING = $80040404;
  4928. {$EXTERNALSYM MS_E_NOSEEKING}
  4929. MS_E_INCOMPATIBLE = $80040405;
  4930. {$EXTERNALSYM MS_E_INCOMPATIBLE}
  4931. MS_E_BUSY = $80040406;
  4932. {$EXTERNALSYM MS_E_BUSY}
  4933. MS_E_NOTINIT = $80040407;
  4934. {$EXTERNALSYM MS_E_NOTINIT}
  4935. MS_E_SOURCEALREADYDEFINED = $80040408;
  4936. {$EXTERNALSYM MS_E_SOURCEALREADYDEFINED}
  4937. MS_E_INVALIDSTREAMTYPE = $80040409;
  4938. {$EXTERNALSYM MS_E_INVALIDSTREAMTYPE}
  4939. MS_E_NOTRUNNING = $8004040A;
  4940. {$EXTERNALSYM MS_E_NOTRUNNING}
  4941. MSPID_PrimaryVideo: TGUID = (D1:$A35FF56A;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
  4942. {$EXTERNALSYM MSPID_PrimaryVideo}
  4943. MSPID_PrimaryAudio: TGUID = (D1:$A35FF56B;D2:$9FDA;D3:$11D0;D4:($8F,$DF,$00,$C0,$4F,$D9,$18,$9D));
  4944. {$EXTERNALSYM MSPID_PrimaryAudio}
  4945. type
  4946. PAPCFUNC = procedure(dwParam: DWORD); stdcall;
  4947. {$EXTERNALSYM PAPCFUNC}
  4948. STREAM_TIME = {$IFDEF TYPE_IDENTITY}type {$ENDIF} int64;
  4949. {$EXTERNALSYM STREAM_TIME}
  4950. PStreamType = ^TStreamType;
  4951. STREAM_TYPE = (
  4952. STREAMTYPE_READ,
  4953. STREAMTYPE_WRITE,
  4954. STREAMTYPE_TRANSFORM
  4955. );
  4956. {$EXTERNALSYM STREAM_TYPE}
  4957. TStreamType = STREAM_TYPE;
  4958. STREAM_STATE = (
  4959. STREAMSTATE_STOP,
  4960. STREAMSTATE_RUN
  4961. );
  4962. {$EXTERNALSYM STREAM_STATE}
  4963. TStreamState = STREAM_STATE;
  4964. const
  4965. COMPSTAT_NOUPDATEOK = 1;
  4966. {$EXTERNALSYM COMPSTAT_NOUPDATEOK}
  4967. COMPSTAT_WAIT = 2;
  4968. {$EXTERNALSYM COMPSTAT_WAIT}
  4969. COMPSTAT_ABORT = 4;
  4970. {$EXTERNALSYM COMPSTAT_ABORT}
  4971. MMSSF_HASCLOCK = $1;
  4972. {$EXTERNALSYM MMSSF_HASCLOCK}
  4973. MMSSF_SUPPORTSEEK = $2;
  4974. {$EXTERNALSYM MMSSF_SUPPORTSEEK}
  4975. MMSSF_ASYNCHRONOUS = $4;
  4976. {$EXTERNALSYM MMSSF_ASYNCHRONOUS}
  4977. SSUPDATE_ASYNC = $1;
  4978. {$EXTERNALSYM SSUPDATE_ASYNC}
  4979. SSUPDATE_CONTINUOUS = $2;
  4980. {$EXTERNALSYM SSUPDATE_CONTINUOUS}
  4981. type
  4982. IMediaStream = interface;
  4983. IStreamSample = interface;
  4984. {$HPPEMIT 'typedef System::DelphiInterface<IMultiMediaStream> _di_IMultiMediaStream;'}
  4985. {$EXTERNALSYM IMultiMediaStream}
  4986. IMultiMediaStream = interface(IUnknown)
  4987. ['{B502D1BC-9A57-11d0-8FDE-00C04FD9189D}']
  4988. (*** IMultiMediaStream methods ***)
  4989. function GetInformation(pdwFlags: PDWORD; pStreamType: PStreamType):
  4990. HResult; stdcall;
  4991. function GetMediaStream(const idPurpose: TGUID;
  4992. out ppMediaStream: IMediaStream): HResult; stdcall;
  4993. function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream):
  4994. HResult; stdcall;
  4995. function GetState(out pCurrentState: TStreamState): HResult; stdcall;
  4996. function SetState(NewState: TStreamState): HResult; stdcall;
  4997. function GetTime(out pCurrentTime: STREAM_TIME): HResult; stdcall;
  4998. function GetDuration(out pDuration: STREAM_TIME): HResult; stdcall;
  4999. function Seek(SeekTime: STREAM_TIME): HResult; stdcall;
  5000. function GetEndOfStreamEventHandle(out phEOS: THandle): HResult; stdcall;
  5001. end;
  5002. {$HPPEMIT 'typedef System::DelphiInterface<IMediaStream> _di_IMediaStream;'}
  5003. {$EXTERNALSYM IMediaStream}
  5004. IMediaStream = interface(IUnknown)
  5005. ['{B502D1BD-9A57-11d0-8FDE-00C04FD9189D}']
  5006. (*** IMediaStream methods ***)
  5007. function GetMultiMediaStream(out ppMultiMediaStream: IMultiMediaStream):
  5008. HResult; stdcall;
  5009. function GetInformation(pPurposeId: PGUID; pType: PStreamType): HResult; stdcall;
  5010. function SetSameFormat(pStreamThatHasDesiredFormat: IMediaStream;
  5011. dwFlags: DWORD): HResult; stdcall;
  5012. function AllocateSample(dwFlags: DWORD; out ppSample: IStreamSample): HResult; stdcall;
  5013. function CreateSharedSample(pExistingSample: IStreamSample; dwFlags: DWORD;
  5014. out ppNewSample: IStreamSample): HResult; stdcall;
  5015. function SendEndOfStream(dwFlags: DWORD): HResult; stdcall;
  5016. end;
  5017. {$HPPEMIT 'typedef System::DelphiInterface<IStreamSample> _di_IStreamSample;'}
  5018. {$EXTERNALSYM IStreamSample}
  5019. IStreamSample = interface(IUnknown)
  5020. ['{B502D1BE-9A57-11d0-8FDE-00C04FD9189D}']
  5021. (*** IStreamSample methods ***)
  5022. function GetMediaStream(out ppMediaStream: IMediaStream): HResult; stdcall;
  5023. function GetSampleTimes(out pStartTime, pEndTime,
  5024. pCurrentTime: STREAM_TIME): HResult; stdcall;
  5025. function SetSampleTimes(var pStartTime, pEndTime: STREAM_TIME): HResult; stdcall;
  5026. function Update(dwFlags: DWORD; hEvent: THandle; pfnAPC: PAPCFUNC;
  5027. dwAPCData: DWORD): HResult; stdcall;
  5028. function CompletionStatus(dwFlags: DWORD; dwMilliseconds: DWORD): HResult; stdcall;
  5029. end;
  5030. (*==========================================================================;
  5031. *
  5032. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5033. *
  5034. * File: amstream.h
  5035. *
  5036. ***************************************************************************)
  5037. const
  5038. IID_IDirectShowStream: TGUID = '{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}';
  5039. {$EXTERNALSYM IID_IDirectShowStream}
  5040. IID_IAMMultiMediaStream: TGUID = '{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}';
  5041. {$EXTERNALSYM IID_IAMMultiMediaStream}
  5042. IID_IAMMediaStream: TGUID = '{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}';
  5043. {$EXTERNALSYM IID_IAMMediaStream}
  5044. IID_IMediaStreamFilter: TGUID = '{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}';
  5045. {$EXTERNALSYM IID_IMediaStreamFilter}
  5046. IID_IDirectDrawMediaSampleAllocator: TGUID = '{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}';
  5047. {$EXTERNALSYM IID_IDirectDrawMediaSampleAllocator}
  5048. IID_IDirectDrawMediaSample: TGUID = '{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}';
  5049. {$EXTERNALSYM IID_IDirectDrawMediaSample}
  5050. IID_IAMMediaTypeStream: TGUID = '{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}';
  5051. {$EXTERNALSYM IID_IAMMediaTypeStream}
  5052. IID_IAMMediaTypeSample: TGUID = '{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}';
  5053. {$EXTERNALSYM IID_IAMMediaTypeSample}
  5054. const
  5055. AMMSF_NOGRAPHTHREAD = $1;
  5056. {$EXTERNALSYM AMMSF_NOGRAPHTHREAD}
  5057. AMMSF_ADDDEFAULTRENDERER = $1;
  5058. {$EXTERNALSYM AMMSF_ADDDEFAULTRENDERER}
  5059. AMMSF_CREATEPEER = $2;
  5060. {$EXTERNALSYM AMMSF_CREATEPEER}
  5061. AMMSF_STOPIFNOSAMPLES = $4;
  5062. {$EXTERNALSYM AMMSF_STOPIFNOSAMPLES}
  5063. AMMSF_NOSTALL = $8;
  5064. {$EXTERNALSYM AMMSF_NOSTALL}
  5065. AMMSF_RENDERTYPEMASK = $3;
  5066. {$EXTERNALSYM AMMSF_RENDERTYPEMASK}
  5067. AMMSF_RENDERTOEXISTING = 0;
  5068. {$EXTERNALSYM AMMSF_RENDERTOEXISTING}
  5069. AMMSF_RENDERALLSTREAMS = $1;
  5070. {$EXTERNALSYM AMMSF_RENDERALLSTREAMS}
  5071. AMMSF_NORENDER = $2;
  5072. {$EXTERNALSYM AMMSF_NORENDER}
  5073. AMMSF_NOCLOCK = $4;
  5074. {$EXTERNALSYM AMMSF_NOCLOCK}
  5075. AMMSF_RUN = $8;
  5076. {$EXTERNALSYM AMMSF_RUN}
  5077. type
  5078. OUTPUT_STATE = (
  5079. Disabled,
  5080. ReadData,
  5081. RenderData
  5082. );
  5083. {$EXTERNALSYM OUTPUT_STATE}
  5084. TOutputState = OUTPUT_STATE;
  5085. {$HPPEMIT 'typedef System::DelphiInterface<IDirectShowStream> _di_IDirectShowStream;'}
  5086. {$EXTERNALSYM IDirectShowStream}
  5087. IDirectShowStream = interface(IDispatch)
  5088. ['{7DB01C96-C0C3-11D0-8FF1-00C04FD9189D}']
  5089. (*** IDirectShowStream methods ***)
  5090. function get_FileName(out pVal: WideString): HResult; stdcall;
  5091. function put_FileName(newVal: WideString): HResult; stdcall;
  5092. function get_Video(out pVal: TOutputState): HResult; stdcall;
  5093. function put_Video(newVal: TOutputState): HResult; stdcall;
  5094. function get_Audio(out pVal: TOutputState): HResult; stdcall;
  5095. function put_Audio(newVal: TOutputState): HResult; stdcall;
  5096. end;
  5097. IMediaStreamFilter = interface;
  5098. {$HPPEMIT 'typedef System::DelphiInterface<IAMMultiMediaStream> _di_IAMMultiMediaStream;'}
  5099. {$EXTERNALSYM IAMMultiMediaStream}
  5100. IAMMultiMediaStream = interface(IMultiMediaStream)
  5101. ['{BEBE595C-9A6F-11D0-8FDE-00C04FD9189D}']
  5102. (*** IAMMultiMediaStream methods ***)
  5103. function Initialize(StreamType: TStreamType; dwFlags: DWORD;
  5104. pFilterGraph: IGraphBuilder): HResult; stdcall;
  5105. function GetFilterGraph(out ppGraphBuilder: IGraphBuilder): HResult; stdcall;
  5106. function GetFilter(out ppFilter: IMediaStreamFilter): HResult; stdcall;
  5107. function AddMediaStream(pStreamObject: IUnknown; PurposeId: PGUID;
  5108. dwFlags: DWORD; out ppNewStream: IMediaStream): HResult; stdcall;
  5109. function OpenFile(pszFileName: PWideChar; dwFlags: DWORD): HResult; stdcall;
  5110. function OpenMoniker(pCtx: IBindCtx; pMoniker: IMoniker; dwFlags: DWORD): HResult; stdcall;
  5111. function Render(dwFlags: DWORD): HResult; stdcall;
  5112. end;
  5113. {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaStream> _di_IAMMediaStream;'}
  5114. {$EXTERNALSYM IAMMediaStream}
  5115. IAMMediaStream = interface(IMediaStream)
  5116. ['{BEBE595D-9A6F-11D0-8FDE-00C04FD9189D}']
  5117. (*** IAMMediaStream methods ***)
  5118. function Initialize(pSourceObject: IUnknown; dwFlags: DWORD;
  5119. PurposeId: PGUID; StreamType: TStreamType): HResult; stdcall;
  5120. function SetState(State: TFilterState): HResult; stdcall;
  5121. function JoinAMMultiMediaStream(pAMMultiMediaStream: IAMMultiMediaStream): HResult; stdcall;
  5122. function JoinFilter(pMediaStreamFilter: IMediaStreamFilter): HResult; stdcall;
  5123. function JoinFilterGraph(pFilterGraph: IFilterGraph): HResult; stdcall;
  5124. end;
  5125. {$HPPEMIT 'typedef System::DelphiInterface<IMediaStreamFilter> _di_IMediaStreamFilter;'}
  5126. {$EXTERNALSYM IMediaStreamFilter}
  5127. IMediaStreamFilter = interface(IBaseFilter)
  5128. ['{BEBE595E-9A6F-11D0-8FDE-00C04FD9189D}']
  5129. (*** IMediaStreamFilter methods ***)
  5130. function AddMediaStream(pAMMediaStream: IAMMediaStream): HResult; stdcall;
  5131. function GetMediaStream( var idPurpose: TGUID;
  5132. out ppMediaStream: IMediaStream): HResult; stdcall;
  5133. function EnumMediaStreams(Index: Longint; out ppMediaStream: IMediaStream): HResult; stdcall;
  5134. function SupportSeeking(bRenderer: BOOL): HResult; stdcall;
  5135. function ReferenceTimeToStreamTime( var pTime: TReferenceTime): HResult; stdcall;
  5136. function GetCurrentStreamTime(out pCurrentStreamTime: TReferenceTime): HResult; stdcall;
  5137. function WaitUntil(WaitStreamTime: TReferenceTime): HResult; stdcall;
  5138. function Flush(bCancelEOS: BOOL): HResult; stdcall;
  5139. function EndOfStream: HResult; stdcall;
  5140. end;
  5141. {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawMediaSampleAllocator> _di_IDirectDrawMediaSampleAllocator;'}
  5142. {$EXTERNALSYM IDirectDrawMediaSampleAllocator}
  5143. IDirectDrawMediaSampleAllocator = interface(IUnknown)
  5144. ['{AB6B4AFC-F6E4-11D0-900D-00C04FD9189D}']
  5145. (*** IDirectDrawMediaSampleAllocator methods ***)
  5146. function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  5147. end;
  5148. {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawMediaSample> _di_IDirectDrawMediaSample;'}
  5149. {$EXTERNALSYM IDirectDrawMediaSample}
  5150. IDirectDrawMediaSample = interface(IUnknown)
  5151. ['{AB6B4AFE-F6E4-11D0-900D-00C04FD9189D}']
  5152. (*** IDirectDrawMediaSample methods ***)
  5153. function GetSurfaceAndReleaseLock(out ppDirectDrawSurface: IDirectDrawSurface;
  5154. out pRect: TRect): HResult; stdcall;
  5155. function LockMediaSamplePointer: HResult; stdcall;
  5156. end;
  5157. IAMMediaTypeSample = interface;
  5158. {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaTypeStream> _di_IAMMediaTypeStream;'}
  5159. {$EXTERNALSYM IAMMediaTypeStream}
  5160. IAMMediaTypeStream = interface(IMediaStream)
  5161. ['{AB6B4AFA-F6E4-11D0-900D-00C04FD9189D}']
  5162. (*** IAMMediaTypeStream methods ***)
  5163. function GetFormat(out pMediaType: TAMMediaType; dwFlags: DWORD): HResult; stdcall;
  5164. function SetFormat(const pMediaType: TAMMediaType; dwFlags: DWORD): HResult; stdcall;
  5165. function CreateSample(lSampleSize: Longint; pbBuffer: Pointer;
  5166. dwFlags: DWORD; pUnkOuter: IUnknown; out ppAMMediaTypeSample: IAMMediaTypeSample): HResult; stdcall;
  5167. function GetStreamAllocatorRequirements(var pProps: TAllocatorProperties): HResult; stdcall;
  5168. function SetStreamAllocatorRequirements(const pProps: TAllocatorProperties): HResult; stdcall;
  5169. end;
  5170. {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaTypeSample> _di_IAMMediaTypeSample;'}
  5171. {$EXTERNALSYM IAMMediaTypeSample}
  5172. IAMMediaTypeSample = interface(IStreamSample)
  5173. ['{AB6B4AFB-F6E4-11D0-900D-00C04FD9189D}']
  5174. (*** IAMMediaTypeSample methods ***)
  5175. function SetPointer(pBuffer: Pointer; lSize: Longint): HResult; stdcall;
  5176. function GetPointer(out ppBuffer: Pointer): HResult; stdcall;
  5177. function GetSize: Longint; stdcall;
  5178. function GetTime(out pTimeStart, pTimeEnd: TReferenceTime): HResult; stdcall;
  5179. function SetTime(pTimeStart, pTimeEnd: PReferenceTime): HResult; stdcall;
  5180. function IsSyncPoint: HResult; stdcall;
  5181. function SetSyncPoint(bIsSyncPoint: BOOL): HResult; stdcall;
  5182. function IsPreroll: HResult; stdcall;
  5183. function SetPreroll(bIsPreroll: BOOL): HResult; stdcall;
  5184. function GetActualDataLength: Longint; stdcall;
  5185. function SetActualDataLength(l: Longint): HResult; stdcall;
  5186. function GetMediaType(var ppMediaType: PAMMediaType): HResult; stdcall;
  5187. function SetMediaType(var pMediaType: TAMMediaType): HResult; stdcall;
  5188. function IsDiscontinuity: HResult; stdcall;
  5189. function SetDiscontinuity(bDiscontinuity: BOOL): HResult; stdcall;
  5190. function GetMediaTime(out pTimeStart, pTimeEnd: int64): HResult; stdcall;
  5191. function SetMediaTime(var pTimeStart, pTimeEnd: int64): HResult; stdcall;
  5192. end;
  5193. const
  5194. {
  5195. EXTERN_C const IID LIBID_DirectShowStreamLib;
  5196. EXTERN_C const CLSID CLSID_AMMultiMediaStream;
  5197. }
  5198. CLSID_AMMultiMediaStream: TGUID = '{49C47CE5-9BA4-11D0-8212-00C04FC32C45}';
  5199. {$EXTERNALSYM CLSID_AMMultiMediaStream}
  5200. CLSID_AMDirectDrawStream: TGUID = (D1:$49C47CE4;D2:$9BA4;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  5201. {$EXTERNALSYM CLSID_AMDirectDrawStream}
  5202. CLSID_AMAudioStream: TGUID = (D1:$8496E040;D2:$AF4C;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  5203. {$EXTERNALSYM CLSID_AMAudioStream}
  5204. CLSID_AMAudioData: TGUID = (D1:$F2468580;D2:$AF8A;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  5205. {$EXTERNALSYM CLSID_AMAudioData}
  5206. CLSID_AMMediaTypeStream: TGUID = (D1:$CF0F2F7C;D2:$F7BF;D3:$11D0;D4:($90,$0D,$00,$C0,$4F,$D9,$18,$9D));
  5207. {$EXTERNALSYM CLSID_AMMediaTypeStream}
  5208. (*==========================================================================;
  5209. *
  5210. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5211. *
  5212. * File: ddstream.h
  5213. *
  5214. ***************************************************************************)
  5215. const
  5216. DDSFF_PROGRESSIVERENDER = $1;
  5217. {$EXTERNALSYM DDSFF_PROGRESSIVERENDER}
  5218. IID_IDirectDrawMediaStream: TGUID = '{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}';
  5219. {$EXTERNALSYM IID_IDirectDrawMediaStream}
  5220. IID_IDirectDrawStreamSample: TGUID = '{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}';
  5221. {$EXTERNALSYM IID_IDirectDrawStreamSample}
  5222. type
  5223. IDirectDrawStreamSample = interface;
  5224. {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawMediaStream> _di_IDirectDrawMediaStream;'}
  5225. {$EXTERNALSYM IDirectDrawMediaStream}
  5226. IDirectDrawMediaStream = interface(IMediaStream)
  5227. ['{F4104FCE-9A70-11d0-8FDE-00C04FD9189D}']
  5228. (*** IDirectDrawMediaStream methods ***)
  5229. function GetFormat(out pDDSDCurrent: TDDSurfaceDesc;
  5230. out ppDirectDrawPalette: IDirectDrawPalette;
  5231. out pDDSDDesired: TDDSurfaceDesc; out pdwFlags: DWORD): HResult; stdcall;
  5232. function SetFormat(const pTDDSurfaceDesc: TDDSurfaceDesc;
  5233. pDirectDrawPalette: IDirectDrawPalette): HResult; stdcall;
  5234. function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  5235. function SetDirectDraw(pDirectDraw: IDirectDraw): HResult; stdcall;
  5236. function CreateSample(pSurface: IDirectDrawSurface; const pRect: TRect;
  5237. dwFlags: DWORD; out ppSample: IDirectDrawStreamSample): HResult;
  5238. stdcall;
  5239. function GetTimePerFrame(var pFrameTime: STREAM_TIME): HResult; stdcall;
  5240. end;
  5241. {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawStreamSample> _di_IDirectDrawStreamSample;'}
  5242. {$EXTERNALSYM IDirectDrawStreamSample}
  5243. IDirectDrawStreamSample = interface(IStreamSample)
  5244. ['{F4104FCF-9A70-11d0-8FDE-00C04FD9189D}']
  5245. (*** IDirectDrawStreamSample methods ***)
  5246. function GetSurface(out ppDirectDrawSurface: IDirectDrawSurface;
  5247. out pRect: TRect): HResult; stdcall;
  5248. function SetRect(const pRect: TRect): HResult; stdcall;
  5249. end;
  5250. (*==========================================================================;
  5251. *
  5252. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5253. *
  5254. * File: austream.h
  5255. *
  5256. ***************************************************************************)
  5257. const
  5258. IID_IAudioMediaStream: TGUID = '{F7537560-A3BE-11D0-8212-00C04FC32C45}';
  5259. {$EXTERNALSYM IID_IAudioMediaStream}
  5260. IID_IAudioStreamSample: TGUID = '{345FEE00-ABA5-11D0-8212-00C04FC32C45}';
  5261. {$EXTERNALSYM IID_IAudioStreamSample}
  5262. IID_IMemoryData: TGUID = '{327FC560-AF60-11D0-8212-00C04FC32C45}';
  5263. {$EXTERNALSYM IID_IMemoryData}
  5264. IID_IAudioData: TGUID = '{54C719C0-AF60-11D0-8212-00C04FC32C45}';
  5265. {$EXTERNALSYM IID_IAudioData}
  5266. type
  5267. IAudioStreamSample = interface;
  5268. IAudioData = interface;
  5269. {$HPPEMIT 'typedef System::DelphiInterface<IAudioMediaStream> _di_IAudioMediaStream;'}
  5270. {$EXTERNALSYM IAudioMediaStream}
  5271. IAudioMediaStream = interface(IMediaStream)
  5272. ['{F7537560-A3BE-11D0-8212-00C04FC32C45}']
  5273. (*** IAudioMediaStream methods ***)
  5274. function GetFormat(out pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
  5275. function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
  5276. function CreateSample(pAudioData: IAudioData; dwFlags: DWORD;
  5277. out ppSample: IAudioStreamSample): HResult; stdcall;
  5278. end;
  5279. {$HPPEMIT 'typedef System::DelphiInterface<IAudioStreamSample> _di_IAudioStreamSample;'}
  5280. {$EXTERNALSYM IAudioStreamSample}
  5281. IAudioStreamSample = interface(IStreamSample)
  5282. ['{345FEE00-ABA5-11D0-8212-00C04FC32C45}']
  5283. (*** IAudioStreamSample methods ***)
  5284. function GetAudioData(out ppAudio: IAudioData): HResult; stdcall;
  5285. end;
  5286. {$HPPEMIT 'typedef System::DelphiInterface<IMemoryData> _di_IMemoryData;'}
  5287. {$EXTERNALSYM IMemoryData}
  5288. IMemoryData = interface(IUnknown)
  5289. ['{327FC560-AF60-11D0-8212-00C04FC32C45}']
  5290. (*** IMemoryData methods ***)
  5291. function SetBuffer(cbSize: DWORD; pbData: pointer; dwFlags: DWORD): HResult;
  5292. stdcall;
  5293. function GetInfo(out pdwLength: DWORD; out ppbData: pointer;
  5294. out pcbActualData: DWORD): HResult; stdcall;
  5295. function SetActual(cbDataValid: DWORD): HResult; stdcall;
  5296. end;
  5297. {$HPPEMIT 'typedef System::DelphiInterface<IAudioData> _di_IAudioData;'}
  5298. {$EXTERNALSYM IAudioData}
  5299. IAudioData = interface(IMemoryData)
  5300. ['{54C719C0-AF60-11D0-8212-00C04FC32C45}']
  5301. (*** IAudioData methods ***)
  5302. function GetFormat(out pWaveFormatCurrent: TWaveFormatEx): HResult; stdcall;
  5303. function SetFormat(const lpWaveFormat: TWaveFormatEx): HResult; stdcall;
  5304. end;
  5305. (*==========================================================================;
  5306. *
  5307. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5308. *
  5309. * File: mpconfig.h
  5310. *
  5311. ***************************************************************************)
  5312. const
  5313. IID_IMixerPinConfig : TGUID = (D1:$593CDDE1;D2:$0759;D3:$11D1;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  5314. {$EXTERNALSYM IID_IMixerPinConfig}
  5315. IID_IMixerPinConfig2: TGUID = (D1:$ebf47182;D2:$8764;D3:$11d1;D4:($9e,$69,$00,$c0,$4f,$d7,$c1,$5b));
  5316. {$EXTERNALSYM IID_IMixerPinConfig2}
  5317. type
  5318. _AM_ASPECT_RATIO_MODE = (
  5319. AM_ARMODE_STRETCHED, // don't do any aspect ratio correction
  5320. AM_ARMODE_LETTER_BOX, // letter box the video, paint background color in the excess region
  5321. AM_ARMODE_CROP, // crop the video to the right aspect ratio
  5322. AM_ARMODE_STRETCHED_AS_PRIMARY
  5323. );
  5324. {$EXTERNALSYM _AM_ASPECT_RATIO_MODE}
  5325. AM_ASPECT_RATIO_MODE = _AM_ASPECT_RATIO_MODE;
  5326. {$EXTERNALSYM AM_ASPECT_RATIO_MODE}
  5327. TAMAspectRatioMode = AM_ASPECT_RATIO_MODE;
  5328. {$HPPEMIT 'typedef System::DelphiInterface<IMixerPinConfig> _di_IMixerPinConfig;'}
  5329. {$EXTERNALSYM IMixerPinConfig}
  5330. IMixerPinConfig = interface(IUnknown)
  5331. ['{593CDDE1-0759-11D1-9E69-00C04FD7C15B}']
  5332. (*** IMixerPinConfig methods ***)
  5333. function SetRelativePosition(dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
  5334. function GetRelativePosition(out dwLeft, dwTop, dwRight, dwBottom: DWORD): HResult; stdcall;
  5335. function SetZOrder(dwZOrder: DWORD): HResult; stdcall;
  5336. function GetZOrder(out dwZOrder: DWORD): HResult; stdcall;
  5337. function SetColorKey(var pColorKey: TColorKey): HResult; stdcall;
  5338. function GetColorKey(out pColorKey: TColorKey; out pColor: DWORD): HResult; stdcall;
  5339. function SetBlendingParameter(dwBlendingParameter: DWORD): HResult; stdcall;
  5340. function GetBlendingParameter(out dwBlendingParameter: DWORD): HResult; stdcall;
  5341. function SetAspectRatioMode(amAspectRatioMode: TAMAspectRatioMode): HResult; stdcall;
  5342. function GetAspectRatioMode(out amAspectRatioMode: TAMAspectRatioMode): HResult; stdcall;
  5343. function SetStreamTransparent(bStreamTransparent: BOOL): HResult; stdcall;
  5344. function GetStreamTransparent(out bStreamTransparent: BOOL): HResult; stdcall;
  5345. end;
  5346. {$HPPEMIT 'typedef System::DelphiInterface<IMixerPinConfig2> _di_IMixerPinConfig2;'}
  5347. {$EXTERNALSYM IMixerPinConfig2}
  5348. IMixerPinConfig2 = interface(IMixerPinConfig)
  5349. ['{EBF47182-8764-11d1-9E69-00C04FD7C15B}']
  5350. (*** IMixerPinConfig2 methods ***)
  5351. function SetOverlaySurfaceColorControls(pColorControl: PDDColorControl): HResult; stdcall;
  5352. function GetOverlaySurfaceColorControls(out pColorControl: TDDColorControl): HResult; stdcall;
  5353. end;
  5354. (*==========================================================================;
  5355. *
  5356. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5357. *
  5358. * File: control.h
  5359. *
  5360. ***************************************************************************)
  5361. const
  5362. LIBID_QuartzTypeLib: TGUID = (D1:$56A868B0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5363. {$EXTERNALSYM LIBID_QuartzTypeLib}
  5364. IID_IAMCollection: TGUID = (D1:$56A868B9;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5365. {$EXTERNALSYM IID_IAMCollection}
  5366. IID_IMediaControl: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5367. {$EXTERNALSYM IID_IMediaControl}
  5368. IID_IMediaEvent: TGUID = (D1:$56A868B6;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5369. {$EXTERNALSYM IID_IMediaEvent}
  5370. IID_IMediaEventEx: TGUID = (D1:$56A868C0;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5371. {$EXTERNALSYM IID_IMediaEventEx}
  5372. IID_IMediaPosition: TGUID = (D1:$56A868B2;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5373. {$EXTERNALSYM IID_IMediaPosition}
  5374. IID_IBasicAudio: TGUID = (D1:$56A868B3;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5375. {$EXTERNALSYM IID_IBasicAudio}
  5376. IID_IVideoWindow: TGUID = (D1:$56A868B4;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5377. {$EXTERNALSYM IID_IVideoWindow}
  5378. IID_IBasicVideo: TGUID = (D1:$56A868B5;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5379. {$EXTERNALSYM IID_IBasicVideo}
  5380. IID_IBasicVideo2: TGUID = (D1:$329bb360;D2:$f6ea;D3:$11d1;D4:($90,$38,$00,$a0,$c9,$69,$72,$98));
  5381. {$EXTERNALSYM IID_IBasicVideo2}
  5382. IID_IDeferredCommand: TGUID = (D1:$56A868B8;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5383. {$EXTERNALSYM IID_IDeferredCommand}
  5384. IID_IQueueCommand: TGUID = (D1:$56A868B7;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5385. {$EXTERNALSYM IID_IQueueCommand}
  5386. CLSID_FilgraphManager: TGUID = (D1:$E436EBB3;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  5387. {$EXTERNALSYM CLSID_FilgraphManager}
  5388. IID_IFilterInfo: TGUID = (D1:$56A868BA;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5389. {$EXTERNALSYM IID_IFilterInfo}
  5390. IID_IRegFilterInfo: TGUID = (D1:$56A868BB;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5391. {$EXTERNALSYM IID_IRegFilterInfo}
  5392. IID_IMediaTypeInfo: TGUID = (D1:$56A868BC;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5393. {$EXTERNALSYM IID_IMediaTypeInfo}
  5394. IID_IPinInfo: TGUID = (D1:$56A868BD;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5395. {$EXTERNALSYM IID_IPinInfo}
  5396. IID_IAMStats: TGUID = (D1:$bc9bcf80;D2:$dcd2;D3:$11d2;D4:($ab,$f6,$00,$a0,$c9,$05,$f3,$75));
  5397. {$EXTERNALSYM IID_IAMStats}
  5398. type
  5399. OAEVENT = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint;
  5400. {$EXTERNALSYM OAEVENT}
  5401. OAHWND = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint;
  5402. {$EXTERNALSYM OAHWND}
  5403. OAFilterState = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint;
  5404. {$EXTERNALSYM OAFilterState}
  5405. {$HPPEMIT 'typedef System::DelphiInterface<IAMCollection> _di_IAMCollection;'}
  5406. {$EXTERNALSYM IAMCollection}
  5407. IAMCollection = interface(IDispatch)
  5408. ['{56A868B9-0AD4-11CE-B03A-0020AF0BA770}']
  5409. (*** IAMCollection methods ***)
  5410. function get_Count(out plCount: Longint): HResult; stdcall;
  5411. function Item(lItem: Longint; out ppUnk: IUnknown): HResult; stdcall;
  5412. function get__NewEnum(out ppUnk: IUnknown): HResult; stdcall;
  5413. end;
  5414. {$HPPEMIT 'typedef System::DelphiInterface<IMediaControl> _di_IMediaControl;'}
  5415. {$EXTERNALSYM IMediaControl}
  5416. IMediaControl = interface(IDispatch)
  5417. ['{56A868B1-0AD4-11CE-B03A-0020AF0BA770}']
  5418. (*** IMediaControl methods ***)
  5419. function Run: HResult; stdcall;
  5420. function Pause: HResult; stdcall;
  5421. function Stop: HResult; stdcall;
  5422. function GetState(msTimeout: DWORD; out pfs: TFilterState): HResult; stdcall;
  5423. function RenderFile(strFilename: WideString): HResult; stdcall;
  5424. function AddSourceFilter(strFilename: WideString; out ppUnk: IDispatch): HResult; stdcall;
  5425. function get_FilterCollection(out ppUnk: IDispatch): HResult; stdcall;
  5426. function get_RegFilterCollection(out ppUnk: IDispatch): HResult; stdcall;
  5427. function StopWhenReady: HResult; stdcall;
  5428. end;
  5429. {$HPPEMIT 'typedef System::DelphiInterface<IMediaEvent> _di_IMediaEvent;'}
  5430. {$EXTERNALSYM IMediaEvent}
  5431. IMediaEvent = interface(IDispatch)
  5432. ['{56A868B6-0AD4-11CE-B03A-0020AF0BA770}']
  5433. (*** IMediaEvent methods ***)
  5434. function GetEventHandle(out hEvent: OAEVENT): HResult; stdcall;
  5435. function GetEvent(out lEventCode: Longint; out lParam1, lParam2: Longint;
  5436. msTimeout: DWORD): HResult; stdcall;
  5437. function WaitForCompletion(msTimeout: DWORD; out pEvCode: Longint):
  5438. HResult; stdcall;
  5439. function CancelDefaultHandling(lEvCode: Longint): HResult; stdcall;
  5440. function RestoreDefaultHandling(lEvCode: Longint): HResult; stdcall;
  5441. function FreeEventParams(lEvCode: Longint; lParam1, lParam2: Longint):
  5442. HResult; stdcall;
  5443. end;
  5444. {$HPPEMIT 'typedef System::DelphiInterface<IMediaEventEx> _di_IMediaEventEx;'}
  5445. {$EXTERNALSYM IMediaEventEx}
  5446. IMediaEventEx = interface(IMediaEvent)
  5447. ['{56A868C0-0AD4-11CE-B03A-0020AF0BA770}']
  5448. (*** IMediaEventEx methods ***)
  5449. function SetNotifyWindow(hwnd: OAHWND; lMsg: Longint;
  5450. lInstanceData: Longint): HResult; stdcall;
  5451. function SetNotifyFlags(lNoNotifyFlags: Longint): HResult; stdcall;
  5452. function GetNotifyFlags(out lplNoNotifyFlags): HResult; stdcall; //longint
  5453. end;
  5454. {$HPPEMIT 'typedef System::DelphiInterface<IMediaPosition> _di_IMediaPosition;'}
  5455. {$EXTERNALSYM IMediaPosition}
  5456. IMediaPosition = interface(IDispatch)
  5457. ['{56A868B2-0AD4-11CE-B03A-0020AF0BA770}']
  5458. (*** IMediaPosition methods ***)
  5459. function get_Duration(out plength: TRefTime): HResult; stdcall;
  5460. function put_CurrentPosition(llTime: TRefTime): HResult; stdcall;
  5461. function get_CurrentPosition(out pllTime: TRefTime): HResult; stdcall;
  5462. function get_StopTime(out pllTime: TRefTime): HResult; stdcall;
  5463. function put_StopTime(llTime: TRefTime): HResult; stdcall;
  5464. function get_PrerollTime(out pllTime: TRefTime): HResult; stdcall;
  5465. function put_PrerollTime(llTime: TRefTime): HResult; stdcall;
  5466. function put_Rate(dRate: double): HResult; stdcall;
  5467. function get_Rate(out pdRate: double): HResult; stdcall;
  5468. function CanSeekForward(out pCanSeekForward: Longint): HResult; stdcall;
  5469. function CanSeekBackward(out pCanSeekBackward: Longint): HResult; stdcall;
  5470. end;
  5471. {$HPPEMIT 'typedef System::DelphiInterface<IBasicAudio> _di_IBasicAudio;'}
  5472. {$EXTERNALSYM IBasicAudio}
  5473. IBasicAudio = interface(IDispatch)
  5474. ['{56A868B3-0AD4-11CE-B03A-0020AF0BA770}']
  5475. (*** IBasicAudio methods ***)
  5476. function put_Volume(lVolume: Longint): HResult; stdcall;
  5477. function get_Volume(out plVolume: Longint): HResult; stdcall;
  5478. function put_Balance(lBalance: Longint): HResult; stdcall;
  5479. function get_Balance(out plBalance: Longint): HResult; stdcall;
  5480. end;
  5481. {$HPPEMIT 'typedef System::DelphiInterface<IVideoWindow> _di_IVideoWindow;'}
  5482. {$EXTERNALSYM IVideoWindow}
  5483. IVideoWindow = interface(IDispatch)
  5484. ['{56A868B4-0AD4-11CE-B03A-0020AF0BA770}']
  5485. (*** IVideoWindow methods ***)
  5486. function put_Caption(strCaption: WideString): HResult; stdcall;
  5487. function get_Caption(out strCaption: WideString): HResult; stdcall;
  5488. function put_WindowStyle(WindowStyle: Longint): HResult; stdcall;
  5489. function get_WindowStyle(out WindowStyle: Longint): HResult; stdcall;
  5490. function put_WindowStyleEx(WindowStyleEx: Longint): HResult; stdcall;
  5491. function get_WindowStyleEx(out WindowStyleEx: Longint): HResult; stdcall;
  5492. function put_AutoShow(AutoShow: LongBool): HResult; stdcall;
  5493. function get_AutoShow(out AutoShow: LongBool): HResult; stdcall;
  5494. function put_WindowState(WindowState: Longint): HResult; stdcall;
  5495. function get_WindowState(out WindowState: Longint): HResult; stdcall;
  5496. function put_BackgroundPalette(BackgroundPalette: Longint): HResult; stdcall;
  5497. function get_BackgroundPalette(out pBackgroundPalette: Longint): HResult; stdcall;
  5498. function put_Visible(Visible: LongBool): HResult; stdcall;
  5499. function get_Visible(out pVisible: LongBool): HResult; stdcall;
  5500. function put_Left(Left: Longint): HResult; stdcall;
  5501. function get_Left(out pLeft: Longint): HResult; stdcall;
  5502. function put_Width(Width: Longint): HResult; stdcall;
  5503. function get_Width(out pWidth: Longint): HResult; stdcall;
  5504. function put_Top(Top: Longint): HResult; stdcall;
  5505. function get_Top(out pTop: Longint): HResult; stdcall;
  5506. function put_Height(Height: Longint): HResult; stdcall;
  5507. function get_Height(out pHeight: Longint): HResult; stdcall;
  5508. function put_Owner(Owner: OAHWND): HResult; stdcall;
  5509. function get_Owner(out Owner: OAHWND): HResult; stdcall;
  5510. function put_MessageDrain(Drain: OAHWND): HResult; stdcall;
  5511. function get_MessageDrain(out Drain: OAHWND): HResult; stdcall;
  5512. function get_BorderColor(out Color: Longint): HResult; stdcall;
  5513. function put_BorderColor(Color: Longint): HResult; stdcall;
  5514. function get_FullScreenMode(out FullScreenMode: LongBool): HResult; stdcall;
  5515. function put_FullScreenMode(FullScreenMode: LongBool): HResult; stdcall;
  5516. function SetWindowForeground(Focus: Longint): HResult; stdcall;
  5517. function NotifyOwnerMessage(hwnd: Longint; uMsg, wParam, lParam: Longint): HResult; stdcall;
  5518. function SetWindowPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  5519. function GetWindowPosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5520. function GetMinIdealImageSize(out pWidth, pHeight: Longint): HResult; stdcall;
  5521. function GetMaxIdealImageSize(out pWidth, pHeight: Longint): HResult; stdcall;
  5522. function GetRestorePosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5523. function HideCursor(HideCursor: LongBool): HResult; stdcall;
  5524. function IsCursorHidden(out CursorHidden: LongBool): HResult; stdcall;
  5525. end;
  5526. {$HPPEMIT 'typedef System::DelphiInterface<IBasicVideo> _di_IBasicVideo;'}
  5527. {$EXTERNALSYM IBasicVideo}
  5528. IBasicVideo = interface(IDispatch)
  5529. ['{56A868B5-0AD4-11CE-B03A-0020AF0BA770}']
  5530. (*** IBasicVideo methods ***)
  5531. function get_AvgTimePerFrame(out pAvgTimePerFrame: TRefTime): HResult; stdcall;
  5532. function get_BitRate(out pBitRate: Longint): HResult; stdcall;
  5533. function get_BitErrorRate(out pBitErrorRate: Longint): HResult; stdcall;
  5534. function get_VideoWidth(out pVideoWidth: Longint): HResult; stdcall;
  5535. function get_VideoHeight(out pVideoHeight: Longint): HResult; stdcall;
  5536. function put_SourceLeft(SourceLeft: Longint): HResult; stdcall;
  5537. function get_SourceLeft(out pSourceLeft: Longint): HResult; stdcall;
  5538. function put_SourceWidth(SourceWidth: Longint): HResult; stdcall;
  5539. function get_SourceWidth(out pSourceWidth: Longint): HResult; stdcall;
  5540. function put_SourceTop(SourceTop: Longint): HResult; stdcall;
  5541. function get_SourceTop(out pSourceTop: Longint): HResult; stdcall;
  5542. function put_SourceHeight(SourceHeight: Longint): HResult; stdcall;
  5543. function get_SourceHeight(out pSourceHeight: Longint): HResult; stdcall;
  5544. function put_DestinationLeft(DestinationLeft: Longint): HResult; stdcall;
  5545. function get_DestinationLeft(out pDestinationLeft: Longint): HResult; stdcall;
  5546. function put_DestinationWidth(DestinationWidth: Longint): HResult; stdcall;
  5547. function get_DestinationWidth(out pDestinationWidth: Longint): HResult; stdcall;
  5548. function put_DestinationTop(DestinationTop: Longint): HResult; stdcall;
  5549. function get_DestinationTop(out pDestinationTop: Longint): HResult; stdcall;
  5550. function put_DestinationHeight(DestinationHeight: Longint): HResult; stdcall;
  5551. function get_DestinationHeight(out pDestinationHeight: Longint): HResult; stdcall;
  5552. function SetSourcePosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  5553. function GetSourcePosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5554. function SetDefaultSourcePosition: HResult; stdcall;
  5555. function SetDestinationPosition(Left, Top, Width, Height: Longint): HResult; stdcall;
  5556. function GetDestinationPosition(out pLeft, pTop, pWidth, pHeight: Longint): HResult; stdcall;
  5557. function SetDefaultDestinationPosition: HResult; stdcall;
  5558. function GetVideoSize(out pWidth, Height: Longint): HResult; stdcall;
  5559. function GetVideoPaletteEntries(StartIndex, Entries: Longint;
  5560. out pRetrieved: Longint; out pPalette): HResult; stdcall;
  5561. function GetCurrentImage(var BufferSize: Longint; var pDIBImage): HResult; stdcall;
  5562. function IsUsingDefaultSource: HResult; stdcall;
  5563. function IsUsingDefaultDestination: HResult; stdcall;
  5564. end;
  5565. {$HPPEMIT 'typedef System::DelphiInterface<IBasicVideo2> _di_IBasicVideo2;'}
  5566. {$EXTERNALSYM IBasicVideo2}
  5567. IBasicVideo2 = interface(IBasicVideo)
  5568. ['{329bb360-f6ea-11d1-9038-00a0c9697298}']
  5569. (*** IBasicVideo2 methods ***)
  5570. function GetPreferredAspectRatio(out plAspectX, plAspectY: Longint): HResult; stdcall;
  5571. end;
  5572. {$HPPEMIT 'typedef System::DelphiInterface<IDeferredCommand> _di_IDeferredCommand;'}
  5573. {$EXTERNALSYM IDeferredCommand}
  5574. IDeferredCommand = interface(IDispatch)
  5575. ['{56A868B8-0AD4-11CE-B03A-0020AF0BA770}']
  5576. (*** IDeferredCommand methods ***)
  5577. function Cancel: HResult; stdcall;
  5578. function Confidence(out pConfidence: Longint): HResult; stdcall;
  5579. function Postpone(newtime: TRefTime): HResult; stdcall;
  5580. function GetHResult(out phrResult: HResult): HResult; stdcall;
  5581. end;
  5582. {$HPPEMIT 'typedef System::DelphiInterface<IQueueCommand> _di_IQueueCommand;'}
  5583. {$EXTERNALSYM IQueueCommand}
  5584. IQueueCommand = interface(IUnknown)
  5585. ['{56A868B7-0AD4-11CE-B03A-0020AF0BA770}']
  5586. (*** IQueueCommand methods ***)
  5587. function InvokeAtStreamTime(out pCmd: IDeferredCommand; time: TRefTime;
  5588. const iid: TGUID; dispidMethod: Longint; wFlags: SmallInt;
  5589. cArgs: Longint; const pDispParams: OleVariant; var pvarResult: OleVariant;
  5590. out puArgErr: SmallInt): HResult; stdcall;
  5591. function InvokeAtPresentationTime(out pCmd: IDeferredCommand;
  5592. time: TRefTime; const iid: TGUID; dispidMethod: Longint;
  5593. wFlags: SmallInt; cArgs: Longint; const pDispParams: OleVariant;
  5594. var pvarResult: OleVariant; out puArgErr: SmallInt): HResult; stdcall;
  5595. end;
  5596. {$HPPEMIT 'typedef System::DelphiInterface<IFilterInfo> _di_IFilterInfo;'}
  5597. {$EXTERNALSYM IFilterInfo}
  5598. IFilterInfo = interface(IDispatch)
  5599. ['{56A868BA-0AD4-11CE-B03A-0020AF0BA770}']
  5600. (*** IFilterInfo methods ***)
  5601. function FindPin(strPinID: WideString; out ppUnk: IDispatch): HResult; stdcall;
  5602. function get_Name(out strName: WideString): HResult; stdcall;
  5603. function get_VendorInfo(out strVendorInfo: WideString): HResult; stdcall;
  5604. function get_Filter(out ppUnk: IUnknown): HResult; stdcall;
  5605. function get_Pins(out ppUnk: IDispatch): HResult; stdcall;
  5606. function get_IsFileSource(out pbIsSource: LongBool): HResult; stdcall;
  5607. function get_Filename(out pstrFilename: WideString): HResult; stdcall;
  5608. function put_Filename(strFilename: WideString): HResult; stdcall;
  5609. end;
  5610. {$HPPEMIT 'typedef System::DelphiInterface<IRegFilterInfo> _di_IRegFilterInfo;'}
  5611. {$EXTERNALSYM IRegFilterInfo}
  5612. IRegFilterInfo = interface(IDispatch)
  5613. ['{56A868BB-0AD4-11CE-B03A-0020AF0BA770}']
  5614. (*** IRegFilterInfo methods ***)
  5615. function get_Name(out strName: WideString): HResult; stdcall;
  5616. function Filter(out ppUnk: IDispatch): HResult; stdcall;
  5617. end;
  5618. {$HPPEMIT 'typedef System::DelphiInterface<IMediaTypeInfo> _di_IMediaTypeInfo;'}
  5619. {$EXTERNALSYM IMediaTypeInfo}
  5620. IMediaTypeInfo = interface(IDispatch)
  5621. ['{56A868BC-0AD4-11CE-B03A-0020AF0BA770}']
  5622. (*** IMediaTypeInfo methods ***)
  5623. function Get_Type(out strType: WideString): HResult; stdcall;
  5624. function Get_Subtype(out strType: WideString): HResult; stdcall;
  5625. end;
  5626. {$HPPEMIT 'typedef System::DelphiInterface<IPinInfo> _di_IPinInfo;'}
  5627. {$EXTERNALSYM IPinInfo}
  5628. IPinInfo = interface(IDispatch)
  5629. ['{56A868BD-0AD4-11CE-B03A-0020AF0BA770}']
  5630. (*** IPinInfo methods ***)
  5631. function get_Pin(out ppUnk: IUnknown): HResult; stdcall;
  5632. function get_ConnectedTo(out ppUnk: IDispatch): HResult; stdcall;
  5633. function get_ConnectionMediaType(out ppUnk: IDispatch): HResult; stdcall;
  5634. function get_FilterInfo(out ppUnk: IDispatch): HResult; stdcall;
  5635. function get_Name(out ppUnk: WideString): HResult; stdcall;
  5636. function get_Direction(out ppDirection: Longint): HResult; stdcall;
  5637. function get_PinID(out strPinID: WideString): HResult; stdcall;
  5638. function get_MediaTypes(out ppUnk: IDispatch): HResult; stdcall;
  5639. function Connect(pPin: IUnknown): HResult; stdcall;
  5640. function ConnectDirect(pPin: IUnknown): HResult; stdcall;
  5641. function ConnectWithType(pPin: IUnknown; pMediaType: IDispatch): HResult; stdcall;
  5642. function Disconnect: HResult; stdcall;
  5643. function Render: HResult; stdcall;
  5644. end;
  5645. {$HPPEMIT 'typedef System::DelphiInterface<IAMStats> _di_IAMStats;'}
  5646. {$EXTERNALSYM IAMStats}
  5647. IAMStats = interface(IDispatch)
  5648. ['{bc9bcf80-dcd2-11d2-abf6-00a0c905f375}']
  5649. (*** IAMStats methods ***)
  5650. function Reset: HResult; stdcall;
  5651. function get_Count(out plCount: Longint): HResult; stdcall;
  5652. function GetValueByIndex(lIndex: longint; out szName: WideString; out lCount: longint;
  5653. out dLast, dAverage, dStdDev, dMin, dMax: double): HResult; stdcall;
  5654. function GetValueByName(szName: WideString; out lIndex, lCount: Longint;
  5655. out dLast, dAverage, dStdDev, dMin, dMax: double): HResult; stdcall;
  5656. function GetIndex(szName: WideString; lCreate: longint; out plIndex: longint): HResult; stdcall;
  5657. function AddValue(lIndex: longint; dValue: double): HResult; stdcall;
  5658. end;
  5659. (*==========================================================================;
  5660. *
  5661. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5662. *
  5663. * File: qnetwork.h
  5664. *
  5665. ***************************************************************************)
  5666. const
  5667. LIBID_QuartzNetTypeLib: TGUID = (D1:$56A868B1;D2:$0AD4;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  5668. {$EXTERNALSYM LIBID_QuartzNetTypeLib}
  5669. IID_IAMNetShowConfig: TGUID = (D1:$FA2AA8F1;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  5670. {$EXTERNALSYM IID_IAMNetShowConfig}
  5671. IID_IAMChannelInfo: TGUID = (D1:$FA2AA8F2;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  5672. {$EXTERNALSYM IID_IAMChannelInfo}
  5673. IID_IAMNetworkStatus: TGUID = (D1:$FA2AA8F3;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  5674. {$EXTERNALSYM IID_IAMNetworkStatus}
  5675. IID_IAMExtendedSeeking: TGUID = (D1:$FA2AA8F9;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  5676. {$EXTERNALSYM IID_IAMExtendedSeeking}
  5677. IID_IAMNetShowExProps: TGUID = (D1:$FA2AA8F5;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  5678. {$EXTERNALSYM IID_IAMNetShowExProps}
  5679. IID_IAMExtendedErrorInfo: TGUID = (D1:$FA2AA8F6;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  5680. {$EXTERNALSYM IID_IAMExtendedErrorInfo}
  5681. IID_IAMMediaContent: TGUID = (D1:$FA2AA8F4;D2:$8B62;D3:$11D0;D4:($A5,$20,$00,$00,$00,$00,$00,$00));
  5682. {$EXTERNALSYM IID_IAMMediaContent}
  5683. IID_IAMMediaContent2 : TGUID = (D1:$CE8F78C1;D2:$74D9;D3:$11D2;D4:($B0,$9D,$00,$A0,$C9,$A8,$11,$17));
  5684. {$EXTERNALSYM IID_IAMMediaContent2}
  5685. IID_IAMNetShowPreroll: TGUID = (D1:$AAE7E4E2;D2:$6388;D3:$11D1;D4:($8D,$93,$00,$60,$97,$C9,$A2,$B2));
  5686. {$EXTERNALSYM IID_IAMNetShowPreroll}
  5687. IID_IDShowPlugin : TGUID = (D1:$4746B7C8;D2:$700E;D3:$11D1;D4:($BE,$CC,$00,$C0,$4F,$B6,$E9,$37));
  5688. {$EXTERNALSYM IID_IDShowPlugin}
  5689. //AMExtendedSeekingCapabilities
  5690. const
  5691. AM_EXSEEK_CANSEEK = 1;
  5692. {$EXTERNALSYM AM_EXSEEK_CANSEEK}
  5693. AM_EXSEEK_CANSCAN = 2;
  5694. {$EXTERNALSYM AM_EXSEEK_CANSCAN}
  5695. AM_EXSEEK_MARKERSEEK = 4;
  5696. {$EXTERNALSYM AM_EXSEEK_MARKERSEEK}
  5697. AM_EXSEEK_SCANWITHOUTCLOCK = 8;
  5698. {$EXTERNALSYM AM_EXSEEK_SCANWITHOUTCLOCK}
  5699. AM_EXSEEK_NOSTANDARDREPAINT = 16;
  5700. {$EXTERNALSYM AM_EXSEEK_NOSTANDARDREPAINT}
  5701. AM_EXSEEK_BUFFERING = 32;
  5702. {$EXTERNALSYM AM_EXSEEK_BUFFERING}
  5703. AM_EXSEEK_SENDS_VIDEOFRAMEREADY = 64;
  5704. {$EXTERNALSYM AM_EXSEEK_SENDS_VIDEOFRAMEREADY}
  5705. type
  5706. DATE = record
  5707. da_year: Integer; // Year - 1980
  5708. da_day : Byte; // Day of the month
  5709. da_mon : Byte; // Month (1 = Jan)
  5710. end;
  5711. {$EXTERNALSYM DATE}
  5712. //TDate = DATE;
  5713. {$HPPEMIT 'typedef System::DelphiInterface<IAMNetShowConfig> _di_IAMNetShowConfig;'}
  5714. {$EXTERNALSYM IAMNetShowConfig}
  5715. IAMNetShowConfig = interface(IDispatch)
  5716. ['{FA2AA8F1-8B62-11D0-A520-000000000000}']
  5717. (*** IAMNetShowConfig methods ***)
  5718. function get_BufferingTime(var pBufferingTime: double): HResult; stdcall;
  5719. function put_BufferingTime(BufferingTime: double): HResult; stdcall;
  5720. function get_UseFixedUDPPort(var pUseFixedUDPPort: WordBool): HResult; stdcall;
  5721. function put_UseFixedUDPPort(UseFixedUDPPort: WordBool): HResult; stdcall;
  5722. function get_FixedUDPPort(var pFixedUDPPort: Longint): HResult; stdcall;
  5723. function put_FixedUDPPort(FixedUDPPort: Longint): HResult; stdcall;
  5724. function get_UseHTTPProxy(var pUseHTTPProxy: WordBool): HResult; stdcall;
  5725. function put_UseHTTPProxy(UseHTTPProxy: WordBool): HResult; stdcall;
  5726. function get_EnableAutoProxy(var pEnableAutoProxy: WordBool): HResult; stdcall;
  5727. function put_EnableAutoProxy(EnableAutoProxy: WordBool): HResult; stdcall;
  5728. function get_HTTPProxyHost(var pbstrHTTPProxyHost: TBSTR): HResult; stdcall;
  5729. function put_HTTPProxyHost(bstrHTTPProxyHost: TBSTR): HResult; stdcall;
  5730. function get_HTTPProxyPort(var pHTTPProxyPort: Longint): HResult; stdcall;
  5731. function put_HTTPProxyPort(HTTPProxyPort: Longint): HResult; stdcall;
  5732. function get_EnableMulticast(var pEnableMulticast: WordBool): HResult; stdcall;
  5733. function put_EnableMulticast(EnableMulticast: WordBool): HResult; stdcall;
  5734. function get_EnableUDP(var pEnableUDP: WordBool): HResult; stdcall;
  5735. function put_EnableUDP(EnableUDP: WordBool): HResult; stdcall;
  5736. function get_EnableTCP(var pEnableTCP: WordBool): HResult; stdcall;
  5737. function put_EnableTCP(EnableTCP: WordBool): HResult; stdcall;
  5738. function get_EnableHTTP(var pEnableHTTP: WordBool): HResult; stdcall;
  5739. function put_EnableHTTP(EnableHTTP: WordBool): HResult; stdcall;
  5740. end;
  5741. {$HPPEMIT 'typedef System::DelphiInterface<IAMChannelInfo> _di_IAMChannelInfo;'}
  5742. {$EXTERNALSYM IAMChannelInfo}
  5743. IAMChannelInfo = interface(IDispatch)
  5744. ['{FA2AA8F2-8B62-11D0-A520-000000000000}']
  5745. (*** IAMChannelInfo methods ***)
  5746. function get_ChannelName(var pbstrChannelName: TBSTR): HResult; stdcall;
  5747. function get_ChannelDescription(var pbstrChannelDescription: TBSTR): HResult; stdcall;
  5748. function get_ChannelURL(var pbstrChannelURL: TBSTR): HResult; stdcall;
  5749. function get_ContactAddress(var pbstrContactAddress: TBSTR): HResult; stdcall;
  5750. function get_ContactPhone(var pbstrContactPhone: TBSTR): HResult; stdcall;
  5751. function get_ContactEmail(var pbstrContactEmail: TBSTR): HResult; stdcall;
  5752. end;
  5753. {$HPPEMIT 'typedef System::DelphiInterface<IAMNetworkStatus> _di_IAMNetworkStatus;'}
  5754. {$EXTERNALSYM IAMNetworkStatus}
  5755. IAMNetworkStatus = interface(IDispatch)
  5756. ['{FA2AA8F3-8B62-11D0-A520-000000000000}']
  5757. (*** IAMNetworkStatus methods ***)
  5758. function get_ReceivedPackets(var pReceivedPackets: Longint): HResult; stdcall;
  5759. function get_RecoveredPackets(var pRecoveredPackets: Longint): HResult; stdcall;
  5760. function get_LostPackets(var pLostPackets: Longint): HResult; stdcall;
  5761. function get_ReceptionQuality(var pReceptionQuality: Longint): HResult; stdcall;
  5762. function get_BufferingCount(var pBufferingCount: Longint): HResult; stdcall;
  5763. function get_IsBroadcast(var pIsBroadcast: WordBool): HResult; stdcall;
  5764. function get_BufferingProgress(var pBufferingProgress: Longint): HResult; stdcall;
  5765. end;
  5766. {$HPPEMIT 'typedef System::DelphiInterface<IAMExtendedSeeking> _di_IAMExtendedSeeking;'}
  5767. {$EXTERNALSYM IAMExtendedSeeking}
  5768. IAMExtendedSeeking = interface(IDispatch)
  5769. ['{FA2AA8F9-8B62-11D0-A520-000000000000}']
  5770. (*** IAMExtendedSeeking methods ***)
  5771. function get_ExSeekCapabilities(var pExCapabilities: Longint): HResult; stdcall;
  5772. function get_MarkerCount(var pMarkerCount: Longint): HResult; stdcall;
  5773. function get_CurrentMarker(var pCurrentMarker: Longint): HResult; stdcall;
  5774. function GetMarkerTime(MarkerNum: Longint; var pMarkerTime: double): HResult; stdcall;
  5775. function GetMarkerName(MarkerNum: Longint; var pbstrMarkerName: TBSTR): HResult; stdcall;
  5776. function put_PlaybackSpeed(Speed: double): HResult; stdcall;
  5777. function get_PlaybackSpeed(var pSpeed: double): HResult; stdcall;
  5778. end;
  5779. {$HPPEMIT 'typedef System::DelphiInterface<IAMNetShowExProps> _di_IAMNetShowExProps;'}
  5780. {$EXTERNALSYM IAMNetShowExProps}
  5781. IAMNetShowExProps = interface(IDispatch)
  5782. ['{FA2AA8F5-8B62-11D0-A520-000000000000}']
  5783. (*** IAMNetShowExProps methods ***)
  5784. function get_SourceProtocol(var pSourceProtocol: Longint): HResult; stdcall;
  5785. function get_Bandwidth(var pBandwidth: Longint): HResult; stdcall;
  5786. function get_ErrorCorrection(var pbstrErrorCorrection: TBSTR): HResult; stdcall;
  5787. function get_CodecCount(var pCodecCount: Longint): HResult; stdcall;
  5788. function GetCodecInstalled(CodecNum: Longint; var pCodecInstalled: WordBool): HResult; stdcall;
  5789. function GetCodecDescription(CodecNum: Longint; var pbstrCodecDescription: TBSTR): HResult; stdcall;
  5790. function GetCodecURL(CodecNum: Longint; var pbstrCodecURL: TBSTR): HResult; stdcall;
  5791. function get_CreationDate(var pCreationDate: Date): HResult; stdcall;
  5792. function get_SourceLink(var pbstrSourceLink: TBSTR): HResult; stdcall;
  5793. end;
  5794. {$HPPEMIT 'typedef System::DelphiInterface<IAMExtendedErrorInfo> _di_IAMExtendedErrorInfo;'}
  5795. {$EXTERNALSYM IAMExtendedErrorInfo}
  5796. IAMExtendedErrorInfo = interface(IDispatch)
  5797. ['{FA2AA8F6-8B62-11D0-A520-000000000000}']
  5798. (*** IAMExtendedErrorInfo methods ***)
  5799. function get_HasError(var pHasError: WordBool): HResult; stdcall;
  5800. function get_ErrorDescription(var pbstrErrorDescription: TBSTR): HResult; stdcall;
  5801. function get_ErrorCode(var pErrorCode: Longint): HResult; stdcall;
  5802. end;
  5803. {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaContent> _di_IAMMediaContent;'}
  5804. {$EXTERNALSYM IAMMediaContent}
  5805. IAMMediaContent = interface(IDispatch)
  5806. ['{FA2AA8F4-8B62-11D0-A520-000000000000}']
  5807. (*** IAMMediaContent methods ***)
  5808. function get_AuthorName(var pbstrAuthorName: TBSTR): HResult; stdcall;
  5809. function get_Title(var pbstrTitle: TBSTR): HResult; stdcall;
  5810. function get_Rating(var pbstrRating: TBSTR): HResult; stdcall;
  5811. function get_Description(var pbstrDescription: TBSTR): HResult; stdcall;
  5812. function get_Copyright(var pbstrCopyright: TBSTR): HResult; stdcall;
  5813. function get_BaseURL(var pbstrBaseURL: TBSTR): HResult; stdcall;
  5814. function get_LogoURL(var pbstrLogoURL: TBSTR): HResult; stdcall;
  5815. function get_LogoIconURL(var pbstrLogoURL: TBSTR): HResult; stdcall;
  5816. function get_WatermarkURL(var pbstrWatermarkURL: TBSTR): HResult; stdcall;
  5817. function get_MoreInfoURL(var pbstrMoreInfoURL: TBSTR): HResult; stdcall;
  5818. function get_MoreInfoBannerImage(var pbstrMoreInfoBannerImage: TBSTR): HResult; stdcall;
  5819. function get_MoreInfoBannerURL(var pbstrMoreInfoBannerURL: TBSTR): HResult; stdcall;
  5820. function get_MoreInfoText(var pbstrMoreInfoText: TBSTR): HResult; stdcall;
  5821. end;
  5822. {$HPPEMIT 'typedef System::DelphiInterface<IAMMediaContent2> _di_IAMMediaContent2;'}
  5823. {$EXTERNALSYM IAMMediaContent2}
  5824. IAMMediaContent2 = interface(IDispatch)
  5825. ['{CE8F78C1-74D9-11D2-B09D-00A0C9A81117}']
  5826. (*** IAMMediaContent2 methods ***)
  5827. function get_MediaParameter(var EntryNum: longint; var bstrName, pbstrValue: TBSTR): HResult; stdcall;
  5828. function get_MediaParameterName(var EntryNum, Index: longint; var pbstrName: TBSTR): HResult; stdcall;
  5829. function get_PlaylistCount(var pNumberEntries: longint): HResult; stdcall;
  5830. end;
  5831. {$HPPEMIT 'typedef System::DelphiInterface<IAMNetShowPreroll> _di_IAMNetShowPreroll;'}
  5832. {$EXTERNALSYM IAMNetShowPreroll}
  5833. IAMNetShowPreroll = interface(IDispatch)
  5834. ['{AAE7E4E2-6388-11D1-8D93-006097C9A2B2}']
  5835. (*** IAMNetShowPreroll methods ***)
  5836. function put_Preroll(var fPreroll : WordBool): HResult; stdcall;
  5837. function get_Preroll(var pfPreroll: WordBool): HResult; stdcall;
  5838. end;
  5839. {$HPPEMIT 'typedef System::DelphiInterface<IDShowPlugin> _di_IDShowPlugin;'}
  5840. {$EXTERNALSYM IDShowPlugin}
  5841. IDShowPlugin = interface(IUnknown)
  5842. ['{4746B7C8-700E-11D1-BECC-00C04FB6E937}']
  5843. (*** IDShowPlugin methods ***)
  5844. function get_URL(var pURL: TBSTR): HResult; stdcall;
  5845. function get_UserAgent(var pUserAgent: TBSTR): HResult; stdcall;
  5846. end;
  5847. (*==========================================================================;
  5848. *
  5849. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5850. *
  5851. * File: playlist.h
  5852. *
  5853. ***************************************************************************)
  5854. const
  5855. IID_IAMPlayListItem: TGUID = (D1:$56A868FF;D2:$0AD4;D3:$11CE;D4:($B0,$A3,$00,$20,$AF,$0B,$A7,$70));
  5856. {$EXTERNALSYM IID_IAMPlayListItem}
  5857. IID_IAMPlayList: TGUID = (D1:$56A868FE;D2:$0AD4;D3:$11CE;D4:($B0,$A3,$00,$20,$AF,$0B,$A7,$70));
  5858. {$EXTERNALSYM IID_IAMPlayList}
  5859. IID_ISpecifyParticularPages : TGUID = '{4C437B91-6E9E-11d1-A704-006097C4E476}';
  5860. {$EXTERNALSYM IID_ISpecifyParticularPages}
  5861. IID_IAMRebuild: TGUID = '{02EF04DD-7580-11d1-BECE-00C04FB6E937}';
  5862. {$EXTERNALSYM IID_IAMRebuild}
  5863. SPECIFYPAGES_STATISTICS: TGUID = (D1:$4c437b92;D2:$6e9e;D3:$11d1;D4:($a7,$4,$0,$60,$97,$c4,$e4,$76));
  5864. {$EXTERNALSYM SPECIFYPAGES_STATISTICS}
  5865. AMPLAYLISTITEM_CANSKIP = 1;
  5866. {$EXTERNALSYM AMPLAYLISTITEM_CANSKIP}
  5867. AMPLAYLISTITEM_CANBIND = 2;
  5868. {$EXTERNALSYM AMPLAYLISTITEM_CANBIND}
  5869. type
  5870. {$HPPEMIT 'typedef System::DelphiInterface<IAMPlayListItem> _di_IAMPlayListItem;'}
  5871. {$EXTERNALSYM IAMPlayListItem}
  5872. IAMPlayListItem = interface(IUnknown)
  5873. ['{56A868FF-0AD4-11CE-B0A3-0020AF0BA770}']
  5874. (*** IAMPlayListItem methods ***)
  5875. function GetFlags(out pdwFlags: DWORD): HResult; stdcall;
  5876. function GetSourceCount(out pdwSources: DWORD): HResult; stdcall;
  5877. function GetSourceURL(dwSourceIndex: DWORD; out pbstrURL: WideChar): HResult; stdcall;
  5878. function GetSourceStart(dwSourceIndex: DWORD; out prtStart: TReferenceTime): HResult; stdcall;
  5879. function GetSourceDuration(dwSourceIndex: DWORD;
  5880. out prtDuration: TReferenceTime): HResult; stdcall;
  5881. function GetSourceStartMarker(dwSourceIndex: DWORD;
  5882. out pdwMarker: DWORD): HResult; stdcall;
  5883. function GetSourceEndMarker(dwSourceIndex: DWORD;
  5884. out pdwMarker: DWORD): HResult; stdcall;
  5885. function GetSourceStartMarkerName(dwSourceIndex: DWORD;
  5886. out pbstrStartMarker: WideChar): HResult; stdcall;
  5887. function GetSourceEndMarkerName(dwSourceIndex: DWORD;
  5888. out pbstrEndMarker: WideChar): HResult; stdcall;
  5889. function GetLinkURL(out pbstrURL: WideChar): HResult; stdcall;
  5890. function GetScanDuration(dwSourceIndex: DWORD;
  5891. out prtScanDuration: TReferenceTime): HResult; stdcall;
  5892. end;
  5893. const
  5894. AMPLAYLIST_STARTINSCANMODE = 1;
  5895. {$EXTERNALSYM AMPLAYLIST_STARTINSCANMODE}
  5896. AMPLAYLIST_FORCEBANNER = 2;
  5897. {$EXTERNALSYM AMPLAYLIST_FORCEBANNER}
  5898. AMPLAYLISTEVENT_RESUME = $0;
  5899. {$EXTERNALSYM AMPLAYLISTEVENT_RESUME}
  5900. AMPLAYLISTEVENT_BREAK = $1;
  5901. {$EXTERNALSYM AMPLAYLISTEVENT_BREAK}
  5902. AMPLAYLISTEVENT_NEXT = $2;
  5903. {$EXTERNALSYM AMPLAYLISTEVENT_NEXT}
  5904. AMPLAYLISTEVENT_MASK = $f;
  5905. {$EXTERNALSYM AMPLAYLISTEVENT_MASK}
  5906. AMPLAYLISTEVENT_REFRESH = $10;
  5907. {$EXTERNALSYM AMPLAYLISTEVENT_REFRESH}
  5908. type
  5909. {$HPPEMIT 'typedef System::DelphiInterface<IAMPlayList> _di_IAMPlayList;'}
  5910. {$EXTERNALSYM IAMPlayList}
  5911. IAMPlayList = interface(IUnknown)
  5912. ['{56A868FE-0AD4-11CE-B0A3-0020AF0BA770}']
  5913. (*** IAMPlayList methods ***)
  5914. function GetFlags(out pdwFlags: DWORD): HResult; stdcall;
  5915. function GetItemCount(out pdwItems: DWORD): HResult; stdcall;
  5916. function GetItem(dwItemIndex: DWORD; out ppItem: IAMPlayListItem): HResult; stdcall;
  5917. function GetNamedEvent(var pwszEventName: WideChar; dwItemIndex: DWORD;
  5918. out ppItem: IAMPlayListItem; out pdwFlags: DWORD): HResult; stdcall;
  5919. function GetRepeatInfo(out pdwRepeatCount, pdwRepeatStart,
  5920. pdwRepeatEnd: DWORD): HResult; stdcall;
  5921. end;
  5922. {$HPPEMIT 'typedef System::DelphiInterface<ISpecifyParticularPages> _di_ISpecifyParticularPages;'}
  5923. {$EXTERNALSYM ISpecifyParticularPages}
  5924. ISpecifyParticularPages = interface(IUnknown)
  5925. ['{4C437B91-6E9E-11d1-A704-006097C4E476}']
  5926. (*** ISpecifyParticularPages methods ***)
  5927. function GetPages(const guidWhatPages: TGUID; out pPages: PGUID): HResult; stdcall;
  5928. end;
  5929. {$HPPEMIT 'typedef System::DelphiInterface<IAMRebuild> _di_IAMRebuild;'}
  5930. {$EXTERNALSYM IAMRebuild}
  5931. IAMRebuild = interface(IUnknown)
  5932. ['{02EF04DD-7580-11d1-BECE-00C04FB6E937}']
  5933. (*** IAMRebuild methods ***)
  5934. function RebuildNow: HResult; stdcall;
  5935. end;
  5936. (*==========================================================================;
  5937. *
  5938. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  5939. *
  5940. * File: amvideo.h
  5941. *
  5942. ***************************************************************************)
  5943. const
  5944. IID_IDirectDrawVideo: TGUID = (D1:$36D39EB0;D2:$DD75;D3:$11CE;D4:($BF,$0E,$00,$AA,$00,$55,$59,$5A));
  5945. {$EXTERNALSYM IID_IDirectDrawVideo}
  5946. IID_IQualProp: TGUID = (D1:$1BD0ECB0;D2:$F8E2;D3:$11CE;D4:($AA,$C6,$00,$20,$AF,$0B,$99,$A3));
  5947. {$EXTERNALSYM IID_IQualProp}
  5948. IID_IFullScreenVideo: TGUID = (D1:$DD1D7110;D2:$7836;D3:$11CF;D4:($BF,$47,$00,$AA,$00,$55,$59,$5A));
  5949. {$EXTERNALSYM IID_IFullScreenVideo}
  5950. IID_IFullScreenVideoEx: TGUID = (D1:$53479470;D2:$F1DD;D3:$11CF;D4:($BC,$42,$00,$AA,$00,$AC,$74,$F6));
  5951. {$EXTERNALSYM IID_IFullScreenVideoEx}
  5952. IID_IBaseVideoMixer: TGUID = (D1:$61DED640;D2:$E912;D3:$11CE;D4:($A0,$99,$00,$AA,$00,$47,$9A,$58));
  5953. {$EXTERNALSYM IID_IBaseVideoMixer}
  5954. const
  5955. AMDDS_NONE = $00; // No use for DCI/DirectDraw
  5956. {$EXTERNALSYM AMDDS_NONE}
  5957. AMDDS_DCIPS = $01; // Use DCI primary surface
  5958. {$EXTERNALSYM AMDDS_DCIPS}
  5959. AMDDS_PS = $02; // Use DirectDraw primary
  5960. {$EXTERNALSYM AMDDS_PS}
  5961. AMDDS_RGBOVR = $04; // RGB overlay surfaces
  5962. {$EXTERNALSYM AMDDS_RGBOVR}
  5963. AMDDS_YUVOVR = $08; // YUV overlay surfaces
  5964. {$EXTERNALSYM AMDDS_YUVOVR}
  5965. AMDDS_RGBOFF = $10; // RGB offscreen surfaces
  5966. {$EXTERNALSYM AMDDS_RGBOFF}
  5967. AMDDS_YUVOFF = $20; // YUV offscreen surfaces
  5968. {$EXTERNALSYM AMDDS_YUVOFF}
  5969. AMDDS_RGBFLP = $40; // RGB flipping surfaces
  5970. {$EXTERNALSYM AMDDS_RGBFLP}
  5971. AMDDS_YUVFLP = $80; // YUV flipping surfaces
  5972. {$EXTERNALSYM AMDDS_YUVFLP}
  5973. AMDDS_ALL = $FF; // ALL the previous flags
  5974. {$EXTERNALSYM AMDDS_ALL}
  5975. AMDDS_DEFAULT = AMDDS_ALL; // Use all available surfaces
  5976. {$EXTERNALSYM AMDDS_DEFAULT}
  5977. AMDDS_YUV = AMDDS_YUVOFF or AMDDS_YUVOVR or AMDDS_YUVFLP;
  5978. {$EXTERNALSYM AMDDS_YUV}
  5979. AMDDS_RGB = AMDDS_RGBOFF or AMDDS_RGBOVR or AMDDS_RGBFLP;
  5980. {$EXTERNALSYM AMDDS_RGB}
  5981. AMDDS_PRIMARY = AMDDS_DCIPS or AMDDS_PS;
  5982. {$EXTERNALSYM AMDDS_PRIMARY}
  5983. type
  5984. {$HPPEMIT 'typedef System::DelphiInterface<IDirectDrawVideo> _di_IDirectDrawVideo;'}
  5985. {$EXTERNALSYM IDirectDrawVideo}
  5986. IDirectDrawVideo = interface(IUnknown)
  5987. ['{36D39EB0-DD75-11CE-BF0E-00AA0055595A}']
  5988. (*** IDirectDrawVideo methods ***)
  5989. function GetSwitches(out pSwitches: DWORD): HResult; stdcall;
  5990. function SetSwitches(pSwitches: DWORD): HResult; stdcall;
  5991. function GetCaps(out pCaps: TDDCaps): HResult; stdcall;
  5992. function GetEmulatedCaps(out pCaps: TDDCaps): HResult; stdcall;
  5993. function GetSurfaceDesc(out pSurfaceDesc: TDDSurfaceDesc): HResult; stdcall;
  5994. function GetFourCCCodes(out pCount, pCodes: DWORD): HResult; stdcall;
  5995. function SetDirectDraw(pDirectDraw: IDirectDraw): HResult; stdcall;
  5996. function GetDirectDraw(out ppDirectDraw: IDirectDraw): HResult; stdcall;
  5997. function GetSurfaceType(out pSurfaceType: DWORD): HResult; stdcall;
  5998. function SetDefault: HResult; stdcall;
  5999. function UseScanLine(UseScanLine: LongBool): HResult; stdcall;
  6000. function CanUseScanLine(var UseScanLine: LongBool): HResult; stdcall;
  6001. function UseOverlayStretch(UseOverlayStretch: LongBool): HResult; stdcall;
  6002. function CanUseOverlayStretch(var UseOverlayStretch: LongBool): HResult;
  6003. stdcall;
  6004. function UseWhenFullScreen(UseWhenFullScreen: LongBool): HResult; stdcall;
  6005. function WillUseFullScreen(var UseWhenFullScreen: LongBool): HResult;
  6006. stdcall;
  6007. end;
  6008. {$HPPEMIT 'typedef System::DelphiInterface<IQualProp> _di_IQualProp;'}
  6009. {$EXTERNALSYM IQualProp}
  6010. IQualProp = interface(IUnknown)
  6011. ['{1BD0ECB0-F8E2-11CE-AAC6-0020AF0B99A3}']
  6012. (*** IQualProp methods ***)
  6013. // Compare these with the functions in class CGargle in gargle.h
  6014. function get_FramesDroppedInRenderer(var pcFrames: Integer): HResult; stdcall;
  6015. function get_FramesDrawn(out pcFrames: Integer): HResult; stdcall;
  6016. function get_AvgFrameRate(out piAvgFrameRate: Integer): HResult; stdcall;
  6017. function get_Jitter(out iJitter: Integer): HResult; stdcall;
  6018. function get_AvgSyncOffset(out piAvg: Integer): HResult; stdcall;
  6019. function get_DevSyncOffset(out piDev: Integer): HResult; stdcall;
  6020. end;
  6021. {$HPPEMIT 'typedef System::DelphiInterface<IFullScreenVideo> _di_IFullScreenVideo;'}
  6022. {$EXTERNALSYM IFullScreenVideo}
  6023. IFullScreenVideo = interface(IUnknown)
  6024. ['{DD1D7110-7836-11CF-BF47-00AA0055595A}']
  6025. (*** IFullScreenVideo methods ***)
  6026. function CountModes(out pModes: Longint): HResult; stdcall;
  6027. function GetModeInfo(Mode: Longint; out pWidth, pHeight, pDepth: Longint):
  6028. HResult; stdcall;
  6029. function GetCurrentMode(out pMode: Longint): HResult; stdcall;
  6030. function IsModeAvailable(Mode: Longint): HResult; stdcall;
  6031. function IsModeEnabled(Mode: Longint): HResult; stdcall;
  6032. function SetEnabled(Mode: Longint; bEnabled: Longint): HResult; stdcall;
  6033. function GetClipFactor(out pClipFactor: Longint): HResult; stdcall;
  6034. function SetClipFactor(ClipFactor: Longint): HResult; stdcall;
  6035. function SetMessageDrain(hwnd: HWND): HResult; stdcall;
  6036. function GetMessageDrain(out hwnd: HWND): HResult; stdcall;
  6037. function SetMonitor(Monitor: Longint): HResult; stdcall;
  6038. function GetMonitor(out Monitor: Longint): HResult; stdcall;
  6039. function HideOnDeactivate(Hide: LongBool): HResult; stdcall;
  6040. function IsHideOnDeactivate: HResult; stdcall;
  6041. function SetCaption(strCaption: TBStr): HResult; stdcall;
  6042. function GetCaption(out pstrCaption: TBStr): HResult; stdcall;
  6043. function SetDefault: HResult; stdcall;
  6044. end;
  6045. {$HPPEMIT 'typedef System::DelphiInterface<IFullScreenVideoEx> _di_IFullScreenVideoEx;'}
  6046. {$EXTERNALSYM IFullScreenVideoEx}
  6047. IFullScreenVideoEx = interface(IFullScreenVideo)
  6048. ['{53479470-F1DD-11CF-BC42-00AA00AC74F6}']
  6049. (*** IFullScreenVideoEx methods ***)
  6050. // IFullScreenVideoEx
  6051. function SetAcceleratorTable(hwnd: HWND; hAccel: HACCEL): HResult; stdcall;
  6052. function GetAcceleratorTable(var hwnd: HWND; var hAccel: HACCEL): HResult;
  6053. stdcall;
  6054. function KeepPixelAspectRatio(KeepAspect: LongBool): HResult; stdcall;
  6055. function IsKeepPixelAspectRatio(var pKeepAspect: LongBool): HResult; stdcall;
  6056. end;
  6057. {$HPPEMIT 'typedef System::DelphiInterface<IBaseVideoMixer> _di_IBaseVideoMixer;'}
  6058. {$EXTERNALSYM IBaseVideoMixer}
  6059. IBaseVideoMixer = interface(IUnknown)
  6060. ['{61DED640-E912-11CE-A099-00AA00479A58}']
  6061. (*** IBaseVideoMixer methods ***)
  6062. function SetLeadPin(iPin: Integer): HResult; stdcall;
  6063. function GetLeadPin(out iPin: Integer): HResult; stdcall;
  6064. function GetInputPinCount(out piPinCount: Integer): HResult; stdcall;
  6065. function IsUsingClock(out pbValue: Integer): HResult; stdcall;
  6066. function SetUsingClock(bValue: Integer): HResult; stdcall;
  6067. function GetClockPeriod(out pbValue: Integer): HResult; stdcall;
  6068. function SetClockPeriod(bValue: Integer): HResult; stdcall;
  6069. end;
  6070. const
  6071. iPALETTE_COLORS = 256; // Maximum colours in palette
  6072. {$EXTERNALSYM iPALETTE_COLORS}
  6073. iEGA_COLORS = 16; // Number colours in EGA palette
  6074. {$EXTERNALSYM iEGA_COLORS}
  6075. iMASK_COLORS = 3; // Maximum three components
  6076. {$EXTERNALSYM iMASK_COLORS}
  6077. iTRUECOLOR = 16; // Minimum true colour device
  6078. {$EXTERNALSYM iTRUECOLOR}
  6079. iRED = 0; // Index position for RED mask
  6080. {$EXTERNALSYM iRED}
  6081. iGREEN = 1; // Index position for GREEN mask
  6082. {$EXTERNALSYM iGREEN}
  6083. iBLUE = 2; // Index position for BLUE mask
  6084. {$EXTERNALSYM iBLUE}
  6085. iPALETTE = 8; // Maximum colour depth using a palette
  6086. {$EXTERNALSYM iPALETTE}
  6087. iMAXBITS = 8; // Maximum bits per colour component
  6088. {$EXTERNALSYM iMAXBITS}
  6089. type
  6090. // Used for true colour images that also have a palette
  6091. tag_TRUECOLORINFO = record
  6092. dwBitMasks: array[0..iMASK_COLORS-1] of DWORD;
  6093. bmiColors: array[0..iPALETTE_COLORS-1] of TRGBQuad;
  6094. end;
  6095. {$EXTERNALSYM tag_TRUECOLORINFO}
  6096. TRUECOLORINFO = tag_TRUECOLORINFO;
  6097. {$EXTERNALSYM TRUECOLORINFO}
  6098. TTrueColorInfo = tag_TRUECOLORINFO;
  6099. PVideoInfoHeader = ^TVideoInfoHeader;
  6100. tagVIDEOINFOHEADER = record
  6101. rcSource: TRect; // The bit we really want to use
  6102. rcTarget: TRect; // Where the video should go
  6103. dwBitRate: DWORD; // Approximate bit data rate
  6104. dwBitErrorRate: DWORD; // Bit error rate for this stream
  6105. AvgTimePerFrame: TReferenceTime; // Average time per frame (100ns units)
  6106. bmiHeader: TBitmapInfoHeader;
  6107. end;
  6108. {$EXTERNALSYM tagVIDEOINFOHEADER}
  6109. VIDEOINFOHEADER = tagVIDEOINFOHEADER;
  6110. {$EXTERNALSYM VIDEOINFOHEADER}
  6111. TVideoInfoHeader = tagVIDEOINFOHEADER;
  6112. // make sure the pbmi is initialized before using these macros
  6113. {function TRUECOLOR(pbmi: PBitmapInfo): Pointer;
  6114. function COLORS(pbmi: PBitmapInfo): Pointer;
  6115. function BITMASKS(pbmi: PBitmapInfo): Pointer;
  6116. {
  6117. #define TRUECOLOR(pbmi) ((TRUECOLORINFO *)(((LPBYTE)&((pbmi)->bmiHeader)) \
  6118. + (pbmi)->bmiHeader.biSize))
  6119. #define COLORS(pbmi) ((RGBQUAD *)(((LPBYTE)&((pbmi)->bmiHeader)) \
  6120. + (pbmi)->bmiHeader.biSize))
  6121. #define BITMASKS(pbmi) ((DWORD *)(((LPBYTE)&((pbmi)->bmiHeader)) \
  6122. + (pbmi)->bmiHeader.biSize))
  6123. }
  6124. // All the image based filters use this to communicate their media types. It's
  6125. // centred principally around the BITMAPINFO. This structure always contains a
  6126. // BITMAPINFOHEADER followed by a number of other fields depending on what the
  6127. // BITMAPINFOHEADER contains. If it contains details of a palettised format it
  6128. // will be followed by one or more RGBQUADs defining the palette. If it holds
  6129. // details of a true colour format then it may be followed by a set of three
  6130. // DWORD bit masks that specify where the RGB data can be found in the image
  6131. // (For more information regarding BITMAPINFOs see the Win32 documentation)
  6132. // The rcSource and rcTarget fields are not for use by filters supplying the
  6133. // data. The destination (target) rectangle should be set to all zeroes. The
  6134. // source may also be zero filled or set with the dimensions of the video. So
  6135. // if the video is 352x288 pixels then set it to (0,0,352,288). These fields
  6136. // are mainly used by downstream filters that want to ask the source filter
  6137. // to place the image in a different position in an output buffer. So when
  6138. // using for example the primary surface the video renderer may ask a filter
  6139. // to place the video images in a destination position of (100,100,452,388)
  6140. // on the display since that's where the window is positioned on the display
  6141. // !!! WARNING !!!
  6142. // DO NOT use this structure unless you are sure that the BITMAPINFOHEADER
  6143. // has a normal biSize == sizeof(BITMAPINFOHEADER) !
  6144. // !!! WARNING !!!
  6145. type
  6146. PVideoInfo = ^TVideoInfo;
  6147. tagVIDEOINFO = record
  6148. rcSource: TRect; // The bit we really want to use
  6149. rcTarget: TRect; // Where the video should go
  6150. dwBitRate: DWORD; // Approximate bit data rate
  6151. dwBitErrorRate: DWORD; // Bit error rate for this stream
  6152. AvgTimePerFrame: TReferenceTime; // Average time per frame (100ns units)
  6153. bmiHeader: TBitmapInfoHeader;
  6154. case Integer of
  6155. 0: (
  6156. bmiColors: array[0..iPALETTE_COLORS-1] of TRGBQuad // Colour palette
  6157. );
  6158. 1: (
  6159. dwBitMasks: array[0..iMASK_COLORS-1] of DWORD // True colour masks
  6160. );
  6161. 2: (
  6162. TrueColorInfo: TTrueColorInfo // Both of the above
  6163. );
  6164. end;
  6165. {$EXTERNALSYM tagVIDEOINFO}
  6166. VIDEOINFO = tagVIDEOINFO;
  6167. {$EXTERNALSYM VIDEOINFO}
  6168. TVideoInfo = tagVIDEOINFO;
  6169. // These macros define some standard bitmap format sizes
  6170. const
  6171. SIZE_EGA_PALETTE = iEGA_COLORS * SizeOf(TRGBQuad);
  6172. {$EXTERNALSYM SIZE_EGA_PALETTE}
  6173. SIZE_PALETTE = iPALETTE_COLORS * SizeOf(TRGBQuad);
  6174. {$EXTERNALSYM SIZE_PALETTE}
  6175. SIZE_MASKS = iMASK_COLORS * SizeOf(DWORD);
  6176. {$EXTERNALSYM SIZE_MASKS}
  6177. SIZE_PREHEADER = 48; // offset TVideoInfoHeader.bmiHeader
  6178. {$EXTERNALSYM SIZE_PREHEADER}
  6179. SIZE_VIDEOHEADER = SizeOf(TVideoInfoHeader);
  6180. {$EXTERNALSYM SIZE_VIDEOHEADER}
  6181. // !!! for abnormal biSizes
  6182. // #define SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + SIZE_PREHEADER)
  6183. // DIBSIZE calculates the number of bytes required by an image
  6184. {
  6185. function WIDTHBYTES(bits: Integer): DWORD;
  6186. function DIBWIDTHBYTES(const bhi: TBitmapInfoHeader): DWORD;
  6187. function _DIBSIZE(const bmi: TBitmapInfoHeader): DWORD;
  6188. function DIBSIZE(const bmi: TBitmapInfoHeader): DWORD;
  6189. {
  6190. #define WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
  6191. #define DIBWIDTHBYTES(bi) (DWORD)WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
  6192. #define _DIBSIZE(bi) (DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
  6193. #define DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(_DIBSIZE(bi)) : _DIBSIZE(bi))
  6194. }
  6195. // This compares the bit masks between two VIDEOINFOHEADERs
  6196. {
  6197. function BIT_MASKS_MATCH(const bmi1, bmi2: TBitmapInfo): Boolean;
  6198. {
  6199. #define BIT_MASKS_MATCH(pbmi1,pbmi2) \
  6200. (((pbmi1)->dwBitMasks[iRED] == (pbmi2)->dwBitMasks[iRED]) && \
  6201. ((pbmi1)->dwBitMasks[iGREEN] == (pbmi2)->dwBitMasks[iGREEN]) && \
  6202. ((pbmi1)->dwBitMasks[iBLUE] == (pbmi2)->dwBitMasks[iBLUE]))
  6203. }
  6204. // These zero fill different parts of the VIDEOINFOHEADER structure
  6205. // Only use these macros for pbmi's with a normal BITMAPINFOHEADER biSize
  6206. {procedure RESET_MASKS(var bmi: TBitmapInfo);
  6207. procedure RESET_HEADER(var bmi: TBitmapInfo);
  6208. procedure RESET_PALETTE(var bmi: TBitmapInfo);
  6209. {
  6210. #define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(pbmi)->dwBitFields,SIZE_MASKS))
  6211. #define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi),SIZE_VIDEOHEADER))
  6212. #define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(pbmi)->bmiColors,SIZE_PALETTE));
  6213. }
  6214. {
  6215. // !!! This is the right way to do it, but may break existing code
  6216. #define RESET_MASKS(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
  6217. (pbmi)->bmiHeader.biSize,SIZE_MASKS)))
  6218. #define RESET_HEADER(pbmi) (ZeroMemory((PVOID)(pbmi), SIZE_PREHEADER + \
  6219. sizeof(BITMAPINFOHEADER)))
  6220. #define RESET_PALETTE(pbmi) (ZeroMemory((PVOID)(((LPBYTE)(pbmi)->bmiHeader) + \
  6221. (pbmi)->bmiHeader.biSize,SIZE_PALETTE))
  6222. }
  6223. // Other (hopefully) useful bits and bobs
  6224. {
  6225. #define PALETTISED(pbmi) ((pbmi)->bmiHeader.biBitCount <= iPALETTE)
  6226. #define PALETTE_ENTRIES(pbmi) ((DWORD) 1 << (pbmi)->bmiHeader.biBitCount)
  6227. // Returns the address of the BITMAPINFOHEADER from the VIDEOINFOHEADER
  6228. #define HEADER(pVideoInfo) (&(((VIDEOINFOHEADER *) (pVideoInfo))->bmiHeader))
  6229. }
  6230. // MPEG variant - includes a DWORD length followed by the
  6231. // video sequence header after the video header.
  6232. //
  6233. // The sequence header includes the sequence header start code and the
  6234. // quantization matrices associated with the first sequence header in the
  6235. // stream so is a maximum of 140 bytes long.
  6236. type
  6237. PMPEG1VideoInfo = ^TMPEG1VideoInfo;
  6238. tagMPEG1VIDEOINFO = record
  6239. hdr: TVideoInfoHeader; // Compatible with VIDEOINFO
  6240. dwStartTimeCode: DWORD; // 25-bit Group of pictures time code
  6241. // at start of data
  6242. cbSequenceHeader: DWORD; // Length in bytes of bSequenceHeader
  6243. bSequenceHeader: array[0..0] of Byte; // Sequence header including
  6244. // quantization matrices if any
  6245. end;
  6246. {$EXTERNALSYM tagMPEG1VIDEOINFO}
  6247. MPEG1VIDEOINFO = tagMPEG1VIDEOINFO;
  6248. {$EXTERNALSYM MPEG1VIDEOINFO}
  6249. TMPEG1VideoInfo = tagMPEG1VIDEOINFO;
  6250. const
  6251. MAX_SIZE_MPEG1_SEQUENCE_INFO = 140;
  6252. {$EXTERNALSYM MAX_SIZE_MPEG1_SEQUENCE_INFO}
  6253. {
  6254. #define SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  6255. #define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  6256. }
  6257. // Analog video variant - Use this when the format is FORMAT_AnalogVideo
  6258. //
  6259. // rcSource defines the portion of the active video signal to use
  6260. // rcTarget defines the destination rectangle
  6261. // both of the above are relative to the dwActiveWidth and dwActiveHeight fields
  6262. // dwActiveWidth is currently set to 720 for all formats (but could change for HDTV)
  6263. // dwActiveHeight is 483 for NTSC and 575 for PAL/SECAM (but could change for HDTV)
  6264. type
  6265. tagAnalogVideoInfo = record
  6266. rcSource: TRect; // Width max is 720, height varies w/ TransmissionS
  6267. rcTarget: TRect; // Where the video should go
  6268. dwBitRate: DWORD; // Always 720 (CCIR-601 active samples per line)
  6269. dwBitErrorRate: DWORD; // 483 for NTSC, 575 for PAL/SECAM
  6270. AvgTimePerFrame: TReferenceTime; // Normal ActiveMovie units (100 nS)
  6271. end;
  6272. {$EXTERNALSYM tagAnalogVideoInfo}
  6273. ANALOGVIDEOINFO = tagAnalogVideoInfo;
  6274. {$EXTERNALSYM ANALOGVIDEOINFO}
  6275. TAnalogVideoInfo = tagAnalogVideoInfo;
  6276. //
  6277. // AM_KSPROPSETID_FrameStep property set definitions
  6278. //
  6279. AM_PROPERTY_FRAMESTEP = (
  6280. {$IFNDEF COMPILER6_UP}
  6281. AM_PROPERTY_FRAMESTEP_INVALID_O,
  6282. // Step
  6283. AM_PROPERTY_FRAMESTEP_STEP,
  6284. AM_PROPERTY_FRAMESTEP_CANCEL,
  6285. // S_OK for these 2 means we can - S_FALSE if we can't
  6286. AM_PROPERTY_FRAMESTEP_CANSTEP,
  6287. AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE
  6288. {$ELSE}
  6289. // Step
  6290. AM_PROPERTY_FRAMESTEP_STEP = 1,
  6291. AM_PROPERTY_FRAMESTEP_CANCEL = 2 ,
  6292. // S_OK for these 2 means we can - S_FALSE if we can't
  6293. AM_PROPERTY_FRAMESTEP_CANSTEP = 3,
  6294. AM_PROPERTY_FRAMESTEP_CANSTEPMULTIPLE = 4
  6295. {$ENDIF}
  6296. );
  6297. {$EXTERNALSYM AM_PROPERTY_FRAMESTEP}
  6298. TAMPropertyFramesStep = AM_PROPERTY_FRAMESTEP;
  6299. _AM_FRAMESTEP_STEP = record
  6300. // 1 means step 1 frame forward
  6301. // 0 is invalid
  6302. // n (n > 1) means skip n - 1 frames and show the nth
  6303. dwFramesToStep: DWORD;
  6304. end;
  6305. {$EXTERNALSYM _AM_FRAMESTEP_STEP}
  6306. AM_FRAMESTEP_STEP = _AM_FRAMESTEP_STEP;
  6307. {$EXTERNALSYM AM_FRAMESTEP_STEP}
  6308. TAMFramestepStep = _AM_FRAMESTEP_STEP;
  6309. (*==========================================================================;
  6310. *
  6311. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  6312. *
  6313. * File: amaudio.h
  6314. *
  6315. ***************************************************************************)
  6316. const
  6317. IID_IAMDirectSound: TGUID = (D1:$546F4260;D2:$D53E;D3:$11CF;D4:($B3,$F0,$00,$AA,$00,$37,$61,$C5));
  6318. {$EXTERNALSYM IID_IAMDirectSound}
  6319. // This is the interface the audio renderer supports to give the application
  6320. // access to the direct sound object and buffers it is using, to allow the
  6321. // application to use things like the 3D features of Direct Sound for the
  6322. // soundtrack of a movie being played with Active Movie
  6323. // be nice to our friends in C
  6324. type
  6325. {$HPPEMIT 'typedef System::DelphiInterface<IAMDirectSound> _di_IAMDirectSound;'}
  6326. {$EXTERNALSYM IAMDirectSound}
  6327. IAMDirectSound = interface(IUnknown)
  6328. ['{546F4260-D53E-11CF-B3F0-00AA003761C5}']
  6329. (*** IAMDirectSound methods ***)
  6330. function GetDirectSoundInterface(out lplpds: IDirectSound): HResult;
  6331. stdcall;
  6332. function GetPrimaryBufferInterface(out lplpdsb: IDirectSoundBuffer):
  6333. HResult; stdcall;
  6334. function GetSecondaryBufferInterface(out lplpdsb: IDirectSoundBuffer):
  6335. HResult; stdcall;
  6336. function ReleaseDirectSoundInterface(lpds: IDirectSound): HResult; stdcall;
  6337. function ReleasePrimaryBufferInterface(lpdsb: IDirectSoundBuffer): HResult;
  6338. stdcall;
  6339. function ReleaseSecondaryBufferInterface(lpdsb: IDirectSoundBuffer):
  6340. HResult; stdcall;
  6341. function SetFocusWindow(hwnd: HWND; b: BOOL): HResult; stdcall;
  6342. function GetFocusWindow(var hwnd: HWND; var b: BOOL): HResult; stdcall;
  6343. end;
  6344. (*==========================================================================;
  6345. *
  6346. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  6347. *
  6348. * File: vptype.h
  6349. *
  6350. ***************************************************************************)
  6351. type
  6352. // enum to specify the criterion, which the vpmixer is supposed to use
  6353. // in order to select the video format
  6354. _AMVP_SELECT_FORMAT_BY = (
  6355. AMVP_DO_NOT_CARE,
  6356. AMVP_BEST_BANDWIDTH,
  6357. AMVP_INPUT_SAME_AS_OUTPUT
  6358. );
  6359. {$EXTERNALSYM _AMVP_SELECT_FORMAT_BY}
  6360. AMVP_SELECT_FORMAT_BY = _AMVP_SELECT_FORMAT_BY;
  6361. {$EXTERNALSYM AMVP_SELECT_FORMAT_BY}
  6362. TAMVPSelectFormatBy = AMVP_SELECT_FORMAT_BY;
  6363. // enum to specify the various mode
  6364. _AMVP_MODE = (
  6365. AMVP_MODE_WEAVE,
  6366. AMVP_MODE_BOBINTERLEAVED,
  6367. AMVP_MODE_BOBNONINTERLEAVED,
  6368. AMVP_MODE_SKIPEVEN,
  6369. AMVP_MODE_SKIPODD
  6370. );
  6371. {$EXTERNALSYM _AMVP_MODE}
  6372. AMVP_MODE = _AMVP_MODE;
  6373. {$EXTERNALSYM AMVP_MODE}
  6374. TAMVPMode = AMVP_MODE;
  6375. // struct to specify the width and height. The context could be anything
  6376. // such as scaling cropping etc.
  6377. PAMVPSize = ^TAMVPSize;
  6378. _AMVPSIZE = record
  6379. dwWidth : DWORD; // the width
  6380. dwHeight : DWORD; // the height
  6381. end;
  6382. {$EXTERNALSYM _AMVPSIZE}
  6383. AMVPSIZE = _AMVPSIZE;
  6384. {$EXTERNALSYM AMVPSIZE}
  6385. LPAMVPSIZE = ^AMVPSIZE;
  6386. {$EXTERNALSYM LPAMVPSIZE}
  6387. TAMVPSize = _AMVPSIZE;
  6388. // struct to specify the dimensional characteristics of the input stream
  6389. PAMVPDimInfo = ^TAMVPDimInfo;
  6390. _AMVPDIMINFO = record
  6391. {$EXTERNALSYM _AMVPDIMINFO}
  6392. dwFieldWidth : DWORD; // Field height of the data
  6393. dwFieldHeight : DWORD; // Field width of the data
  6394. dwVBIWidth : DWORD; // Width of the VBI data
  6395. dwVBIHeight : DWORD; // Height of the VBI data
  6396. rcValidRegion : TRect; // The vaild rectangle, used for cropping
  6397. end;
  6398. AMVPDIMINFO = _AMVPDIMINFO;
  6399. {$EXTERNALSYM AMVPDIMINFO}
  6400. LPAMVPDIMINFO = ^AMVPDIMINFO;
  6401. {$EXTERNALSYM LPAMVPDIMINFO}
  6402. TAMVPDimInfo = _AMVPDIMINFO;
  6403. // struct to specify the various data specific characteristics of the input stream
  6404. PAMVPDataInfo = ^TAMVPDataInfo;
  6405. _AMVPDATAINFO = record
  6406. dwSize : DWORD; // Size of the struct
  6407. dwMicrosecondsPerField : DWORD; // Time taken by each field
  6408. amvpDimInfo : TAMVPDIMInfo; // Dimensional Information
  6409. dwPictAspectRatioX : DWORD; // X dimension of Picture Aspect Ratio
  6410. dwPictAspectRatioY : DWORD; // Y dimension of Picture Aspect Ratio
  6411. bEnableDoubleClock : BOOL; // Videoport should enable double clocking
  6412. bEnableVACT : BOOL; // Videoport should use an external VACT signal
  6413. bDataIsInterlaced : BOOL; // Indicates that the signal is interlaced
  6414. lHalfLinesOdd : Longint; // number of halflines in the odd field
  6415. bFieldPolarityInverted : BOOL; // Device inverts the polarity by default
  6416. dwNumLinesInVREF : DWORD; // Number of lines of data in VREF
  6417. lHalfLinesEven : Longint; // number of halflines in the even field
  6418. dwReserved1 : DWORD; // Reserved for future use
  6419. end;
  6420. {$EXTERNALSYM _AMVPDATAINFO}
  6421. AMVPDATAINFO = _AMVPDATAINFO;
  6422. {$EXTERNALSYM AMVPDATAINFO}
  6423. LPAMVPDATAINFO = ^AMVPDATAINFO;
  6424. {$EXTERNALSYM LPAMVPDATAINFO}
  6425. TAMVPDataInfo = _AMVPDATAINFO;
  6426. (*==========================================================================;
  6427. *
  6428. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  6429. *
  6430. * File: vpconfig.h
  6431. *
  6432. ***************************************************************************)
  6433. const
  6434. IID_IVPConfig: TGUID = (D1:$BC29A660;D2:$30E3;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  6435. {$EXTERNALSYM IID_IVPConfig}
  6436. IID_IVPVBIConfig: TGUID = (D1:$EC529B00;D2:$1A1F;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  6437. {$EXTERNALSYM IID_IVPVBIConfig}
  6438. type
  6439. {$HPPEMIT 'typedef System::DelphiInterface<IVPBaseConfig> _di_IVPBaseConfig;'}
  6440. {$EXTERNALSYM IVPBaseConfig}
  6441. IVPBaseConfig = interface(IUnknown)
  6442. (*** IVPBaseConfig methods ***)
  6443. // gets the various connection information structures (guid, portwidth)
  6444. // in an array of structures. If the pointer to the array is NULL, first
  6445. // parameter returns the total number of formats supported.
  6446. function GetConnectInfo(var pdwNumConnectInfo: PDWORD;
  6447. var pddVPConnectInfo: PDDVideoPortConnect): HResult; stdcall;
  6448. // sets the connection entry chosen (0, 1, .. ,(dwNumProposedEntries-1))
  6449. function SetConnectInfo(dwChosenEntry: DWORD): HResult; stdcall;
  6450. // gets various data parameters, includes dimensionnal info
  6451. function GetVPDataInfo(var pamvpDataInfo: PAMVPDataInfo): HResult; stdcall;
  6452. // retrives maximum pixels per second rate expected for a given
  6453. // format and a given scaling factor. If decoder does not support
  6454. // those scaling factors, then it gives the rate and the nearest
  6455. // scaling factors.
  6456. function GetMaxPixelRate(var pamvpSize: PAMVPSize;
  6457. out pdwMaxPixelsPerSecond: PDWORD): HResult; stdcall;
  6458. // informs the callee of the videoformats supported by the videoport
  6459. function InformVPInputFormats(dwNumFormats: DWORD;
  6460. pTDDPixelFormats: PDDPixelFormat): HResult; stdcall;
  6461. // gets the various formats supported by the decoder in an array
  6462. // of structures. If the pointer to the array is NULL, first parameter
  6463. // returns the total number of formats supported.
  6464. function GetVideoFormats(var pdwNumFormats: PDWORD;
  6465. var pTDDPixelFormats: PDDPixelFormat): HResult; stdcall;
  6466. // sets the format entry chosen (0, 1, .. ,(dwNumProposedEntries-1))
  6467. function SetVideoFormat(dwChosenEntry: DWORD): HResult; stdcall;
  6468. // asks the decoder to treat even fields like odd fields and visa versa
  6469. function SetInvertPolarity: HResult; stdcall;
  6470. // the mixer uses this function to determine if the callee wants
  6471. // the vpmixer to use its overlay surface and if so to get a pointer to it
  6472. function GetOverlaySurface(out ppddOverlaySurface: IDirectDrawSurface):
  6473. HResult; stdcall;
  6474. // sets the direct draw kernel handle
  6475. function SetDirectDrawKernelHandle(dwDDKernelHandle: THandle): HResult;
  6476. stdcall;
  6477. // sets the video port id
  6478. function SetVideoPortID(dwVideoPortID: DWORD): HResult; stdcall;
  6479. // sets the direct draw surface kernel handle
  6480. function SetDDSurfaceKernelHandles(cHandles: DWORD;
  6481. var rgDDKernelHandles: THandle): HResult; stdcall;
  6482. // Tells driver about surface created on its behalf by ovmixer/vbisurf and
  6483. // returned from videoport/ddraw. Should always return NOERROR or E_NOIMPL.
  6484. // dwPitch is the pitch of the surface (distance in pixels between the start
  6485. // pixels of two consecutive lines of the surface). (dwXOrigin, dwYOrigin)
  6486. // are the (X, Y) coordinates of the pixel at which valid data starts.
  6487. function SetSurfaceParameters(dwPitch, dwXOrigin, dwYOrigin: DWORD):
  6488. HResult; stdcall;
  6489. end;
  6490. {$HPPEMIT 'typedef System::DelphiInterface<IVPConfig> _di_IVPConfig;'}
  6491. {$EXTERNALSYM IVPConfig}
  6492. IVPConfig = interface(IVPBaseConfig)
  6493. ['{BC29A660-30E3-11D0-9E69-00C04FD7C15B}']
  6494. (*** IVPConfig methods ***)
  6495. // the mixer uses this function to determine if the callee wants
  6496. // the mixer to decimate VIDEO data at its own descrition
  6497. function IsVPDecimationAllowed(out pbIsDecimationAllowed: PBOOL): HResult;
  6498. stdcall;
  6499. // sets the scaling factors. If decoder does not support these,
  6500. // then it sets the values to the nearest factors it can support
  6501. function SetScalingFactors(pamvpSize: PAMVPSize): HResult; stdcall;
  6502. end;
  6503. {$HPPEMIT 'typedef System::DelphiInterface<IVPVBIConfig> _di_IVPVBIConfig;'}
  6504. {$EXTERNALSYM IVPVBIConfig}
  6505. IVPVBIConfig = interface(IVPBaseConfig)
  6506. ['{EC529B00-1A1F-11D1-BAD9-00609744111A}']
  6507. (*** IVPVBIConfig methods ***)
  6508. end;
  6509. (*==========================================================================;
  6510. *
  6511. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  6512. *
  6513. * File: vpnotify.h
  6514. *
  6515. ***************************************************************************)
  6516. const
  6517. IID_IVPNotify: TGUID = (D1:$C76794A1;D2:$D6C5;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  6518. {$EXTERNALSYM IID_IVPNotify}
  6519. IID_IVPVBINotify: TGUID = (D1:$EC529B01;D2:$1A1F;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  6520. {$EXTERNALSYM IID_IVPVBINotify}
  6521. IID_IVPNotify2: TGUID = (D1:$ebf47183;D2:$8764;D3:$11d1;D4:($9e,$69,$00,$c0,$4f,$d7,$c1,$5b));
  6522. {$EXTERNALSYM IID_IVPNotify2}
  6523. type
  6524. {$HPPEMIT 'typedef System::DelphiInterface<IVPBaseNotify> _di_IVPBaseNotify;'}
  6525. {$EXTERNALSYM IVPBaseNotify}
  6526. IVPBaseNotify = interface(IUnknown)
  6527. (*** IVPBaseNotify methods ***)
  6528. // this function initializes the reconnection to the decoder.
  6529. function RenegotiateVPParameters: HResult; stdcall;
  6530. end;
  6531. {$HPPEMIT 'typedef System::DelphiInterface<IVPNotify> _di_IVPNotify;'}
  6532. {$EXTERNALSYM IVPNotify}
  6533. IVPNotify = interface(IVPBaseNotify)
  6534. ['{C76794A1-D6C5-11D0-9E69-00C04FD7C15B}']
  6535. (*** IVPNotify methods ***)
  6536. // function to set the mode (bob, weave etc)
  6537. function SetDeinterlaceMode(mode: TAMVPMode): HResult; stdcall;
  6538. // function to get the mode (bob, weave etc)
  6539. function GetDeinterlaceMode(out pMode: TAMVPMode): HResult; stdcall;
  6540. end;
  6541. // 4 functions have been removed from dxmedia!!
  6542. {$HPPEMIT 'typedef System::DelphiInterface<IVPNotify2> _di_IVPNotify2;'}
  6543. {$EXTERNALSYM IVPNotify2}
  6544. IVPNotify2 = interface(IVPNotify)
  6545. ['{EBF47183-8764-11d1-9E69-00C04FD7C15B}']
  6546. (*** IVPNotify2 methods ***)
  6547. // function to set the mode (bob, weave etc)
  6548. function SetVPSyncMaster(bVPSyncMaster: BOOL): HResult; stdcall;
  6549. // function to get the mode (bob, weave etc)
  6550. function GetVPSyncMaster(OUT pbVPSyncMaster: BOOL): HResult; stdcall;
  6551. end;
  6552. {$HPPEMIT 'typedef System::DelphiInterface<IVPVBINotify> _di_IVPVBINotify;'}
  6553. {$EXTERNALSYM IVPVBINotify}
  6554. IVPVBINotify = interface(IVPBaseNotify)
  6555. ['{EC529B01-1A1F-11D1-BAD9-00609744111A}']
  6556. (*** IVPVBINotify methods ***)
  6557. end;
  6558. (*==========================================================================;
  6559. *
  6560. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  6561. *
  6562. * File: mpegtype.h
  6563. *
  6564. ***************************************************************************)
  6565. const
  6566. IID_IMpegAudioDecoder: TGUID = (D1:$B45DD570;D2:$3C77;D3:$11D1;D4:($AB,$E1,$00,$A0,$C9,$05,$F3,$75));
  6567. {$EXTERNALSYM IID_IMpegAudioDecoder}
  6568. type
  6569. //
  6570. // AM_MPEGSYSTEMTYPE defines the format block contents for
  6571. // data of type MEDIATYPE_MPEG1System when the format
  6572. // block GUID is FORMAT_MPEG1System
  6573. //
  6574. // The format block consists of elements of type
  6575. // AM_MPEGSYSTEMTYPE up to the length of the format block
  6576. // Each format block is 8-byte aligned from the start of
  6577. // the format block
  6578. //
  6579. tagAM_MPEGSTREAMTYPE = record
  6580. dwStreamId: DWORD; // Stream id of stream to process
  6581. dwReserved: DWORD; // 8-byte alignment
  6582. mt: TAMMediaType; // Type for substream - pbFormat is NULL
  6583. bFormat: array[0..0] of Byte; // Format data
  6584. end;
  6585. {$EXTERNALSYM tagAM_MPEGSTREAMTYPE}
  6586. AM_MPEGSTREAMTYPE = tagAM_MPEGSTREAMTYPE;
  6587. {$EXTERNALSYM AM_MPEGSTREAMTYPE}
  6588. TAMMPEGStreamType = tagAM_MPEGSTREAMTYPE;
  6589. tagAM_MPEGSYSTEMTYPE = record
  6590. dwBitRate: DWORD; // Bits per second
  6591. cStreams: DWORD; // Number of streams
  6592. Streams: array[0..0] of TAMMPEGStreamType;
  6593. end;
  6594. {$EXTERNALSYM tagAM_MPEGSYSTEMTYPE}
  6595. AM_MPEGSYSTEMTYPE = tagAM_MPEGSYSTEMTYPE;
  6596. {$EXTERNALSYM AM_MPEGSYSTEMTYPE}
  6597. TAMMPEGSystemType = tagAM_MPEGSYSTEMTYPE;
  6598. {
  6599. //
  6600. // Helper macros for AM_MPEGSTREAMTYPE
  6601. //
  6602. #define AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) \
  6603. FIELD_OFFSET(AM_MPEGSTREAMTYPE, bFormat[(pStreamType)->mt.cbFormat])
  6604. #define AM_MPEGSTREAMTYPE_NEXT(pStreamType) \
  6605. ((AM_MPEGSTREAMTYPE *)((PBYTE)(pStreamType) + \
  6606. ((AM_MPEGSTREAMTYPE_ELEMENTLENGTH(pStreamType) + 7) & ~7)))
  6607. }
  6608. //
  6609. // IMpegAudioDecoder
  6610. //
  6611. // Values for DualMode
  6612. const
  6613. AM_MPEG_AUDIO_DUAL_MERGE = 0;
  6614. {$EXTERNALSYM AM_MPEG_AUDIO_DUAL_MERGE}
  6615. AM_MPEG_AUDIO_DUAL_LEFT = 1;
  6616. {$EXTERNALSYM AM_MPEG_AUDIO_DUAL_LEFT}
  6617. AM_MPEG_AUDIO_DUAL_RIGHT = 2;
  6618. {$EXTERNALSYM AM_MPEG_AUDIO_DUAL_RIGHT}
  6619. type
  6620. //
  6621. //
  6622. // Microsoft MPEG audio WAV definition
  6623. //
  6624. (* MPEG-1 audio wave format (audio layer only). (0x0050) *)
  6625. MPEG1WAVEFORMAT = record
  6626. wfx: TWaveFormatEx;
  6627. fwHeadLayer: Word;
  6628. dwHeadBitrate: DWORD;
  6629. fwHeadMode: Word;
  6630. fwHeadModeExt: Word;
  6631. wHeadEmphasis: Word;
  6632. fwHeadFlags: Word;
  6633. dwPTSLow: DWORD;
  6634. dwPTSHigh: DWORD;
  6635. end;
  6636. {$EXTERNALSYM MPEG1WAVEFORMAT}
  6637. TMPEG1WaveFormat = MPEG1WAVEFORMAT;
  6638. const
  6639. ACM_MPEG_LAYER1 = $0001;
  6640. {$EXTERNALSYM ACM_MPEG_LAYER1}
  6641. ACM_MPEG_LAYER2 = $0002;
  6642. {$EXTERNALSYM ACM_MPEG_LAYER2}
  6643. ACM_MPEG_LAYER3 = $0004;
  6644. {$EXTERNALSYM ACM_MPEG_LAYER3}
  6645. ACM_MPEG_STEREO = $0001;
  6646. {$EXTERNALSYM ACM_MPEG_STEREO}
  6647. ACM_MPEG_JOINTSTEREO = $0002;
  6648. {$EXTERNALSYM ACM_MPEG_JOINTSTEREO}
  6649. ACM_MPEG_DUALCHANNEL = $0004;
  6650. {$EXTERNALSYM ACM_MPEG_DUALCHANNEL}
  6651. ACM_MPEG_SINGLECHANNEL = $0008;
  6652. {$EXTERNALSYM ACM_MPEG_SINGLECHANNEL}
  6653. ACM_MPEG_PRIVATEBIT = $0001;
  6654. {$EXTERNALSYM ACM_MPEG_PRIVATEBIT}
  6655. ACM_MPEG_COPYRIGHT = $0002;
  6656. {$EXTERNALSYM ACM_MPEG_COPYRIGHT}
  6657. ACM_MPEG_ORIGINALHOME = $0004;
  6658. {$EXTERNALSYM ACM_MPEG_ORIGINALHOME}
  6659. ACM_MPEG_PROTECTIONBIT = $0008;
  6660. {$EXTERNALSYM ACM_MPEG_PROTECTIONBIT}
  6661. ACM_MPEG_ID_MPEG1 = $0010;
  6662. {$EXTERNALSYM ACM_MPEG_ID_MPEG1}
  6663. type
  6664. {$HPPEMIT 'typedef System::DelphiInterface<IMpegAudioDecoder> _di_IMpegAudioDecoder;'}
  6665. {$EXTERNALSYM IMpegAudioDecoder}
  6666. IMpegAudioDecoder = interface(IUnknown)
  6667. ['{B45DD570-3C77-11D1-ABE1-00A0C905F375}']
  6668. (*** IMpegAudioDecoder methods ***)
  6669. function get_FrequencyDivider(out pDivider: LongWord): HResult; stdcall;
  6670. function put_FrequencyDivider(Divider: LongWord): HResult; stdcall;
  6671. function get_DecoderAccuracy(out pAccuracy: LongWord): HResult; stdcall;
  6672. function put_DecoderAccuracy(Accuracy: LongWord): HResult; stdcall;
  6673. function get_Stereo(out pStereo: LongWord): HResult; stdcall;
  6674. function put_Stereo(Stereo: LongWord): HResult; stdcall;
  6675. function get_DecoderWordSize(out pWordSize: LongWord): HResult; stdcall;
  6676. function put_DecoderWordSize(WordSize: LongWord): HResult; stdcall;
  6677. function get_IntegerDecode(out pIntDecode: LongWord): HResult; stdcall;
  6678. function put_IntegerDecode(IntDecode: LongWord): HResult; stdcall;
  6679. function get_DualMode(out pIntDecode: LongWord): HResult; stdcall;
  6680. function put_DualMode(IntDecode: LongWord): HResult; stdcall;
  6681. function get_AudioFormat(out lpFmt: TMPEG1WaveFormat): HResult; stdcall;
  6682. end;
  6683. (*==========================================================================;
  6684. *
  6685. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  6686. *
  6687. * File: il21dec.h
  6688. *
  6689. ***************************************************************************)
  6690. // Line 21 Decoder related definitions and interfaces for ActiveMovie
  6691. const
  6692. IID_IAMLine21Decoder: TGUID = (D1:$6E8D4A21;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  6693. {$EXTERNALSYM IID_IAMLine21Decoder}
  6694. type
  6695. //
  6696. // Some enum data types used as line 21 decoder params by the interface
  6697. //
  6698. _AM_LINE21_CCLEVEL = ( // should we use TC1, TC2 in stead?
  6699. AM_L21_CCLEVEL_TC2
  6700. );
  6701. {$EXTERNALSYM _AM_LINE21_CCLEVEL}
  6702. AM_LINE21_CCLEVEL = _AM_LINE21_CCLEVEL;
  6703. {$EXTERNALSYM AM_LINE21_CCLEVEL}
  6704. PAM_LINE21_CCLEVEL = ^AM_LINE21_CCLEVEL;
  6705. {$EXTERNALSYM PAM_LINE21_CCLEVEL}
  6706. TAMLine21CCLevel = AM_LINE21_CCLEVEL;
  6707. _AM_LINE21_CCSERVICE = (
  6708. {$IFNDEF COMPILER6_UP}
  6709. AM_L21_CCSERVICE_None,
  6710. AM_L21_CCSERVICE_Caption1,
  6711. AM_L21_CCSERVICE_Caption2,
  6712. AM_L21_CCSERVICE_Text1,
  6713. AM_L21_CCSERVICE_Text2,
  6714. AM_L21_CCSERVICE_XDS,
  6715. AM_L21_CCSERVICE_INVALID_6,
  6716. AM_L21_CCSERVICE_INVALID_7,
  6717. AM_L21_CCSERVICE_INVALID_8,
  6718. AM_L21_CCSERVICE_INVALID_9,
  6719. AM_L21_CCSERVICE_DefChannel,
  6720. AM_L21_CCSERVICE_Invalid
  6721. {$ELSE}
  6722. AM_L21_CCSERVICE_None = 0,
  6723. AM_L21_CCSERVICE_Caption1 = 1,
  6724. AM_L21_CCSERVICE_Caption2 = 2,
  6725. AM_L21_CCSERVICE_Text1 = 3,
  6726. AM_L21_CCSERVICE_Text2 = 4,
  6727. AM_L21_CCSERVICE_XDS = 5,
  6728. AM_L21_CCSERVICE_DefChannel = 10,
  6729. AM_L21_CCSERVICE_Invalid = 11
  6730. {$ENDIF}
  6731. );
  6732. {$EXTERNALSYM _AM_LINE21_CCSERVICE}
  6733. AM_LINE21_CCSERVICE = _AM_LINE21_CCSERVICE;
  6734. {$EXTERNALSYM AM_LINE21_CCSERVICE}
  6735. PAM_LINE21_CCSERVICE = ^AM_LINE21_CCSERVICE;
  6736. {$EXTERNALSYM PAM_LINE21_CCSERVICE}
  6737. TAMLine21CCService = AM_LINE21_CCSERVICE;
  6738. _AM_LINE21_CCSTATE = (
  6739. AM_L21_CCSTATE_Off,
  6740. AM_L21_CCSTATE_On
  6741. );
  6742. {$EXTERNALSYM _AM_LINE21_CCSTATE}
  6743. AM_LINE21_CCSTATE = _AM_LINE21_CCSTATE;
  6744. {$EXTERNALSYM AM_LINE21_CCSTATE}
  6745. PAM_LINE21_CCSTATE = ^AM_LINE21_CCSTATE;
  6746. {$EXTERNALSYM PAM_LINE21_CCSTATE}
  6747. TAMLine21CCState = AM_LINE21_CCSTATE;
  6748. _AM_LINE21_CCSTYLE = (
  6749. AM_L21_CCSTYLE_None,
  6750. AM_L21_CCSTYLE_PopOn,
  6751. AM_L21_CCSTYLE_PaintOn,
  6752. AM_L21_CCSTYLE_RollUp
  6753. );
  6754. {$EXTERNALSYM _AM_LINE21_CCSTYLE}
  6755. AM_LINE21_CCSTYLE = _AM_LINE21_CCSTYLE;
  6756. {$EXTERNALSYM AM_LINE21_CCSTYLE}
  6757. PAM_LINE21_CCSTYLE = ^AM_LINE21_CCSTYLE;
  6758. {$EXTERNALSYM PAM_LINE21_CCSTYLE}
  6759. TAMLine21CCStyle = AM_LINE21_CCSTYLE;
  6760. _AM_LINE21_DRAWBGMODE = (
  6761. AM_L21_DRAWBGMODE_Opaque,
  6762. AM_L21_DRAWBGMODE_Transparent
  6763. );
  6764. {$EXTERNALSYM _AM_LINE21_DRAWBGMODE}
  6765. AM_LINE21_DRAWBGMODE = _AM_LINE21_DRAWBGMODE;
  6766. {$EXTERNALSYM AM_LINE21_DRAWBGMODE}
  6767. PAM_LINE21_DRAWBGMODE = ^AM_LINE21_DRAWBGMODE;
  6768. {$EXTERNALSYM PAM_LINE21_DRAWBGMODE}
  6769. TAMLine21DrawBGMode = AM_LINE21_DRAWBGMODE;
  6770. //
  6771. // Line 21 Decoder standard COM interface
  6772. //
  6773. {$HPPEMIT 'typedef System::DelphiInterface<IAMLine21Decoder> _di_IAMLine21Decoder;'}
  6774. {$EXTERNALSYM IAMLine21Decoder}
  6775. IAMLine21Decoder = interface(IUnknown)
  6776. ['{6E8D4A21-310C-11D0-B79A-00AA003767A7}']
  6777. (*** IAMLine21Decoder methods ***)
  6778. //
  6779. // Decoder options to be used by apps
  6780. //
  6781. // What is the decoder's level
  6782. function GetDecoderLevel(var lpLevel: TAMLine21CCLevel): HResult; stdcall;
  6783. // supported level value is AM_L21Level_TC2 only
  6784. // skipping the SetDecoderLevel( )
  6785. // Which of the services is being currently used
  6786. function GetCurrentService(var lpService: TAMLine21CCService): HResult;
  6787. stdcall;
  6788. function SetCurrentService(Service: TAMLine21CCService): HResult;
  6789. stdcall;
  6790. // supported service values are AM_L21Service_Caption1,
  6791. // AM_L21Service_Caption2, AM_L21Service_Text1, AM_L21Service_Text2,
  6792. // AM_L21Service_XDS, AM_L21Service_None)
  6793. // Query/Set the service state (On/Off)
  6794. // supported state values are AM_L21State_On and AM_L21State_Off
  6795. function GetServiceState(var lpState: TAMLine21CCState): HResult;
  6796. stdcall;
  6797. function SetServiceState(State: TAMLine21CCState): HResult;
  6798. stdcall;
  6799. //
  6800. // Output options to be used by downstream filters
  6801. //
  6802. // What size, bitdepth etc should the output video be
  6803. function GetOutputFormat(lpbmih: PBitmapInfoHeader): HResult; stdcall;
  6804. // GetOutputFormat() method, if successful, returns
  6805. // 1. S_FALSE if no output format has so far been defined by downstream filters
  6806. // 2. S_OK if an output format has already been defined by downstream filters
  6807. function SetOutputFormat(lpbmih: PBitmapInfoHeader): HResult;
  6808. stdcall;
  6809. // Specify physical color to be used in colorkeying the background
  6810. // for overlay mixing
  6811. function GetBackgroundColor(var pdwPhysColor: DWORD): HResult; stdcall;
  6812. function SetBackgroundColor(dwPhysColor: DWORD): HResult; stdcall;
  6813. // Specify if whole output bitmap should be redrawn for each sample
  6814. function GetRedrawAlways(lpbOption: PBOOL): HResult; stdcall;
  6815. function SetRedrawAlways(bOption: BOOL): HResult; stdcall;
  6816. // Specify if the caption text background should be opaque/transparent
  6817. function GetDrawBackgroundMode(var lpMode: TAMLine21DrawBGMode): HResult;
  6818. stdcall;
  6819. function SetDrawBackgroundMode(Mode: TAMLine21DrawBGMode): HResult;
  6820. stdcall;
  6821. // supported mode values are AM_L21_DrawBGMode_Opaque and
  6822. // AM_L21_DrawBGMode_Transparent
  6823. end;
  6824. (*==========================================================================;
  6825. *
  6826. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  6827. *
  6828. * File: dvdevcod.h
  6829. *
  6830. ***************************************************************************)
  6831. // list of standard DVD-Video event codes and the expected params
  6832. const
  6833. EC_DVDBASE = $0100;
  6834. {$EXTERNALSYM EC_DVDBASE}
  6835. type
  6836. _tagDVD_ERROR = (
  6837. {$IFNDEF COMPILER6_UP}
  6838. DVD_ERROR_INVALID_0,
  6839. DVD_ERROR_Unexpected, // Something unexpected happened, perhaps content
  6840. // is incorrectly authored. Playback is stopped.
  6841. DVD_ERROR_CopyProtectFail, // Key exchange for DVD copy protection failed.
  6842. // Playback is stopped.
  6843. DVD_ERROR_InvalidDVD1_0Disc, // DVD-Video disc is incorrectly authored for v1.0
  6844. // of spec. Playback is stopped.
  6845. DVD_ERROR_InvalidDiscRegion, // The Disc is not approved for playback by decoders
  6846. // from this DVD region.
  6847. DVD_ERROR_LowParentalLevel, // Player parental level is lower than the lowest parental
  6848. // level available in the DVD content. Playback is stopped.
  6849. DVD_ERROR_MacrovisionFail, // Macrovision Distribution Failed.
  6850. // Playback is stopped.
  6851. DVD_ERROR_IncompatibleSystemAndDecoderRegions,
  6852. // No discs can be played because the system region
  6853. // does not match the decoder region.
  6854. DVD_ERROR_IncompatibleDiscAndDecoderRegions
  6855. // The disc cannot be played because the disc is
  6856. // not authored to be played in the decoder's region
  6857. {$ELSE}
  6858. DVD_ERROR_Unexpected = 1, // Something unexpected happened, perhaps content
  6859. // is incorrectly authored. Playback is stopped.
  6860. DVD_ERROR_CopyProtectFail = 2, // Key exchange for DVD copy protection failed.
  6861. // Playback is stopped.
  6862. DVD_ERROR_InvalidDVD1_0Disc = 3, // DVD-Video disc is incorrectly authored for v1.0
  6863. // of spec. Playback is stopped.
  6864. DVD_ERROR_InvalidDiscRegion = 4, // The Disc is not approved for playback by decoders
  6865. // from this DVD region.
  6866. DVD_ERROR_LowParentalLevel = 5, // Player parental level is lower than the lowest parental
  6867. // level available in the DVD content. Playback is stopped.
  6868. DVD_ERROR_MacrovisionFail = 6, // Macrovision Distribution Failed.
  6869. // Playback is stopped.
  6870. DVD_ERROR_IncompatibleSystemAndDecoderRegions = 7,
  6871. // No discs can be played because the system region
  6872. // does not match the decoder region.
  6873. DVD_ERROR_IncompatibleDiscAndDecoderRegions = 8
  6874. // The disc cannot be played because the disc is
  6875. // not authored to be played in the decoder's region
  6876. {$ENDIF}
  6877. );
  6878. {$EXTERNALSYM _tagDVD_ERROR}
  6879. DVD_ERROR = _tagDVD_ERROR;
  6880. {$EXTERNALSYM DVD_ERROR}
  6881. TDVDError = DVD_ERROR;
  6882. _tagDVD_WARNING = (
  6883. {$IFNDEF COMPILER6_UP}
  6884. DVD_WARNING_INVALID_0,
  6885. DVD_WARNING_InvalidDVD1_0Disc, // DVD-Video disc is incorrectly authored. Playback
  6886. // can continue, but unexpected behavior may occur.
  6887. DVD_WARNING_FormatNotSupported, // A decoder would not support the current format. Playback
  6888. // of a stream (audio, video of SP) may not function.
  6889. // lParam2 contains the stream type (see AM_DVD_STREAM_FLAGS) -> Windows XP
  6890. DVD_WARNING_IllegalNavCommand, // The internal DVD navigation command processor attempted to
  6891. // process an illegal command.
  6892. DVD_WARNING_Open, // File Open Failed
  6893. DVD_WARNING_Seek, // File Seek Failed
  6894. DVD_WARNING_Read // File Read Failed
  6895. {$ELSE}
  6896. DVD_WARNING_InvalidDVD1_0Disc = 1, // DVD-Video disc is incorrectly authored. Playback
  6897. // can continue, but unexpected behavior may occur.
  6898. DVD_WARNING_FormatNotSupported = 2, // A decoder would not support the current format. Playback
  6899. // of a stream (audio, video of SP) may not function.
  6900. // lParam2 contains the stream type (see AM_DVD_STREAM_FLAGS) -> Windows XP
  6901. DVD_WARNING_IllegalNavCommand = 3, // The internal DVD navigation command processor attempted to
  6902. // process an illegal command.
  6903. DVD_WARNING_Open = 4, // File Open Failed
  6904. DVD_WARNING_Seek = 5, // File Seek Failed
  6905. DVD_WARNING_Read = 6 // File Read Failed
  6906. {$ENDIF}
  6907. );
  6908. {$EXTERNALSYM _tagDVD_WARNING}
  6909. DVD_WARNING = _tagDVD_WARNING;
  6910. {$EXTERNALSYM DVD_WARNING}
  6911. TDVDWarning = DVD_WARNING;
  6912. _tagDVD_PB_STOPPED = (
  6913. DVD_PB_STOPPED_Other, // The navigator stopped the playback (no reason available).
  6914. DVD_PB_STOPPED_NoBranch, // The nav completed the current pgc and there was no more video and
  6915. // did not find any other branching instruction for subsequent playback.
  6916. DVD_PB_STOPPED_NoFirstPlayDomain, // The disc does not contain an initial startup program.
  6917. DVD_PB_STOPPED_StopCommand, // The app issued a stop() command or a stop command was authored on the disc.
  6918. DVD_PB_STOPPED_Reset, // The navigator was reset to the start of the disc (using ResetOnStop).
  6919. DVD_PB_STOPPED_DiscEjected, // The disc was ejected.
  6920. DVD_PB_STOPPED_IllegalNavCommand, // An illegal nav command prevented playback from continuing.
  6921. DVD_PB_STOPPED_PlayPeriodAutoStop, // PlayPeriod completed
  6922. DVD_PB_STOPPED_PlayChapterAutoStop, // PlayChapter completed
  6923. DVD_PB_STOPPED_ParentalFailure, // A parental level failure prevented playback
  6924. DVD_PB_STOPPED_RegionFailure, // A region failure prevented playback
  6925. DVD_PB_STOPPED_MacrovisionFailure, // A Macrovision failure prevented playback.
  6926. DVD_PB_STOPPED_DiscReadError, // A read error prevented playback.
  6927. DVD_PB_STOPPED_CopyProtectFailure // Copy protection failure.
  6928. );
  6929. {$EXTERNALSYM _tagDVD_PB_STOPPED}
  6930. DVD_PB_STOPPED = _tagDVD_PB_STOPPED;
  6931. {$EXTERNALSYM DVD_PB_STOPPED}
  6932. TDVDPBStopped = DVD_PB_STOPPED;
  6933. const
  6934. // DVD-Video event codes
  6935. // ======================
  6936. //
  6937. // All DVD-Video event are always passed on to the application, and are
  6938. // never processed by the filter graph
  6939. EC_DVD_DOMAIN_CHANGE = (EC_DVDBASE + $01);
  6940. {$EXTERNALSYM EC_DVD_DOMAIN_CHANGE}
  6941. // Parameters: ( DWORD, void )
  6942. // lParam1 is enum DVD_DOMAIN, and indicates the player's new domain
  6943. //
  6944. // Raised from following domains: all
  6945. //
  6946. // Signaled when ever the DVD player changes domains.
  6947. EC_DVD_TITLE_CHANGE = (EC_DVDBASE + $02);
  6948. {$EXTERNALSYM EC_DVD_TITLE_CHANGE}
  6949. // Parameters: ( DWORD, void )
  6950. // lParam1 is the new title number.
  6951. //
  6952. // Raised from following domains: DVD_DOMAIN_Title
  6953. //
  6954. // Indicates when the current title number changes. Title numbers
  6955. // range 1 to 99. This indicates the TTN, which is the title number
  6956. // with respect to the whole disc, not the VTS_TTN which is the title
  6957. // number with respect to just a current VTS.
  6958. EC_DVD_CHAPTER_START = (EC_DVDBASE + $03);
  6959. {$EXTERNALSYM EC_DVD_CHAPTER_START}
  6960. // Parameters: ( DWORD, void )
  6961. // lParam1 is the new chapter number (which is the program number for
  6962. // One_Sequential_PGC_Titles).
  6963. //
  6964. // Raised from following domains: DVD_DOMAIN_Title
  6965. //
  6966. // Signales that DVD player started playback of a new program in the Title
  6967. // domain. This is only signaled for One_Sequential_PGC_Titles.
  6968. EC_DVD_AUDIO_STREAM_CHANGE = (EC_DVDBASE + $04);
  6969. {$EXTERNALSYM EC_DVD_AUDIO_STREAM_CHANGE}
  6970. // Parameters: ( DWORD, void )
  6971. // lParam1 is the new user audio stream number.
  6972. //
  6973. // Raised from following domains: all
  6974. //
  6975. // Signaled when ever the current user audio stream number changes for the main
  6976. // title. This can be changed automatically with a navigation command on disc
  6977. // as well as through IDVDAnnexJ.
  6978. // Audio stream numbers range from 0 to 7. Stream $ffffffff
  6979. // indicates that no stream is selected.
  6980. EC_DVD_SUBPICTURE_STREAM_CHANGE = (EC_DVDBASE + $05);
  6981. {$EXTERNALSYM EC_DVD_SUBPICTURE_STREAM_CHANGE}
  6982. // Parameters: ( DWORD, BOOL ) -> WindowsXP
  6983. // Parameters: ( DWORD, void )
  6984. // lParam1 is the new user subpicture stream number.
  6985. // lParam2 is the subpicture's on/off state (TRUE if on) -> WindowsXP
  6986. // Raised from following domains: all
  6987. //
  6988. // Signaled when ever the current user subpicture stream number changes for the main
  6989. // title. This can be changed automatically with a navigation command on disc
  6990. // as well as through IDVDAnnexJ.
  6991. // Subpicture stream numbers range from 0 to 31. Stream $ffffffff
  6992. // indicates that no stream is selected.
  6993. EC_DVD_ANGLE_CHANGE = (EC_DVDBASE + $06);
  6994. {$EXTERNALSYM EC_DVD_ANGLE_CHANGE}
  6995. // Parameters: ( DWORD, DWORD )
  6996. // lParam1 is the number of available angles.
  6997. // lParam2 is the current user angle number.
  6998. //
  6999. // Raised from following domains: all
  7000. //
  7001. // Signaled when ever either
  7002. // a) the number of available angles changes, or
  7003. // b) the current user angle number changes.
  7004. // Current angle number can be changed automatically with navigation command
  7005. // on disc as well as through IDVDAnnexJ.
  7006. // When the number of available angles is 1, the current video is not multiangle.
  7007. // Angle numbers range from 1 to 9.
  7008. EC_DVD_BUTTON_CHANGE = (EC_DVDBASE + $07);
  7009. {$EXTERNALSYM EC_DVD_BUTTON_CHANGE}
  7010. // Parameters: ( DWORD, DWORD )
  7011. // lParam1 is the number of available buttons.
  7012. // lParam2 is the current selected button number.
  7013. //
  7014. // Raised from following domains: all
  7015. //
  7016. // Signaled when ever either
  7017. // a) the number of available buttons changes, or
  7018. // b) the current selected button number changes.
  7019. // The current selected button can be changed automatically with navigation
  7020. // commands on disc as well as through IDVDAnnexJ.
  7021. // Button numbers range from 1 to 36. Selected button number 0 implies that
  7022. // no button is selected. Note that these button numbers enumerate all
  7023. // available button numbers, and do not always correspond to button numbers
  7024. // used for IDVDAnnexJ::ButtonSelectAndActivate since only a subset of buttons
  7025. // may be activated with ButtonSelectAndActivate.
  7026. EC_DVD_VALID_UOPS_CHANGE = (EC_DVDBASE + $08);
  7027. {$EXTERNALSYM EC_DVD_VALID_UOPS_CHANGE}
  7028. // Parameters: ( DWORD, void )
  7029. // lParam1 is a VALID_UOP_SOMTHING_OR_OTHER bit-field stuct which indicates
  7030. // which IDVDAnnexJ commands are explicitly disable by the DVD disc.
  7031. //
  7032. // Raised from following domains: all
  7033. //
  7034. // Signaled when ever the available set of IDVDAnnexJ methods changes. This
  7035. // only indicates which operations are explicited disabled by the content on
  7036. // the DVD disc, and does not guarentee that it is valid to call methods
  7037. // which are not disabled. For example, if no buttons are currently present,
  7038. // IDVDAnnexJ::ButtonActivate() won't work, even though the buttons are not
  7039. // explicitly disabled.
  7040. EC_DVD_STILL_ON = (EC_DVDBASE + $09);
  7041. {$EXTERNALSYM EC_DVD_STILL_ON}
  7042. // Parameters: ( BOOL, DWORD )
  7043. // lParam1 == 0 --> buttons are available, so StillOff won't work
  7044. // lParam1 == 1 --> no buttons available, so StillOff will work
  7045. // lParam2 indicates the number of seconds the still will last, with $ffffffff
  7046. // indicating an infinite still (wait till button or StillOff selected).
  7047. //
  7048. // Raised from following domains: all
  7049. //
  7050. // Signaled at the beginning of any still: PGC still, Cell Still, or VOBU Still.
  7051. // Note that all combinations of buttons and still are possible (buttons on with
  7052. // still on, buttons on with still off, button off with still on, button off
  7053. // with still off).
  7054. EC_DVD_STILL_OFF = (EC_DVDBASE + $0a);
  7055. {$EXTERNALSYM EC_DVD_STILL_OFF}
  7056. // Parameters: ( void, void )
  7057. //
  7058. // Indicating that any still that is currently active
  7059. // has been released.
  7060. //
  7061. // Raised from following domains: all
  7062. //
  7063. // Signaled at the end of any still: PGC still, Cell Still, or VOBU Still.
  7064. //
  7065. EC_DVD_CURRENT_TIME = (EC_DVDBASE + $0b);
  7066. {$EXTERNALSYM EC_DVD_CURRENT_TIME}
  7067. // Parameters: ( DWORD, BOOL )
  7068. // lParam1 is a DVD_TIMECODE which indicates the current
  7069. // playback time code in a BCD HH:MM:SS:FF format.
  7070. // lParam2 == 0 --> time code is 25 frames/sec
  7071. // lParam2 == 1 --> time code is 30 frames/sec (non-drop).
  7072. //
  7073. // Raised from following domains: DVD_DOMAIN_Title
  7074. //
  7075. // Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec.
  7076. // This is only signaled for One_Sequential_PGC_Titles.
  7077. EC_DVD_ERROR = (EC_DVDBASE + $0c);
  7078. {$EXTERNALSYM EC_DVD_ERROR}
  7079. // Parameters: ( DWORD, void)
  7080. // lParam1 is an enum DVD_ERROR which notifies the app of some error condition.
  7081. //
  7082. // Raised from following domains: all
  7083. //
  7084. EC_DVD_WARNING = (EC_DVDBASE + $0d);
  7085. {$EXTERNALSYM EC_DVD_WARNING}
  7086. // Parameters: ( DWORD, DWORD) -> WindowsXP
  7087. // Parameters: ( DWORD, void)
  7088. // lParam1 is an enum DVD_WARNING which notifies the app of some warning condition.
  7089. // lParam2 contains more specific information about the warning (warning dependent) -> WindowsXP
  7090. // Raised from following domains: all
  7091. //
  7092. EC_DVD_CHAPTER_AUTOSTOP = (EC_DVDBASE + $0e);
  7093. {$EXTERNALSYM EC_DVD_CHAPTER_AUTOSTOP}
  7094. // Parameters: (void, void)
  7095. //
  7096. // Indicating that playback is stopped as a result of a call
  7097. // to IDVDControl::ChapterPlayAutoStop()
  7098. //
  7099. // Raised from following domains : DVD_DOMAIN_TITLE
  7100. //
  7101. EC_DVD_NO_FP_PGC = (EC_DVDBASE + $0f);
  7102. {$EXTERNALSYM EC_DVD_NO_FP_PGC}
  7103. // Parameters : (void, void)
  7104. //
  7105. // Raised from the following domains : FP_DOM
  7106. //
  7107. // Indicates that the DVD disc does not have a FP_PGC (First Play Program Chain)
  7108. // and the DVD Navigator will not automatically load any PGC and start playback.
  7109. //
  7110. EC_DVD_PLAYBACK_RATE_CHANGE = (EC_DVDBASE + $10);
  7111. {$EXTERNALSYM EC_DVD_PLAYBACK_RATE_CHANGE}
  7112. // Parameters : (LONG, void)
  7113. // lParam1 is a LONG indicating the new playback rate.
  7114. // lParam1 < 0 indicates reverse playback mode.
  7115. // lParam1 > 0 indicates forward playback mode
  7116. // Value of lParam1 is the actual playback rate multiplied by 10000.
  7117. // i.e. lParam1 = rate * 10000
  7118. //
  7119. // Raised from the following domains : TT_DOM
  7120. //
  7121. // Indicates that a rate change in playback has been initiated and the parameter
  7122. // lParam1 indicates the new playback rate that is being used.
  7123. //
  7124. EC_DVD_PARENTAL_LEVEL_CHANGE = (EC_DVDBASE + $11);
  7125. {$EXTERNALSYM EC_DVD_PARENTAL_LEVEL_CHANGE}
  7126. // Parameters : (LONG, void)
  7127. // lParam1 is a LONG indicating the new parental level.
  7128. //
  7129. // Raised from the following domains : VMGM_DOM
  7130. //
  7131. // Indicates that an authored Nav command has changed the parental level
  7132. // setting in the player.
  7133. //
  7134. EC_DVD_PLAYBACK_STOPPED = (EC_DVDBASE + $12);
  7135. {$EXTERNALSYM EC_DVD_PLAYBACK_STOPPED}
  7136. // Parameters : (DWORD, void)
  7137. //
  7138. // Raised from the following domains : All Domains
  7139. //
  7140. // Indicates that playback has been stopped as the Navigator has completed
  7141. // playback of the pgc and did not find any other branching instruction for
  7142. // subsequent playback.
  7143. //
  7144. // The DWORD returns the reason for the completion of the playback. See
  7145. // The DVD_PB_STOPPED enumeration for details.
  7146. //
  7147. EC_DVD_ANGLES_AVAILABLE = (EC_DVDBASE + $13);
  7148. {$EXTERNALSYM EC_DVD_ANGLES_AVAILABLE}
  7149. // Parameters : (BOOL, void)
  7150. // lParam1 == 0 indicates that playback is not in an angle block and angles are
  7151. // not available
  7152. // lParam1 == 1 indicates that an angle block is being played back and angle changes
  7153. // can be performed.
  7154. //
  7155. // Indicates whether an angle block is being played and if angle changes can be
  7156. // performed. However, angle changes are not restricted to angle blocks and the
  7157. // manifestation of the angle change can be seen only in an angle block.
  7158. EC_DVD_PLAYPERIOD_AUTOSTOP = (EC_DVDBASE + $14);
  7159. {$EXTERNALSYM EC_DVD_PLAYPERIOD_AUTOSTOP}
  7160. // Parameters: (void, void)
  7161. // Sent when the PlayPeriodInTitle completes or is cancelled
  7162. //
  7163. // Raised from following domains : DVD_DOMAIN_TITLE
  7164. //
  7165. EC_DVD_BUTTON_AUTO_ACTIVATED = (EC_DVDBASE + $15);
  7166. {$EXTERNALSYM EC_DVD_BUTTON_AUTO_ACTIVATED}
  7167. // Parameters: (DWORD button, void)
  7168. // Sent when a button is automatically activated
  7169. //
  7170. // Raised from following domains : DVD_DOMAIN_MENU
  7171. //
  7172. EC_DVD_CMD_START = (EC_DVDBASE + $16);
  7173. {$EXTERNALSYM EC_DVD_CMD_START}
  7174. // Parameters: (CmdID, HResult)
  7175. // Sent when a command begins
  7176. //
  7177. EC_DVD_CMD_END = (EC_DVDBASE + $17);
  7178. {$EXTERNALSYM EC_DVD_CMD_END}
  7179. // Parameters: (CmdID, HResult)
  7180. // Sent when a command completes
  7181. //
  7182. EC_DVD_DISC_EJECTED = (EC_DVDBASE + $18);
  7183. {$EXTERNALSYM EC_DVD_DISC_EJECTED}
  7184. // Parameters: none
  7185. // Sent when the nav detects that a disc was ejected and stops the playback
  7186. // The app does not need to take any action to stop the playback.
  7187. //
  7188. EC_DVD_DISC_INSERTED = (EC_DVDBASE + $19);
  7189. {$EXTERNALSYM EC_DVD_DISC_INSERTED}
  7190. // Parameters: none
  7191. // Sent when the nav detects that a disc was inserted and the nav begins playback
  7192. // The app does not need to take any action to start the playback.
  7193. //
  7194. EC_DVD_CURRENT_HMSF_TIME = (EC_DVDBASE + $1a);
  7195. {$EXTERNALSYM EC_DVD_CURRENT_HMSF_TIME}
  7196. // Parameters: ( ULONG, ULONG )
  7197. // lParam2 contains a union of the DVD_TIMECODE_FLAGS
  7198. // lParam1 contains a DVD_HMSF_TIMECODE. Assign lParam1 to a ULONG then cast the
  7199. // ULONG as a DVD_HMSF_TIMECODE to use its values.
  7200. //
  7201. // Raised from following domains: DVD_DOMAIN_Title
  7202. //
  7203. // Signaled at the beginning of every VOBU, which occurs every .4 to 1.0 sec.
  7204. EC_DVD_KARAOKE_MODE = (EC_DVDBASE + $1b);
  7205. {$EXTERNALSYM EC_DVD_KARAOKE_MODE}
  7206. // Parameters: ( BOOL, reserved )
  7207. // lParam1 is either TRUE (a karaoke track is being played) or FALSE (no karaoke data is being played).
  7208. //
  7209. (*==========================================================================;
  7210. *
  7211. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  7212. *
  7213. * File: dvdmedia.h
  7214. *
  7215. ***************************************************************************)
  7216. type
  7217. // -----------------------------------------------------------------------
  7218. // AC-3 definition for the AM_KSPROPSETID_AC3 property set
  7219. // -----------------------------------------------------------------------
  7220. AM_PROPERTY_AC3 = (
  7221. AM_PROPERTY_AC3_INVALID_0,
  7222. AM_PROPERTY_AC3_ERROR_CONCEALMENT,
  7223. AM_PROPERTY_AC3_ALTERNATE_AUDIO,
  7224. AM_PROPERTY_AC3_DOWNMIX,
  7225. AM_PROPERTY_AC3_BIT_STREAM_MODE,
  7226. AM_PROPERTY_AC3_DIALOGUE_LEVEL,
  7227. AM_PROPERTY_AC3_LANGUAGE_CODE,
  7228. AM_PROPERTY_AC3_ROOM_TYPE
  7229. );
  7230. {$EXTERNALSYM AM_PROPERTY_AC3}
  7231. TAMPropertyAC3 = AM_PROPERTY_AC3;
  7232. AM_AC3_ERROR_CONCEALMENT = record
  7233. fRepeatPreviousBlock: BOOL;
  7234. fErrorInCurrentBlock: BOOL;
  7235. end;
  7236. {$EXTERNALSYM AM_AC3_ERROR_CONCEALMENT}
  7237. PAM_AC3_ERROR_CONCEALMENT = ^AM_AC3_ERROR_CONCEALMENT;
  7238. {$EXTERNALSYM PAM_AC3_ERROR_CONCEALMENT}
  7239. TAMAC3ErrorConcelment = AM_AC3_ERROR_CONCEALMENT;
  7240. AM_AC3_ALTERNATE_AUDIO = record
  7241. fStereo: BOOL;
  7242. DualMode: ULONG;
  7243. end;
  7244. {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO}
  7245. PAM_AC3_ALTERNATE_AUDIO = ^AM_AC3_ALTERNATE_AUDIO;
  7246. {$EXTERNALSYM PAM_AC3_ALTERNATE_AUDIO}
  7247. TAMAC3AlteranateAudio = AM_AC3_ALTERNATE_AUDIO;
  7248. const
  7249. AM_AC3_ALTERNATE_AUDIO_1 = 1;
  7250. {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO_1}
  7251. AM_AC3_ALTERNATE_AUDIO_2 = 2;
  7252. {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO_2}
  7253. AM_AC3_ALTERNATE_AUDIO_BOTH = 3;
  7254. {$EXTERNALSYM AM_AC3_ALTERNATE_AUDIO_BOTH}
  7255. type
  7256. AM_AC3_DOWNMIX = record
  7257. fDownMix : BOOL;
  7258. fDolbySurround : BOOL;
  7259. end;
  7260. {$EXTERNALSYM AM_AC3_DOWNMIX}
  7261. PAM_AC3_DOWNMIX = ^AM_AC3_DOWNMIX;
  7262. {$EXTERNALSYM PAM_AC3_DOWNMIX}
  7263. TAMAC3DownMix = AM_AC3_DOWNMIX;
  7264. AM_AC3_BIT_STREAM_MODE = record
  7265. BitStreamMode: Longint;
  7266. end;
  7267. {$EXTERNALSYM AM_AC3_BIT_STREAM_MODE}
  7268. PAM_AC3_BIT_STREAM_MODE = ^AM_AC3_BIT_STREAM_MODE;
  7269. {$EXTERNALSYM PAM_AC3_BIT_STREAM_MODE}
  7270. TAMAC3BitStreamMode = AM_AC3_BIT_STREAM_MODE;
  7271. const
  7272. AM_AC3_SERVICE_MAIN_AUDIO = 0;
  7273. {$EXTERNALSYM AM_AC3_SERVICE_MAIN_AUDIO}
  7274. AM_AC3_SERVICE_NO_DIALOG = 1;
  7275. {$EXTERNALSYM AM_AC3_SERVICE_NO_DIALOG}
  7276. AM_AC3_SERVICE_VISUALLY_IMPAIRED = 2;
  7277. {$EXTERNALSYM AM_AC3_SERVICE_VISUALLY_IMPAIRED}
  7278. AM_AC3_SERVICE_HEARING_IMPAIRED = 3;
  7279. {$EXTERNALSYM AM_AC3_SERVICE_HEARING_IMPAIRED}
  7280. AM_AC3_SERVICE_DIALOG_ONLY = 4;
  7281. {$EXTERNALSYM AM_AC3_SERVICE_DIALOG_ONLY}
  7282. AM_AC3_SERVICE_COMMENTARY = 5;
  7283. {$EXTERNALSYM AM_AC3_SERVICE_COMMENTARY}
  7284. AM_AC3_SERVICE_EMERGENCY_FLASH = 6;
  7285. {$EXTERNALSYM AM_AC3_SERVICE_EMERGENCY_FLASH}
  7286. AM_AC3_SERVICE_VOICE_OVER = 7;
  7287. {$EXTERNALSYM AM_AC3_SERVICE_VOICE_OVER}
  7288. type
  7289. AM_AC3_DIALOGUE_LEVEL = record
  7290. DialogueLevel: ULONG;
  7291. end;
  7292. {$EXTERNALSYM AM_AC3_DIALOGUE_LEVEL}
  7293. PAM_AC3_DIALOGUE_LEVEL = ^AM_AC3_DIALOGUE_LEVEL;
  7294. {$EXTERNALSYM PAM_AC3_DIALOGUE_LEVEL}
  7295. TAMAC3DialogueLevel = AM_AC3_DIALOGUE_LEVEL;
  7296. AM_AC3_ROOM_TYPE = record
  7297. fLargeRoom: BOOL;
  7298. end;
  7299. {$EXTERNALSYM AM_AC3_ROOM_TYPE}
  7300. PAM_AC3_ROOM_TYPE = ^AM_AC3_ROOM_TYPE;
  7301. {$EXTERNALSYM PAM_AC3_ROOM_TYPE}
  7302. TAMAC3RoomType = AM_AC3_ROOM_TYPE;
  7303. // -----------------------------------------------------------------------
  7304. // subpicture definition for the AM_KSPROPSETID_DvdSubPic property set
  7305. // -----------------------------------------------------------------------
  7306. AM_PROPERTY_DVDSUBPIC = (
  7307. AM_PROPERTY_DVDSUBPIC_PALETTE,
  7308. AM_PROPERTY_DVDSUBPIC_HLI,
  7309. AM_PROPERTY_DVDSUBPIC_COMPOSIT_ON // TRUE for subpicture is displayed
  7310. );
  7311. {$EXTERNALSYM AM_PROPERTY_DVDSUBPIC}
  7312. TAM_Property_DVDSubpic = AM_PROPERTY_DVDSUBPIC;
  7313. _AM_DVD_YUV = record
  7314. Reserved: Byte;
  7315. Y: byte;
  7316. U: Byte;
  7317. V: Byte;
  7318. end;
  7319. {$EXTERNALSYM _AM_DVD_YUV}
  7320. AM_DVD_YUV = _AM_DVD_YUV;
  7321. {$EXTERNALSYM AM_DVD_YUV}
  7322. TAMDVDYUV = _AM_DVD_YUV;
  7323. _AM_PROPERTY_SPPAL = record
  7324. sppal: array[0..15] of TAMDVDYUV;
  7325. end;
  7326. {$EXTERNALSYM _AM_PROPERTY_SPPAL}
  7327. AM_PROPERTY_SPPAL = _AM_PROPERTY_SPPAL;
  7328. {$EXTERNALSYM AM_PROPERTY_SPPAL}
  7329. PAM_PROPERTY_SPPAL = ^AM_PROPERTY_SPPAL;
  7330. {$EXTERNALSYM PAM_PROPERTY_SPPAL}
  7331. TAMPropertySPPAL = _AM_PROPERTY_SPPAL;
  7332. _AM_COLCON = record
  7333. emph1col : Byte;
  7334. emph2col : Byte;
  7335. backcol : Byte;
  7336. patcol : Byte;
  7337. emph1con : Byte;
  7338. emph2con : Byte;
  7339. backcon : Byte;
  7340. patcon : Byte;
  7341. end;
  7342. {$EXTERNALSYM _AM_COLCON}
  7343. AM_COLCON = _AM_COLCON;
  7344. {$EXTERNALSYM AM_COLCON}
  7345. PAM_COLCON = ^AM_COLCON;
  7346. {$EXTERNALSYM PAM_COLCON}
  7347. TAMColcon = _AM_COLCON;
  7348. _AM_PROPERTY_SPHLI = record
  7349. HLISS : Word; //
  7350. Reserved : Word;
  7351. StartPTM : ULONG; // start presentation time in x/90000
  7352. EndPTM : ULONG; // end PTM in x/90000
  7353. StartX : Word;
  7354. StartY : Word;
  7355. StopX : Word;
  7356. StopY : Word;
  7357. ColCon : TAMColCon; // color contrast description (4 bytes as given in HLI)
  7358. end;
  7359. {$EXTERNALSYM _AM_PROPERTY_SPHLI}
  7360. AM_PROPERTY_SPHLI = _AM_PROPERTY_SPHLI;
  7361. {$EXTERNALSYM AM_PROPERTY_SPHLI}
  7362. TAMPropertySPHLI = _AM_PROPERTY_SPHLI;
  7363. AM_PROPERTY_COMPOSIT_ON = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BOOL;
  7364. {$EXTERNALSYM AM_PROPERTY_COMPOSIT_ON}
  7365. PAM_PROPERTY_COMPOSIT_ON = ^AM_PROPERTY_COMPOSIT_ON;
  7366. {$EXTERNALSYM PAM_PROPERTY_COMPOSIT_ON}
  7367. // -----------------------------------------------------------------------
  7368. // copy protection definitions
  7369. // -----------------------------------------------------------------------
  7370. // AM_UseNewCSSKey for the dwTypeSpecificFlags in IMediaSample2 to indicate
  7371. // the exact point in a stream after which to start applying a new CSS key.
  7372. // This is typically sent on an empty media sample just before attempting
  7373. // to renegotiate a CSS key.
  7374. const
  7375. AM_UseNewCSSKey = $1;
  7376. {$EXTERNALSYM AM_UseNewCSSKey}
  7377. //
  7378. // AM_KSPROPSETID_CopyProt property set definitions
  7379. //
  7380. AM_PROPERTY_DVDCOPY_CHLG_KEY = $01;
  7381. {$EXTERNALSYM AM_PROPERTY_DVDCOPY_CHLG_KEY}
  7382. AM_PROPERTY_DVDCOPY_DVD_KEY1 = $02;
  7383. {$EXTERNALSYM AM_PROPERTY_DVDCOPY_DVD_KEY1}
  7384. AM_PROPERTY_DVDCOPY_DEC_KEY2 = $03;
  7385. {$EXTERNALSYM AM_PROPERTY_DVDCOPY_DEC_KEY2}
  7386. AM_PROPERTY_DVDCOPY_TITLE_KEY = $04;
  7387. {$EXTERNALSYM AM_PROPERTY_DVDCOPY_TITLE_KEY}
  7388. AM_PROPERTY_COPY_MACROVISION = $05;
  7389. {$EXTERNALSYM AM_PROPERTY_COPY_MACROVISION}
  7390. AM_PROPERTY_DVDCOPY_REGION = $06;
  7391. {$EXTERNALSYM AM_PROPERTY_DVDCOPY_REGION}
  7392. AM_PROPERTY_DVDCOPY_SET_COPY_STATE = $07;
  7393. {$EXTERNALSYM AM_PROPERTY_DVDCOPY_SET_COPY_STATE}
  7394. AM_PROPERTY_DVDCOPY_DISC_KEY = $80;
  7395. {$EXTERNALSYM AM_PROPERTY_DVDCOPY_DISC_KEY}
  7396. type
  7397. _AM_DVDCOPY_CHLGKEY = record
  7398. ChlgKey: array[0..9] of Byte;
  7399. Reserved: array[0..1] of Byte;
  7400. end;
  7401. {$EXTERNALSYM _AM_DVDCOPY_CHLGKEY}
  7402. AM_DVDCOPY_CHLGKEY = _AM_DVDCOPY_CHLGKEY;
  7403. {$EXTERNALSYM AM_DVDCOPY_CHLGKEY}
  7404. PAM_DVDCOPY_CHLGKEY = ^AM_DVDCOPY_CHLGKEY;
  7405. {$EXTERNALSYM PAM_DVDCOPY_CHLGKEY}
  7406. TAMDVDCopyCHLGKey = _AM_DVDCOPY_CHLGKEY;
  7407. _AM_DVDCOPY_BUSKEY = record
  7408. BusKey: array[0..4] of Byte;
  7409. Reserved: array[0..0] of Byte;
  7410. end;
  7411. {$EXTERNALSYM _AM_DVDCOPY_BUSKEY}
  7412. AM_DVDCOPY_BUSKEY = _AM_DVDCOPY_BUSKEY;
  7413. {$EXTERNALSYM AM_DVDCOPY_BUSKEY}
  7414. PAM_DVDCOPY_BUSKEY = ^AM_DVDCOPY_BUSKEY;
  7415. {$EXTERNALSYM PAM_DVDCOPY_BUSKEY}
  7416. TAMDVDCopyBusKey = _AM_DVDCOPY_BUSKEY;
  7417. _AM_DVDCOPY_DISCKEY = record
  7418. DiscKey: array[0..2047] of Byte;
  7419. end;
  7420. {$EXTERNALSYM _AM_DVDCOPY_DISCKEY}
  7421. AM_DVDCOPY_DISCKEY = _AM_DVDCOPY_DISCKEY;
  7422. {$EXTERNALSYM AM_DVDCOPY_DISCKEY}
  7423. PAM_DVDCOPY_DISCKEY = ^AM_DVDCOPY_DISCKEY;
  7424. {$EXTERNALSYM PAM_DVDCOPY_DISCKEY}
  7425. TAMDVDCopyDiscKey = _AM_DVDCOPY_DISCKEY;
  7426. AM_DVDCOPY_TITLEKEY = record
  7427. KeyFlags: ULONG;
  7428. Reserved1: array[0..1] of ULONG;
  7429. TitleKey: array[0..5] of Byte;
  7430. Reserved2: array[0..1] of Byte;
  7431. end;
  7432. {$EXTERNALSYM AM_DVDCOPY_TITLEKEY}
  7433. PAM_DVDCOPY_TITLEKEY = AM_DVDCOPY_TITLEKEY;
  7434. {$EXTERNALSYM PAM_DVDCOPY_TITLEKEY}
  7435. TAMDVDCopyTitleKey = AM_DVDCOPY_TITLEKEY;
  7436. _AM_COPY_MACROVISION = record
  7437. MACROVISIONLevel: ULONG;
  7438. end;
  7439. {$EXTERNALSYM _AM_COPY_MACROVISION}
  7440. AM_COPY_MACROVISION = _AM_COPY_MACROVISION;
  7441. {$EXTERNALSYM AM_COPY_MACROVISION}
  7442. PAM_COPY_MACROVISION = ^AM_COPY_MACROVISION;
  7443. {$EXTERNALSYM PAM_COPY_MACROVISION}
  7444. TAMCopyMacroVision = _AM_COPY_MACROVISION;
  7445. AM_DVDCOPY_SET_COPY_STATE = record
  7446. DVDCopyState: ULONG;
  7447. end;
  7448. {$EXTERNALSYM AM_DVDCOPY_SET_COPY_STATE}
  7449. PAM_DVDCOPY_SET_COPY_STATE = ^AM_DVDCOPY_SET_COPY_STATE;
  7450. {$EXTERNALSYM PAM_DVDCOPY_SET_COPY_STATE}
  7451. TAMDVDCopySetCopyState = AM_DVDCOPY_SET_COPY_STATE;
  7452. AM_DVDCOPYSTATE = (
  7453. AM_DVDCOPYSTATE_INITIALIZE,
  7454. AM_DVDCOPYSTATE_INITIALIZE_TITLE, // indicates we are starting a title
  7455. // key copy protection sequence
  7456. AM_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED,
  7457. AM_DVDCOPYSTATE_AUTHENTICATION_REQUIRED,
  7458. AM_DVDCOPYSTATE_DONE
  7459. );
  7460. {$EXTERNALSYM AM_DVDCOPYSTATE}
  7461. TAMDVDCopyState = AM_DVDCOPYSTATE;
  7462. AM_COPY_MACROVISION_LEVEL = (
  7463. AM_MACROVISION_DISABLED,
  7464. AM_MACROVISION_LEVEL1,
  7465. AM_MACROVISION_LEVEL2,
  7466. AM_MACROVISION_LEVEL3
  7467. );
  7468. {$EXTERNALSYM AM_COPY_MACROVISION_LEVEL}
  7469. PAM_COPY_MACROVISION_LEVEL = ^AM_COPY_MACROVISION_LEVEL;
  7470. {$EXTERNALSYM PAM_COPY_MACROVISION_LEVEL}
  7471. TAMCopyMacroVisionLevel = AM_COPY_MACROVISION_LEVEL;
  7472. // CSS region stucture
  7473. _DVD_REGION = record
  7474. CopySystem: Byte;
  7475. RegionData: Byte;
  7476. SystemRegion: Byte;
  7477. Reserved: Byte;
  7478. end;
  7479. {$EXTERNALSYM _DVD_REGION}
  7480. DVD_REGION = _DVD_REGION;
  7481. {$EXTERNALSYM DVD_REGION}
  7482. PDVD_REGION = ^DVD_REGION;
  7483. {$EXTERNALSYM PDVD_REGION}
  7484. TDVDRegion = _DVD_REGION;
  7485. //
  7486. // CGMS Copy Protection Flags
  7487. //
  7488. const
  7489. AM_DVD_CGMS_RESERVED_MASK = $00000078;
  7490. {$EXTERNALSYM AM_DVD_CGMS_RESERVED_MASK}
  7491. AM_DVD_CGMS_COPY_PROTECT_MASK = $00000018;
  7492. {$EXTERNALSYM AM_DVD_CGMS_COPY_PROTECT_MASK}
  7493. AM_DVD_CGMS_COPY_PERMITTED = $00000000;
  7494. {$EXTERNALSYM AM_DVD_CGMS_COPY_PERMITTED}
  7495. AM_DVD_CGMS_COPY_ONCE = $00000010;
  7496. {$EXTERNALSYM AM_DVD_CGMS_COPY_ONCE}
  7497. AM_DVD_CGMS_NO_COPY = $00000018;
  7498. {$EXTERNALSYM AM_DVD_CGMS_NO_COPY}
  7499. AM_DVD_COPYRIGHT_MASK = $00000040;
  7500. {$EXTERNALSYM AM_DVD_COPYRIGHT_MASK}
  7501. AM_DVD_NOT_COPYRIGHTED = $00000000;
  7502. {$EXTERNALSYM AM_DVD_NOT_COPYRIGHTED}
  7503. AM_DVD_COPYRIGHTED = $00000040;
  7504. {$EXTERNALSYM AM_DVD_COPYRIGHTED}
  7505. AM_DVD_SECTOR_PROTECT_MASK = $00000020;
  7506. {$EXTERNALSYM AM_DVD_SECTOR_PROTECT_MASK}
  7507. AM_DVD_SECTOR_NOT_PROTECTED = $00000000;
  7508. {$EXTERNALSYM AM_DVD_SECTOR_NOT_PROTECTED}
  7509. AM_DVD_SECTOR_PROTECTED = $00000020;
  7510. {$EXTERNALSYM AM_DVD_SECTOR_PROTECTED}
  7511. // -----------------------------------------------------------------------
  7512. // video format blocks
  7513. // -----------------------------------------------------------------------
  7514. type
  7515. AM_MPEG2Level = (
  7516. {$IFNDEF COMPILER6_UP}
  7517. AM_MPEG2Level_INVALID_0,
  7518. AM_MPEG2Level_Low,
  7519. AM_MPEG2Level_Main,
  7520. AM_MPEG2Level_High1440,
  7521. AM_MPEG2Level_High
  7522. {$ELSE}
  7523. AM_MPEG2Level_Low = 1,
  7524. AM_MPEG2Level_Main = 2,
  7525. AM_MPEG2Level_High1440 = 3,
  7526. AM_MPEG2Level_High = 4
  7527. {$ENDIF}
  7528. );
  7529. {$EXTERNALSYM AM_MPEG2Level}
  7530. TAMMPEG2Level = AM_MPEG2Level;
  7531. AM_MPEG2Profile = (
  7532. {$IFNDEF COMPILER6_UP}
  7533. AM_MPEG2Profile_0,
  7534. AM_MPEG2Profile_Simple,
  7535. AM_MPEG2Profile_Main,
  7536. AM_MPEG2Profile_SNRScalable,
  7537. AM_MPEG2Profile_SpatiallyScalable,
  7538. AM_MPEG2Profile_High
  7539. {$ELSE}
  7540. AM_MPEG2Profile_Simple = 1,
  7541. AM_MPEG2Profile_Main = 2,
  7542. AM_MPEG2Profile_SNRScalable = 3,
  7543. AM_MPEG2Profile_SpatiallyScalable = 4,
  7544. AM_MPEG2Profile_High = 5
  7545. {$ENDIF}
  7546. );
  7547. {$EXTERNALSYM AM_MPEG2Profile}
  7548. TAMMPEG2Profile = AM_MPEG2Profile;
  7549. const
  7550. AMINTERLACE_IsInterlaced = $00000001; // if 0, other interlace bits are irrelevent
  7551. {$EXTERNALSYM AMINTERLACE_IsInterlaced}
  7552. AMINTERLACE_1FieldPerSample = $00000002; // else 2 fields per media sample
  7553. {$EXTERNALSYM AMINTERLACE_1FieldPerSample}
  7554. AMINTERLACE_Field1First = $00000004; // else Field 2 is first; top field in PAL is field 1, top field in NTSC is field 2?
  7555. {$EXTERNALSYM AMINTERLACE_Field1First}
  7556. AMINTERLACE_UNUSED = $00000008; //
  7557. {$EXTERNALSYM AMINTERLACE_UNUSED}
  7558. AMINTERLACE_FieldPatternMask = $00000030; // use this mask with AMINTERLACE_FieldPat*
  7559. {$EXTERNALSYM AMINTERLACE_FieldPatternMask}
  7560. AMINTERLACE_FieldPatField1Only = $00000000; // stream never contains a Field2
  7561. {$EXTERNALSYM AMINTERLACE_FieldPatField1Only}
  7562. AMINTERLACE_FieldPatField2Only = $00000010; // stream never contains a Field1
  7563. {$EXTERNALSYM AMINTERLACE_FieldPatField2Only}
  7564. AMINTERLACE_FieldPatBothRegular = $00000020; // There will be a Field2 for every Field1 (required for Weave?)
  7565. {$EXTERNALSYM AMINTERLACE_FieldPatBothRegular}
  7566. AMINTERLACE_FieldPatBothIrregular = $00000030; // Random pattern of Field1s and Field2s
  7567. {$EXTERNALSYM AMINTERLACE_FieldPatBothIrregular}
  7568. AMINTERLACE_DisplayModeMask = $000000c0;
  7569. {$EXTERNALSYM AMINTERLACE_DisplayModeMask}
  7570. AMINTERLACE_DisplayModeBobOnly = $00000000;
  7571. {$EXTERNALSYM AMINTERLACE_DisplayModeBobOnly}
  7572. AMINTERLACE_DisplayModeWeaveOnly = $00000040;
  7573. {$EXTERNALSYM AMINTERLACE_DisplayModeWeaveOnly}
  7574. AMINTERLACE_DisplayModeBobOrWeave = $00000080;
  7575. {$EXTERNALSYM AMINTERLACE_DisplayModeBobOrWeave}
  7576. AMCOPYPROTECT_RestrictDuplication = $00000001; // duplication of this stream should be restricted
  7577. {$EXTERNALSYM AMCOPYPROTECT_RestrictDuplication}
  7578. AMMPEG2_DoPanScan = $00000001; //if set, the MPEG-2 video decoder should crop output image
  7579. {$EXTERNALSYM AMMPEG2_DoPanScan} // based on pan-scan vectors in picture_display_extension
  7580. // and change the picture aspect ratio accordingly.
  7581. AMMPEG2_DVDLine21Field1 = $00000002; //if set, the MPEG-2 decoder must be able to produce an output
  7582. {$EXTERNALSYM AMMPEG2_DVDLine21Field1} // pin for DVD style closed caption data found in GOP layer of field 1
  7583. AMMPEG2_DVDLine21Field2 = $00000004; //if set, the MPEG-2 decoder must be able to produce an output
  7584. {$EXTERNALSYM AMMPEG2_DVDLine21Field2} // pin for DVD style closed caption data found in GOP layer of field 2
  7585. AMMPEG2_SourceIsLetterboxed = $00000008; //if set, indicates that black bars have been encoded in the top
  7586. {$EXTERNALSYM AMMPEG2_SourceIsLetterboxed} // and bottom of the video.
  7587. AMMPEG2_FilmCameraMode = $00000010; //if set, indicates "film mode" used for 625/50 content. If cleared,
  7588. {$EXTERNALSYM AMMPEG2_FilmCameraMode} // indicates that "camera mode" was used.
  7589. AMMPEG2_LetterboxAnalogOut = $00000020; //if set and this stream is sent to an analog output, it should
  7590. {$EXTERNALSYM AMMPEG2_LetterboxAnalogOut} // be letterboxed. Streams sent to VGA should be letterboxed only by renderers.
  7591. AMMPEG2_DSS_UserData = $00000040; //if set, the MPEG-2 decoder must process DSS style user data
  7592. {$EXTERNALSYM AMMPEG2_DSS_UserData}
  7593. AMMPEG2_DVB_UserData = $00000080; //if set, the MPEG-2 decoder must process DVB style user data
  7594. {$EXTERNALSYM AMMPEG2_DVB_UserData}
  7595. AMMPEG2_27MhzTimebase = $00000100; //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz
  7596. {$EXTERNALSYM AMMPEG2_27MhzTimebase}
  7597. AMMPEG2_WidescreenAnalogOut = $00000200; //if set and this stream is sent to an analog output, it should
  7598. {$EXTERNALSYM AMMPEG2_WidescreenAnalogOut}
  7599. // be in widescreen format (4x3 content should be centered on a 16x9 output).
  7600. // Streams sent to VGA should be widescreened only by renderers.
  7601. // PRESENT in dwReserved1 field in VIDEOINFOHEADER2
  7602. AMCONTROL_USED = $00000001; // Used to test if these flags are supported. Set and test for AcceptMediaType.
  7603. {$EXTERNALSYM AMCONTROL_USED} // If rejected, then you cannot use the AMCONTROL flags (send 0 for dwReserved1)
  7604. AMCONTROL_PAD_TO_4x3 = $00000002; // if set means display the image in a 4x3 area
  7605. {$EXTERNALSYM AMCONTROL_PAD_TO_4x3}
  7606. AMCONTROL_PAD_TO_16x9 = $00000004; // if set means display the image in a 16x9 area
  7607. {$EXTERNALSYM AMCONTROL_PAD_TO_16x9}
  7608. type
  7609. TVideoInfoHeader2ControlFlags = record
  7610. case byte of
  7611. 0: (dwControlFlags : DWORD); // use AMCONTROL_* defines, use this from now on
  7612. 1: (dwReserved1 : DWORD); // for backward compatiblity (was "must be 0"; connection rejected otherwise)
  7613. end;
  7614. {$EXTERNALSYM TVideoInfoHeader2ControlFlags}
  7615. PVideoInfoHeader2 = ^TVideoInfoHeader2;
  7616. tagVIDEOINFOHEADER2 = record
  7617. rcSource: TRect;
  7618. rcTarget: TRect;
  7619. dwBitRate: DWORD;
  7620. dwBitErrorRate: DWORD;
  7621. AvgTimePerFrame: TReferenceTime;
  7622. dwInterlaceFlags: DWORD; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0
  7623. dwCopyProtectFlags: DWORD; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0
  7624. dwPictAspectRatioX: DWORD; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display
  7625. dwPictAspectRatioY: DWORD; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display
  7626. ControlFlags: TVideoInfoHeader2ControlFlags;
  7627. dwReserved2: DWORD; // must be 0; reject connection otherwise
  7628. bmiHeader: TBitmapInfoHeader;
  7629. end;
  7630. {$EXTERNALSYM tagVIDEOINFOHEADER2}
  7631. VIDEOINFOHEADER2 = tagVIDEOINFOHEADER2;
  7632. {$EXTERNALSYM VIDEOINFOHEADER2}
  7633. TVideoInfoHeader2 = tagVIDEOINFOHEADER2;
  7634. PMPEG2VideoInfo = ^TMPEG2VideoInfo;
  7635. tagMPEG2VIDEOINFO = record
  7636. hdr: TVIDEOINFOHEADER2;
  7637. dwStartTimeCode: DWORD; // ?? not used for DVD ??
  7638. cbSequenceHeader: DWORD; // is 0 for DVD (no sequence header)
  7639. dwProfile: DWORD; // use enum MPEG2Profile
  7640. dwLevel: DWORD; // use enum MPEG2Level
  7641. dwFlags: DWORD; // use AMMPEG2_* defines. Reject connection if undefined bits are not 0
  7642. dwSequenceHeader: array[0..0] of DWORD; // DWORD instead of Byte for alignment purposes
  7643. // For MPEG-2, if a sequence_header is included, the sequence_extension
  7644. // should also be included
  7645. end;
  7646. {$EXTERNALSYM tagMPEG2VIDEOINFO}
  7647. MPEG2VIDEOINFO = tagMPEG2VIDEOINFO;
  7648. {$EXTERNALSYM MPEG2VIDEOINFO}
  7649. TMPEG2VideoInfo = tagMPEG2VIDEOINFO;
  7650. {
  7651. #define SIZE_MPEG2VIDEOINFO(pv) (FIELD_OFFSET(MPEG2VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  7652. #define MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  7653. // use this macro instead, the previous only works for MPEG1VIDEOINFO structures
  7654. #define MPEG2_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->dwSequenceHeader)
  7655. }
  7656. //===================================================================================
  7657. // flags for dwTypeSpecificFlags in AM_SAMPLE2_PROPERTIES which define type specific
  7658. // data in IMediaSample2
  7659. //===================================================================================
  7660. const
  7661. AM_VIDEO_FLAG_FIELD_MASK = $0003; // use this mask to check whether the sample is field1 or field2 or frame
  7662. {$EXTERNALSYM AM_VIDEO_FLAG_FIELD_MASK}
  7663. AM_VIDEO_FLAG_INTERLEAVED_FRAME = $0000; // the sample is a frame (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this)
  7664. {$EXTERNALSYM AM_VIDEO_FLAG_INTERLEAVED_FRAME}
  7665. AM_VIDEO_FLAG_FIELD1 = $0001; // the sample is field1 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this)
  7666. {$EXTERNALSYM AM_VIDEO_FLAG_FIELD1}
  7667. AM_VIDEO_FLAG_FIELD2 = $0002; // the sample is the field2 (remember to use AM_VIDEO_FLAG_FIELD_MASK when using this)
  7668. {$EXTERNALSYM AM_VIDEO_FLAG_FIELD2}
  7669. AM_VIDEO_FLAG_FIELD1FIRST = $0004; // if set means display field1 first, else display field2 first.
  7670. {$EXTERNALSYM AM_VIDEO_FLAG_FIELD1FIRST}
  7671. // this bit is irrelavant for 1FieldPerSample mode
  7672. AM_VIDEO_FLAG_WEAVE = $0008; // if set use bob display mode else weave
  7673. {$EXTERNALSYM AM_VIDEO_FLAG_WEAVE}
  7674. AM_VIDEO_FLAG_IPB_MASK = $0030; // use this mask to check whether the sample is I, P or B
  7675. {$EXTERNALSYM AM_VIDEO_FLAG_IPB_MASK}
  7676. AM_VIDEO_FLAG_I_SAMPLE = $0000; // I Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this)
  7677. {$EXTERNALSYM AM_VIDEO_FLAG_I_SAMPLE}
  7678. AM_VIDEO_FLAG_P_SAMPLE = $0010; // P Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this)
  7679. {$EXTERNALSYM AM_VIDEO_FLAG_P_SAMPLE}
  7680. AM_VIDEO_FLAG_B_SAMPLE = $0020; // B Sample (remember to use AM_VIDEO_FLAG_IPB_MASK when using this)
  7681. {$EXTERNALSYM AM_VIDEO_FLAG_B_SAMPLE}
  7682. AM_VIDEO_FLAG_REPEAT_FIELD = $0040; // if set means display the field which has been displayed first again after displaying
  7683. {$EXTERNALSYM AM_VIDEO_FLAG_REPEAT_FIELD}
  7684. // both fields first. This bit is irrelavant for 1FieldPerSample mode
  7685. // -----------------------------------------------------------------------
  7686. // AM_KSPROPSETID_DvdKaraoke property set definitions
  7687. // -----------------------------------------------------------------------
  7688. type
  7689. tagAM_DvdKaraokeData = record
  7690. dwDownmix : DWORD; // bitwise OR of AM_DvdKaraoke_Downmix flags
  7691. dwSpeakerAssignment : DWORD; // AM_DvdKaraoke_SpeakerAssignment
  7692. end;
  7693. {$EXTERNALSYM tagAM_DvdKaraokeData}
  7694. AM_DvdKaraokeData = tagAM_DvdKaraokeData;
  7695. {$EXTERNALSYM AM_DvdKaraokeData}
  7696. TAMDvdKaraokeData = tagAM_DvdKaraokeData;
  7697. AM_PROPERTY_DVDKARAOKE = (
  7698. AM_PROPERTY_DVDKARAOKE_ENABLE, // BOOL
  7699. AM_PROPERTY_DVDKARAOKE_DATA
  7700. );
  7701. {$EXTERNALSYM AM_PROPERTY_DVDKARAOKE}
  7702. TAMPropertyDVDKaraoke = AM_PROPERTY_DVDKARAOKE;
  7703. // -----------------------------------------------------------------------
  7704. // AM_KSPROPSETID_TSRateChange property set definitions for time stamp
  7705. // rate changes.
  7706. // -----------------------------------------------------------------------
  7707. type
  7708. AM_PROPERTY_TS_RATE_CHANGE = (
  7709. {$IFNDEF COMPILER6_UP}
  7710. AM_RATE_INVALID_0,
  7711. AM_RATE_SimpleRateChange, // rw, use AM_SimpleRateChange
  7712. AM_RATE_ExactRateChange, // rw, use AM_ExactRateChange
  7713. AM_RATE_MaxFullDataRate, // r, use AM_MaxFullDataRate
  7714. AM_RATE_Step, // w, use AM_Step
  7715. AM_RATE_UseRateVersion, // w, use WORD
  7716. AM_RATE_QueryFullFrameRate, // r, use AM_QueryRate
  7717. AM_RATE_QueryLastRateSegPTS, // r, use REFERENCE_TIME
  7718. AM_RATE_CorrectTS // w, use LONG
  7719. {$ELSE}
  7720. AM_RATE_SimpleRateChange = 1, // rw, use AM_SimpleRateChange
  7721. AM_RATE_ExactRateChange = 2, // rw, use AM_ExactRateChange
  7722. AM_RATE_MaxFullDataRate = 3, // r, use AM_MaxFullDataRate
  7723. AM_RATE_Step = 4, // w, use AM_Step
  7724. AM_RATE_UseRateVersion = 5, // w, use WORD
  7725. AM_RATE_QueryFullFrameRate = 6, // r, use AM_QueryRate
  7726. AM_RATE_QueryLastRateSegPTS = 7, // r, use REFERENCE_TIME
  7727. AM_RATE_CorrectTS = 8 // w, use LONG
  7728. {$ENDIF}
  7729. );
  7730. {$EXTERNALSYM AM_PROPERTY_TS_RATE_CHANGE}
  7731. TAMPropertyTSRateChange = AM_PROPERTY_TS_RATE_CHANGE;
  7732. // -------------------------------------------------------------------
  7733. // AM_KSPROPSETID_DVD_RateChange property set definitions for new DVD
  7734. // rate change scheme.
  7735. // -------------------------------------------------------------------
  7736. AM_PROPERTY_DVD_RATE_CHANGE = (
  7737. {$IFNDEF COMPILER6_UP}
  7738. AM_RATE_INVALID__0,
  7739. AM_RATE_ChangeRate, // w, use AM_DVD_ChangeRate
  7740. AM_RATE_FullDataRateMax, // r, use AM_MaxFullDataRate
  7741. AM_RATE_ReverseDecode, // r, use LONG
  7742. AM_RATE_DecoderPosition, // r, use AM_DVD_DecoderPosition
  7743. AM_RATE_DecoderVersion // r, use LONG
  7744. {$ELSE}
  7745. AM_RATE_ChangeRate = 1, // w, use AM_DVD_ChangeRate
  7746. AM_RATE_FullDataRateMax = 2, // r, use AM_MaxFullDataRate
  7747. AM_RATE_ReverseDecode = 3, // r, use LONG
  7748. AM_RATE_DecoderPosition = 4, // r, use AM_DVD_DecoderPosition
  7749. AM_RATE_DecoderVersion = 5 // r, use LONG
  7750. {$ENDIF}
  7751. );
  7752. {$EXTERNALSYM AM_PROPERTY_DVD_RATE_CHANGE}
  7753. TAMPropertyDVDRateChange = AM_PROPERTY_DVD_RATE_CHANGE;
  7754. AM_SimpleRateChange = record
  7755. // this is the simplest mechinism to set a time stamp rate change on
  7756. // a filter (simplest for the person setting the rate change, harder
  7757. // for the filter doing the rate change).
  7758. StartTime: TReferenceTime; //stream time at which to start this rate
  7759. Rate: Longint; //new rate * 10000 (decimal)
  7760. end;
  7761. {$EXTERNALSYM AM_SimpleRateChange}
  7762. TAMSimpleRateChange = AM_SimpleRateChange;
  7763. AM_QueryRate = record
  7764. lMaxForwardFullFrame: LongInt; // rate * 10000
  7765. lMaxReverseFullFrame: LongInt; // rate * 10000
  7766. end;
  7767. {$EXTERNALSYM AM_QueryRate}
  7768. TAMQueryRate = AM_QueryRate;
  7769. AM_ExactRateChange = record
  7770. OutputZeroTime: TReferenceTime; //input TS that maps to zero output TS
  7771. Rate: Longint; //new rate * 10000 (decimal)
  7772. end;
  7773. {$EXTERNALSYM AM_ExactRateChange}
  7774. TAMExactRateChange = AM_ExactRateChange;
  7775. AM_MaxFullDateRate = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint; //rate * 10000 (decimal)
  7776. {$EXTERNALSYM AM_MaxFullDateRate}
  7777. AM_Step = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD; // number of frame to step
  7778. {$EXTERNALSYM AM_Step}
  7779. // New rate change property set, structs. enums etc.
  7780. AM_DVD_ChangeRate = record
  7781. StartInTime : TReferenceTime; // stream time (input) at which to start decoding at this rate
  7782. StartOutTime : TReferenceTime; // reference time (output) at which to start showing at this rate
  7783. Rate : Longint; // new rate * 10000 (decimal)
  7784. end;
  7785. {$EXTERNALSYM AM_DVD_ChangeRate}
  7786. TAMDVDChangeRate = AM_DVD_ChangeRate;
  7787. AM_DVD_DecoderPosition = {$IFDEF TYPE_IDENTITY}type {$ENDIF} int64 ;
  7788. {$EXTERNALSYM AM_DVD_DecoderPosition}
  7789. DVD_PLAY_DIRECTION = (
  7790. DVD_DIR_FORWARD,
  7791. DVD_DIR_BACKWARD
  7792. );
  7793. {$EXTERNALSYM DVD_PLAY_DIRECTION}
  7794. TDVDPlayDirection = DVD_PLAY_DIRECTION;
  7795. (*==========================================================================;
  7796. *
  7797. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  7798. *
  7799. * File: activecf.h
  7800. *
  7801. ***************************************************************************)
  7802. const
  7803. CFSTR_VFW_FILTERLIST = 'Video for Windows 4 Filters';
  7804. {$EXTERNALSYM CFSTR_VFW_FILTERLIST}
  7805. type
  7806. tagVFW_FILTERLIST = record
  7807. cFilters: UINT; // number of CLSIDs in aClsId
  7808. aClsId: array[0..0] of TGUID; // ClsId of each filter
  7809. end;
  7810. {$EXTERNALSYM tagVFW_FILTERLIST}
  7811. VFW_FILTERLIST = tagVFW_FILTERLIST;
  7812. {$EXTERNALSYM VFW_FILTERLIST}
  7813. TVFWFilterList = tagVFW_FILTERLIST;
  7814. (*==========================================================================;
  7815. *
  7816. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  7817. *
  7818. * File: vfwmsgs.h
  7819. *
  7820. ***************************************************************************)
  7821. const
  7822. //
  7823. // Define the severity codes
  7824. //
  7825. VFW_E_INVALIDMEDIATYPE = HResult($80040200);
  7826. {$EXTERNALSYM VFW_E_INVALIDMEDIATYPE}
  7827. VFW_E_INVALIDSUBTYPE = HResult($80040201);
  7828. {$EXTERNALSYM VFW_E_INVALIDSUBTYPE}
  7829. VFW_E_NEED_OWNER = HResult($80040202);
  7830. {$EXTERNALSYM VFW_E_NEED_OWNER}
  7831. VFW_E_ENUM_OUT_OF_SYNC = HResult($80040203);
  7832. {$EXTERNALSYM VFW_E_ENUM_OUT_OF_SYNC}
  7833. VFW_E_ALREADY_CONNECTED = HResult($80040204);
  7834. {$EXTERNALSYM VFW_E_ALREADY_CONNECTED}
  7835. VFW_E_FILTER_ACTIVE = HResult($80040205);
  7836. {$EXTERNALSYM VFW_E_FILTER_ACTIVE}
  7837. VFW_E_NO_TYPES = HResult($80040206);
  7838. {$EXTERNALSYM VFW_E_NO_TYPES}
  7839. VFW_E_NO_ACCEPTABLE_TYPES = HResult($80040207);
  7840. {$EXTERNALSYM VFW_E_NO_ACCEPTABLE_TYPES}
  7841. VFW_E_INVALID_DIRECTION = HResult($80040208);
  7842. {$EXTERNALSYM VFW_E_INVALID_DIRECTION}
  7843. VFW_E_NOT_CONNECTED = HResult($80040209);
  7844. {$EXTERNALSYM VFW_E_NOT_CONNECTED}
  7845. VFW_E_NO_ALLOCATOR = HResult($8004020A);
  7846. {$EXTERNALSYM VFW_E_NO_ALLOCATOR}
  7847. VFW_E_RUNTIME_ERROR = HResult($8004020B);
  7848. {$EXTERNALSYM VFW_E_RUNTIME_ERROR}
  7849. VFW_E_BUFFER_NOTSET = HResult($8004020C);
  7850. {$EXTERNALSYM VFW_E_BUFFER_NOTSET}
  7851. VFW_E_BUFFER_OVERFLOW = HResult($8004020D);
  7852. {$EXTERNALSYM VFW_E_BUFFER_OVERFLOW}
  7853. VFW_E_BADALIGN = HResult($8004020E);
  7854. {$EXTERNALSYM VFW_E_BADALIGN}
  7855. VFW_E_ALREADY_COMMITTED = HResult($8004020F);
  7856. {$EXTERNALSYM VFW_E_ALREADY_COMMITTED}
  7857. VFW_E_BUFFERS_OUTSTANDING = HResult($80040210);
  7858. {$EXTERNALSYM VFW_E_BUFFERS_OUTSTANDING}
  7859. VFW_E_NOT_COMMITTED = HResult($80040211);
  7860. {$EXTERNALSYM VFW_E_NOT_COMMITTED}
  7861. VFW_E_SIZENOTSET = HResult($80040212);
  7862. {$EXTERNALSYM VFW_E_SIZENOTSET}
  7863. VFW_E_NO_CLOCK = HResult($80040213);
  7864. {$EXTERNALSYM VFW_E_NO_CLOCK}
  7865. VFW_E_NO_SINK = HResult($80040214);
  7866. {$EXTERNALSYM VFW_E_NO_SINK}
  7867. VFW_E_NO_INTERFACE = HResult($80040215);
  7868. {$EXTERNALSYM VFW_E_NO_INTERFACE}
  7869. VFW_E_NOT_FOUND = HResult($80040216);
  7870. {$EXTERNALSYM VFW_E_NOT_FOUND}
  7871. VFW_E_CANNOT_CONNECT = HResult($80040217);
  7872. {$EXTERNALSYM VFW_E_CANNOT_CONNECT}
  7873. VFW_E_CANNOT_RENDER = HResult($80040218);
  7874. {$EXTERNALSYM VFW_E_CANNOT_RENDER}
  7875. VFW_E_CHANGING_FORMAT = HResult($80040219);
  7876. {$EXTERNALSYM VFW_E_CHANGING_FORMAT}
  7877. VFW_E_NO_COLOR_KEY_SET = HResult($8004021A);
  7878. {$EXTERNALSYM VFW_E_NO_COLOR_KEY_SET}
  7879. VFW_E_NOT_OVERLAY_CONNECTION = HResult($8004021B);
  7880. {$EXTERNALSYM VFW_E_NOT_OVERLAY_CONNECTION}
  7881. VFW_E_NOT_SAMPLE_CONNECTION = HResult($8004021C);
  7882. {$EXTERNALSYM VFW_E_NOT_SAMPLE_CONNECTION}
  7883. VFW_E_PALETTE_SET = HResult($8004021D);
  7884. {$EXTERNALSYM VFW_E_PALETTE_SET}
  7885. VFW_E_COLOR_KEY_SET = HResult($8004021E);
  7886. {$EXTERNALSYM VFW_E_COLOR_KEY_SET}
  7887. VFW_E_NO_COLOR_KEY_FOUND = HResult($8004021F);
  7888. {$EXTERNALSYM VFW_E_NO_COLOR_KEY_FOUND}
  7889. VFW_E_NO_PALETTE_AVAILABLE = HResult($80040220);
  7890. {$EXTERNALSYM VFW_E_NO_PALETTE_AVAILABLE}
  7891. VFW_E_NO_DISPLAY_PALETTE = HResult($80040221);
  7892. {$EXTERNALSYM VFW_E_NO_DISPLAY_PALETTE}
  7893. VFW_E_TOO_MANY_COLORS = HResult($80040222);
  7894. {$EXTERNALSYM VFW_E_TOO_MANY_COLORS}
  7895. VFW_E_STATE_CHANGED = HResult($80040223);
  7896. {$EXTERNALSYM VFW_E_STATE_CHANGED}
  7897. VFW_E_NOT_STOPPED = HResult($80040224);
  7898. {$EXTERNALSYM VFW_E_NOT_STOPPED}
  7899. VFW_E_NOT_PAUSED = HResult($80040225);
  7900. {$EXTERNALSYM VFW_E_NOT_PAUSED}
  7901. VFW_E_NOT_RUNNING = HResult($80040226);
  7902. {$EXTERNALSYM VFW_E_NOT_RUNNING}
  7903. VFW_E_WRONG_STATE = HResult($80040227);
  7904. {$EXTERNALSYM VFW_E_WRONG_STATE}
  7905. VFW_E_START_TIME_AFTER_END = HResult($80040228);
  7906. {$EXTERNALSYM VFW_E_START_TIME_AFTER_END}
  7907. VFW_E_INVALID_RECT = HResult($80040229);
  7908. {$EXTERNALSYM VFW_E_INVALID_RECT}
  7909. VFW_E_TYPE_NOT_ACCEPTED = HResult($8004022A);
  7910. {$EXTERNALSYM VFW_E_TYPE_NOT_ACCEPTED}
  7911. VFW_E_SAMPLE_REJECTED = HResult($8004022B);
  7912. {$EXTERNALSYM VFW_E_SAMPLE_REJECTED}
  7913. VFW_E_SAMPLE_REJECTED_EOS = HResult($8004022C);
  7914. {$EXTERNALSYM VFW_E_SAMPLE_REJECTED_EOS}
  7915. VFW_E_DUPLICATE_NAME = HResult($8004022D);
  7916. {$EXTERNALSYM VFW_E_DUPLICATE_NAME}
  7917. VFW_S_DUPLICATE_NAME = HResult($0004022D);
  7918. {$EXTERNALSYM VFW_S_DUPLICATE_NAME}
  7919. VFW_E_TIMEOUT = HResult($8004022E);
  7920. {$EXTERNALSYM VFW_E_TIMEOUT}
  7921. VFW_E_INVALID_FILE_FORMAT = HResult($8004022F);
  7922. {$EXTERNALSYM VFW_E_INVALID_FILE_FORMAT}
  7923. VFW_E_ENUM_OUT_OF_RANGE = HResult($80040230);
  7924. {$EXTERNALSYM VFW_E_ENUM_OUT_OF_RANGE}
  7925. VFW_E_CIRCULAR_GRAPH = HResult($80040231);
  7926. {$EXTERNALSYM VFW_E_CIRCULAR_GRAPH}
  7927. VFW_E_NOT_ALLOWED_TO_SAVE = HResult($80040232);
  7928. {$EXTERNALSYM VFW_E_NOT_ALLOWED_TO_SAVE}
  7929. VFW_E_TIME_ALREADY_PASSED = HResult($80040233);
  7930. {$EXTERNALSYM VFW_E_TIME_ALREADY_PASSED}
  7931. VFW_E_ALREADY_CANCELLED = HResult($80040234);
  7932. {$EXTERNALSYM VFW_E_ALREADY_CANCELLED}
  7933. VFW_E_CORRUPT_GRAPH_FILE = HResult($80040235);
  7934. {$EXTERNALSYM VFW_E_CORRUPT_GRAPH_FILE}
  7935. VFW_E_ADVISE_ALREADY_SET = HResult($80040236);
  7936. {$EXTERNALSYM VFW_E_ADVISE_ALREADY_SET}
  7937. VFW_S_STATE_INTERMEDIATE = HResult($00040237);
  7938. {$EXTERNALSYM VFW_S_STATE_INTERMEDIATE}
  7939. VFW_E_NO_MODEX_AVAILABLE = HResult($80040238);
  7940. {$EXTERNALSYM VFW_E_NO_MODEX_AVAILABLE}
  7941. VFW_E_NO_ADVISE_SET = HResult($80040239);
  7942. {$EXTERNALSYM VFW_E_NO_ADVISE_SET}
  7943. VFW_E_NO_FULLSCREEN = HResult($8004023B);
  7944. {$EXTERNALSYM VFW_E_NO_FULLSCREEN}
  7945. VFW_E_UNKNOWN_FILE_TYPE = HResult($80040240);
  7946. {$EXTERNALSYM VFW_E_UNKNOWN_FILE_TYPE}
  7947. VFW_E_CANNOT_LOAD_SOURCE_FILTER = HResult($80040241);
  7948. {$EXTERNALSYM VFW_E_CANNOT_LOAD_SOURCE_FILTER}
  7949. VFW_S_PARTIAL_RENDER = HResult($00040242);
  7950. {$EXTERNALSYM VFW_S_PARTIAL_RENDER}
  7951. VFW_E_FILE_TOO_SHORT = HResult($80040243);
  7952. {$EXTERNALSYM VFW_E_FILE_TOO_SHORT}
  7953. VFW_E_INVALID_FILE_VERSION = HResult($80040244);
  7954. {$EXTERNALSYM VFW_E_INVALID_FILE_VERSION}
  7955. VFW_S_SOME_DATA_IGNORED = HResult($00040245);
  7956. {$EXTERNALSYM VFW_S_SOME_DATA_IGNORED}
  7957. VFW_S_CONNECTIONS_DEFERRED = HResult($00040246);
  7958. {$EXTERNALSYM VFW_S_CONNECTIONS_DEFERRED}
  7959. VFW_E_INVALID_CLSID = HResult($80040247);
  7960. {$EXTERNALSYM VFW_E_INVALID_CLSID}
  7961. VFW_E_INVALID_MEDIA_TYPE = HResult($80040248);
  7962. {$EXTERNALSYM VFW_E_INVALID_MEDIA_TYPE}
  7963. VFW_E_BAD_KEY = HResult($800403F2);
  7964. {$EXTERNALSYM VFW_E_BAD_KEY}
  7965. VFW_S_NO_MORE_ITEMS = HResult($00040103);
  7966. {$EXTERNALSYM VFW_S_NO_MORE_ITEMS}
  7967. VFW_E_SAMPLE_TIME_NOT_SET = HResult($80040249);
  7968. {$EXTERNALSYM VFW_E_SAMPLE_TIME_NOT_SET}
  7969. VFW_S_RESOURCE_NOT_NEEDED = HResult($00040250);
  7970. {$EXTERNALSYM VFW_S_RESOURCE_NOT_NEEDED}
  7971. VFW_E_MEDIA_TIME_NOT_SET = HResult($80040251);
  7972. {$EXTERNALSYM VFW_E_MEDIA_TIME_NOT_SET}
  7973. VFW_E_NO_TIME_FORMAT_SET = HResult($80040252);
  7974. {$EXTERNALSYM VFW_E_NO_TIME_FORMAT_SET}
  7975. VFW_E_MONO_AUDIO_HW = HResult($80040253);
  7976. {$EXTERNALSYM VFW_E_MONO_AUDIO_HW}
  7977. VFW_S_MEDIA_TYPE_IGNORED = HResult($00040254);
  7978. {$EXTERNALSYM VFW_S_MEDIA_TYPE_IGNORED}
  7979. VFW_E_NO_AUDIO_HARDWARE = HResult($80040256);
  7980. {$EXTERNALSYM VFW_E_NO_AUDIO_HARDWARE}
  7981. VFW_S_VIDEO_NOT_RENDERED = HResult($00040257);
  7982. {$EXTERNALSYM VFW_S_VIDEO_NOT_RENDERED}
  7983. VFW_S_AUDIO_NOT_RENDERED = HResult($00040258);
  7984. {$EXTERNALSYM VFW_S_AUDIO_NOT_RENDERED}
  7985. VFW_E_RPZA = HResult($80040259);
  7986. {$EXTERNALSYM VFW_E_RPZA}
  7987. VFW_S_RPZA = HResult($0004025A);
  7988. {$EXTERNALSYM VFW_S_RPZA}
  7989. VFW_E_PROCESSOR_NOT_SUITABLE = HResult($8004025B);
  7990. {$EXTERNALSYM VFW_E_PROCESSOR_NOT_SUITABLE}
  7991. VFW_E_UNSUPPORTED_AUDIO = HResult($8004025C);
  7992. {$EXTERNALSYM VFW_E_UNSUPPORTED_AUDIO}
  7993. VFW_E_UNSUPPORTED_VIDEO = HResult($8004025D);
  7994. {$EXTERNALSYM VFW_E_UNSUPPORTED_VIDEO}
  7995. VFW_E_MPEG_NOT_CONSTRAINED = HResult($8004025E);
  7996. {$EXTERNALSYM VFW_E_MPEG_NOT_CONSTRAINED}
  7997. VFW_E_NOT_IN_GRAPH = HResult($8004025F);
  7998. {$EXTERNALSYM VFW_E_NOT_IN_GRAPH}
  7999. VFW_S_ESTIMATED = HResult($00040260);
  8000. {$EXTERNALSYM VFW_S_ESTIMATED}
  8001. VFW_E_NO_TIME_FORMAT = HResult($80040261);
  8002. {$EXTERNALSYM VFW_E_NO_TIME_FORMAT}
  8003. VFW_E_READ_ONLY = HResult($80040262);
  8004. {$EXTERNALSYM VFW_E_READ_ONLY}
  8005. VFW_S_RESERVED = HResult($00040263);
  8006. {$EXTERNALSYM VFW_S_RESERVED}
  8007. VFW_E_BUFFER_UNDERFLOW = HResult($80040264);
  8008. {$EXTERNALSYM VFW_E_BUFFER_UNDERFLOW}
  8009. VFW_E_UNSUPPORTED_STREAM = HResult($80040265);
  8010. {$EXTERNALSYM VFW_E_UNSUPPORTED_STREAM}
  8011. VFW_E_NO_TRANSPORT = HResult($80040266);
  8012. {$EXTERNALSYM VFW_E_NO_TRANSPORT}
  8013. VFW_S_STREAM_OFF = HResult($00040267);
  8014. {$EXTERNALSYM VFW_S_STREAM_OFF}
  8015. VFW_S_CANT_CUE = HResult($00040268);
  8016. {$EXTERNALSYM VFW_S_CANT_CUE}
  8017. VFW_E_BAD_VIDEOCD = HResult($80040269);
  8018. {$EXTERNALSYM VFW_E_BAD_VIDEOCD}
  8019. VFW_S_NO_STOP_TIME = HResult($00040270);
  8020. {$EXTERNALSYM VFW_S_NO_STOP_TIME}
  8021. VFW_E_OUT_OF_VIDEO_MEMORY = HResult($80040271);
  8022. {$EXTERNALSYM VFW_E_OUT_OF_VIDEO_MEMORY}
  8023. VFW_E_VP_NEGOTIATION_FAILED = HResult($80040272);
  8024. {$EXTERNALSYM VFW_E_VP_NEGOTIATION_FAILED}
  8025. VFW_E_DDRAW_CAPS_NOT_SUITABLE = HResult($80040273);
  8026. {$EXTERNALSYM VFW_E_DDRAW_CAPS_NOT_SUITABLE}
  8027. VFW_E_NO_VP_HARDWARE = HResult($80040274);
  8028. {$EXTERNALSYM VFW_E_NO_VP_HARDWARE}
  8029. VFW_E_NO_CAPTURE_HARDWARE = HResult($80040275);
  8030. {$EXTERNALSYM VFW_E_NO_CAPTURE_HARDWARE}
  8031. VFW_E_DVD_OPERATION_INHIBITED = HResult($80040276);
  8032. {$EXTERNALSYM VFW_E_DVD_OPERATION_INHIBITED}
  8033. VFW_E_DVD_INVALIDDOMAIN = HResult($80040277);
  8034. {$EXTERNALSYM VFW_E_DVD_INVALIDDOMAIN}
  8035. VFW_E_DVD_NO_BUTTON = Hresult($80040278);
  8036. {$EXTERNALSYM VFW_E_DVD_NO_BUTTON}
  8037. VFW_E_DVD_GRAPHNOTREADY = HResult($80040279);
  8038. {$EXTERNALSYM VFW_E_DVD_GRAPHNOTREADY}
  8039. VFW_E_DVD_RENDERFAIL = HResult($8004027A);
  8040. {$EXTERNALSYM VFW_E_DVD_RENDERFAIL}
  8041. VFW_E_DVD_DECNOTENOUGH = HResult($8004027B);
  8042. {$EXTERNALSYM VFW_E_DVD_DECNOTENOUGH}
  8043. VFW_E_DDRAW_VERSION_NOT_SUITABLE = HResult($8004027C);
  8044. {$EXTERNALSYM VFW_E_DDRAW_VERSION_NOT_SUITABLE}
  8045. VFW_E_COPYPROT_FAILED = HResult($8004027D);
  8046. {$EXTERNALSYM VFW_E_COPYPROT_FAILED}
  8047. VFW_S_NOPREVIEWPIN = HResult($0004027E);
  8048. {$EXTERNALSYM VFW_S_NOPREVIEWPIN}
  8049. VFW_E_TIME_EXPIRED = HResult($8004027F);
  8050. {$EXTERNALSYM VFW_E_TIME_EXPIRED}
  8051. VFW_S_DVD_NON_ONE_SEQUENTIAL = HResult($00040280);
  8052. {$EXTERNALSYM VFW_S_DVD_NON_ONE_SEQUENTIAL}
  8053. VFW_E_DVD_WRONG_SPEED = HResult($80040281);
  8054. {$EXTERNALSYM VFW_E_DVD_WRONG_SPEED}
  8055. VFW_E_DVD_MENU_DOES_NOT_EXIST = HResult($80040282);
  8056. {$EXTERNALSYM VFW_E_DVD_MENU_DOES_NOT_EXIST}
  8057. VFW_E_DVD_CMD_CANCELLED = HResult($80040283);
  8058. {$EXTERNALSYM VFW_E_DVD_CMD_CANCELLED}
  8059. VFW_E_DVD_STATE_WRONG_VERSION = HResult($80040284);
  8060. {$EXTERNALSYM VFW_E_DVD_STATE_WRONG_VERSION}
  8061. VFW_E_DVD_STATE_CORRUPT = HResult($80040285);
  8062. {$EXTERNALSYM VFW_E_DVD_STATE_CORRUPT}
  8063. VFW_E_DVD_STATE_WRONG_DISC = HResult($80040286);
  8064. {$EXTERNALSYM VFW_E_DVD_STATE_WRONG_DISC}
  8065. VFW_E_DVD_INCOMPATIBLE_REGION = HResult($80040287);
  8066. {$EXTERNALSYM VFW_E_DVD_INCOMPATIBLE_REGION}
  8067. VFW_E_DVD_NO_ATTRIBUTES = HResult($80040288);
  8068. {$EXTERNALSYM VFW_E_DVD_NO_ATTRIBUTES}
  8069. VFW_E_DVD_NO_GOUP_PGC = HResult($80040289);
  8070. {$EXTERNALSYM VFW_E_DVD_NO_GOUP_PGC}
  8071. VFW_E_DVD_LOW_PARENTAL_LEVEL = HResult($8004028A);
  8072. {$EXTERNALSYM VFW_E_DVD_LOW_PARENTAL_LEVEL}
  8073. VFW_E_DVD_NOT_IN_KARAOKE_MODE = HResult($8004028B);
  8074. {$EXTERNALSYM VFW_E_DVD_NOT_IN_KARAOKE_MODE}
  8075. VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE = HResult($0004028C);
  8076. {$EXTERNALSYM VFW_S_DVD_CHANNEL_CONTENTS_NOT_AVAILABLE}
  8077. VFW_S_DVD_NOT_ACCURATE = HResult($0004028D);
  8078. {$EXTERNALSYM VFW_S_DVD_NOT_ACCURATE}
  8079. VFW_E_FRAME_STEP_UNSUPPORTED = HResult($8004028E);
  8080. {$EXTERNALSYM VFW_E_FRAME_STEP_UNSUPPORTED}
  8081. VFW_E_DVD_STREAM_DISABLED = HResult($8004028F);
  8082. {$EXTERNALSYM VFW_E_DVD_STREAM_DISABLED}
  8083. VFW_E_DVD_TITLE_UNKNOWN = HResult($80040290);
  8084. {$EXTERNALSYM VFW_E_DVD_TITLE_UNKNOWN}
  8085. VFW_E_DVD_INVALID_DISC = HResult($80040291);
  8086. {$EXTERNALSYM VFW_E_DVD_INVALID_DISC}
  8087. VFW_E_DVD_NO_RESUME_INFORMATION = HResult($80040292);
  8088. {$EXTERNALSYM VFW_E_DVD_NO_RESUME_INFORMATION}
  8089. VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD = HResult($80040293);
  8090. {$EXTERNALSYM VFW_E_PIN_ALREADY_BLOCKED_ON_THIS_THREAD}
  8091. VFW_E_PIN_ALREADY_BLOCKED = HResult($80040294);
  8092. {$EXTERNALSYM VFW_E_PIN_ALREADY_BLOCKED}
  8093. VFW_E_CERTIFICATION_FAILURE = HResult($80040295);
  8094. {$EXTERNALSYM VFW_E_CERTIFICATION_FAILURE}
  8095. VFW_E_VMR_NOT_IN_MIXER_MODE = HResult($80040296);
  8096. {$EXTERNALSYM VFW_E_VMR_NOT_IN_MIXER_MODE}
  8097. // The application has not yet provided the VMR filter with a valid allocator-presenter object.%0
  8098. VFW_E_VMR_NO_AP_SUPPLIED = HResult($80040297);
  8099. {$EXTERNALSYM VFW_E_VMR_NO_AP_SUPPLIED}
  8100. // The VMR could not find any de-interlacing hardware on the current display device.%0
  8101. VFW_E_VMR_NO_DEINTERLACE_HW = HResult($80040298);
  8102. {$EXTERNALSYM VFW_E_VMR_NO_DEINTERLACE_HW}
  8103. // The VMR could not find any ProcAmp hardware on the current display device.%0
  8104. VFW_E_VMR_NO_PROCAMP_HW = HResult($80040299);
  8105. {$EXTERNALSYM VFW_E_VMR_NO_PROCAMP_HW}
  8106. // VMR9 does not work with VPE-based hardware decoders.%0
  8107. VFW_E_DVD_VMR9_INCOMPATIBLEDEC = HResult($8004029A);
  8108. {$EXTERNALSYM VFW_E_DVD_VMR9_INCOMPATIBLEDEC}
  8109. // The current display device does not support Content Output Protection Protocol (COPP) H/W.%0
  8110. VFW_E_NO_COPP_HW = HRESULT($8004029B);
  8111. {$EXTERNALSYM VFW_E_NO_COPP_HW}
  8112. E_PROP_SET_UNSUPPORTED = HResult($80070492);
  8113. {$EXTERNALSYM E_PROP_SET_UNSUPPORTED}
  8114. E_PROP_ID_UNSUPPORTED = HResult($80070490);
  8115. {$EXTERNALSYM E_PROP_ID_UNSUPPORTED}
  8116. (*==========================================================================;
  8117. *
  8118. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  8119. *
  8120. * Files: edevdefs.h
  8121. * XPrtDefs.h (derived from edevdefs.h)
  8122. *
  8123. ***************************************************************************)
  8124. const
  8125. ED_BASE = $1000;
  8126. {$EXTERNALSYM ED_BASE}
  8127. // this is used to tell the device communications object which
  8128. // physical communications port to use.
  8129. DEV_PORT_SIM = 1;
  8130. {$EXTERNALSYM DEV_PORT_SIM}
  8131. DEV_PORT_COM1 = 2; // standard serial ports
  8132. {$EXTERNALSYM DEV_PORT_COM1}
  8133. DEV_PORT_COM2 = 3;
  8134. {$EXTERNALSYM DEV_PORT_COM2}
  8135. DEV_PORT_COM3 = 4;
  8136. {$EXTERNALSYM DEV_PORT_COM3}
  8137. DEV_PORT_COM4 = 5;
  8138. {$EXTERNALSYM DEV_PORT_COM4}
  8139. DEV_PORT_DIAQ = 6; // Diaquest driver
  8140. {$EXTERNALSYM DEV_PORT_DIAQ}
  8141. DEV_PORT_ARTI = 7; // ARTI driver
  8142. {$EXTERNALSYM DEV_PORT_ARTI}
  8143. DEV_PORT_1394 = 8; // IEEE 1394 Serial Bus
  8144. {$EXTERNALSYM DEV_PORT_1394}
  8145. DEV_PORT_USB = 9; // Universal Serial Bus
  8146. {$EXTERNALSYM DEV_PORT_USB}
  8147. DEV_PORT_MIN = DEV_PORT_SIM;
  8148. {$EXTERNALSYM DEV_PORT_MIN}
  8149. DEV_PORT_MAX = DEV_PORT_USB;
  8150. {$EXTERNALSYM DEV_PORT_MAX}
  8151. // IAMExtDevice Capability Items: unless otherwise specified, these items return
  8152. // OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified:
  8153. ED_DEVCAP_CAN_RECORD = ED_BASE+1;
  8154. {$EXTERNALSYM ED_DEVCAP_CAN_RECORD}
  8155. ED_DEVCAP_CAN_RECORD_STROBE = ED_BASE+2;
  8156. {$EXTERNALSYM ED_DEVCAP_CAN_RECORD_STROBE}
  8157. ED_DEVCAP_HAS_AUDIO = ED_BASE+3;
  8158. {$EXTERNALSYM ED_DEVCAP_HAS_AUDIO}
  8159. ED_DEVCAP_HAS_VIDEO = ED_BASE+4;
  8160. {$EXTERNALSYM ED_DEVCAP_HAS_VIDEO}
  8161. ED_DEVCAP_USES_FILES = ED_BASE+5;
  8162. {$EXTERNALSYM ED_DEVCAP_USES_FILES}
  8163. ED_DEVCAP_CAN_SAVE = ED_BASE+6;
  8164. {$EXTERNALSYM ED_DEVCAP_CAN_SAVE}
  8165. ED_DEVCAP_DEVICE_TYPE = ED_BASE+7;
  8166. {$EXTERNALSYM ED_DEVCAP_DEVICE_TYPE}
  8167. ED_DEVTYPE_VCR = ED_BASE+8;
  8168. {$EXTERNALSYM ED_DEVTYPE_VCR}
  8169. ED_DEVTYPE_LASERDISK = ED_BASE+9;
  8170. {$EXTERNALSYM ED_DEVTYPE_LASERDISK}
  8171. ED_DEVTYPE_ATR = ED_BASE+10;
  8172. {$EXTERNALSYM ED_DEVTYPE_ATR}
  8173. ED_DEVTYPE_DDR = ED_BASE+11;
  8174. {$EXTERNALSYM ED_DEVTYPE_DDR}
  8175. ED_DEVTYPE_ROUTER = ED_BASE+12;
  8176. {$EXTERNALSYM ED_DEVTYPE_ROUTER}
  8177. ED_DEVTYPE_KEYER = ED_BASE+13;
  8178. {$EXTERNALSYM ED_DEVTYPE_KEYER}
  8179. ED_DEVTYPE_MIXER_VIDEO = ED_BASE+14;
  8180. {$EXTERNALSYM ED_DEVTYPE_MIXER_VIDEO}
  8181. ED_DEVTYPE_DVE = ED_BASE+15;
  8182. {$EXTERNALSYM ED_DEVTYPE_DVE}
  8183. ED_DEVTYPE_WIPEGEN = ED_BASE+16;
  8184. {$EXTERNALSYM ED_DEVTYPE_WIPEGEN}
  8185. ED_DEVTYPE_MIXER_AUDIO = ED_BASE+17;
  8186. {$EXTERNALSYM ED_DEVTYPE_MIXER_AUDIO}
  8187. ED_DEVTYPE_CG = ED_BASE+18;
  8188. {$EXTERNALSYM ED_DEVTYPE_CG}
  8189. ED_DEVTYPE_TBC = ED_BASE+19;
  8190. {$EXTERNALSYM ED_DEVTYPE_TBC}
  8191. ED_DEVTYPE_TCG = ED_BASE+20;
  8192. {$EXTERNALSYM ED_DEVTYPE_TCG}
  8193. ED_DEVTYPE_GPI = ED_BASE+21;
  8194. {$EXTERNALSYM ED_DEVTYPE_GPI}
  8195. ED_DEVTYPE_JOYSTICK = ED_BASE+22;
  8196. {$EXTERNALSYM ED_DEVTYPE_JOYSTICK}
  8197. ED_DEVTYPE_KEYBOARD = ED_BASE+23;
  8198. {$EXTERNALSYM ED_DEVTYPE_KEYBOARD}
  8199. // returns mfr-specific ID from external device.
  8200. ED_DEVCAP_EXTERNAL_DEVICE_ID = ED_BASE+24;
  8201. {$EXTERNALSYM ED_DEVCAP_EXTERNAL_DEVICE_ID}
  8202. ED_DEVCAP_TIMECODE_READ = ED_BASE+25;
  8203. {$EXTERNALSYM ED_DEVCAP_TIMECODE_READ}
  8204. ED_DEVCAP_TIMECODE_WRITE = ED_BASE+26;
  8205. {$EXTERNALSYM ED_DEVCAP_TIMECODE_WRITE}
  8206. // used for seekable non-timecode enabled devices
  8207. ED_DEVCAP_CTLTRK_READ = ED_BASE+27;
  8208. {$EXTERNALSYM ED_DEVCAP_CTLTRK_READ}
  8209. // used for seekable non-timecode enabled devices
  8210. ED_DEVCAP_INDEX_READ = ED_BASE+28;
  8211. {$EXTERNALSYM ED_DEVCAP_INDEX_READ}
  8212. // returns device preroll time in current time format
  8213. ED_DEVCAP_PREROLL = ED_BASE+29;
  8214. {$EXTERNALSYM ED_DEVCAP_PREROLL}
  8215. // returns device postroll time in current time format
  8216. ED_DEVCAP_POSTROLL = ED_BASE+30;
  8217. {$EXTERNALSYM ED_DEVCAP_POSTROLL}
  8218. // returns indication of device’s synchronization accuracy.
  8219. ED_DEVCAP_SYNC_ACCURACY = ED_BASE+31;
  8220. {$EXTERNALSYM ED_DEVCAP_SYNC_ACCURACY}
  8221. ED_SYNCACC_PRECISE = ED_BASE+32;
  8222. {$EXTERNALSYM ED_SYNCACC_PRECISE}
  8223. ED_SYNCACC_FRAME = ED_BASE+33;
  8224. {$EXTERNALSYM ED_SYNCACC_FRAME}
  8225. ED_SYNCACC_ROUGH = ED_BASE+34;
  8226. {$EXTERNALSYM ED_SYNCACC_ROUGH}
  8227. // returns device’s normal framerate.
  8228. ED_DEVCAP_NORMAL_RATE = ED_BASE+35;
  8229. {$EXTERNALSYM ED_DEVCAP_NORMAL_RATE}
  8230. ED_RATE_24 = ED_BASE+36;
  8231. {$EXTERNALSYM ED_RATE_24}
  8232. ED_RATE_25 = ED_BASE+37;
  8233. {$EXTERNALSYM ED_RATE_25}
  8234. ED_RATE_2997 = ED_BASE+38;
  8235. {$EXTERNALSYM ED_RATE_2997}
  8236. ED_RATE_30 = ED_BASE+39;
  8237. {$EXTERNALSYM ED_RATE_30}
  8238. ED_DEVCAP_CAN_PREVIEW = ED_BASE+40;
  8239. {$EXTERNALSYM ED_DEVCAP_CAN_PREVIEW}
  8240. ED_DEVCAP_CAN_MONITOR_SOURCES = ED_BASE+41;
  8241. {$EXTERNALSYM ED_DEVCAP_CAN_MONITOR_SOURCES}
  8242. // indicates implementation allows testing of methods/parameters by
  8243. // setting the hi bit of a parm that makes sense - see individual methods
  8244. // for details.
  8245. ED_DEVCAP_CAN_TEST = ED_BASE+42;
  8246. {$EXTERNALSYM ED_DEVCAP_CAN_TEST}
  8247. // indicates device accepts video as an input.
  8248. ED_DEVCAP_VIDEO_INPUTS = ED_BASE+43;
  8249. {$EXTERNALSYM ED_DEVCAP_VIDEO_INPUTS}
  8250. // indicates device accepts audio as an input.
  8251. ED_DEVCAP_AUDIO_INPUTS = ED_BASE+44;
  8252. {$EXTERNALSYM ED_DEVCAP_AUDIO_INPUTS}
  8253. ED_DEVCAP_NEEDS_CALIBRATING = ED_BASE+45;
  8254. {$EXTERNALSYM ED_DEVCAP_NEEDS_CALIBRATING}
  8255. ED_DEVCAP_SEEK_TYPE = ED_BASE+46;
  8256. {$EXTERNALSYM ED_DEVCAP_SEEK_TYPE}
  8257. ED_SEEK_PERFECT = ED_BASE+47;
  8258. {$EXTERNALSYM ED_SEEK_PERFECT}
  8259. ED_SEEK_FAST = ED_BASE+48;
  8260. {$EXTERNALSYM ED_SEEK_FAST}
  8261. ED_SEEK_SLOW = ED_BASE+49;
  8262. {$EXTERNALSYM ED_SEEK_SLOW}
  8263. ED_POWER_ON = ED_BASE+50;
  8264. {$EXTERNALSYM ED_POWER_ON}
  8265. ED_POWER_OFF = ED_BASE+51;
  8266. {$EXTERNALSYM ED_POWER_OFF}
  8267. ED_POWER_STANDBY = ED_BASE+52;
  8268. {$EXTERNALSYM ED_POWER_STANDBY}
  8269. ED_POWER_DEVICE_DEPENDENT = ED_BASE+1033; // Power is on with limited functions
  8270. {$EXTERNALSYM ED_POWER_DEVICE_DEPENDENT}
  8271. ED_ACTIVE = ED_BASE+53;
  8272. {$EXTERNALSYM ED_ACTIVE}
  8273. ED_INACTIVE = ED_BASE+54;
  8274. {$EXTERNALSYM ED_INACTIVE}
  8275. ED_ALL = ED_BASE+55;
  8276. {$EXTERNALSYM ED_ALL}
  8277. ED_TEST = ED_BASE+56;
  8278. {$EXTERNALSYM ED_TEST}
  8279. // IAMExtTransport Capability Items: unless otherwise specified, these items return
  8280. // OATRUE or OAFALSE. All return values are in pdwValue unless otherwise specified:
  8281. ED_TRANSCAP_CAN_EJECT = ED_BASE+100;
  8282. {$EXTERNALSYM ED_TRANSCAP_CAN_EJECT}
  8283. ED_TRANSCAP_CAN_BUMP_PLAY = ED_BASE+101;
  8284. {$EXTERNALSYM ED_TRANSCAP_CAN_BUMP_PLAY}
  8285. ED_TRANSCAP_CAN_PLAY_BACKWARDS = ED_BASE+102;
  8286. {$EXTERNALSYM ED_TRANSCAP_CAN_PLAY_BACKWARDS}
  8287. ED_TRANSCAP_CAN_SET_EE = ED_BASE+103;
  8288. {$EXTERNALSYM ED_TRANSCAP_CAN_SET_EE}
  8289. ED_TRANSCAP_CAN_SET_PB = ED_BASE+104;
  8290. {$EXTERNALSYM ED_TRANSCAP_CAN_SET_PB}
  8291. ED_TRANSCAP_CAN_DELAY_VIDEO_IN = ED_BASE+105;
  8292. {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_VIDEO_IN}
  8293. ED_TRANSCAP_CAN_DELAY_VIDEO_OUT = ED_BASE+106;
  8294. {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_VIDEO_OUT}
  8295. ED_TRANSCAP_CAN_DELAY_AUDIO_IN = ED_BASE+107;
  8296. {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_AUDIO_IN}
  8297. ED_TRANSCAP_CAN_DELAY_AUDIO_OUT = ED_BASE+108;
  8298. {$EXTERNALSYM ED_TRANSCAP_CAN_DELAY_AUDIO_OUT}
  8299. ED_TRANSCAP_FWD_VARIABLE_MAX = ED_BASE+109;
  8300. {$EXTERNALSYM ED_TRANSCAP_FWD_VARIABLE_MAX}
  8301. ED_TRANSCAP_FWD_VARIABLE_MIN = ED_BASE+800;
  8302. {$EXTERNALSYM ED_TRANSCAP_FWD_VARIABLE_MIN}
  8303. ED_TRANSCAP_REV_VARIABLE_MAX = ED_BASE+110;
  8304. {$EXTERNALSYM ED_TRANSCAP_REV_VARIABLE_MAX}
  8305. ED_TRANSCAP_REV_VARIABLE_MIN = ED_BASE+801;
  8306. {$EXTERNALSYM ED_TRANSCAP_REV_VARIABLE_MIN}
  8307. ED_TRANSCAP_FWD_SHUTTLE_MAX = ED_BASE+802;
  8308. {$EXTERNALSYM ED_TRANSCAP_FWD_SHUTTLE_MAX}
  8309. ED_TRANSCAP_FWD_SHUTTLE_MIN = ED_BASE+803;
  8310. {$EXTERNALSYM ED_TRANSCAP_FWD_SHUTTLE_MIN}
  8311. ED_TRANSCAP_REV_SHUTTLE_MAX = ED_BASE+804;
  8312. {$EXTERNALSYM ED_TRANSCAP_REV_SHUTTLE_MAX}
  8313. ED_TRANSCAP_REV_SHUTTLE_MIN = ED_BASE+805;
  8314. {$EXTERNALSYM ED_TRANSCAP_REV_SHUTTLE_MIN}
  8315. ED_TRANSCAP_NUM_AUDIO_TRACKS = ED_BASE+111;
  8316. {$EXTERNALSYM ED_TRANSCAP_NUM_AUDIO_TRACKS}
  8317. ED_TRANSCAP_LTC_TRACK = ED_BASE+112;
  8318. {$EXTERNALSYM ED_TRANSCAP_LTC_TRACK}
  8319. ED_TRANSCAP_NEEDS_TBC = ED_BASE+113;
  8320. {$EXTERNALSYM ED_TRANSCAP_NEEDS_TBC}
  8321. ED_TRANSCAP_NEEDS_CUEING = ED_BASE+114;
  8322. {$EXTERNALSYM ED_TRANSCAP_NEEDS_CUEING}
  8323. ED_TRANSCAP_CAN_INSERT = ED_BASE+115;
  8324. {$EXTERNALSYM ED_TRANSCAP_CAN_INSERT}
  8325. ED_TRANSCAP_CAN_ASSEMBLE = ED_BASE+116;
  8326. {$EXTERNALSYM ED_TRANSCAP_CAN_ASSEMBLE}
  8327. ED_TRANSCAP_FIELD_STEP = ED_BASE+117;
  8328. {$EXTERNALSYM ED_TRANSCAP_FIELD_STEP}
  8329. ED_TRANSCAP_CLOCK_INC_RATE = ED_BASE+118;
  8330. {$EXTERNALSYM ED_TRANSCAP_CLOCK_INC_RATE}
  8331. ED_TRANSCAP_CAN_DETECT_LENGTH = ED_BASE+119;
  8332. {$EXTERNALSYM ED_TRANSCAP_CAN_DETECT_LENGTH}
  8333. ED_TRANSCAP_CAN_FREEZE = ED_BASE+120;
  8334. {$EXTERNALSYM ED_TRANSCAP_CAN_FREEZE}
  8335. ED_TRANSCAP_HAS_TUNER = ED_BASE+121;
  8336. {$EXTERNALSYM ED_TRANSCAP_HAS_TUNER}
  8337. ED_TRANSCAP_HAS_TIMER = ED_BASE+122;
  8338. {$EXTERNALSYM ED_TRANSCAP_HAS_TIMER}
  8339. ED_TRANSCAP_HAS_CLOCK = ED_BASE+123;
  8340. {$EXTERNALSYM ED_TRANSCAP_HAS_CLOCK}
  8341. ED_TRANSCAP_MULTIPLE_EDITS = ED_BASE+806;
  8342. {$EXTERNALSYM ED_TRANSCAP_MULTIPLE_EDITS}
  8343. ED_TRANSCAP_IS_MASTER = ED_BASE+807;
  8344. {$EXTERNALSYM ED_TRANSCAP_IS_MASTER}
  8345. ED_TRANSCAP_HAS_DT = ED_BASE+814;
  8346. {$EXTERNALSYM ED_TRANSCAP_HAS_DT}
  8347. // IAMExtTransport Media States
  8348. ED_MEDIA_SPIN_UP = ED_BASE+130;
  8349. {$EXTERNALSYM ED_MEDIA_SPIN_UP}
  8350. ED_MEDIA_SPIN_DOWN = ED_BASE+131;
  8351. {$EXTERNALSYM ED_MEDIA_SPIN_DOWN}
  8352. ED_MEDIA_UNLOAD = ED_BASE+132;
  8353. {$EXTERNALSYM ED_MEDIA_UNLOAD}
  8354. // IAMExtTransport Modes
  8355. ED_MODE_PLAY = ED_BASE+200;
  8356. {$EXTERNALSYM ED_MODE_PLAY}
  8357. ED_MODE_STOP = ED_BASE+201;
  8358. {$EXTERNALSYM ED_MODE_STOP}
  8359. ED_MODE_FREEZE = ED_BASE+202;
  8360. {$EXTERNALSYM ED_MODE_FREEZE}
  8361. ED_MODE_THAW = ED_BASE+203;
  8362. {$EXTERNALSYM ED_MODE_THAW}
  8363. ED_MODE_FF = ED_BASE+204;
  8364. {$EXTERNALSYM ED_MODE_FF}
  8365. ED_MODE_REW = ED_BASE+205;
  8366. {$EXTERNALSYM ED_MODE_REW}
  8367. ED_MODE_RECORD = ED_BASE+206;
  8368. {$EXTERNALSYM ED_MODE_RECORD}
  8369. ED_MODE_RECORD_STROBE = ED_BASE+207;
  8370. {$EXTERNALSYM ED_MODE_RECORD_STROBE}
  8371. ED_MODE_RECORD_FREEZE = ED_BASE+808; // never "put", only "get"
  8372. {$EXTERNALSYM ED_MODE_RECORD_FREEZE}
  8373. ED_MODE_STEP = ED_BASE+208;
  8374. {$EXTERNALSYM ED_MODE_STEP}
  8375. ED_MODE_STEP_FWD = ED_BASE+208;
  8376. {$EXTERNALSYM ED_MODE_STEP_FWD}
  8377. ED_MODE_STEP_REV = ED_BASE+809;
  8378. {$EXTERNALSYM ED_MODE_STEP_REV}
  8379. ED_MODE_SHUTTLE = ED_BASE+209;
  8380. {$EXTERNALSYM ED_MODE_SHUTTLE}
  8381. ED_MODE_EDIT_CUE = ED_BASE+210;
  8382. {$EXTERNALSYM ED_MODE_EDIT_CUE}
  8383. ED_MODE_VAR_SPEED = ED_BASE+211;
  8384. {$EXTERNALSYM ED_MODE_VAR_SPEED}
  8385. ED_MODE_PERFORM = ED_BASE+212;
  8386. {$EXTERNALSYM ED_MODE_PERFORM}
  8387. ED_MODE_LINK_ON = ED_BASE+280;
  8388. {$EXTERNALSYM ED_MODE_LINK_ON}
  8389. ED_MODE_LINK_OFF = ED_BASE+281;
  8390. {$EXTERNALSYM ED_MODE_LINK_OFF}
  8391. ED_MODE_NOTIFY_ENABLE = ED_BASE+810;
  8392. {$EXTERNALSYM ED_MODE_NOTIFY_ENABLE}
  8393. ED_MODE_NOTIFY_DISABLE = ED_BASE+811;
  8394. {$EXTERNALSYM ED_MODE_NOTIFY_DISABLE}
  8395. ED_MODE_SHOT_SEARCH = ED_BASE+812;
  8396. {$EXTERNALSYM ED_MODE_SHOT_SEARCH}
  8397. // IAMTimecodeReader/Generator/Display defines
  8398. //
  8399. // Timecode Generator Mode params and values:
  8400. //
  8401. ED_TCG_TIMECODE_TYPE = ED_BASE+400;
  8402. {$EXTERNALSYM ED_TCG_TIMECODE_TYPE}
  8403. ED_TCG_SMPTE_LTC = ED_BASE+401;
  8404. {$EXTERNALSYM ED_TCG_SMPTE_LTC}
  8405. ED_TCG_SMPTE_VITC = ED_BASE+402;
  8406. {$EXTERNALSYM ED_TCG_SMPTE_VITC}
  8407. ED_TCG_MIDI_QF = ED_BASE+403;
  8408. {$EXTERNALSYM ED_TCG_MIDI_QF}
  8409. ED_TCG_MIDI_FULL = ED_BASE+404;
  8410. {$EXTERNALSYM ED_TCG_MIDI_FULL}
  8411. ED_TCG_FRAMERATE = ED_BASE+405;
  8412. {$EXTERNALSYM ED_TCG_FRAMERATE}
  8413. ED_FORMAT_SMPTE_30 = ED_BASE+406;
  8414. {$EXTERNALSYM ED_FORMAT_SMPTE_30}
  8415. ED_FORMAT_SMPTE_30DROP = ED_BASE+407;
  8416. {$EXTERNALSYM ED_FORMAT_SMPTE_30DROP}
  8417. ED_FORMAT_SMPTE_25 = ED_BASE+408;
  8418. {$EXTERNALSYM ED_FORMAT_SMPTE_25}
  8419. ED_FORMAT_SMPTE_24 = ED_BASE+409;
  8420. {$EXTERNALSYM ED_FORMAT_SMPTE_24}
  8421. ED_TCG_SYNC_SOURCE = ED_BASE+410;
  8422. {$EXTERNALSYM ED_TCG_SYNC_SOURCE}
  8423. ED_TCG_VIDEO = ED_BASE+411;
  8424. {$EXTERNALSYM ED_TCG_VIDEO}
  8425. ED_TCG_READER = ED_BASE+412;
  8426. {$EXTERNALSYM ED_TCG_READER}
  8427. ED_TCG_FREE = ED_BASE+413;
  8428. {$EXTERNALSYM ED_TCG_FREE}
  8429. ED_TCG_REFERENCE_SOURCE = ED_BASE+414;
  8430. {$EXTERNALSYM ED_TCG_REFERENCE_SOURCE}
  8431. // TimeCodeReader Mode params and values:
  8432. ED_TCR_SOURCE = ED_BASE+416;
  8433. {$EXTERNALSYM ED_TCR_SOURCE}
  8434. // ED_TCG (already defined)
  8435. ED_TCR_LTC = ED_BASE+417;
  8436. {$EXTERNALSYM ED_TCR_LTC}
  8437. ED_TCR_VITC = ED_BASE+418;
  8438. {$EXTERNALSYM ED_TCR_VITC}
  8439. ED_TCR_CT = ED_BASE+419;
  8440. {$EXTERNALSYM ED_TCR_CT}
  8441. ED_TCR_FTC = ED_BASE+420;
  8442. {$EXTERNALSYM ED_TCR_FTC}
  8443. // ED_MODE_NOTIFY_ENABLE can be OATRUE or OAFALSE (defined in transport mode
  8444. // section of this file).
  8445. ED_TCR_LAST_VALUE = ED_BASE+421;
  8446. {$EXTERNALSYM ED_TCR_LAST_VALUE}
  8447. // TimeCode Display Mode params and values:
  8448. //
  8449. ED_TCD_SOURCE = ED_BASE+422;
  8450. {$EXTERNALSYM ED_TCD_SOURCE}
  8451. ED_TCR = ED_BASE+423;
  8452. {$EXTERNALSYM ED_TCR}
  8453. ED_TCG = ED_BASE+424;
  8454. {$EXTERNALSYM ED_TCG}
  8455. ED_TCD_SIZE = ED_BASE+425;
  8456. {$EXTERNALSYM ED_TCD_SIZE}
  8457. ED_SMALL = ED_BASE+426;
  8458. {$EXTERNALSYM ED_SMALL}
  8459. ED_MED = ED_BASE+427;
  8460. {$EXTERNALSYM ED_MED}
  8461. ED_LARGE = ED_BASE+428;
  8462. {$EXTERNALSYM ED_LARGE}
  8463. ED_TCD_POSITION = ED_BASE+429;
  8464. {$EXTERNALSYM ED_TCD_POSITION}
  8465. ED_TOP = $0001;
  8466. {$EXTERNALSYM ED_TOP}
  8467. ED_MIDDLE = $0002;
  8468. {$EXTERNALSYM ED_MIDDLE}
  8469. ED_BOTTOM = $0004;
  8470. {$EXTERNALSYM ED_BOTTOM}
  8471. ED_LEFT = $0100;
  8472. {$EXTERNALSYM ED_LEFT}
  8473. ED_CENTER = $0200;
  8474. {$EXTERNALSYM ED_CENTER}
  8475. ED_RIGHT = $0400;
  8476. {$EXTERNALSYM ED_RIGHT}
  8477. ED_TCD_INTENSITY = ED_BASE+436;
  8478. {$EXTERNALSYM ED_TCD_INTENSITY}
  8479. ED_HIGH = ED_BASE+437;
  8480. {$EXTERNALSYM ED_HIGH}
  8481. ED_LOW = ED_BASE+438;
  8482. {$EXTERNALSYM ED_LOW}
  8483. ED_TCD_TRANSPARENCY = ED_BASE+439;
  8484. {$EXTERNALSYM ED_TCD_TRANSPARENCY}
  8485. ED_TCD_INVERT = ED_BASE+440;
  8486. {$EXTERNALSYM ED_TCD_INVERT}
  8487. // IAMExtTransport defines
  8488. //
  8489. // Transport status, params and values
  8490. //
  8491. // IAMExtTransport Status items and and values:
  8492. ED_MODE = ED_BASE+500;
  8493. {$EXTERNALSYM ED_MODE}
  8494. ED_ERROR = ED_BASE+501;
  8495. {$EXTERNALSYM ED_ERROR}
  8496. ED_LOCAL = ED_BASE+502;
  8497. {$EXTERNALSYM ED_LOCAL}
  8498. ED_RECORD_INHIBIT = ED_BASE+503;
  8499. {$EXTERNALSYM ED_RECORD_INHIBIT}
  8500. ED_SERVO_LOCK = ED_BASE+504;
  8501. {$EXTERNALSYM ED_SERVO_LOCK}
  8502. ED_MEDIA_PRESENT = ED_BASE+505;
  8503. {$EXTERNALSYM ED_MEDIA_PRESENT}
  8504. ED_MEDIA_LENGTH = ED_BASE+506;
  8505. {$EXTERNALSYM ED_MEDIA_LENGTH}
  8506. ED_MEDIA_SIZE = ED_BASE+507;
  8507. {$EXTERNALSYM ED_MEDIA_SIZE}
  8508. ED_MEDIA_TRACK_COUNT = ED_BASE+508;
  8509. {$EXTERNALSYM ED_MEDIA_TRACK_COUNT}
  8510. ED_MEDIA_TRACK_LENGTH = ED_BASE+509;
  8511. {$EXTERNALSYM ED_MEDIA_TRACK_LENGTH}
  8512. ED_MEDIA_SIDE = ED_BASE+510;
  8513. {$EXTERNALSYM ED_MEDIA_SIDE}
  8514. ED_MEDIA_TYPE = ED_BASE+511;
  8515. {$EXTERNALSYM ED_MEDIA_TYPE}
  8516. ED_MEDIA_VHS = ED_BASE+512;
  8517. {$EXTERNALSYM ED_MEDIA_VHS}
  8518. ED_MEDIA_SVHS = ED_BASE+513;
  8519. {$EXTERNALSYM ED_MEDIA_SVHS}
  8520. ED_MEDIA_HI8 = ED_BASE+514;
  8521. {$EXTERNALSYM ED_MEDIA_HI8}
  8522. ED_MEDIA_UMATIC = ED_BASE+515;
  8523. {$EXTERNALSYM ED_MEDIA_UMATIC}
  8524. ED_MEDIA_DVC = ED_BASE+516;
  8525. {$EXTERNALSYM ED_MEDIA_DVC}
  8526. ED_MEDIA_1_INCH = ED_BASE+517;
  8527. {$EXTERNALSYM ED_MEDIA_1_INCH}
  8528. ED_MEDIA_D1 = ED_BASE+518;
  8529. {$EXTERNALSYM ED_MEDIA_D1}
  8530. ED_MEDIA_D2 = ED_BASE+519;
  8531. {$EXTERNALSYM ED_MEDIA_D2}
  8532. ED_MEDIA_D3 = ED_BASE+520;
  8533. {$EXTERNALSYM ED_MEDIA_D3}
  8534. ED_MEDIA_D5 = ED_BASE+521;
  8535. {$EXTERNALSYM ED_MEDIA_D5}
  8536. ED_MEDIA_DBETA = ED_BASE+522;
  8537. {$EXTERNALSYM ED_MEDIA_DBETA}
  8538. ED_MEDIA_BETA = ED_BASE+523;
  8539. {$EXTERNALSYM ED_MEDIA_BETA}
  8540. ED_MEDIA_8MM = ED_BASE+524;
  8541. {$EXTERNALSYM ED_MEDIA_8MM}
  8542. ED_MEDIA_DDR = ED_BASE+525;
  8543. {$EXTERNALSYM ED_MEDIA_DDR}
  8544. ED_MEDIA_SX = ED_BASE+813;
  8545. {$EXTERNALSYM ED_MEDIA_SX}
  8546. ED_MEDIA_OTHER = ED_BASE+526;
  8547. {$EXTERNALSYM ED_MEDIA_OTHER}
  8548. ED_MEDIA_CLV = ED_BASE+527;
  8549. {$EXTERNALSYM ED_MEDIA_CLV}
  8550. ED_MEDIA_CAV = ED_BASE+528;
  8551. {$EXTERNALSYM ED_MEDIA_CAV}
  8552. ED_MEDIA_POSITION = ED_BASE+529;
  8553. {$EXTERNALSYM ED_MEDIA_POSITION}
  8554. ED_MEDIA_NEO = ED_BASE+531; // Mini digital tape for MPEG2TS signal
  8555. {$EXTERNALSYM ED_MEDIA_NEO}
  8556. ED_MEDIA_MICROMV = ED_MEDIA_NEO;
  8557. {$EXTERNALSYM ED_MEDIA_MICROMV}
  8558. ED_LINK_MODE = ED_BASE+530;
  8559. {$EXTERNALSYM ED_LINK_MODE}
  8560. // IAMExtTransport Basic Parms
  8561. ED_TRANSBASIC_TIME_FORMAT = ED_BASE+540;
  8562. {$EXTERNALSYM ED_TRANSBASIC_TIME_FORMAT}
  8563. ED_FORMAT_MILLISECONDS = ED_BASE+541;
  8564. {$EXTERNALSYM ED_FORMAT_MILLISECONDS}
  8565. ED_FORMAT_FRAMES = ED_BASE+542;
  8566. {$EXTERNALSYM ED_FORMAT_FRAMES}
  8567. ED_FORMAT_REFERENCE_TIME = ED_BASE+543;
  8568. {$EXTERNALSYM ED_FORMAT_REFERENCE_TIME}
  8569. ED_FORMAT_HMSF = ED_BASE+547;
  8570. {$EXTERNALSYM ED_FORMAT_HMSF}
  8571. ED_FORMAT_TMSF = ED_BASE+548;
  8572. {$EXTERNALSYM ED_FORMAT_TMSF}
  8573. ED_TRANSBASIC_TIME_REFERENCE = ED_BASE+549;
  8574. {$EXTERNALSYM ED_TRANSBASIC_TIME_REFERENCE}
  8575. ED_TIMEREF_TIMECODE = ED_BASE+550;
  8576. {$EXTERNALSYM ED_TIMEREF_TIMECODE}
  8577. ED_TIMEREF_CONTROL_TRACK = ED_BASE+551;
  8578. {$EXTERNALSYM ED_TIMEREF_CONTROL_TRACK}
  8579. ED_TIMEREF_INDEX = ED_BASE+552;
  8580. {$EXTERNALSYM ED_TIMEREF_INDEX}
  8581. ED_TRANSBASIC_SUPERIMPOSE = ED_BASE+553;
  8582. {$EXTERNALSYM ED_TRANSBASIC_SUPERIMPOSE}
  8583. ED_TRANSBASIC_END_STOP_ACTION = ED_BASE+554;
  8584. {$EXTERNALSYM ED_TRANSBASIC_END_STOP_ACTION}
  8585. ED_TRANSBASIC_RECORD_FORMAT = ED_BASE+555;
  8586. {$EXTERNALSYM ED_TRANSBASIC_RECORD_FORMAT}
  8587. ED_RECORD_FORMAT_SP = ED_BASE+556;
  8588. {$EXTERNALSYM ED_RECORD_FORMAT_SP}
  8589. ED_RECORD_FORMAT_LP = ED_BASE+557;
  8590. {$EXTERNALSYM ED_RECORD_FORMAT_LP}
  8591. ED_RECORD_FORMAT_EP = ED_BASE+558;
  8592. {$EXTERNALSYM ED_RECORD_FORMAT_EP}
  8593. ED_TRANSBASIC_STEP_COUNT = ED_BASE+559;
  8594. {$EXTERNALSYM ED_TRANSBASIC_STEP_COUNT}
  8595. ED_TRANSBASIC_STEP_UNIT = ED_BASE+560;
  8596. {$EXTERNALSYM ED_TRANSBASIC_STEP_UNIT}
  8597. ED_STEP_FIELD = ED_BASE+561;
  8598. {$EXTERNALSYM ED_STEP_FIELD}
  8599. ED_STEP_FRAME = ED_BASE+562;
  8600. {$EXTERNALSYM ED_STEP_FRAME}
  8601. ED_STEP_3_2 = ED_BASE+563;
  8602. {$EXTERNALSYM ED_STEP_3_2}
  8603. ED_TRANSBASIC_PREROLL = ED_BASE+564;
  8604. {$EXTERNALSYM ED_TRANSBASIC_PREROLL}
  8605. ED_TRANSBASIC_RECPREROLL = ED_BASE+565;
  8606. {$EXTERNALSYM ED_TRANSBASIC_RECPREROLL}
  8607. ED_TRANSBASIC_POSTROLL = ED_BASE+566;
  8608. {$EXTERNALSYM ED_TRANSBASIC_POSTROLL}
  8609. ED_TRANSBASIC_EDIT_DELAY = ED_BASE+567;
  8610. {$EXTERNALSYM ED_TRANSBASIC_EDIT_DELAY}
  8611. ED_TRANSBASIC_PLAYTC_DELAY = ED_BASE+568;
  8612. {$EXTERNALSYM ED_TRANSBASIC_PLAYTC_DELAY}
  8613. ED_TRANSBASIC_RECTC_DELAY = ED_BASE+569;
  8614. {$EXTERNALSYM ED_TRANSBASIC_RECTC_DELAY}
  8615. ED_TRANSBASIC_EDIT_FIELD = ED_BASE+570;
  8616. {$EXTERNALSYM ED_TRANSBASIC_EDIT_FIELD}
  8617. ED_TRANSBASIC_FRAME_SERVO = ED_BASE+571;
  8618. {$EXTERNALSYM ED_TRANSBASIC_FRAME_SERVO}
  8619. ED_TRANSBASIC_CF_SERVO = ED_BASE+572;
  8620. {$EXTERNALSYM ED_TRANSBASIC_CF_SERVO}
  8621. ED_TRANSBASIC_SERVO_REF = ED_BASE+573;
  8622. {$EXTERNALSYM ED_TRANSBASIC_SERVO_REF}
  8623. ED_REF_EXTERNAL = ED_BASE+574;
  8624. {$EXTERNALSYM ED_REF_EXTERNAL}
  8625. ED_REF_INPUT = ED_BASE+575;
  8626. {$EXTERNALSYM ED_REF_INPUT}
  8627. ED_REF_INTERNAL = ED_BASE+576;
  8628. {$EXTERNALSYM ED_REF_INTERNAL}
  8629. ED_REF_AUTO = ED_BASE+577;
  8630. {$EXTERNALSYM ED_REF_AUTO}
  8631. ED_TRANSBASIC_WARN_GL = ED_BASE+578;
  8632. {$EXTERNALSYM ED_TRANSBASIC_WARN_GL}
  8633. ED_TRANSBASIC_SET_TRACKING = ED_BASE+579;
  8634. {$EXTERNALSYM ED_TRANSBASIC_SET_TRACKING}
  8635. ED_TRACKING_PLUS = ED_BASE+580;
  8636. {$EXTERNALSYM ED_TRACKING_PLUS}
  8637. ED_TRACKING_MINUS = ED_BASE+581;
  8638. {$EXTERNALSYM ED_TRACKING_MINUS}
  8639. ED_TRACKING_RESET = ED_BASE+582;
  8640. {$EXTERNALSYM ED_TRACKING_RESET}
  8641. ED_TRANSBASIC_SET_FREEZE_TIMEOUT = ED_BASE+583;
  8642. {$EXTERNALSYM ED_TRANSBASIC_SET_FREEZE_TIMEOUT}
  8643. ED_TRANSBASIC_VOLUME_NAME = ED_BASE+584;
  8644. {$EXTERNALSYM ED_TRANSBASIC_VOLUME_NAME}
  8645. ED_TRANSBASIC_BALLISTIC_1 = ED_BASE+585;
  8646. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_1}
  8647. ED_TRANSBASIC_BALLISTIC_2 = ED_BASE+586;
  8648. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_2}
  8649. ED_TRANSBASIC_BALLISTIC_3 = ED_BASE+587;
  8650. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_3}
  8651. ED_TRANSBASIC_BALLISTIC_4 = ED_BASE+588;
  8652. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_4}
  8653. ED_TRANSBASIC_BALLISTIC_5 = ED_BASE+589;
  8654. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_5}
  8655. ED_TRANSBASIC_BALLISTIC_6 = ED_BASE+590;
  8656. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_6}
  8657. ED_TRANSBASIC_BALLISTIC_7 = ED_BASE+591;
  8658. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_7}
  8659. ED_TRANSBASIC_BALLISTIC_8 = ED_BASE+592;
  8660. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_8}
  8661. ED_TRANSBASIC_BALLISTIC_9 = ED_BASE+593;
  8662. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_9}
  8663. ED_TRANSBASIC_BALLISTIC_10 = ED_BASE+594;
  8664. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_10}
  8665. ED_TRANSBASIC_BALLISTIC_11 = ED_BASE+595;
  8666. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_11}
  8667. ED_TRANSBASIC_BALLISTIC_12 = ED_BASE+596;
  8668. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_12}
  8669. ED_TRANSBASIC_BALLISTIC_13 = ED_BASE+597;
  8670. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_13}
  8671. ED_TRANSBASIC_BALLISTIC_14 = ED_BASE+598;
  8672. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_14}
  8673. ED_TRANSBASIC_BALLISTIC_15 = ED_BASE+599;
  8674. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_15}
  8675. ED_TRANSBASIC_BALLISTIC_16 = ED_BASE+600;
  8676. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_16}
  8677. ED_TRANSBASIC_BALLISTIC_17 = ED_BASE+601;
  8678. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_17}
  8679. ED_TRANSBASIC_BALLISTIC_18 = ED_BASE+602;
  8680. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_18}
  8681. ED_TRANSBASIC_BALLISTIC_19 = ED_BASE+603;
  8682. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_19}
  8683. ED_TRANSBASIC_BALLISTIC_20 = ED_BASE+604;
  8684. {$EXTERNALSYM ED_TRANSBASIC_BALLISTIC_20}
  8685. // consumer VCR items
  8686. ED_TRANSBASIC_SETCLOCK = ED_BASE+605;
  8687. {$EXTERNALSYM ED_TRANSBASIC_SETCLOCK}
  8688. ED_TRANSBASIC_SET_COUNTER_FORMAT = ED_BASE+606;
  8689. {$EXTERNALSYM ED_TRANSBASIC_SET_COUNTER_FORMAT}
  8690. ED_TRANSBASIC_SET_COUNTER_VALUE = ED_BASE+607;
  8691. {$EXTERNALSYM ED_TRANSBASIC_SET_COUNTER_VALUE}
  8692. ED_TRANSBASIC_SETTUNER_CH_UP = ED_BASE+608;
  8693. {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_CH_UP}
  8694. ED_TRANSBASIC_SETTUNER_CH_DN = ED_BASE+609;
  8695. {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_CH_DN}
  8696. ED_TRANSBASIC_SETTUNER_SK_UP = ED_BASE+610;
  8697. {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_SK_UP}
  8698. ED_TRANSBASIC_SETTUNER_SK_DN = ED_BASE+611;
  8699. {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_SK_DN}
  8700. ED_TRANSBASIC_SETTUNER_CH = ED_BASE+612;
  8701. {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_CH}
  8702. ED_TRANSBASIC_SETTUNER_NUM = ED_BASE+613;
  8703. {$EXTERNALSYM ED_TRANSBASIC_SETTUNER_NUM}
  8704. ED_TRANSBASIC_SETTIMER_EVENT = ED_BASE+614;
  8705. {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_EVENT}
  8706. ED_TRANSBASIC_SETTIMER_STARTDAY = ED_BASE+615;
  8707. {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STARTDAY}
  8708. ED_TRANSBASIC_SETTIMER_STARTTIME = ED_BASE+616;
  8709. {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STARTTIME}
  8710. ED_TRANSBASIC_SETTIMER_STOPDAY = ED_BASE+617;
  8711. {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STOPDAY}
  8712. ED_TRANSBASIC_SETTIMER_STOPTIME = ED_BASE+618;
  8713. {$EXTERNALSYM ED_TRANSBASIC_SETTIMER_STOPTIME}
  8714. // IAMExtTransport video parameters
  8715. ED_TRANSVIDEO_SET_OUTPUT = ED_BASE+630;
  8716. {$EXTERNALSYM ED_TRANSVIDEO_SET_OUTPUT}
  8717. ED_E2E = ED_BASE+631;
  8718. {$EXTERNALSYM ED_E2E}
  8719. ED_PLAYBACK = ED_BASE+632;
  8720. {$EXTERNALSYM ED_PLAYBACK}
  8721. ED_OFF = ED_BASE+633;
  8722. {$EXTERNALSYM ED_OFF}
  8723. ED_TRANSVIDEO_SET_SOURCE = ED_BASE+634;
  8724. {$EXTERNALSYM ED_TRANSVIDEO_SET_SOURCE}
  8725. // IAMExtTransport audio parameters
  8726. ED_TRANSAUDIO_ENABLE_OUTPUT = ED_BASE+640;
  8727. {$EXTERNALSYM ED_TRANSAUDIO_ENABLE_OUTPUT}
  8728. ED_AUDIO_ALL = $10000000;
  8729. {$EXTERNALSYM ED_AUDIO_ALL}
  8730. ED_AUDIO_1 = $0000001;
  8731. {$EXTERNALSYM ED_AUDIO_1}
  8732. ED_AUDIO_2 = $0000002;
  8733. {$EXTERNALSYM ED_AUDIO_2}
  8734. ED_AUDIO_3 = $0000004;
  8735. {$EXTERNALSYM ED_AUDIO_3}
  8736. ED_AUDIO_4 = $0000008;
  8737. {$EXTERNALSYM ED_AUDIO_4}
  8738. ED_AUDIO_5 = $0000010;
  8739. {$EXTERNALSYM ED_AUDIO_5}
  8740. ED_AUDIO_6 = $0000020;
  8741. {$EXTERNALSYM ED_AUDIO_6}
  8742. ED_AUDIO_7 = $0000040;
  8743. {$EXTERNALSYM ED_AUDIO_7}
  8744. ED_AUDIO_8 = $0000080;
  8745. {$EXTERNALSYM ED_AUDIO_8}
  8746. ED_AUDIO_9 = $0000100;
  8747. {$EXTERNALSYM ED_AUDIO_9}
  8748. ED_AUDIO_10 = $0000200;
  8749. {$EXTERNALSYM ED_AUDIO_10}
  8750. ED_AUDIO_11 = $0000400;
  8751. {$EXTERNALSYM ED_AUDIO_11}
  8752. ED_AUDIO_12 = $0000800;
  8753. {$EXTERNALSYM ED_AUDIO_12}
  8754. ED_AUDIO_13 = $0001000;
  8755. {$EXTERNALSYM ED_AUDIO_13}
  8756. ED_AUDIO_14 = $0002000;
  8757. {$EXTERNALSYM ED_AUDIO_14}
  8758. ED_AUDIO_15 = $0004000;
  8759. {$EXTERNALSYM ED_AUDIO_15}
  8760. ED_AUDIO_16 = $0008000;
  8761. {$EXTERNALSYM ED_AUDIO_16}
  8762. ED_AUDIO_17 = $0010000;
  8763. {$EXTERNALSYM ED_AUDIO_17}
  8764. ED_AUDIO_18 = $0020000;
  8765. {$EXTERNALSYM ED_AUDIO_18}
  8766. ED_AUDIO_19 = $0040000;
  8767. {$EXTERNALSYM ED_AUDIO_19}
  8768. ED_AUDIO_20 = $0080000;
  8769. {$EXTERNALSYM ED_AUDIO_20}
  8770. ED_AUDIO_21 = $0100000;
  8771. {$EXTERNALSYM ED_AUDIO_21}
  8772. ED_AUDIO_22 = $0200000;
  8773. {$EXTERNALSYM ED_AUDIO_22}
  8774. ED_AUDIO_23 = $0400000;
  8775. {$EXTERNALSYM ED_AUDIO_23}
  8776. ED_AUDIO_24 = $0800000;
  8777. {$EXTERNALSYM ED_AUDIO_24}
  8778. ED_VIDEO = $2000000;
  8779. {$EXTERNALSYM ED_VIDEO}
  8780. ED_TRANSAUDIO_ENABLE_RECORD = ED_BASE+642;
  8781. {$EXTERNALSYM ED_TRANSAUDIO_ENABLE_RECORD}
  8782. ED_TRANSAUDIO_ENABLE_SELSYNC = ED_BASE+643;
  8783. {$EXTERNALSYM ED_TRANSAUDIO_ENABLE_SELSYNC}
  8784. ED_TRANSAUDIO_SET_SOURCE = ED_BASE+644;
  8785. {$EXTERNALSYM ED_TRANSAUDIO_SET_SOURCE}
  8786. ED_TRANSAUDIO_SET_MONITOR = ED_BASE+645;
  8787. {$EXTERNALSYM ED_TRANSAUDIO_SET_MONITOR}
  8788. // Edit Property Set-related defs
  8789. // The following values reflect (and control) the state of an
  8790. // edit property set
  8791. ED_INVALID = ED_BASE+652;
  8792. {$EXTERNALSYM ED_INVALID}
  8793. ED_EXECUTING = ED_BASE+653;
  8794. {$EXTERNALSYM ED_EXECUTING}
  8795. ED_REGISTER = ED_BASE+654;
  8796. {$EXTERNALSYM ED_REGISTER}
  8797. ED_DELETE = ED_BASE+655;
  8798. {$EXTERNALSYM ED_DELETE}
  8799. // Edit property set parameters and values
  8800. ED_EDIT_HEVENT = ED_BASE+656;
  8801. {$EXTERNALSYM ED_EDIT_HEVENT}
  8802. ED_EDIT_TEST = ED_BASE+657;
  8803. {$EXTERNALSYM ED_EDIT_TEST}
  8804. ED_EDIT_IMMEDIATE = ED_BASE+658;
  8805. {$EXTERNALSYM ED_EDIT_IMMEDIATE}
  8806. ED_EDIT_MODE = ED_BASE+659;
  8807. {$EXTERNALSYM ED_EDIT_MODE}
  8808. // can be one of the following values:
  8809. ED_EDIT_MODE_ASSEMBLE = ED_BASE+660;
  8810. {$EXTERNALSYM ED_EDIT_MODE_ASSEMBLE}
  8811. ED_EDIT_MODE_INSERT = ED_BASE+661;
  8812. {$EXTERNALSYM ED_EDIT_MODE_INSERT}
  8813. ED_EDIT_MODE_CRASH_RECORD = ED_BASE+662;
  8814. {$EXTERNALSYM ED_EDIT_MODE_CRASH_RECORD}
  8815. ED_EDIT_MODE_BOOKMARK_TIME = ED_BASE+663;
  8816. {$EXTERNALSYM ED_EDIT_MODE_BOOKMARK_TIME}
  8817. ED_EDIT_MODE_BOOKMARK_CHAPTER = ED_BASE+664;
  8818. {$EXTERNALSYM ED_EDIT_MODE_BOOKMARK_CHAPTER}
  8819. ED_EDIT_MASTER = ED_BASE+666;
  8820. {$EXTERNALSYM ED_EDIT_MASTER}
  8821. ED_EDIT_TRACK = ED_BASE+667;
  8822. {$EXTERNALSYM ED_EDIT_TRACK}
  8823. // can be one of the following possible OR'd values:
  8824. // ED_VIDEO, ED_AUDIO_1 thru ED_AUDIO_24 (or ED_AUDIO_ALL)
  8825. EDED_EDIT_SRC_INPOINT = ED_BASE+668;
  8826. {$EXTERNALSYM EDED_EDIT_SRC_INPOINT}
  8827. ED_EDIT_SRC_OUTPOINT = ED_BASE+669;
  8828. {$EXTERNALSYM ED_EDIT_SRC_OUTPOINT}
  8829. ED_EDIT_REC_INPOINT = ED_BASE+670;
  8830. {$EXTERNALSYM ED_EDIT_REC_INPOINT}
  8831. ED_EDIT_REC_OUTPOINT = ED_BASE+671;
  8832. {$EXTERNALSYM ED_EDIT_REC_OUTPOINT}
  8833. ED_EDIT_REHEARSE_MODE = ED_BASE+672;
  8834. {$EXTERNALSYM ED_EDIT_REHEARSE_MODE}
  8835. // can be one of the following possible values:
  8836. ED_EDIT_BVB = ED_BASE+673;
  8837. {$EXTERNALSYM ED_EDIT_BVB}
  8838. ED_EDIT_VBV = ED_BASE+674;
  8839. {$EXTERNALSYM ED_EDIT_VBV}
  8840. ED_EDIT_VVV = ED_BASE+675;
  8841. {$EXTERNALSYM ED_EDIT_VVV}
  8842. ED_EDIT_PERFORM = ED_BASE+676;
  8843. {$EXTERNALSYM ED_EDIT_PERFORM}
  8844. // Set this property to OATRUE to kill the edit if in progress
  8845. ED_EDIT_ABORT = ED_BASE+677;
  8846. {$EXTERNALSYM ED_EDIT_ABORT}
  8847. // how long to wait for edit to complete
  8848. ED_EDIT_TIMEOUT = ED_BASE+678;
  8849. {$EXTERNALSYM ED_EDIT_TIMEOUT}
  8850. // This property causes the device to seek to a point specified by
  8851. // ED_EDIT_SEEK_MODE (see below). NOTE: Only one event at a time can seek.
  8852. ED_EDIT_SEEK = ED_BASE+679;
  8853. {$EXTERNALSYM ED_EDIT_SEEK}
  8854. ED_EDIT_SEEK_MODE = ED_BASE+680;
  8855. {$EXTERNALSYM ED_EDIT_SEEK_MODE}
  8856. //possible values:
  8857. ED_EDIT_SEEK_EDIT_IN = ED_BASE+681;
  8858. {$EXTERNALSYM ED_EDIT_SEEK_EDIT_IN}
  8859. ED_EDIT_SEEK_EDIT_OUT = ED_BASE+682;
  8860. {$EXTERNALSYM ED_EDIT_SEEK_EDIT_OUT}
  8861. ED_EDIT_SEEK_PREROLL = ED_BASE+683;
  8862. {$EXTERNALSYM ED_EDIT_SEEK_PREROLL}
  8863. ED_EDIT_SEEK_PREROLL_CT = ED_BASE+684;
  8864. {$EXTERNALSYM ED_EDIT_SEEK_PREROLL_CT}
  8865. ED_EDIT_SEEK_BOOKMARK = ED_BASE+685;
  8866. {$EXTERNALSYM ED_EDIT_SEEK_BOOKMARK}
  8867. ED_EDIT_OFFSET = ED_BASE+686;
  8868. {$EXTERNALSYM ED_EDIT_OFFSET}
  8869. ED_EDIT_PREREAD = ED_BASE+815;
  8870. {$EXTERNALSYM ED_EDIT_PREREAD}
  8871. //
  8872. // Some error codes:
  8873. //
  8874. // device could be in local mode
  8875. ED_ERR_DEVICE_NOT_READY = ED_BASE+700;
  8876. {$EXTERNALSYM ED_ERR_DEVICE_NOT_READY}
  8877. // **************************************************
  8878. //
  8879. // New constants added for implementation of DVCR
  8880. //
  8881. // **************************************************
  8882. //
  8883. // New Device type (a DV has two subunits: camera and VCR)
  8884. //
  8885. ED_DEVTYPE_CAMERA = ED_BASE+900;
  8886. {$EXTERNALSYM ED_DEVTYPE_CAMERA}
  8887. ED_DEVTYPE_TUNER = ED_BASE+901;
  8888. {$EXTERNALSYM ED_DEVTYPE_TUNER}
  8889. ED_DEVTYPE_DVHS = ED_BASE+902;
  8890. {$EXTERNALSYM ED_DEVTYPE_DVHS}
  8891. ED_DEVTYPE_UNKNOWN = ED_BASE+903; // Driver cannot determine the device type
  8892. {$EXTERNALSYM ED_DEVTYPE_UNKNOWN}
  8893. ED_DEVTYPE_CAMERA_STORAGE = ED_BASE+1034; // Storage for digital still images, short video files, etc.
  8894. {$EXTERNALSYM ED_DEVTYPE_CAMERA_STORAGE}
  8895. ED_DEVTYPE_DTV = ED_BASE+1035; // DTV with serial bus interface
  8896. {$EXTERNALSYM ED_DEVTYPE_DTV}
  8897. ED_DEVTYPE_PC_VIRTUAL = ED_BASE+1036; // Emulated device (virtual) on a PC
  8898. {$EXTERNALSYM ED_DEVTYPE_PC_VIRTUAL}
  8899. //
  8900. // Unknownn capability
  8901. // Instead of return E_NOTIMPL, or S_OK with OAFALSE, it may return S_OK with _UNKNOWN
  8902. //
  8903. ED_CAPABILITY_UNKNOWN = ED_BASE+910;
  8904. {$EXTERNALSYM ED_CAPABILITY_UNKNOWN}
  8905. //
  8906. // Send raw 1394/AVC extenal device command via GetTransportBasicParameters()
  8907. // This is specifically for a 1394 AVC device connected with DEV_PORT_1394.
  8908. //
  8909. ED_RAW_EXT_DEV_CMD = ED_BASE+920;
  8910. {$EXTERNALSYM ED_RAW_EXT_DEV_CMD}
  8911. //
  8912. // MEDIUM INFO
  8913. //
  8914. ED_MEDIA_VHSC = ED_BASE+925; // New media type
  8915. {$EXTERNALSYM ED_MEDIA_VHSC}
  8916. ED_MEDIA_UNKNOWN = ED_BASE+926; // Unknown media
  8917. {$EXTERNALSYM ED_MEDIA_UNKNOWN}
  8918. ED_MEDIA_NOT_PRESENT = ED_BASE+927;
  8919. {$EXTERNALSYM ED_MEDIA_NOT_PRESENT}
  8920. //
  8921. // Device Control command that can result in pending state.
  8922. //
  8923. ED_CONTROL_HEVENT_GET = ED_BASE+928; // To get a sychronous event handle
  8924. {$EXTERNALSYM ED_CONTROL_HEVENT_GET}
  8925. ED_CONTROL_HEVENT_RELEASE = ED_BASE+929; // To release sychronous event handle must match what it got
  8926. {$EXTERNALSYM ED_CONTROL_HEVENT_RELEASE}
  8927. ED_DEV_REMOVED_HEVENT_GET = ED_BASE+960; // To be a notify event and will be signal if device is removed.
  8928. {$EXTERNALSYM ED_DEV_REMOVED_HEVENT_GET}
  8929. ED_DEV_REMOVED_HEVENT_RELEASE = ED_BASE+961; // Release this event handle
  8930. {$EXTERNALSYM ED_DEV_REMOVED_HEVENT_RELEASE}
  8931. //
  8932. // TRANSPORT STATE
  8933. //
  8934. ED_NOTIFY_HEVENT_GET = ED_BASE+930; // To get a sychronous event handle
  8935. {$EXTERNALSYM ED_NOTIFY_HEVENT_GET}
  8936. ED_NOTIFY_HEVENT_RELEASE = ED_BASE+931; // To release sychronous event handle must match what it got
  8937. {$EXTERNALSYM ED_NOTIFY_HEVENT_RELEASE}
  8938. ED_MODE_CHANGE_NOTIFY = ED_BASE+932; // This is asynchronous operation, wait for event.
  8939. {$EXTERNALSYM ED_MODE_CHANGE_NOTIFY}
  8940. ED_MODE_PLAY_FASTEST_FWD = ED_BASE+933;
  8941. {$EXTERNALSYM ED_MODE_PLAY_FASTEST_FWD}
  8942. ED_MODE_PLAY_SLOWEST_FWD = ED_BASE+934;
  8943. {$EXTERNALSYM ED_MODE_PLAY_SLOWEST_FWD}
  8944. ED_MODE_PLAY_FASTEST_REV = ED_BASE+935;
  8945. {$EXTERNALSYM ED_MODE_PLAY_FASTEST_REV}
  8946. ED_MODE_PLAY_SLOWEST_REV = ED_BASE+936;
  8947. {$EXTERNALSYM ED_MODE_PLAY_SLOWEST_REV}
  8948. ED_MODE_WIND = ED_BASE+937;
  8949. {$EXTERNALSYM ED_MODE_WIND}
  8950. ED_MODE_REW_FASTEST = ED_BASE+938; // High speed rewind
  8951. {$EXTERNALSYM ED_MODE_REW_FASTEST}
  8952. ED_MODE_REV_PLAY = ED_BASE+939; // x1 speed reverse play
  8953. {$EXTERNALSYM ED_MODE_REV_PLAY}
  8954. //
  8955. // Additional play modes (added post Windows XP)
  8956. //
  8957. ED_MODE_PLAY_SLOW_FWD_6 = ED_BASE+1001; // Slow forward
  8958. {$EXTERNALSYM ED_MODE_PLAY_SLOW_FWD_6}
  8959. ED_MODE_PLAY_SLOW_FWD_5 = ED_BASE+1002;
  8960. {$EXTERNALSYM ED_MODE_PLAY_SLOW_FWD_5}
  8961. ED_MODE_PLAY_SLOW_FWD_4 = ED_BASE+1003;
  8962. {$EXTERNALSYM ED_MODE_PLAY_SLOW_FWD_4}
  8963. ED_MODE_PLAY_SLOW_FWD_3 = ED_BASE+1004;
  8964. {$EXTERNALSYM ED_MODE_PLAY_SLOW_FWD_3}
  8965. ED_MODE_PLAY_SLOW_FWD_2 = ED_BASE+1005;
  8966. {$EXTERNALSYM ED_MODE_PLAY_SLOW_FWD_2}
  8967. ED_MODE_PLAY_SLOW_FWD_1 = ED_BASE+1006;
  8968. {$EXTERNALSYM ED_MODE_PLAY_SLOW_FWD_1}
  8969. ED_MODE_PLAY_FAST_FWD_1 = ED_BASE+1007; // Fast forward
  8970. {$EXTERNALSYM ED_MODE_PLAY_FAST_FWD_1}
  8971. ED_MODE_PLAY_FAST_FWD_2 = ED_BASE+1008;
  8972. {$EXTERNALSYM ED_MODE_PLAY_FAST_FWD_2}
  8973. ED_MODE_PLAY_FAST_FWD_3 = ED_BASE+1009;
  8974. {$EXTERNALSYM ED_MODE_PLAY_FAST_FWD_3}
  8975. ED_MODE_PLAY_FAST_FWD_4 = ED_BASE+1010;
  8976. {$EXTERNALSYM ED_MODE_PLAY_FAST_FWD_4}
  8977. ED_MODE_PLAY_FAST_FWD_5 = ED_BASE+1011;
  8978. {$EXTERNALSYM ED_MODE_PLAY_FAST_FWD_5}
  8979. ED_MODE_PLAY_FAST_FWD_6 = ED_BASE+1012;
  8980. {$EXTERNALSYM ED_MODE_PLAY_FAST_FWD_6}
  8981. ED_MODE_PLAY_SLOW_REV_6 = ED_BASE+1013; // Slow reverse
  8982. {$EXTERNALSYM ED_MODE_PLAY_SLOW_REV_6}
  8983. ED_MODE_PLAY_SLOW_REV_5 = ED_BASE+1014;
  8984. {$EXTERNALSYM ED_MODE_PLAY_SLOW_REV_5}
  8985. ED_MODE_PLAY_SLOW_REV_4 = ED_BASE+1015;
  8986. {$EXTERNALSYM ED_MODE_PLAY_SLOW_REV_4}
  8987. ED_MODE_PLAY_SLOW_REV_3 = ED_BASE+1016;
  8988. {$EXTERNALSYM ED_MODE_PLAY_SLOW_REV_3}
  8989. ED_MODE_PLAY_SLOW_REV_2 = ED_BASE+1017;
  8990. {$EXTERNALSYM ED_MODE_PLAY_SLOW_REV_2}
  8991. ED_MODE_PLAY_SLOW_REV_1 = ED_BASE+1018;
  8992. {$EXTERNALSYM ED_MODE_PLAY_SLOW_REV_1}
  8993. ED_MODE_PLAY_FAST_REV_1 = ED_BASE+1019; // Fast reverse
  8994. {$EXTERNALSYM ED_MODE_PLAY_FAST_REV_1}
  8995. ED_MODE_PLAY_FAST_REV_2 = ED_BASE+1020;
  8996. {$EXTERNALSYM ED_MODE_PLAY_FAST_REV_2}
  8997. ED_MODE_PLAY_FAST_REV_3 = ED_BASE+1021;
  8998. {$EXTERNALSYM ED_MODE_PLAY_FAST_REV_3}
  8999. ED_MODE_PLAY_FAST_REV_4 = ED_BASE+1022;
  9000. {$EXTERNALSYM ED_MODE_PLAY_FAST_REV_4}
  9001. ED_MODE_PLAY_FAST_REV_5 = ED_BASE+1023;
  9002. {$EXTERNALSYM ED_MODE_PLAY_FAST_REV_5}
  9003. ED_MODE_PLAY_FAST_REV_6 = ED_BASE+1024;
  9004. {$EXTERNALSYM ED_MODE_PLAY_FAST_REV_6}
  9005. ED_MODE_REVERSE = ED_MODE_REV_PLAY; // Same as Reverse playback
  9006. {$EXTERNALSYM ED_MODE_REVERSE}
  9007. ED_MODE_REVERSE_FREEZE = ED_BASE+1025; // Pause at reverse playback
  9008. {$EXTERNALSYM ED_MODE_REVERSE_FREEZE}
  9009. ED_MODE_PLAY_SLOW_FWD_X = ED_BASE+1026; // Possible response for a trick play
  9010. {$EXTERNALSYM ED_MODE_PLAY_SLOW_FWD_X}
  9011. ED_MODE_PLAY_FAST_FWD_X = ED_BASE+1027; // Possible response for a trick play
  9012. {$EXTERNALSYM ED_MODE_PLAY_FAST_FWD_X}
  9013. ED_MODE_PLAY_SLOW_REV_X = ED_BASE+1028; // Possible response for a trick play
  9014. {$EXTERNALSYM ED_MODE_PLAY_SLOW_REV_X}
  9015. ED_MODE_PLAY_FAST_REV_X = ED_BASE+1029; // Possible response for a trick play
  9016. {$EXTERNALSYM ED_MODE_PLAY_FAST_REV_X}
  9017. ED_MODE_STOP_START = ED_BASE+1030; // Indicate stopping at the begin of a tape
  9018. {$EXTERNALSYM ED_MODE_STOP_START}
  9019. ED_MODE_STOP_END = ED_BASE+1031; // Indicate stopping at the end of a tape
  9020. {$EXTERNALSYM ED_MODE_STOP_END}
  9021. ED_MODE_STOP_EMERGENCY = ED_BASE+1032; // Indicate stopping due to an emergency
  9022. {$EXTERNALSYM ED_MODE_STOP_EMERGENCY}
  9023. //
  9024. // TRANSPOSRTBASIC: input and output signal
  9025. //
  9026. ED_TRANSBASIC_INPUT_SIGNAL = ED_BASE+940;
  9027. {$EXTERNALSYM ED_TRANSBASIC_INPUT_SIGNAL}
  9028. ED_TRANSBASIC_OUTPUT_SIGNAL = ED_BASE+941;
  9029. {$EXTERNALSYM ED_TRANSBASIC_OUTPUT_SIGNAL}
  9030. ED_TRANSBASIC_SIGNAL_525_60_SD = ED_BASE+942;
  9031. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_525_60_SD}
  9032. ED_TRANSBASIC_SIGNAL_525_60_SDL = ED_BASE+943;
  9033. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_525_60_SDL}
  9034. ED_TRANSBASIC_SIGNAL_625_50_SD = ED_BASE+944;
  9035. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_SD}
  9036. ED_TRANSBASIC_SIGNAL_625_50_SDL = ED_BASE+945;
  9037. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_SDL}
  9038. ED_TRANSBASIC_SIGNAL_MPEG2TS = ED_BASE+946;
  9039. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_MPEG2TS}
  9040. ED_TRANSBASIC_SIGNAL_625_60_HD = ED_BASE+947;
  9041. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_60_HD}
  9042. ED_TRANSBASIC_SIGNAL_625_50_HD = ED_BASE+948;
  9043. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_HD}
  9044. ED_TRANSBASIC_SIGNAL_2500_60_MPEG = ED_BASE+980;
  9045. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_2500_60_MPEG}
  9046. ED_TRANSBASIC_SIGNAL_1250_60_MPEG = ED_BASE+981;
  9047. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_1250_60_MPEG}
  9048. ED_TRANSBASIC_SIGNAL_0625_60_MPEG = ED_BASE+982;
  9049. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_0625_60_MPEG}
  9050. ED_TRANSBASIC_SIGNAL_2500_50_MPEG = ED_BASE+985;
  9051. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_2500_50_MPEG}
  9052. ED_TRANSBASIC_SIGNAL_1250_50_MPEG = ED_BASE+986;
  9053. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_1250_50_MPEG}
  9054. ED_TRANSBASIC_SIGNAL_0625_50_MPEG = ED_BASE+987;
  9055. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_0625_50_MPEG}
  9056. ED_TRANSBASIC_SIGNAL_UNKNOWN = ED_BASE+990;
  9057. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_UNKNOWN}
  9058. ED_TRANSBASIC_SIGNAL_525_60_DV25 = ED_BASE+991;
  9059. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_525_60_DV25}
  9060. ED_TRANSBASIC_SIGNAL_625_50_DV25 = ED_BASE+992;
  9061. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_DV25}
  9062. ED_TRANSBASIC_SIGNAL_525_60_DV50 = ED_BASE+993;
  9063. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_525_60_DV50}
  9064. ED_TRANSBASIC_SIGNAL_625_50_DV50 = ED_BASE+994;
  9065. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_625_50_DV50}
  9066. ED_TRANSBASIC_SIGNAL_HD_60_DVH1 = ED_BASE+995; // DVCPRO 100: 1080i or 720p
  9067. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_HD_60_DVH1}
  9068. ED_TRANSBASIC_SIGNAL_HD_50_DVH1 = ED_BASE+996; // DVCPRO 100: 1080i only
  9069. {$EXTERNALSYM ED_TRANSBASIC_SIGNAL_HD_50_DVH1}
  9070. //
  9071. // TIMECODE/AbsoluteTrackNumber/RealTimeCounter read/seek/write
  9072. //
  9073. ED_DEVCAP_TIMECODE_SEEK = ED_BASE+950;
  9074. {$EXTERNALSYM ED_DEVCAP_TIMECODE_SEEK}
  9075. ED_DEVCAP_ATN_READ = ED_BASE+951;
  9076. {$EXTERNALSYM ED_DEVCAP_ATN_READ}
  9077. ED_DEVCAP_ATN_SEEK = ED_BASE+952;
  9078. {$EXTERNALSYM ED_DEVCAP_ATN_SEEK}
  9079. ED_DEVCAP_ATN_WRITE = ED_BASE+953;
  9080. {$EXTERNALSYM ED_DEVCAP_ATN_WRITE}
  9081. ED_DEVCAP_RTC_READ = ED_BASE+954;
  9082. {$EXTERNALSYM ED_DEVCAP_RTC_READ}
  9083. ED_DEVCAP_RTC_SEEK = ED_BASE+955;
  9084. {$EXTERNALSYM ED_DEVCAP_RTC_SEEK}
  9085. ED_DEVCAP_RTC_WRITE = ED_BASE+956;
  9086. {$EXTERNALSYM ED_DEVCAP_RTC_WRITE}
  9087. //
  9088. // Basic parameter
  9089. //
  9090. ED_TIMEREF_ATN = ED_BASE+958;
  9091. {$EXTERNALSYM ED_TIMEREF_ATN}
  9092. //
  9093. // GUID used to identify a class driver
  9094. //
  9095. MSTapeDeviceGUID : TGUID = '{8C0F6AF2-0EDB-44c1-8AEB-59040BD830ED}'; // MSTapeDeviceGUID
  9096. {$EXTERNALSYM MSTapeDeviceGUID}
  9097. (*==========================================================================;
  9098. *
  9099. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  9100. *
  9101. * File: aviriff.h
  9102. *
  9103. ***************************************************************************)
  9104. type
  9105. (*+
  9106. *
  9107. * Structures and defines for the RIFF AVI file format extended to
  9108. * handle very large/long files
  9109. *
  9110. *-=====================================================================*)
  9111. {
  9112. #if !defined NUMELMS
  9113. #define NUMELMS(aa) (sizeof(aa)/sizeof((aa)[0]))
  9114. #endif
  9115. }
  9116. // all structures in this file are packed on word boundaries
  9117. //
  9118. (*
  9119. * heres the general layout of an AVI riff file (new format)
  9120. *
  9121. * RIFF (3F??????) AVI <- not more than 1 GB in size
  9122. * LIST (size) hdrl
  9123. * avih (0038)
  9124. * LIST (size) strl
  9125. * strh (0038)
  9126. * strf (????)
  9127. * indx (3ff8) <- size may vary, should be sector sized
  9128. * LIST (size) strl
  9129. * strh (0038)
  9130. * strf (????)
  9131. * indx (3ff8) <- size may vary, should be sector sized
  9132. * LIST (size) odml
  9133. * dmlh (????)
  9134. * JUNK (size) <- fill to align to sector - 12
  9135. * LIST (7f??????) movi <- aligned on sector - 12
  9136. * 00dc (size) <- sector aligned
  9137. * 01wb (size) <- sector aligned
  9138. * ix00 (size) <- sector aligned
  9139. * idx1 (00??????) <- sector aligned
  9140. * RIFF (7F??????) AVIX
  9141. * JUNK (size) <- fill to align to sector -12
  9142. * LIST (size) movi
  9143. * 00dc (size) <- sector aligned
  9144. * RIFF (7F??????) AVIX <- not more than 2GB in size
  9145. * JUNK (size) <- fill to align to sector - 12
  9146. * LIST (size) movi
  9147. * 00dc (size) <- sector aligned
  9148. *
  9149. *-===================================================================*)
  9150. //
  9151. // structures for manipulating RIFF headers
  9152. //
  9153. {
  9154. #define FCC(ch4) ((((DWORD)(ch4) & 0xFF) << 24) | \
  9155. (((DWORD)(ch4) & 0xFF00) << 8) | \
  9156. (((DWORD)(ch4) & 0xFF0000) >> 8) | \
  9157. (((DWORD)(ch4) & 0xFF000000) >> 24))
  9158. }
  9159. PRIFFChunk = ^TRIFFChunk;
  9160. _riffchunk = record
  9161. fcc: FOURCC;
  9162. cb: DWORD;
  9163. end;
  9164. {$EXTERNALSYM _riffchunk}
  9165. RIFFCHUNK = _riffchunk;
  9166. {$EXTERNALSYM RIFFCHUNK}
  9167. LPRIFFCHUNK = ^RIFFCHUNK;
  9168. {$EXTERNALSYM LPRIFFCHUNK}
  9169. TRIFFChunk = _riffchunk;
  9170. PRIFFList = ^TRIFFList;
  9171. _rifflist = record
  9172. fcc: FOURCC;
  9173. cb: DWORD;
  9174. fccListType: FOURCC;
  9175. end;
  9176. {$EXTERNALSYM _rifflist}
  9177. RIFFLIST = _rifflist;
  9178. {$EXTERNALSYM RIFFLIST}
  9179. LPRIFFLIST = ^RIFFLIST;
  9180. {$EXTERNALSYM LPRIFFLIST}
  9181. TRIFFList = _rifflist;
  9182. {
  9183. #define RIFFROUND(cb) ((cb) + ((cb)&1))
  9184. #define RIFFNEXT(pChunk) (LPRIFFCHUNK)((LPBYTE)(pChunk) \
  9185. + sizeof(RIFFCHUNK) \
  9186. + RIFFROUND(((LPRIFFCHUNK)pChunk)->cb))
  9187. }
  9188. //
  9189. // ==================== avi header structures ===========================
  9190. //
  9191. // main header for the avi file (compatibility header)
  9192. const
  9193. ckidMAINAVIHEADER = $68697661;// 'avih'
  9194. {$EXTERNALSYM ckidMAINAVIHEADER}
  9195. type
  9196. _avimainheader = record
  9197. fcc: FOURCC; // 'avih'
  9198. cb: DWORD; // size of this structure -8
  9199. dwMicroSecPerFrame: DWORD; // frame display rate (or 0L)
  9200. dwMaxBytesPerSec: DWORD; // max. transfer rate
  9201. dwPaddingGranularity: DWORD; // pad to multiples of this size; normally 2K.
  9202. dwFlags: DWORD; // the ever-present flags
  9203. dwTotalFrames: DWORD; // # frames in first movi list
  9204. dwInitialFrames: DWORD;
  9205. dwStreams: DWORD;
  9206. dwSuggestedBufferSize: DWORD;
  9207. dwWidth: DWORD;
  9208. dwHeight: DWORD;
  9209. dwReserved: array[0..3] of DWORD;
  9210. end;
  9211. {$EXTERNALSYM _avimainheader}
  9212. AVIMAINHEADER = _avimainheader;
  9213. {$EXTERNALSYM AVIMAINHEADER}
  9214. TAVIMainHeader = _avimainheader;
  9215. const
  9216. AVIF_HASINDEX = $00000010; // Index at end of file?
  9217. {$EXTERNALSYM AVIF_HASINDEX}
  9218. AVIF_MUSTUSEINDEX = $00000020;
  9219. {$EXTERNALSYM AVIF_MUSTUSEINDEX}
  9220. AVIF_ISINTERLEAVED = $00000100;
  9221. {$EXTERNALSYM AVIF_ISINTERLEAVED}
  9222. AVIF_TRUSTCKTYPE = $00000800; // Use CKType to find key frames
  9223. {$EXTERNALSYM AVIF_TRUSTCKTYPE}
  9224. AVIF_WASCAPTUREFILE = $00010000;
  9225. {$EXTERNALSYM AVIF_WASCAPTUREFILE}
  9226. AVIF_COPYRIGHTED = $00020000;
  9227. {$EXTERNALSYM AVIF_COPYRIGHTED}
  9228. ckidODML = $6C6D646F; //'odml'
  9229. {$EXTERNALSYM ckidODML}
  9230. ckidAVIEXTHEADER = $686C6D64; //'dmlh'
  9231. {$EXTERNALSYM ckidAVIEXTHEADER}
  9232. type
  9233. _aviextheader = record
  9234. fcc: FOURCC; // 'dmlh'
  9235. cb: DWORD; // size of this structure -8
  9236. dwGrandFrames: DWORD; // total number of frames in the file
  9237. dwFuture: array[0..60] of DWORD; // to be defined later
  9238. end;
  9239. {$EXTERNALSYM _aviextheader}
  9240. AVIEXTHEADER = _aviextheader;
  9241. {$EXTERNALSYM AVIEXTHEADER}
  9242. TAVIExtHeader = _aviextheader;
  9243. //
  9244. // structure of an AVI stream header riff chunk
  9245. //
  9246. const
  9247. ckidSTREAMLIST = $6C727473; //'strl'
  9248. {$EXTERNALSYM ckidSTREAMLIST}
  9249. ckidSTREAMHEADER = $68727473; //'strh'
  9250. {$EXTERNALSYM ckidSTREAMHEADER}
  9251. type
  9252. _avistreamheader = record
  9253. fcc: FOURCC; // 'strh'
  9254. cb: DWORD; // size of this structure - 8
  9255. fccType: FOURCC; // stream type codes
  9256. fccHandler: FOURCC;
  9257. dwFlags: DWORD;
  9258. wPriority: WORD;
  9259. wLanguage: WORD;
  9260. dwInitialFrames: DWORD;
  9261. dwScale: DWORD;
  9262. dwRate: DWORD; // dwRate/dwScale is stream tick rate in ticks/sec
  9263. dwStart: DWORD;
  9264. dwLength: DWORD;
  9265. dwSuggestedBufferSize: DWORD;
  9266. dwQuality: DWORD;
  9267. dwSampleSize: DWORD;
  9268. rcFrame: record
  9269. left: SmallInt;
  9270. top: SmallInt;
  9271. right: SmallInt;
  9272. bottom: SmallInt;
  9273. end;
  9274. end;
  9275. {$EXTERNALSYM _avistreamheader}
  9276. AVISTREAMHEADER = _avistreamheader;
  9277. {$EXTERNALSYM AVISTREAMHEADER}
  9278. TAVIStreamHeader = _avistreamheader;
  9279. const
  9280. streamtypeVIDEO = $73646976; //'vids'
  9281. {$EXTERNALSYM streamtypeVIDEO}
  9282. streamtypeAUDIO = $73647561; //'auds'
  9283. {$EXTERNALSYM streamtypeAUDIO}
  9284. streamtypeMIDI = $7364696D; //'mids'
  9285. {$EXTERNALSYM streamtypeMIDI}
  9286. streamtypeTEXT = $73747874; //'txts'
  9287. {$EXTERNALSYM streamtypeTEXT}
  9288. AVISF_DISABLED = $00000001;
  9289. {$EXTERNALSYM AVISF_DISABLED}
  9290. AVISF_VIDEO_PALCHANGES = $00010000;
  9291. {$EXTERNALSYM AVISF_VIDEO_PALCHANGES}
  9292. //
  9293. // structure of an AVI stream format chunk
  9294. //
  9295. ckidSTREAMFORMAT = $66727473; //'strf'
  9296. {$EXTERNALSYM ckidSTREAMFORMAT}
  9297. //
  9298. // avi stream formats are different for each stream type
  9299. //
  9300. // BITMAPINFOHEADER for video streams
  9301. // WAVEFORMATEX or PCMWAVEFORMAT for audio streams
  9302. // nothing for text streams
  9303. // nothing for midi streams
  9304. //
  9305. // structure of old style AVI index
  9306. //
  9307. ckidAVIOLDINDEX = $31786469;//'idx1'
  9308. {$EXTERNALSYM ckidAVIOLDINDEX}
  9309. type
  9310. _avioldindex = record
  9311. fcc: FOURCC; // 'idx1'
  9312. cb: DWORD; // size of this structure -8
  9313. aIndex: array[0..0] of record
  9314. dwChunkId: DWORD;
  9315. dwFlags: DWORD;
  9316. dwOffset: DWORD; // offset of riff chunk header for the data
  9317. dwSize: DWORD; // size of the data (excluding riff header size)
  9318. end; // size of this array
  9319. end;
  9320. {$EXTERNALSYM _avioldindex}
  9321. AVIOLDINDEX = _avioldindex;
  9322. {$EXTERNALSYM AVIOLDINDEX}
  9323. TAVIOldIndex = _avioldindex;
  9324. const
  9325. AVIIF_LIST = $00000001;
  9326. {$EXTERNALSYM AVIIF_LIST}
  9327. AVIIF_KEYFRAME = $00000010;
  9328. {$EXTERNALSYM AVIIF_KEYFRAME}
  9329. AVIIF_NO_TIME = $00000100;
  9330. {$EXTERNALSYM AVIIF_NO_TIME}
  9331. AVIIF_COMPRESSOR = $0FFF0000; // unused?
  9332. {$EXTERNALSYM AVIIF_COMPRESSOR}
  9333. // old timecode structure
  9334. //typedef union _timecode {
  9335. // struct {
  9336. // WORD wFrameRate;
  9337. // WORD wFrameFract;
  9338. // LONG cFrames;
  9339. // };
  9340. // DWORDLONG qw;
  9341. // } TIMECODE;
  9342. //
  9343. // struct for all the SMPTE timecode info
  9344. //
  9345. TIMECODE_RATE_30DROP = 0; // this MUST be zero
  9346. {$EXTERNALSYM TIMECODE_RATE_30DROP}
  9347. type
  9348. _timecodedata = record
  9349. time: TTimeCode;
  9350. dwSMPTEflags: DWORD;
  9351. dwUser: DWORD;
  9352. end;
  9353. {$EXTERNALSYM _timecodedata}
  9354. TIMECODEDATA = _timecodedata;
  9355. {$EXTERNALSYM TIMECODEDATA}
  9356. TTimeCodeData = _timecodedata;
  9357. // dwSMPTEflags masks/values
  9358. //
  9359. const
  9360. TIMECODE_SMPTE_BINARY_GROUP = $07;
  9361. {$EXTERNALSYM TIMECODE_SMPTE_BINARY_GROUP}
  9362. TIMECODE_SMPTE_COLOR_FRAME = $08;
  9363. {$EXTERNALSYM TIMECODE_SMPTE_COLOR_FRAME}
  9364. //
  9365. // ============ structures for new style AVI indexes =================
  9366. //
  9367. // index type codes
  9368. //
  9369. AVI_INDEX_OF_INDEXES = $00;
  9370. {$EXTERNALSYM AVI_INDEX_OF_INDEXES}
  9371. AVI_INDEX_OF_CHUNKS = $01;
  9372. {$EXTERNALSYM AVI_INDEX_OF_CHUNKS}
  9373. AVI_INDEX_OF_TIMED_CHUNKS = $02;
  9374. {$EXTERNALSYM AVI_INDEX_OF_TIMED_CHUNKS}
  9375. AVI_INDEX_OF_SUB_2FIELD = $03;
  9376. {$EXTERNALSYM AVI_INDEX_OF_SUB_2FIELD}
  9377. AVI_INDEX_IS_DATA = $80;
  9378. {$EXTERNALSYM AVI_INDEX_IS_DATA}
  9379. // index subtype codes
  9380. //
  9381. AVI_INDEX_SUB_DEFAULT = $00;
  9382. {$EXTERNALSYM AVI_INDEX_SUB_DEFAULT}
  9383. // INDEX_OF_CHUNKS subtype codes
  9384. //
  9385. AVI_INDEX_SUB_2FIELD = $01;
  9386. {$EXTERNALSYM AVI_INDEX_SUB_2FIELD}
  9387. // meta structure of all avi indexes
  9388. //
  9389. type
  9390. _avimetaindex = record
  9391. fcc: FOURCC;
  9392. cb: UINT;
  9393. wLongsPerEntry: WORD;
  9394. bIndexSubType: BYTE;
  9395. bIndexType: BYTE;
  9396. nEntriesInUse: DWORD;
  9397. dwChunkId: DWORD;
  9398. dwReserved: array[0..2] of DWORD;
  9399. adwIndex: array[0..0] of DWORD;
  9400. end;
  9401. {$EXTERNALSYM _avimetaindex}
  9402. AVIMETAINDEX = _avimetaindex;
  9403. {$EXTERNALSYM AVIMETAINDEX}
  9404. TAVIMetaIndex = _avimetaindex;
  9405. const
  9406. STDINDEXSIZE = $4000;
  9407. {$EXTERNALSYM STDINDEXSIZE}
  9408. {
  9409. #define NUMINDEX(wLongsPerEntry) ((STDINDEXSIZE-32)/4/(wLongsPerEntry))
  9410. #define NUMINDEXFILL(wLongsPerEntry) ((STDINDEXSIZE/4) - NUMINDEX(wLongsPerEntry))
  9411. }
  9412. // structure of a super index (INDEX_OF_INDEXES)
  9413. //
  9414. ckidAVISUPERINDEX = $78646E69;//'indx'
  9415. {$EXTERNALSYM ckidAVISUPERINDEX}
  9416. type
  9417. _avisuperindex = record
  9418. fcc: FOURCC; // 'indx'
  9419. cb: UINT; // size of this structure
  9420. wLongsPerEntry: WORD; // ==4
  9421. bIndexSubType: BYTE; // ==0 (frame index) or AVI_INDEX_SUB_2FIELD
  9422. bIndexType: BYTE; // ==AVI_INDEX_OF_INDEXES
  9423. nEntriesInUse: DWORD; // offset of next unused entry in aIndex
  9424. dwChunkId: DWORD; // chunk ID of chunks being indexed, (i.e. RGB8)
  9425. dwReserved: array[0..2] of DWORD; // must be 0
  9426. aIndex: array[0..3] of record
  9427. qwOffset: Int64; // 64 bit offset to sub index chunk
  9428. dwSize: DWORD; // 32 bit size of sub index chunk
  9429. dwDuration: DWORD; // time span of subindex chunk (in stream ticks)
  9430. end;
  9431. end;
  9432. {$EXTERNALSYM _avisuperindex}
  9433. AVISUPERINDEX = _avisuperindex;
  9434. {$EXTERNALSYM AVISUPERINDEX}
  9435. TAVISuperIndex = _avisuperindex;
  9436. //#define Valid_SUPERINDEX(pi) (*(DWORD *)(&((pi)->wLongsPerEntry)) == (4 | (AVI_INDEX_OF_INDEXES << 24)))
  9437. // struct of a standard index (AVI_INDEX_OF_CHUNKS)
  9438. //
  9439. _avistdindex_entry = record
  9440. dwOffset: DWORD; // 32 bit offset to data (points to data, not riff header)
  9441. dwSize: DWORD; // 31 bit size of data (does not include size of riff header), bit 31 is deltaframe bit
  9442. end;
  9443. {$EXTERNALSYM _avistdindex_entry}
  9444. AVISTDINDEX_ENTRY = _avistdindex_entry;
  9445. {$EXTERNALSYM AVISTDINDEX_ENTRY}
  9446. TAVIStdIndexEntry = _avistdindex_entry;
  9447. const
  9448. AVISTDINDEX_DELTAFRAME = $80000000; // Delta frames have the high bit set;
  9449. {$EXTERNALSYM AVISTDINDEX_DELTAFRAME}
  9450. AVISTDINDEX_SIZEMASK = not $80000000;
  9451. {$EXTERNALSYM AVISTDINDEX_SIZEMASK}
  9452. type
  9453. _avistdindex = record
  9454. fcc: FOURCC; // 'indx' or '##ix'
  9455. cb: UINT; // size of this structure
  9456. wLongsPerEntry: WORD; // ==2
  9457. bIndexSubType: BYTE; // ==0
  9458. bIndexType: BYTE; // ==AVI_INDEX_OF_CHUNKS
  9459. nEntriesInUse: DWORD; // offset of next unused entry in aIndex
  9460. dwChunkId: DWORD; // chunk ID of chunks being indexed, (i.e. RGB8)
  9461. qwBaseOffset: Int64; // base offset that all index intries are relative to
  9462. dwReserved_3: DWORD;
  9463. aIndex: array[0..2043] of TAVIStdIndexEntry;
  9464. end;
  9465. {$EXTERNALSYM _avistdindex}
  9466. AVISTDINDEX = _avistdindex;
  9467. {$EXTERNALSYM AVISTDINDEX}
  9468. TAVIStdIndex = _avistdindex;
  9469. // struct of a time variant standard index (AVI_INDEX_OF_TIMED_CHUNKS)
  9470. //
  9471. _avitimedindex_entry = record
  9472. dwOffset: DWORD; // 32 bit offset to data (points to data, not riff header)
  9473. dwSize: DWORD; // 31 bit size of data (does not include size of riff header) (high bit is deltaframe bit)
  9474. dwDuration: DWORD; // how much time the chunk should be played (in stream ticks)
  9475. end;
  9476. {$EXTERNALSYM _avitimedindex_entry}
  9477. AVITIMEDINDEX_ENTRY = _avitimedindex_entry;
  9478. {$EXTERNALSYM AVITIMEDINDEX_ENTRY}
  9479. TAVITimedIndexEntry = _avitimedindex_entry;
  9480. _avitimedindex = record
  9481. fcc: FOURCC; // 'indx' or '##ix'
  9482. cb: UINT; // size of this structure
  9483. wLongsPerEntry: WORD; // ==3
  9484. bIndexSubType: BYTE; // ==0
  9485. bIndexType: BYTE; // ==AVI_INDEX_OF_TIMED_CHUNKS
  9486. nEntriesInUse: DWORD; // offset of next unused entry in aIndex
  9487. dwChunkId: DWORD; // chunk ID of chunks being indexed, (i.e. RGB8)
  9488. qwBaseOffset: Int64; // base offset that all index intries are relative to
  9489. dwReserved_3: DWORD; // must be 0
  9490. aIndex: array[0..1361] of TAVITimedIndexEntry;
  9491. adwTrailingFill: array[0..2733] of DWORD; // to align struct to correct size
  9492. end;
  9493. {$EXTERNALSYM _avitimedindex}
  9494. AVITIMEDINDEX = _avitimedindex;
  9495. {$EXTERNALSYM AVITIMEDINDEX}
  9496. TAVITimedIndex = _avitimedindex;
  9497. // structure of a timecode stream
  9498. //
  9499. _avitimecodeindex = record
  9500. fcc: FOURCC; // 'indx' or '##ix'
  9501. cb: UINT; // size of this structure
  9502. wLongsPerEntry: WORD; // ==4
  9503. bIndexSubType: BYTE; // ==0
  9504. bIndexType: BYTE; // ==AVI_INDEX_IS_DATA
  9505. nEntriesInUse: DWORD; // offset of next unused entry in aIndex
  9506. dwChunkId: DWORD; // 'time'
  9507. dwReserved: array[0..2] of DWORD; // must be 0
  9508. aIndex: array[0..0] of TTimeCodeData;
  9509. end;
  9510. {$EXTERNALSYM _avitimecodeindex}
  9511. AVITIMECODEINDEX = _avitimecodeindex;
  9512. {$EXTERNALSYM AVITIMECODEINDEX}
  9513. TAviTimeCodeIndex = _avitimecodeindex;
  9514. // structure of a timecode discontinuity list (when wLongsPerEntry == 7)
  9515. //
  9516. _avitcdlindex_entry = record
  9517. dwTick: DWORD; // stream tick time that maps to this timecode value
  9518. time: TTimeCode;
  9519. dwSMPTEflags: DWORD;
  9520. dwUser: DWORD;
  9521. szReelId: array[0..11] of Char;
  9522. end;
  9523. {$EXTERNALSYM _avitcdlindex_entry}
  9524. AVITCDLINDEX_ENTRY = _avitcdlindex_entry;
  9525. {$EXTERNALSYM AVITCDLINDEX_ENTRY}
  9526. TAVITcdlIndexEntry = _avitcdlindex_entry;
  9527. _avitcdlindex = record
  9528. fcc: FOURCC; // 'indx' or '##ix'
  9529. cb: UINT; // size of this structure
  9530. wLongsPerEntry: WORD; // ==7 (must be 4 or more all 'tcdl' indexes
  9531. bIndexSubType: BYTE; // ==0
  9532. bIndexType: BYTE; // ==AVI_INDEX_IS_DATA
  9533. nEntriesInUse: DWORD; // offset of next unused entry in aIndex
  9534. dwChunkId: DWORD; // 'tcdl'
  9535. dwReserved: array[0..2] of DWORD; // must be 0
  9536. aIndex: array[0..583] of TAVITcdlIndexEntry;
  9537. adwTrailingFill: array[0..3511] of DWORD; // to align struct to correct size
  9538. end;
  9539. {$EXTERNALSYM _avitcdlindex}
  9540. AVITCDLINDEX = _avitcdlindex;
  9541. {$EXTERNALSYM AVITCDLINDEX}
  9542. TAVITcdlIndex = _avitcdlindex;
  9543. _avifieldindex_chunk = record
  9544. {$EXTERNALSYM _avifieldindex_chunk}
  9545. fcc: FOURCC; // 'ix##'
  9546. cb: DWORD; // size of this structure
  9547. wLongsPerEntry: WORD; // must be 3 (size of each entry in
  9548. // aIndex array)
  9549. bIndexSubType: BYTE; // AVI_INDEX_2FIELD
  9550. bIndexType: BYTE; // AVI_INDEX_OF_CHUNKS
  9551. nEntriesInUse: DWORD; //
  9552. dwChunkId: DWORD; // '##dc' or '##db'
  9553. qwBaseOffset: Int64; // offsets in aIndex array are relative to this
  9554. dwReserved3: DWORD; // must be 0
  9555. aIndex: array[0..0] of record
  9556. dwOffset: DWORD;
  9557. dwSize: DWORD; // size of all fields
  9558. dwOffsetField2: DWORD; // (bit 31 set for NON-keyframes)
  9559. end; // offset to second field
  9560. end;
  9561. AVIFIELDINDEX = _avifieldindex_chunk;
  9562. {$EXTERNALSYM AVIFIELDINDEX}
  9563. PAVIFIELDINDEX = ^AVIFIELDINDEX;
  9564. {$EXTERNALSYM PAVIFIELDINDEX}
  9565. TAVIFieldIndex = _avifieldindex_chunk;
  9566. (*==========================================================================;
  9567. *
  9568. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  9569. *
  9570. * File: evcode.h
  9571. *
  9572. ***************************************************************************)
  9573. const
  9574. //
  9575. // list of standard Quartz event codes and the expected params
  9576. //
  9577. // Event codes are broken into two groups
  9578. // -- system event codes
  9579. // -- extension event codes
  9580. // All system event codes are below EC_USER
  9581. EC_SYSTEMBASE = $00;
  9582. {$EXTERNALSYM EC_SYSTEMBASE}
  9583. EC_USER = $8000;
  9584. {$EXTERNALSYM EC_USER}
  9585. // System-defined event codes
  9586. // ==========================
  9587. //
  9588. // There are three types of system-defined event codes:
  9589. //
  9590. // 1. Those which are always passed through to the application
  9591. // (To be collected by calls to GetEvent or within WaitForCompletion.)
  9592. // (e.g. EC_ERRORABORT, EC_USERABORT.)
  9593. //
  9594. // 2. Those which are pure internal and will never be passed to
  9595. // the application. (e.g. EC_SHUTDOWN)
  9596. //
  9597. // 3. Those which have default handling. Default handing implies that
  9598. // the event is not passed to the application. However, default
  9599. // handling may be canceled by calling
  9600. // IMediaEvent::CancelDefaultHandling. If the default handling is
  9601. // cancelled in this way, then the message will be delivered to the
  9602. // application and the application must action it appropriately.
  9603. // Default handling can be restored by calling RestoreDefaultHandling.
  9604. //
  9605. // We will refer to these events as application, internal and defaulted
  9606. // events respectively.
  9607. //
  9608. // System-defined events may have interface pointers, BSTR's, etc passed
  9609. // as parameters. It is therefore essential that, for any message
  9610. // retrieved using GetEvent, a matching call to FreeEventParams is made
  9611. // to ensure that relevant interfaces are released and storage freed.
  9612. // Failure to call FreeEventParams will result in memory leaks, if not
  9613. // worse.
  9614. //
  9615. // Filters sending these messages to the filter graph should not AddRef()
  9616. // any interfaces that they may pass as parameters. The filter graph
  9617. // manager will AddRef them if required. E.g. if the event is to be queued
  9618. // for the application or queued to a worker thread.
  9619. // Each event listed below is immediately followed by a parameter list
  9620. // detailing the types of the parameters associated with the message,
  9621. // and an indication of whether the message is an application, internal
  9622. // or defaulted message. This is then followed by a short description.
  9623. // The use of "void" in the parameter list implies that the parameter is not
  9624. // used. Such parameters should be zero.
  9625. // Other defined EC_ regions:
  9626. // DVD event codes 0x0100 - 0x0150 (dvdevcod.h)
  9627. // audio device event codes 0x0200 - 0x0250 (audevcod.h)
  9628. // WindowsMedia SDK-originated events 0x0251 - 0x0300 (see below)
  9629. // MSVIDCTL 0x0301 - 0x0325 (msvidctl.idl)
  9630. // stream buffer engine (PVR) 0x0326 - 0x0350 (sbe.idl)
  9631. EC_COMPLETE = $01;
  9632. {$EXTERNALSYM EC_COMPLETE}
  9633. // ( HResult, void ) : defaulted (special)
  9634. // Signals the completed playback of a stream within the graph. This message
  9635. // is sent by renderers when they receive end-of-stream. The default handling
  9636. // of this message results in a _SINGLE_ EC_COMPLETE being sent to the
  9637. // application when ALL of the individual renderers have signaled EC_COMPLETE
  9638. // to the filter graph. If the default handing is canceled, the application
  9639. // will see all of the individual EC_COMPLETEs.
  9640. EC_USERABORT = $02;
  9641. {$EXTERNALSYM EC_USERABORT}
  9642. // ( void, void ) : application
  9643. // In some sense, the user has requested that playback be terminated.
  9644. // This message is typically sent by renderers that render into a
  9645. // window if the user closes the window into which it was rendering.
  9646. // It is up to the application to decide if playback should actually
  9647. // be stopped.
  9648. EC_ERRORABORT = $03;
  9649. {$EXTERNALSYM EC_ERRORABORT}
  9650. // ( HResult, void ) : application
  9651. // Operation aborted because of error
  9652. EC_TIME = $04;
  9653. {$EXTERNALSYM EC_TIME}
  9654. // ( DWORD, DWORD ) : application
  9655. // The requested reference time occurred. (This event is currently not used).
  9656. // lParam1 is low dword of ref time, lParam2 is high dword of TRefTime.
  9657. EC_REPAINT = $05;
  9658. {$EXTERNALSYM EC_REPAINT}
  9659. // ( IPin * (could be NULL), void ) : defaulted
  9660. // A repaint is required - lParam1 contains the (IPin *) that needs the data
  9661. // to be sent again. Default handling is: if the output pin which the IPin is
  9662. // attached to supports the IMediaEventSink interface then it will be called
  9663. // with the EC_REPAINT first. If that fails then normal repaint processing is
  9664. // done by the filter graph.
  9665. // Stream error notifications
  9666. EC_STREAM_ERROR_STOPPED = $06;
  9667. {$EXTERNALSYM EC_STREAM_ERROR_STOPPED}
  9668. EC_STREAM_ERROR_STILLPLAYING = $07;
  9669. {$EXTERNALSYM EC_STREAM_ERROR_STILLPLAYING}
  9670. // ( HResult, DWORD ) : application
  9671. // lParam 1 is major code, lParam2 is minor code, either may be zero.
  9672. EC_ERROR_STILLPLAYING = $08;
  9673. {$EXTERNALSYM EC_ERROR_STILLPLAYING}
  9674. // ( HResult, void ) : application
  9675. // The filter graph manager may issue Run's to the graph asynchronously.
  9676. // If such a Run fails, EC_ERROR_STILLPLAYING is issued to notify the
  9677. // application of the failure. The state of the underlying filters
  9678. // at such a time will be indeterminate - they will all have been asked
  9679. // to run, but some are almost certainly not.
  9680. EC_PALETTE_CHANGED = $09;
  9681. {$EXTERNALSYM EC_PALETTE_CHANGED}
  9682. // ( void, void ) : application
  9683. // notify application that the video palette has changed
  9684. EC_VIDEO_SIZE_CHANGED = $0A;
  9685. {$EXTERNALSYM EC_VIDEO_SIZE_CHANGED}
  9686. // ( DWORD, void ) : application
  9687. // Sent by video renderers.
  9688. // Notifies the application that the native video size has changed.
  9689. // LOWORD of the DWORD is the new width, HIWORD is the new height.
  9690. EC_QUALITY_CHANGE = $0B;
  9691. {$EXTERNALSYM EC_QUALITY_CHANGE}
  9692. // ( void, void ) : application
  9693. // Notify application that playback degradation has occurred
  9694. EC_SHUTTING_DOWN = $0C;
  9695. {$EXTERNALSYM EC_SHUTTING_DOWN}
  9696. // ( void, void ) : internal
  9697. // This message is sent by the filter graph manager to any plug-in
  9698. // distributors which support IMediaEventSink to notify them that
  9699. // the filter graph is starting to shutdown.
  9700. EC_CLOCK_CHANGED = $0D;
  9701. {$EXTERNALSYM EC_CLOCK_CHANGED}
  9702. // ( void, void ) : application
  9703. // Notify application that the clock has changed.
  9704. // (i.e. SetSyncSource has been called on the filter graph and has been
  9705. // distributed successfully to the filters in the graph.)
  9706. EC_PAUSED = $0E;
  9707. {$EXTERNALSYM EC_PAUSED}
  9708. // ( HResult, void ) : application
  9709. // Notify application the previous pause request has completed
  9710. EC_OPENING_FILE = $10;
  9711. {$EXTERNALSYM EC_OPENING_FILE}
  9712. EC_BUFFERING_DATA = $11;
  9713. {$EXTERNALSYM EC_BUFFERING_DATA}
  9714. // ( BOOL, void ) : application
  9715. // lParam1 == 1 --> starting to open file or buffer data
  9716. // lParam1 == 0 --> not opening or buffering any more
  9717. // (This event does not appear to be used by ActiveMovie.)
  9718. EC_FULLSCREEN_LOST = $12;
  9719. {$EXTERNALSYM EC_FULLSCREEN_LOST}
  9720. // ( void, IBaseFilter * ) : application
  9721. // Sent by full screen renderers when switched away from full screen.
  9722. // IBaseFilter may be NULL.
  9723. EC_ACTIVATE = $13;
  9724. {$EXTERNALSYM EC_ACTIVATE}
  9725. // ( BOOL, IBaseFilter * ) : internal
  9726. // Sent by video renderers when they lose or gain activation.
  9727. // lParam1 is set to 1 if gained or 0 if lost
  9728. // lParam2 is the IBaseFilter* for the filter that is sending the message
  9729. // Used for sound follows focus and full-screen switching
  9730. EC_NEED_RESTART = $14;
  9731. {$EXTERNALSYM EC_NEED_RESTART}
  9732. // ( void, void ) : defaulted
  9733. // Sent by renderers when they regain a resource (e.g. audio renderer).
  9734. // Causes a restart by Pause/put_Current/Run (if running).
  9735. EC_WINDOW_DESTROYED = $15;
  9736. {$EXTERNALSYM EC_WINDOW_DESTROYED}
  9737. // ( IBaseFilter *, void ) : internal
  9738. // Sent by video renderers when the window has been destroyed. Handled
  9739. // by the filter graph / distributor telling the resource manager.
  9740. // lParam1 is the IBaseFilter* of the filter whose window is being destroyed
  9741. EC_DISPLAY_CHANGED = $16;
  9742. {$EXTERNALSYM EC_DISPLAY_CHANGED}
  9743. // ( IPin *, void ) : internal
  9744. // Sent by renderers when they detect a display change. the filter graph
  9745. // will arrange for the graph to be stopped and the pin send in lParam1
  9746. // to be reconnected. by being reconnected it allows a renderer to reset
  9747. // and connect with a more appropriate format for the new display mode
  9748. // lParam1 contains an (IPin *) that should be reconnected by the graph
  9749. EC_STARVATION = $17;
  9750. {$EXTERNALSYM EC_STARVATION}
  9751. // ( void, void ) : defaulted
  9752. // Sent by a filter when it detects starvation. Default handling (only when
  9753. // running) is for the graph to be paused until all filters enter the
  9754. // paused state and then run. Normally this would be sent by a parser or source
  9755. // filter when too little data is arriving.
  9756. EC_OLE_EVENT = $18;
  9757. {$EXTERNALSYM EC_OLE_EVENT}
  9758. // ( BSTR, BSTR ) : application
  9759. // Sent by a filter to pass a text string to the application.
  9760. // Conventionally, the first string is a type, and the second a parameter.
  9761. EC_NOTIFY_WINDOW = $19;
  9762. {$EXTERNALSYM EC_NOTIFY_WINDOW}
  9763. // ( HWND, void ) : internal
  9764. // Pass the window handle around during pin connection.
  9765. EC_STREAM_CONTROL_STOPPED = $1A;
  9766. {$EXTERNALSYM EC_STREAM_CONTROL_STOPPED}
  9767. // ( IPin * pSender, DWORD dwCookie )
  9768. // Notification that an earlier call to IAMStreamControl::StopAt
  9769. // has now take effect. Calls to the method can be marked
  9770. // with a cookie which is passed back in the second parameter,
  9771. // allowing applications to easily tie together request
  9772. // and completion notifications.
  9773. //
  9774. // NB: IPin will point to the pin that actioned the Stop. This
  9775. // may not be the pin that the StopAt was sent to.
  9776. EC_STREAM_CONTROL_STARTED = $1B;
  9777. {$EXTERNALSYM EC_STREAM_CONTROL_STARTED}
  9778. // ( IPin * pSender, DWORD dwCookie )
  9779. // Notification that an earlier call to IAMStreamControl::StartAt
  9780. // has now take effect. Calls to the method can be marked
  9781. // with a cookie which is passed back in the second parameter,
  9782. // allowing applications to easily tie together request
  9783. // and completion notifications.
  9784. //
  9785. // NB: IPin will point to the pin that actioned the Start. This
  9786. // may not be the pin that the StartAt was sent to.
  9787. EC_END_OF_SEGMENT = $1C;
  9788. {$EXTERNALSYM EC_END_OF_SEGMENT}
  9789. //
  9790. // ( const REFERENCE_TIME *pStreamTimeAtEndOfSegment, DWORD dwSegmentNumber )
  9791. //
  9792. // pStreamTimeAtEndOfSegment
  9793. // pointer to the accumulated stream clock
  9794. // time since the start of the segment - this is directly computable
  9795. // as the sum of the previous and current segment durations (Stop - Start)
  9796. // and the rate applied to each segment
  9797. // The source add this time to the time within each segment to get
  9798. // a total elapsed time
  9799. //
  9800. // dwSegmentNumber
  9801. // Segment number - starts at 0
  9802. //
  9803. // Notifies that a segment end has been reached when the
  9804. // AM_SEEKING_Segment flags was set for IMediaSeeking::SetPositions
  9805. // Passes in an IMediaSeeking interface to allow the next segment
  9806. // to be defined by the application
  9807. EC_SEGMENT_STARTED = $1D;
  9808. {$EXTERNALSYM EC_SEGMENT_STARTED}
  9809. //
  9810. // ( const REFERENCE_TIME *pStreamTimeAtStartOfSegment, DWORD dwSegmentNumber)
  9811. //
  9812. // pStreamTimeAtStartOfSegment
  9813. // pointer to the accumulated stream clock
  9814. // time since the start of the segment - this is directly computable
  9815. // as the sum of the previous segment durations (Stop - Start)
  9816. // and the rate applied to each segment
  9817. //
  9818. // dwSegmentNumber
  9819. // Segment number - starts at 0
  9820. //
  9821. // Notifies that a new segment has been started.
  9822. // This is sent synchronously by any entity that will issue
  9823. // EC_END_OF_SEGMENT when a new segment is started
  9824. // (See IMediaSeeking::SetPositions - AM_SEEKING_Segment flag)
  9825. // It is used to compute how many EC_END_OF_SEGMENT notifications
  9826. // to expect at the end of a segment and as a consitency check
  9827. EC_LENGTH_CHANGED = $1E;
  9828. {$EXTERNALSYM EC_LENGTH_CHANGED}
  9829. // (void, void)
  9830. // sent to indicate that the length of the "file" has changed
  9831. EC_DEVICE_LOST = $1f;
  9832. {$EXTERNALSYM EC_DEVICE_LOST}
  9833. // (IUnknown, 0)
  9834. //
  9835. // request window notification when the device is available again
  9836. // (through WM_DEVICECHANGED messages registered with
  9837. // RegisterDeviceNotification; see IAMDeviceRemoval interface)
  9838. EC_STEP_COMPLETE = $24;
  9839. {$EXTERNALSYM EC_STEP_COMPLETE}
  9840. // (BOOL bCacelled, void)
  9841. // Step request complete
  9842. // if bCancelled is TRUE the step was cancelled. This can happen
  9843. // if the application issued some control request or because there
  9844. // was a mode change etc etc
  9845. // EC_SKIP_FRAMES = $25;
  9846. // ( nFramesToSkip, void ) : internal
  9847. // Get the filter graph to seek accuratley.
  9848. // Event code 25 is reserved for future use. (dx8.1 specific)
  9849. EC_TIMECODE_AVAILABLE = $30;
  9850. {$EXTERNALSYM EC_TIMECODE_AVAILABLE}
  9851. // Sent by filter supporting timecode
  9852. // Param1 has a pointer to the sending object
  9853. // Param2 has the device ID of the sending object
  9854. EC_EXTDEVICE_MODE_CHANGE = $31;
  9855. {$EXTERNALSYM EC_EXTDEVICE_MODE_CHANGE}
  9856. // Sent by filter supporting IAMExtDevice
  9857. // Param1 has the new mode
  9858. // Param2 has the device ID of the sending object
  9859. EC_STATE_CHANGE = $32;
  9860. {$EXTERNALSYM EC_STATE_CHANGE}
  9861. // ( FILTER_STATE, BOOL bInternal)
  9862. // Used to notify the application of any state changes in the filter graph.
  9863. // lParam1 is of type enum FILTER_STATE (defined in strmif.h) and indicates
  9864. // the state of the filter graph.
  9865. //
  9866. // lParam2 == 0 indicates that the previous state change request has completed
  9867. // & a change in application state.
  9868. // lParam2 == 1 reserved for future use to indicate internal state changes.
  9869. EC_GRAPH_CHANGED = $50;
  9870. {$EXTERNALSYM EC_GRAPH_CHANGED}
  9871. // Sent by filter to notify interesting graph changes
  9872. EC_CLOCK_UNSET = $51;
  9873. {$EXTERNALSYM EC_CLOCK_UNSET}
  9874. // ( void, void ) : application
  9875. // Used to notify the filter graph to unset the current graph clock.
  9876. // Has the affect of forcing the filter graph to reestablish the graph clock
  9877. // on the next Pause/Run (note that this is only used by ksproxy, when the pin
  9878. // of a clock providing filter is disconnected)
  9879. EC_VMR_RENDERDEVICE_SET = $53;
  9880. {$EXTERNALSYM EC_VMR_RENDERDEVICE_SET}
  9881. // (Render_Device type, void)
  9882. // Identifies the type of rendering mechanism the VMR
  9883. // is using to display video. Types used include:
  9884. VMR_RENDER_DEVICE_OVERLAY = $01;
  9885. {$EXTERNALSYM VMR_RENDER_DEVICE_OVERLAY}
  9886. VMR_RENDER_DEVICE_VIDMEM = $02;
  9887. {$EXTERNALSYM VMR_RENDER_DEVICE_VIDMEM}
  9888. VMR_RENDER_DEVICE_SYSMEM = $04;
  9889. {$EXTERNALSYM VMR_RENDER_DEVICE_SYSMEM}
  9890. EC_VMR_SURFACE_FLIPPED = $54;
  9891. {$EXTERNALSYM EC_VMR_SURFACE_FLIPPED}
  9892. // (hr - Flip return code, void)
  9893. // Identifies the VMR's allocator-presenter has called the DDraw flip api on
  9894. // the surface being presented. This allows the VMR to keep its DX-VA table
  9895. // of DDraw surfaces in sync with DDraws flipping chain.
  9896. EC_VMR_RECONNECTION_FAILED = $55;
  9897. {$EXTERNALSYM EC_VMR_RECONNECTION_FAILED}
  9898. // (hr - ReceiveConnection return code, void)
  9899. // Identifies that an upstream decoder tried to perform a dynamic format
  9900. // change and the VMR was unable to accept the new format.
  9901. EC_PREPROCESS_COMPLETE = $56;
  9902. {$EXTERNALSYM EC_PREPROCESS_COMPLETE}
  9903. // Sent by the WM ASF writer filter (WMSDK V9 version) to signal the completion
  9904. // of a pre-process run when running in multipass encode mode.
  9905. // Param1 = 0, Param2 = IBaseFilter ptr of sending filter
  9906. EC_CODECAPI_EVENT = $57;
  9907. {$EXTERNALSYM EC_CODECAPI_EVENT}
  9908. // Sent by the Codec API when an event is encountered. Both the Data
  9909. // must be freed by the recipient using CoTaskMemFree
  9910. // Param1 = UserDataPointer, Param2 = VOID* Data
  9911. //------------------------------------------
  9912. //
  9913. // BDA events:
  9914. //
  9915. // Event code 0x80 through 0x8f are reserved for BDA
  9916. //
  9917. //------------------------------------------
  9918. //
  9919. // WindowsMedia SDK filter-specific events:
  9920. //
  9921. //
  9922. // Note that for EC_WMT_EVENT events the wmsdk-based filters use the following structure for
  9923. // passing event parameters to the app:
  9924. type
  9925. PAMWMTEventData = ^TAMWMTEventData;
  9926. AM_WMT_EVENT_DATA = record
  9927. hrStatus : HResult; // status code
  9928. pData : pointer; // event data
  9929. end;
  9930. {$EXTERNALSYM AM_WMT_EVENT_DATA}
  9931. TAMWMTEventData = AM_WMT_EVENT_DATA;
  9932. const
  9933. EC_WMT_EVENT_BASE = $0251;
  9934. {$EXTERNALSYM EC_WMT_EVENT_BASE}
  9935. //
  9936. EC_WMT_INDEX_EVENT = EC_WMT_EVENT_BASE;
  9937. {$EXTERNALSYM EC_WMT_INDEX_EVENT}
  9938. // WindowsMedia SDK-originated file indexing status, sent by WMSDK-based filters
  9939. //
  9940. // lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK
  9941. // lParam2 is specific to the lParam event
  9942. //
  9943. // the following WMT_STATUS messages are sent for this event:
  9944. // WMT_STARTED - lParam2 is 0
  9945. // WMT_CLOSED - lParam2 is 0
  9946. // WMT_INDEX_PROGRESS - lParam2 is a DWORD containing the progress percent complete
  9947. //
  9948. EC_WMT_EVENT = EC_WMT_EVENT_BASE+1;
  9949. {$EXTERNALSYM EC_WMT_EVENT}
  9950. // WindowsMedia SDK-originated event, sent by WMSDK-based filters
  9951. //
  9952. // lParam1 is one of the enum WMT_STATUS messages listed below, sent by the WindowsMedia SDK
  9953. // lParam2 is a pointer an AM_WMT_EVENT_DATA structure where,
  9954. // hrStatus is the status code sent by the wmsdk
  9955. // pData is specific to the lParam1 event
  9956. //
  9957. // the following WMT_STATUS messages are sent by the WMSDK Reader filter for this event:
  9958. // WMT_NO_RIGHTS - pData is a pointer to a WCHAR string containing a challenge URL
  9959. // WMT_ACQUIRE_LICENSE - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct
  9960. // WMT_NO_RIGHTS_EX - lParam2 is a pointer to a WM_GET_LICENSE_DATA struct
  9961. // WMT_NEEDS_INDIVIDUALIZATION - lParam2 is NULL
  9962. // WMT_INDIVIDUALIZE - lParam2 is a pointer to a WM_INDIVIDUALIZE_STATUS struct
  9963. // the WMSDK (V9) ASF Writer filter will send this event in response to a wmsdk-signaled error during file
  9964. // writing, along with the wmsdk WMT_STATUS error as the lParam1 and hrStatus embedded in the
  9965. // AM_WMT_EVENT_DATA struct pointed to by the lParam2 pointer.
  9966. //
  9967. // end WMSDK-originated events
  9968. //-----------------------------------------
  9969. EC_BUILT = $300;
  9970. {$EXTERNALSYM EC_BUILT}
  9971. // Sent to notify transition from unbuilt to built state
  9972. EC_UNBUILT = $301;
  9973. {$EXTERNALSYM EC_UNBUILT}
  9974. // Sent to notify transtion from built to unbuilt state
  9975. (*==========================================================================;
  9976. *
  9977. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  9978. *
  9979. * File: uuids.h
  9980. *
  9981. ***************************************************************************)
  9982. const
  9983. // -- to allow consistent labeling of Media types and subtypes --
  9984. // ?? GUID_NULL ??
  9985. GUID_NULL: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  9986. MEDIATYPE_NULL: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  9987. MEDIASUBTYPE_NULL: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  9988. // -- Use this subtype if you don't have a use for a subtype for your type
  9989. MEDIASUBTYPE_None: TGUID = (D1:$E436EB8E;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  9990. {$EXTERNALSYM MEDIASUBTYPE_None}
  9991. // -- major types ---
  9992. MEDIATYPE_Video: TGUID = (D1:$73646976;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  9993. {$EXTERNALSYM MEDIATYPE_Video}
  9994. MEDIATYPE_Audio: TGUID = (D1:$73647561;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  9995. {$EXTERNALSYM MEDIATYPE_Audio}
  9996. MEDIATYPE_Text: TGUID = (D1:$73747874;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  9997. {$EXTERNALSYM MEDIATYPE_Text}
  9998. MEDIATYPE_Midi: TGUID = (D1:$7364696D;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  9999. {$EXTERNALSYM MEDIATYPE_Midi}
  10000. MEDIATYPE_Stream: TGUID = (D1:$E436EB83;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10001. {$EXTERNALSYM MEDIATYPE_Stream}
  10002. MEDIATYPE_Interleaved: TGUID = (D1:$73766169;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10003. {$EXTERNALSYM MEDIATYPE_Interleaved}
  10004. MEDIATYPE_File: TGUID = (D1:$656C6966;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10005. {$EXTERNALSYM MEDIATYPE_File}
  10006. MEDIATYPE_ScriptCommand: TGUID = (D1:$73636D64;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10007. {$EXTERNALSYM MEDIATYPE_ScriptCommand}
  10008. MEDIATYPE_AUXLine21Data: TGUID = (D1:$670AEA80;D2:$3A82;D3:$11D0;D4:($B7,$9B,$00,$AA,$00,$37,$67,$A7));
  10009. {$EXTERNALSYM MEDIATYPE_AUXLine21Data}
  10010. MEDIATYPE_VBI : TGUID = '{F72A76E1-EB0A-11D0-ACE4-0000C0CC16BA}';
  10011. {$EXTERNALSYM MEDIATYPE_VBI}
  10012. MEDIATYPE_Timecode: TGUID = (D1:$0482DEE3;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10013. {$EXTERNALSYM MEDIATYPE_Timecode}
  10014. MEDIATYPE_LMRT : TGUID = (D1:$74726c6d;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10015. {$EXTERNALSYM MEDIATYPE_LMRT}
  10016. MEDIATYPE_URL_STREAM: TGUID = (D1:$736c7275;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10017. {$EXTERNALSYM MEDIATYPE_URL_STREAM}
  10018. // -- sub types ---
  10019. MEDIASUBTYPE_CLPL: TGUID = (D1:$4C504C43;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10020. {$EXTERNALSYM MEDIASUBTYPE_CLPL}
  10021. MEDIASUBTYPE_YUYV: TGUID = (D1:$56595559;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10022. {$EXTERNALSYM MEDIASUBTYPE_YUYV}
  10023. MEDIASUBTYPE_IYUV: TGUID = (D1:$56555949;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10024. {$EXTERNALSYM MEDIASUBTYPE_IYUV}
  10025. MEDIASUBTYPE_YVU9: TGUID = (D1:$39555659;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10026. {$EXTERNALSYM MEDIASUBTYPE_YVU9}
  10027. MEDIASUBTYPE_Y411: TGUID = (D1:$31313459;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10028. {$EXTERNALSYM MEDIASUBTYPE_Y411}
  10029. MEDIASUBTYPE_Y41P: TGUID = (D1:$50313459;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10030. {$EXTERNALSYM MEDIASUBTYPE_Y41P}
  10031. MEDIASUBTYPE_YUY2: TGUID = (D1:$32595559;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10032. {$EXTERNALSYM MEDIASUBTYPE_YUY2}
  10033. MEDIASUBTYPE_YVYU: TGUID = (D1:$55595659;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10034. {$EXTERNALSYM MEDIASUBTYPE_YVYU}
  10035. MEDIASUBTYPE_UYVY: TGUID = (D1:$59565955;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10036. {$EXTERNALSYM MEDIASUBTYPE_UYVY}
  10037. MEDIASUBTYPE_Y211: TGUID = (D1:$31313259;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10038. {$EXTERNALSYM MEDIASUBTYPE_Y211}
  10039. MEDIASUBTYPE_CLJR: TGUID = (D1:$524A4C43;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10040. {$EXTERNALSYM MEDIASUBTYPE_CLJR}
  10041. MEDIASUBTYPE_IF09: TGUID = (D1:$39304649;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10042. {$EXTERNALSYM MEDIASUBTYPE_IF09}
  10043. MEDIASUBTYPE_CPLA: TGUID = (D1:$414C5043;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10044. {$EXTERNALSYM MEDIASUBTYPE_CPLA}
  10045. MEDIASUBTYPE_MJPG: TGUID = (D1:$47504A4D;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10046. {$EXTERNALSYM MEDIASUBTYPE_MJPG}
  10047. MEDIASUBTYPE_TVMJ: TGUID = (D1:$4A4D5654;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10048. {$EXTERNALSYM MEDIASUBTYPE_TVMJ}
  10049. MEDIASUBTYPE_WAKE: TGUID = (D1:$454B4157;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10050. {$EXTERNALSYM MEDIASUBTYPE_WAKE}
  10051. MEDIASUBTYPE_CFCC: TGUID = (D1:$43434643;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10052. {$EXTERNALSYM MEDIASUBTYPE_CFCC}
  10053. MEDIASUBTYPE_IJPG: TGUID = (D1:$47504A49;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10054. {$EXTERNALSYM MEDIASUBTYPE_IJPG}
  10055. MEDIASUBTYPE_Plum: TGUID = (D1:$6D756C50;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10056. {$EXTERNALSYM MEDIASUBTYPE_Plum}
  10057. MEDIASUBTYPE_DVCS: TGUID = (D1:$53435644;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10058. {$EXTERNALSYM MEDIASUBTYPE_DVCS}
  10059. MEDIASUBTYPE_DVSD: TGUID = (D1:$44535644;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10060. {$EXTERNALSYM MEDIASUBTYPE_DVSD}
  10061. MEDIASUBTYPE_MDVF: TGUID = (D1:$4656444D;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10062. {$EXTERNALSYM MEDIASUBTYPE_MDVF}
  10063. MEDIASUBTYPE_RGB1: TGUID = (D1:$E436EB78;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10064. {$EXTERNALSYM MEDIASUBTYPE_RGB1}
  10065. MEDIASUBTYPE_RGB4: TGUID = (D1:$E436EB79;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10066. {$EXTERNALSYM MEDIASUBTYPE_RGB4}
  10067. MEDIASUBTYPE_RGB8: TGUID = (D1:$E436EB7A;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10068. {$EXTERNALSYM MEDIASUBTYPE_RGB8}
  10069. MEDIASUBTYPE_RGB565: TGUID = (D1:$E436EB7B;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10070. {$EXTERNALSYM MEDIASUBTYPE_RGB565}
  10071. MEDIASUBTYPE_RGB555: TGUID = (D1:$E436EB7C;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10072. {$EXTERNALSYM MEDIASUBTYPE_RGB555}
  10073. MEDIASUBTYPE_RGB24: TGUID = (D1:$E436EB7D;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10074. {$EXTERNALSYM MEDIASUBTYPE_RGB24}
  10075. MEDIASUBTYPE_RGB32: TGUID = (D1:$E436EB7E;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10076. {$EXTERNALSYM MEDIASUBTYPE_RGB32}
  10077. MEDIASUBTYPE_ARGB1555 : TGUID = '{297C55AF-E209-4cb3-B757-C76D6B9C88A8}';
  10078. {$EXTERNALSYM MEDIASUBTYPE_ARGB1555}
  10079. MEDIASUBTYPE_ARGB4444 : TGUID = '{6E6415E6-5C24-425f-93CD-80102B3D1CCA}';
  10080. {$EXTERNALSYM MEDIASUBTYPE_ARGB4444}
  10081. MEDIASUBTYPE_ARGB32 : TGUID = (D1:$773c9ac0;D2:$3274;D3:$11d0;D4:($b7,$24,$00,$aa,$00,$6c,$1a,$1 ));
  10082. {$EXTERNALSYM MEDIASUBTYPE_ARGB32}
  10083. MEDIASUBTYPE_A2R10G10B10 : TGUID = '{2f8bb76d-b644-4550-acf3-d30caa65d5c5}';
  10084. {$EXTERNALSYM MEDIASUBTYPE_A2R10G10B10}
  10085. MEDIASUBTYPE_A2B10G10R10 : TGUID = '{576f7893-bdf6-48c4-875f-ae7b81834567}';
  10086. {$EXTERNALSYM MEDIASUBTYPE_A2B10G10R10}
  10087. MEDIASUBTYPE_AYUV : TGUID = '{56555941-0000-0010-8000-00AA00389B71}'; //'AYUV' == MEDIASUBTYPE_AYUV
  10088. {$EXTERNALSYM MEDIASUBTYPE_AYUV}
  10089. MEDIASUBTYPE_AI44 : TGUID = '{34344941-0000-0010-8000-00AA00389B71}'; //'AI44' == MEDIASUBTYPE_AI44
  10090. {$EXTERNALSYM MEDIASUBTYPE_AI44}
  10091. MEDIASUBTYPE_IA44 : TGUID = '{34344149-0000-0010-8000-00AA00389B71}'; //'IA44' == MEDIASUBTYPE_IA44
  10092. {$EXTERNALSYM MEDIASUBTYPE_IA44}
  10093. {$IFDEF ENABLEVMR7}
  10094. //
  10095. // DirectX7 D3D Render Target media subtypes.
  10096. //
  10097. MEDIASUBTYPE_RGB32_D3D_DX7_RT : TGUID = '{32335237-0000-0010-8000-00AA00389B71}'; //'7R32' == MEDIASUBTYPE_RGB32_D3D_DX7_RT
  10098. {$EXTERNALSYM MEDIASUBTYPE_RGB32_D3D_DX7_RT}
  10099. MEDIASUBTYPE_RGB16_D3D_DX7_RT : TGUID = '{36315237-0000-0010-8000-00AA00389B71}'; //'7R16' == MEDIASUBTYPE_RGB16_D3D_DX7_RT
  10100. {$EXTERNALSYM MEDIASUBTYPE_RGB16_D3D_DX7_RT}
  10101. MEDIASUBTYPE_ARGB32_D3D_DX7_RT : TGUID = '{38384137-0000-0010-8000-00AA00389B71}'; //'7A88' == MEDIASUBTYPE_ARGB32_D3D_DX7_RT
  10102. {$EXTERNALSYM MEDIASUBTYPE_ARGB32_D3D_DX7_RT}
  10103. MEDIASUBTYPE_ARGB4444_D3D_DX7_RT : TGUID = '{34344137-0000-0010-8000-00AA00389B71}'; //'7A44' == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT
  10104. {$EXTERNALSYM MEDIASUBTYPE_ARGB4444_D3D_DX7_RT}
  10105. MEDIASUBTYPE_ARGB1555_D3D_DX7_RT : TGUID = '{35314137-0000-0010-8000-00AA00389B71}'; //'7A15' == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT
  10106. {$EXTERNALSYM MEDIASUBTYPE_ARGB1555_D3D_DX7_RT}
  10107. {$ENDIF}
  10108. //
  10109. // DirectX9 D3D Render Target media subtypes.
  10110. //
  10111. MEDIASUBTYPE_RGB32_D3D_DX9_RT : TGUID = '{32335239-0000-0010-8000-00AA00389B71}'; // 9R32
  10112. {$EXTERNALSYM MEDIASUBTYPE_RGB32_D3D_DX9_RT}
  10113. MEDIASUBTYPE_RGB16_D3D_DX9_RT : TGUID = '{36315239-0000-0010-8000-00AA00389B71}'; // 9R16
  10114. {$EXTERNALSYM MEDIASUBTYPE_RGB16_D3D_DX9_RT}
  10115. MEDIASUBTYPE_ARGB32_D3D_DX9_RT : TGUID = '{38384139-0000-0010-8000-00AA00389B71}'; // 9A88
  10116. {$EXTERNALSYM MEDIASUBTYPE_ARGB32_D3D_DX9_RT}
  10117. MEDIASUBTYPE_ARGB4444_D3D_DX9_RT : TGUID = '{34344139-0000-0010-8000-00AA00389B71}'; // 9A44
  10118. {$EXTERNALSYM MEDIASUBTYPE_ARGB4444_D3D_DX9_RT}
  10119. MEDIASUBTYPE_ARGB1555_D3D_DX9_RT : TGUID = '{35314139-0000-0010-8000-00AA00389B71}'; // 9A15
  10120. {$EXTERNALSYM MEDIASUBTYPE_ARGB1555_D3D_DX9_RT}
  10121. {
  10122. #define MEDIASUBTYPE_HASALPHA(mt) ( ((mt).subtype == MEDIASUBTYPE_ARGB4444) || \
  10123. ((mt).subtype == MEDIASUBTYPE_ARGB32) || \
  10124. ((mt).subtype == MEDIASUBTYPE_AYUV) || \
  10125. ((mt).subtype == MEDIASUBTYPE_AI44) || \
  10126. ((mt).subtype == MEDIASUBTYPE_IA44) || \
  10127. ((mt).subtype == MEDIASUBTYPE_ARGB1555) || \
  10128. ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \
  10129. ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \
  10130. ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \
  10131. ((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \
  10132. ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \
  10133. ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) )
  10134. #define MEDIASUBTYPE_HASALPHA7(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \
  10135. ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \
  10136. ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) )
  10137. #define MEDIASUBTYPE_D3D_DX7_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX7_RT) || \
  10138. ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX7_RT) || \
  10139. ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX7_RT) || \
  10140. ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX7_RT) || \
  10141. ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX7_RT))
  10142. #define MEDIASUBTYPE_HASALPHA9(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \
  10143. ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \
  10144. ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) )
  10145. #define MEDIASUBTYPE_D3D_DX9_RT(mt) (((mt).subtype == MEDIASUBTYPE_ARGB32_D3D_DX9_RT) || \
  10146. ((mt).subtype == MEDIASUBTYPE_ARGB4444_D3D_DX9_RT) || \
  10147. ((mt).subtype == MEDIASUBTYPE_ARGB1555_D3D_DX9_RT) || \
  10148. ((mt).subtype == MEDIASUBTYPE_RGB32_D3D_DX9_RT) || \
  10149. ((mt).subtype == MEDIASUBTYPE_RGB16_D3D_DX9_RT))
  10150. }
  10151. // DX-VA uncompressed surface formats
  10152. MEDIASUBTYPE_YV12 : TGUID = '{32315659-0000-0010-8000-00AA00389B71}'; // YV12
  10153. {$EXTERNALSYM MEDIASUBTYPE_YV12}
  10154. MEDIASUBTYPE_NV12 : TGUID = '{3231564E-0000-0010-8000-00AA00389B71}'; // NV12
  10155. {$EXTERNALSYM MEDIASUBTYPE_NV12}
  10156. MEDIASUBTYPE_IMC1 : TGUID = '{31434D49-0000-0010-8000-00AA00389B71}'; // IMC1
  10157. {$EXTERNALSYM MEDIASUBTYPE_IMC1}
  10158. MEDIASUBTYPE_IMC2 : TGUID = '{32434d49-0000-0010-8000-00AA00389B71}'; // IMC2
  10159. {$EXTERNALSYM MEDIASUBTYPE_IMC2}
  10160. MEDIASUBTYPE_IMC3 : TGUID = '{33434d49-0000-0010-8000-00AA00389B71}'; // IMC3
  10161. {$EXTERNALSYM MEDIASUBTYPE_IMC3}
  10162. MEDIASUBTYPE_IMC4 : TGUID = '{34434d49-0000-0010-8000-00AA00389B71}'; // IMC4
  10163. {$EXTERNALSYM MEDIASUBTYPE_IMC4}
  10164. MEDIASUBTYPE_S340 : TGUID = '{30343353-0000-0010-8000-00AA00389B71}'; // S340
  10165. {$EXTERNALSYM MEDIASUBTYPE_S340}
  10166. MEDIASUBTYPE_S342 : TGUID = '{32343353-0000-0010-8000-00AA00389B71}'; // S342
  10167. {$EXTERNALSYM MEDIASUBTYPE_S342}
  10168. MEDIASUBTYPE_Overlay: TGUID = (D1:$E436EB7F;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10169. {$EXTERNALSYM MEDIASUBTYPE_Overlay}
  10170. MEDIASUBTYPE_MPEG1Packet: TGUID = (D1:$E436EB80;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10171. {$EXTERNALSYM MEDIASUBTYPE_MPEG1Packet}
  10172. MEDIASUBTYPE_MPEG1Payload: TGUID = (D1:$E436EB81;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10173. {$EXTERNALSYM MEDIASUBTYPE_MPEG1Payload}
  10174. MEDIASUBTYPE_MPEG1AudioPayload: TGUID = (D1:$00000050;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10175. {$EXTERNALSYM MEDIASUBTYPE_MPEG1AudioPayload}
  10176. MEDIATYPE_MPEG1SystemStream: TGUID = (D1:$E436EB82;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10177. {$EXTERNALSYM MEDIATYPE_MPEG1SystemStream}
  10178. MEDIASUBTYPE_MPEG1System: TGUID = (D1:$E436EB84;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10179. {$EXTERNALSYM MEDIASUBTYPE_MPEG1System}
  10180. MEDIASUBTYPE_MPEG1VideoCD: TGUID = (D1:$E436EB85;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10181. {$EXTERNALSYM MEDIASUBTYPE_MPEG1VideoCD}
  10182. MEDIASUBTYPE_MPEG1Video: TGUID = (D1:$E436EB86;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10183. {$EXTERNALSYM MEDIASUBTYPE_MPEG1Video}
  10184. MEDIASUBTYPE_MPEG1Audio: TGUID = (D1:$E436EB87;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10185. {$EXTERNALSYM MEDIASUBTYPE_MPEG1Audio}
  10186. MEDIASUBTYPE_Avi: TGUID = (D1:$E436EB88;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10187. {$EXTERNALSYM MEDIASUBTYPE_Avi}
  10188. MEDIASUBTYPE_Asf: TGUID = (D1:$3db80f90;D2:$9412;D3:$11d1;D4:($ad,$ed,$00,$00,$f8,$75,$4b,$99));
  10189. {$EXTERNALSYM MEDIASUBTYPE_Asf}
  10190. MEDIASUBTYPE_QTMovie: TGUID = (D1:$E436EB89;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10191. {$EXTERNALSYM MEDIASUBTYPE_QTMovie}
  10192. MEDIASUBTYPE_QTRpza: TGUID = (D1:$617A7072;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10193. {$EXTERNALSYM MEDIASUBTYPE_QTRpza}
  10194. MEDIASUBTYPE_QTSmc: TGUID = (D1:$20636D73;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10195. {$EXTERNALSYM MEDIASUBTYPE_QTSmc}
  10196. MEDIASUBTYPE_QTRle: TGUID = (D1:$20656C72;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10197. {$EXTERNALSYM MEDIASUBTYPE_QTRle}
  10198. MEDIASUBTYPE_QTJpeg: TGUID = (D1:$6765706A;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10199. {$EXTERNALSYM MEDIASUBTYPE_QTJpeg}
  10200. MEDIASUBTYPE_PCMAudio_Obsolete: TGUID = (D1:$E436EB8A;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10201. {$EXTERNALSYM MEDIASUBTYPE_PCMAudio_Obsolete}
  10202. MEDIASUBTYPE_PCM: TGUID = (D1:$00000001;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10203. {$EXTERNALSYM MEDIASUBTYPE_PCM}
  10204. MEDIASUBTYPE_WAVE: TGUID = (D1:$E436EB8B;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10205. {$EXTERNALSYM MEDIASUBTYPE_WAVE}
  10206. MEDIASUBTYPE_AU: TGUID = (D1:$E436EB8C;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10207. {$EXTERNALSYM MEDIASUBTYPE_AU}
  10208. MEDIASUBTYPE_AIFF: TGUID = (D1:$E436EB8D;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10209. {$EXTERNALSYM MEDIASUBTYPE_AIFF}
  10210. MEDIASUBTYPE_dvsd_: TGUID = (D1:$64737664;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10211. {$EXTERNALSYM MEDIASUBTYPE_dvsd_}
  10212. MEDIASUBTYPE_dvhd: TGUID = (D1:$64687664;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10213. {$EXTERNALSYM MEDIASUBTYPE_dvhd}
  10214. MEDIASUBTYPE_dvsl : TGUID = (D1:$6C737664;D2:$0000;D3:$0010;D4:($80,$00,$00,$AA,$00,$38,$9B,$71));
  10215. {$EXTERNALSYM MEDIASUBTYPE_dvsl}
  10216. MEDIASUBTYPE_dv25 : TGUID = '{35327664-0000-0010-8000-00aa00389b71}';
  10217. {$EXTERNALSYM MEDIASUBTYPE_dv25}
  10218. MEDIASUBTYPE_dv50 : TGUID = '{30357664-0000-0010-8000-00aa00389b71}';
  10219. {$EXTERNALSYM MEDIASUBTYPE_dv50}
  10220. MEDIASUBTYPE_dvh1 : TGUID = '{31687664-0000-0010-8000-00aa00389b71}';
  10221. {$EXTERNALSYM MEDIASUBTYPE_dvh1}
  10222. MEDIASUBTYPE_Line21_BytePair: TGUID = (D1:$6E8D4A22;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  10223. {$EXTERNALSYM MEDIASUBTYPE_Line21_BytePair}
  10224. MEDIASUBTYPE_Line21_GOPPacket: TGUID = (D1:$6E8D4A23;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  10225. {$EXTERNALSYM MEDIASUBTYPE_Line21_GOPPacket}
  10226. MEDIASUBTYPE_Line21_VBIRawData: TGUID = (D1:$6E8D4A24;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  10227. {$EXTERNALSYM MEDIASUBTYPE_Line21_VBIRawData}
  10228. MEDIASUBTYPE_TELETEXT : TGUID = '{F72A76E3-EB0A-11D0-ACE4-0000C0CC16BA}'; // MEDIASUBTYPE_TELETEXT
  10229. {$EXTERNALSYM MEDIASUBTYPE_TELETEXT}
  10230. MEDIASUBTYPE_WSS : TGUID = '{2791D576-8E7A-466F-9E90-5D3F3083738B}';
  10231. {$EXTERNALSYM MEDIASUBTYPE_WSS}
  10232. MEDIASUBTYPE_VPS : TGUID = '{A1B3F620-9792-4d8d-81A4-86AF25772090}';
  10233. {$EXTERNALSYM MEDIASUBTYPE_VPS}
  10234. MEDIASUBTYPE_DRM_Audio: TGUID = (D1:$00000009;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10235. {$EXTERNALSYM MEDIASUBTYPE_DRM_Audio}
  10236. MEDIASUBTYPE_IEEE_FLOAT: TGUID = (D1:$00000003;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10237. {$EXTERNALSYM MEDIASUBTYPE_IEEE_FLOAT}
  10238. MEDIASUBTYPE_DOLBY_AC3_SPDIF: TGUID = (D1:$00000092;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10239. {$EXTERNALSYM MEDIASUBTYPE_DOLBY_AC3_SPDIF}
  10240. MEDIASUBTYPE_RAW_SPORT: TGUID = (D1:$00000240;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10241. {$EXTERNALSYM MEDIASUBTYPE_RAW_SPORT}
  10242. MEDIASUBTYPE_SPDIF_TAG_241h: TGUID = (D1:$00000241;D2:$0000;D3:$0010;D4:($80,$00,$00,$aa,$00,$38,$9b,$71));
  10243. {$EXTERNALSYM MEDIASUBTYPE_SPDIF_TAG_241h}
  10244. // DirectShow DSS definitions
  10245. MEDIASUBTYPE_DssVideo: TGUID = (D1:$A0AF4F81;D2:$E163;D3:$11D0;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10246. {$EXTERNALSYM MEDIASUBTYPE_DssVideo}
  10247. MEDIASUBTYPE_DssAudio: TGUID = (D1:$A0AF4F82;D2:$E163;D3:$11D0;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10248. {$EXTERNALSYM MEDIASUBTYPE_DssAudio}
  10249. MEDIASUBTYPE_VPVideo: TGUID = (D1:$5A9B6A40;D2:$1A22;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10250. {$EXTERNALSYM MEDIASUBTYPE_VPVideo}
  10251. MEDIASUBTYPE_VPVBI: TGUID = (D1:$5A9B6A41;D2:$1A22;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10252. {$EXTERNALSYM MEDIASUBTYPE_VPVBI}
  10253. //--- dxmedia (the cutlist source filter)
  10254. CLSID_SimpleCutList: TGUID = (D1:$A5EA8D30;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  10255. {$EXTERNALSYM CLSID_SimpleCutList}
  10256. CLSID_VideoFileClip: TGUID = (D1:$A5EA8D31;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  10257. {$EXTERNALSYM CLSID_VideoFileClip}
  10258. CLSID_AudioFileClip: TGUID = (D1:$A5EA8D32;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  10259. {$EXTERNALSYM CLSID_AudioFileClip}
  10260. CLSID_CutListCacheMemory: TGUID = (D1:$A5EA8D33;D2:$253D;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  10261. {$EXTERNALSYM CLSID_CutListCacheMemory}
  10262. //--- end cut list stuff
  10263. CLSID_CaptureGraphBuilder: TGUID = (D1:$BF87B6E0;D2:$8C27;D3:$11D0;D4:($B3,$F0,$00,$AA,$00,$37,$61,$C5));
  10264. {$EXTERNALSYM CLSID_CaptureGraphBuilder}
  10265. CLSID_CaptureGraphBuilder2: TGUID = (D1:$BF87B6E1;D2:$8C27;D3:$11d0;D4:($B3,$F0,$00,$AA,$00,$37,$61,$C5));
  10266. {$EXTERNALSYM CLSID_CaptureGraphBuilder2}
  10267. CLSID_ProtoFilterGraph: TGUID = (D1:$E436EBB0;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10268. {$EXTERNALSYM CLSID_ProtoFilterGraph}
  10269. CLSID_SystemClock: TGUID = (D1:$E436EBB1;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10270. {$EXTERNALSYM CLSID_SystemClock}
  10271. CLSID_FilterMapper: TGUID = (D1:$E436EBB2;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10272. {$EXTERNALSYM CLSID_FilterMapper}
  10273. CLSID_FilterGraph: TGUID = (D1:$E436EBB3;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10274. {$EXTERNALSYM CLSID_FilterGraph}
  10275. CLSID_FilterGraphNoThread: TGUID = (D1:$E436EBB8;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10276. {$EXTERNALSYM CLSID_FilterGraphNoThread}
  10277. CLSID_MPEG1Doc: TGUID = (D1:$E4BBD160;D2:$4269;D3:$11CE;D4:($83,$8D,$00,$AA,$00,$55,$59,$5A));
  10278. {$EXTERNALSYM CLSID_MPEG1Doc}
  10279. CLSID_FileSource: TGUID = (D1:$701722E0;D2:$8AE3;D3:$11CE;D4:($A8,$5C,$00,$AA,$00,$2F,$EA,$B5));
  10280. {$EXTERNALSYM CLSID_FileSource}
  10281. CLSID_MPEG1PacketPlayer: TGUID = (D1:$26C25940;D2:$4CA9;D3:$11CE;D4:($A8,$28,$00,$AA,$00,$2F,$EA,$B5));
  10282. {$EXTERNALSYM CLSID_MPEG1PacketPlayer}
  10283. CLSID_MPEG1Splitter: TGUID = (D1:$336475D0;D2:$942A;D3:$11CE;D4:($A8,$70,$00,$AA,$00,$2F,$EA,$B5));
  10284. {$EXTERNALSYM CLSID_MPEG1Splitter}
  10285. CLSID_CMpegVideoCodec: TGUID = (D1:$FEB50740;D2:$7BEF;D3:$11CE;D4:($9B,$D9,$00,$00,$E2,$02,$59,$9C));
  10286. {$EXTERNALSYM CLSID_CMpegVideoCodec}
  10287. CLSID_CMpegAudioCodec: TGUID = (D1:$4A2286E0;D2:$7BEF;D3:$11CE;D4:($9B,$D9,$00,$00,$E2,$02,$59,$9C));
  10288. {$EXTERNALSYM CLSID_CMpegAudioCodec}
  10289. CLSID_TextRender: TGUID = (D1:$E30629D3;D2:$27E5;D3:$11CE;D4:($87,$5D,$00,$60,$8C,$B7,$80,$66));
  10290. {$EXTERNALSYM CLSID_TextRender}
  10291. CLSID_InfTee: TGUID = (D1:$F8388A40;D2:$D5BB;D3:$11D0;D4:($BE,$5A,$00,$80,$C7,$06,$56,$8E));
  10292. {$EXTERNALSYM CLSID_InfTee}
  10293. CLSID_AviSplitter: TGUID = (D1:$1B544C20;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1E));
  10294. {$EXTERNALSYM CLSID_AviSplitter}
  10295. CLSID_AviReader: TGUID = (D1:$1B544C21;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1E));
  10296. {$EXTERNALSYM CLSID_AviReader}
  10297. CLSID_VfwCapture: TGUID = (D1:$1B544C22;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1E));
  10298. {$EXTERNALSYM CLSID_VfwCapture}
  10299. CLSID_CaptureProperties: TGUID = (D1:$1B544C22;D2:$FD0B;D3:$11CE;D4:($8C,$63,$00,$AA,$00,$44,$B5,$1F));
  10300. {$EXTERNALSYM CLSID_CaptureProperties}
  10301. CLSID_FGControl: TGUID = (D1:$E436EBB4;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10302. {$EXTERNALSYM CLSID_FGControl}
  10303. CLSID_MOVReader: TGUID = (D1:$44584800;D2:$F8EE;D3:$11CE;D4:($B2,$D4,$00,$DD,$01,$10,$1B,$85));
  10304. {$EXTERNALSYM CLSID_MOVReader}
  10305. CLSID_QuickTimeParser: TGUID = (D1:$d51bd5a0;D2:$7548;D3:$11cf;D4:($a5,$20,$00,$80,$c7,$7e,$f5,$8a));
  10306. {$EXTERNALSYM CLSID_QuickTimeParser}
  10307. CLSID_QTDec: TGUID = (D1:$fdfe9681;D2:$74a3;D3:$11d0;D4:($af,$a7,$00,$aa,$00,$b6,$7a,$42));
  10308. {$EXTERNALSYM CLSID_QTDec}
  10309. CLSID_AVIDoc: TGUID = (D1:$D3588AB0;D2:$0781;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  10310. {$EXTERNALSYM CLSID_AVIDoc}
  10311. //---dxmedia
  10312. CLSID_AVIDocWriter: TGUID = (D1:$D3588AB1;D2:$0781;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  10313. {$EXTERNALSYM CLSID_AVIDocWriter}
  10314. //---
  10315. CLSID_VideoRenderer: TGUID = (D1:$70E102B0;D2:$5556;D3:$11CE;D4:($97,$C0,$00,$AA,$00,$55,$59,$5A));
  10316. {$EXTERNALSYM CLSID_VideoRenderer}
  10317. CLSID_Colour: TGUID = (D1:$1643E180;D2:$90F5;D3:$11CE;D4:($97,$D5,$00,$AA,$00,$55,$59,$5A));
  10318. {$EXTERNALSYM CLSID_Colour}
  10319. CLSID_Dither: TGUID = (D1:$1DA08500;D2:$9EDC;D3:$11CF;D4:($BC,$10,$00,$AA,$00,$AC,$74,$F6));
  10320. {$EXTERNALSYM CLSID_Dither}
  10321. CLSID_ModexRenderer: TGUID = (D1:$07167665;D2:$5011;D3:$11CF;D4:($BF,$33,$00,$AA,$00,$55,$59,$5A));
  10322. {$EXTERNALSYM CLSID_ModexRenderer}
  10323. CLSID_AudioRender: TGUID = (D1:$E30629D1;D2:$27E5;D3:$11CE;D4:($87,$5D,$00,$60,$8C,$B7,$80,$66));
  10324. {$EXTERNALSYM CLSID_AudioRender}
  10325. CLSID_AudioProperties: TGUID = (D1:$05589FAF;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  10326. {$EXTERNALSYM CLSID_AudioProperties}
  10327. CLSID_DSoundRender: TGUID = (D1:$79376820;D2:$07D0;D3:$11CF;D4:($A2,$4D,$00,$20,$AF,$D7,$97,$67));
  10328. {$EXTERNALSYM CLSID_DSoundRender}
  10329. CLSID_AudioRecord: TGUID = (D1:$E30629D2;D2:$27E5;D3:$11CE;D4:($87,$5D,$00,$60,$8C,$B7,$80,$66));
  10330. {$EXTERNALSYM CLSID_AudioRecord}
  10331. CLSID_AudioInputMixerProperties: TGUID = (D1:$2ca8ca52;D2:$3c3f;D3:$11d2;D4:($b7,$3d,$00,$c0,$4f,$b6,$bd,$3d));
  10332. {$EXTERNALSYM CLSID_AudioInputMixerProperties}
  10333. CLSID_AVIDec: TGUID = (D1:$CF49D4E0;D2:$1115;D3:$11CE;D4:($B0,$3A,$00,$20,$AF,$0B,$A7,$70));
  10334. {$EXTERNALSYM CLSID_AVIDec}
  10335. CLSID_AVIDraw: TGUID = (D1:$a888df60;D2:$1e90;D3:$11cf;D4:($ac,$98,$00,$aa,$00,$4c,$f,$a9));
  10336. {$EXTERNALSYM CLSID_AVIDraw}
  10337. CLSID_ACMWrapper: TGUID = (D1:$6A08CF80;D2:$0E18;D3:$11CF;D4:($A2,$4D,$00,$20,$AF,$D7,$97,$67));
  10338. {$EXTERNALSYM CLSID_ACMWrapper}
  10339. CLSID_AsyncReader: TGUID = (D1:$E436EBB5;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10340. {$EXTERNALSYM CLSID_AsyncReader}
  10341. CLSID_URLReader: TGUID = (D1:$E436EBB6;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10342. {$EXTERNALSYM CLSID_URLReader}
  10343. CLSID_PersistMonikerPID: TGUID = (D1:$E436EBB7;D2:$524F;D3:$11CE;D4:($9F,$53,$00,$20,$AF,$0B,$A7,$70));
  10344. {$EXTERNALSYM CLSID_PersistMonikerPID}
  10345. CLSID_AMovie: TGUID = (D1:$5F2759C0;D2:$7685;D3:$11CF;D4:($8B,$23,$00,$80,$5F,$6C,$EF,$60));
  10346. {$EXTERNALSYM CLSID_AMovie}
  10347. CLSID_AVICo: TGUID = (D1:$D76E2820;D2:$1563;D3:$11CF;D4:($AC,$98,$00,$AA,$00,$4C,$0F,$A9));
  10348. {$EXTERNALSYM CLSID_AVICo}
  10349. CLSID_FileWriter: TGUID = (D1:$8596E5F0;D2:$0DA5;D3:$11D0;D4:($BD,$21,$00,$A0,$C9,$11,$CE,$86));
  10350. {$EXTERNALSYM CLSID_FileWriter}
  10351. CLSID_AviDest: TGUID = (D1:$E2510970;D2:$F137;D3:$11CE;D4:($8B,$67,$00,$AA,$00,$A3,$F1,$A6));
  10352. {$EXTERNALSYM CLSID_AviDest}
  10353. CLSID_AviMuxProptyPage: TGUID = (D1:$C647B5C0;D2:$157C;D3:$11D0;D4:($BD,$23,$00,$A0,$C9,$11,$CE,$86));
  10354. {$EXTERNALSYM CLSID_AviMuxProptyPage}
  10355. CLSID_AviMuxProptyPage1: TGUID = (D1:$0A9AE910;D2:$85C0;D3:$11D0;D4:($BD,$42,$00,$A0,$C9,$11,$CE,$86));
  10356. {$EXTERNALSYM CLSID_AviMuxProptyPage1}
  10357. CLSID_AVIMIDIRender: TGUID = (D1:$07B65360;D2:$C445;D3:$11CE;D4:($AF,$DE,$00,$AA,$00,$6C,$14,$F4));
  10358. {$EXTERNALSYM CLSID_AVIMIDIRender}
  10359. CLSID_WMAsfReader: TGUID = (D1:$187463a0;D2:$5bb7;D3:$11d3;D4:($ac,$be,$00,$80,$c7,$5e,$24,$6e));
  10360. {$EXTERNALSYM CLSID_WMAsfReader}
  10361. CLSID_WMAsfWriter: TGUID = (D1:$7c23220e;D2:$55bb;D3:$11d3;D4:($8b,$16,$00,$c0,$4f,$b6,$bd,$3d));
  10362. {$EXTERNALSYM CLSID_WMAsfWriter}
  10363. CLSID_MPEG2Demultiplexer: TGUID = (D1:$afb6c280;D2:$2c41;D3:$11d3;D4:($8a,$60,$00,$00,$f8,$1e,$0e,$4a));
  10364. {$EXTERNALSYM CLSID_MPEG2Demultiplexer}
  10365. CLSID_MMSPLITTER: TGUID = (D1:$3ae86b20;D2:$7be8;D3:$11d1;D4:($ab,$e6,$00,$a0,$c9,$05,$f3,$75));
  10366. {$EXTERNALSYM CLSID_MMSPLITTER}
  10367. CLSID_StreamBufferSink : TGUID = '{2DB47AE5-CF39-43c2-B4D6-0CD8D90946F4}';
  10368. {$EXTERNALSYM CLSID_StreamBufferSink}
  10369. CLSID_StreamBufferSource : TGUID = '{C9F5FE02-F851-4eb5-99EE-AD602AF1E619}';
  10370. {$EXTERNALSYM CLSID_StreamBufferSource}
  10371. CLSID_StreamBufferConfig : TGUID = '{FA8A68B2-C864-4ba2-AD53-D3876A87494B}';
  10372. {$EXTERNALSYM CLSID_StreamBufferConfig}
  10373. CLSID_Mpeg2VideoStreamAnalyzer : TGUID = '{6CFAD761-735D-4aa5-8AFC-AF91A7D61EBA}';
  10374. {$EXTERNALSYM CLSID_Mpeg2VideoStreamAnalyzer}
  10375. CLSID_StreamBufferRecordingAttributes : TGUID = '{CCAA63AC-1057-4778-AE92-1206AB9ACEE6}';
  10376. {$EXTERNALSYM CLSID_StreamBufferRecordingAttributes}
  10377. CLSID_StreamBufferComposeRecording : TGUID = '{D682C4BA-A90A-42fe-B9E1-03109849C423}';
  10378. {$EXTERNALSYM CLSID_StreamBufferComposeRecording}
  10379. CLSID_DVVideoCodec: TGUID = (D1:$B1B77C00;D2:$C3E4;D3:$11CF;D4:($AF,$79,$00,$AA,$00,$B6,$7A,$42));
  10380. {$EXTERNALSYM CLSID_DVVideoCodec}
  10381. CLSID_DVVideoEnc: TGUID = (D1:$13AA3650;D2:$BB6F;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  10382. {$EXTERNALSYM CLSID_DVVideoEnc}
  10383. CLSID_DVSplitter: TGUID = (D1:$4EB31670;D2:$9FC6;D3:$11CF;D4:($AF,$6E,$00,$AA,$00,$B6,$7A,$42));
  10384. {$EXTERNALSYM CLSID_DVSplitter}
  10385. CLSID_DVMux: TGUID = (D1:$129D7E40;D2:$C10D;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  10386. {$EXTERNALSYM CLSID_DVMux}
  10387. CLSID_SeekingPassThru: TGUID = (D1:$060AF76C;D2:$68DD;D3:$11D0;D4:($8F,$C1,$00,$C0,$4F,$D9,$18,$9D));
  10388. {$EXTERNALSYM CLSID_SeekingPassThru}
  10389. CLSID_Line21Decoder : TGUID = (D1:$6E8D4A20;D2:$310C;D3:$11D0;D4:($B7,$9A,$00,$AA,$00,$37,$67,$A7));
  10390. {$EXTERNALSYM CLSID_Line21Decoder}
  10391. CLSID_Line21Decoder2 : TGUID = '{E4206432-01A1-4BEE-B3E1-3702C8EDC574}'; //Line21 (CC) Decoder v2
  10392. {$EXTERNALSYM CLSID_Line21Decoder2}
  10393. CLSID_OverlayMixer: TGUID = (D1:$CD8743A1;D2:$3736;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  10394. {$EXTERNALSYM CLSID_OverlayMixer}
  10395. CLSID_OverlayMixer2: TGUID = '{A0025E90-E45B-11D1-ABE9-00A0C905F375}'; //Overlay Mixer v2
  10396. {$EXTERNALSYM CLSID_OverlayMixer2}
  10397. CLSID_VBISurfaces: TGUID = (D1:$814B9800;D2:$1C88;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10398. {$EXTERNALSYM CLSID_VBISurfaces}
  10399. CLSID_WSTDecoder : TGUID = '{70BC06E0-5666-11d3-A184-00105AEF9F33}'; //WST Teletext Decoder
  10400. {$EXTERNALSYM CLSID_WSTDecoder}
  10401. CLSID_MjpegDec : TGUID = '{301056D0-6DFF-11d2-9EEB-006008039E37}';
  10402. {$EXTERNALSYM CLSID_MjpegDec}
  10403. CLSID_MJPGEnc : TGUID = '{B80AB0A0-7416-11d2-9EEB-006008039E37}';
  10404. {$EXTERNALSYM CLSID_MJPGEnc}
  10405. // pnp objects and categories
  10406. CLSID_SystemDeviceEnum: TGUID = (D1:$62BE5D10;D2:$60EB;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  10407. {$EXTERNALSYM CLSID_SystemDeviceEnum}
  10408. CLSID_CDeviceMoniker: TGUID = (D1:$4315D437;D2:$5B8C;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  10409. {$EXTERNALSYM CLSID_CDeviceMoniker}
  10410. CLSID_VideoInputDeviceCategory: TGUID = (D1:$860BB310;D2:$5D01;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  10411. {$EXTERNALSYM CLSID_VideoInputDeviceCategory}
  10412. CLSID_CVidCapClassManager: TGUID = (D1:$860BB310;D2:$5D01;D3:$11D0;D4:($BD,$3B,$00,$A0,$C9,$11,$CE,$86));
  10413. {$EXTERNALSYM CLSID_CVidCapClassManager}
  10414. CLSID_LegacyAmFilterCategory: TGUID = (D1:$083863F1;D2:$70DE;D3:$11D0;D4:($BD,$40,$00,$A0,$C9,$11,$CE,$86));
  10415. {$EXTERNALSYM CLSID_LegacyAmFilterCategory}
  10416. CLSID_CQzFilterClassManager: TGUID = (D1:$083863F1;D2:$70DE;D3:$11D0;D4:($BD,$40,$00,$A0,$C9,$11,$CE,$86));
  10417. {$EXTERNALSYM CLSID_CQzFilterClassManager}
  10418. CLSID_VideoCompressorCategory: TGUID = (D1:$33D9A760;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  10419. {$EXTERNALSYM CLSID_VideoCompressorCategory}
  10420. CLSID_CIcmCoClassManager: TGUID = (D1:$33D9A760;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  10421. {$EXTERNALSYM CLSID_CIcmCoClassManager}
  10422. CLSID_AudioCompressorCategory: TGUID = (D1:$33D9A761;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  10423. {$EXTERNALSYM CLSID_AudioCompressorCategory}
  10424. CLSID_CAcmCoClassManager: TGUID = (D1:$33D9A761;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  10425. {$EXTERNALSYM CLSID_CAcmCoClassManager}
  10426. CLSID_AudioInputDeviceCategory: TGUID = (D1:$33D9A762;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  10427. {$EXTERNALSYM CLSID_AudioInputDeviceCategory}
  10428. CLSID_CWaveinClassManager: TGUID = (D1:$33D9A762;D2:$90C8;D3:$11D0;D4:($BD,$43,$00,$A0,$C9,$11,$CE,$86));
  10429. {$EXTERNALSYM CLSID_CWaveinClassManager}
  10430. CLSID_AudioRendererCategory: TGUID = (D1:$E0F158E1;D2:$CB04;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  10431. {$EXTERNALSYM CLSID_AudioRendererCategory}
  10432. CLSID_CWaveOutClassManager: TGUID = (D1:$E0F158E1;D2:$CB04;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  10433. {$EXTERNALSYM CLSID_CWaveOutClassManager}
  10434. CLSID_MidiRendererCategory: TGUID = (D1:$4EFE2452;D2:$168A;D3:$11D1;D4:($BC,$76,$00,$C0,$4F,$B9,$45,$3B));
  10435. {$EXTERNALSYM CLSID_MidiRendererCategory}
  10436. CLSID_CMidiOutClassManager: TGUID = (D1:$4EFE2452;D2:$168A;D3:$11D1;D4:($BC,$76,$00,$C0,$4F,$B9,$45,$3B));
  10437. {$EXTERNALSYM CLSID_CMidiOutClassManager}
  10438. CLSID_TransmitCategory: TGUID = (D1:$cc7bfb41;D2:$f175;D3:$11d1;D4:($a3,$92,$00,$e0,$29,$1f,$39,$59));
  10439. {$EXTERNALSYM CLSID_TransmitCategory}
  10440. CLSID_DeviceControlCategory: TGUID = (D1:$cc7bfb46;D2:$f175;D3:$11d1;D4:($a3,$92,$00,$e0,$29,$1f,$39,$59));
  10441. {$EXTERNALSYM CLSID_DeviceControlCategory}
  10442. CLSID_ActiveMovieCategories: TGUID = (D1:$DA4E3DA0;D2:$D07D;D3:$11D0;D4:($BD,$50,$00,$A0,$C9,$11,$CE,$86));
  10443. {$EXTERNALSYM CLSID_ActiveMovieCategories}
  10444. CLSID_DVDHWDecodersCategory: TGUID = (D1:$2721AE20;D2:$7E70;D3:$11D0;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  10445. {$EXTERNALSYM CLSID_DVDHWDecodersCategory}
  10446. CLSID_MediaEncoderCategory : TGUID = '{7D22E920-5CA9-4787-8C2B-A6779BD11781}'; // Encoder API encoder category
  10447. {$EXTERNALSYM CLSID_MediaEncoderCategory}
  10448. CLSID_MediaMultiplexerCategory : TGUID = '{236C9559-ADCE-4736-BF72-BAB34E392196}'; // Encoder API multiplexer category
  10449. {$EXTERNALSYM CLSID_MediaMultiplexerCategory}
  10450. CLSID_FilterMapper2: TGUID = (D1:$CDA42200;D2:$BD88;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  10451. {$EXTERNALSYM CLSID_FilterMapper2}
  10452. CLSID_MemoryAllocator: TGUID = (D1:$1E651CC0;D2:$B199;D3:$11D0;D4:($82,$12,$00,$C0,$4F,$C3,$2C,$45));
  10453. {$EXTERNALSYM CLSID_MemoryAllocator}
  10454. CLSID_MediaPropertyBag: TGUID = (D1:$CDBD8D00;D2:$C193;D3:$11D0;D4:($BD,$4E,$00,$A0,$C9,$11,$CE,$86));
  10455. {$EXTERNALSYM CLSID_MediaPropertyBag}
  10456. CLSID_DvdGraphBuilder: TGUID = (D1:$FCC152B7;D2:$F372;D3:$11D0;D4:($8E,$00,$00,$C0,$4F,$D7,$C0,$8B));
  10457. {$EXTERNALSYM CLSID_DvdGraphBuilder}
  10458. CLSID_DVDNavigator: TGUID = (D1:$9B8C4620;D2:$2C1A;D3:$11D0;D4:($84,$93,$00,$A0,$24,$38,$AD,$48));
  10459. {$EXTERNALSYM CLSID_DVDNavigator}
  10460. CLSID_DVDState: TGUID = (D1:$f963c5cf;D2:$a659;D3:$4a93;D4:($96,$38,$ca,$f3,$cd,$27,$7d,$13));
  10461. {$EXTERNALSYM CLSID_DVDState}
  10462. CLSID_SmartTee: TGUID = (D1:$cc58e280;D2:$8aa1;D3:$11d1;D4:($b3,$f1,$00,$aa,$00,$37,$61,$c5));
  10463. {$EXTERNALSYM CLSID_SmartTee}
  10464. // -- format types ---
  10465. FORMAT_None: TGUID = (D1:$0F6417D6;D2:$C318;D3:$11D0;D4:($A4,$3F,$00,$A0,$C9,$22,$31,$96));
  10466. {$EXTERNALSYM FORMAT_None}
  10467. FORMAT_VideoInfo: TGUID = (D1:$05589F80;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  10468. {$EXTERNALSYM FORMAT_VideoInfo}
  10469. FORMAT_VideoInfo2: TGUID = (D1:$F72A76A0;D2:$EB0A;D3:$11D0;D4:($AC,$E4,$00,$00,$C0,$CC,$16,$BA));
  10470. {$EXTERNALSYM FORMAT_VideoInfo2}
  10471. FORMAT_WaveFormatEx: TGUID = (D1:$05589F81;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  10472. {$EXTERNALSYM FORMAT_WaveFormatEx}
  10473. FORMAT_MPEGVideo: TGUID = (D1:$05589F82;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  10474. {$EXTERNALSYM FORMAT_MPEGVideo}
  10475. FORMAT_MPEGStreams: TGUID = (D1:$05589F83;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  10476. {$EXTERNALSYM FORMAT_MPEGStreams}
  10477. FORMAT_DvInfo: TGUID = (D1:$05589F84;D2:$C356;D3:$11CE;D4:($BF,$01,$00,$AA,$00,$55,$59,$5A));
  10478. {$EXTERNALSYM FORMAT_DvInfo}
  10479. // -- Video related GUIDs ---
  10480. CLSID_DirectDrawProperties: TGUID = (D1:$944D4C00;D2:$DD52;D3:$11CE;D4:($BF,$0E,$00,$AA,$00,$55,$59,$5A));
  10481. {$EXTERNALSYM CLSID_DirectDrawProperties}
  10482. CLSID_PerformanceProperties: TGUID = (D1:$59CE6880;D2:$ACF8;D3:$11CF;D4:($B5,$6E,$00,$80,$C7,$C4,$B6,$8A));
  10483. {$EXTERNALSYM CLSID_PerformanceProperties}
  10484. CLSID_QualityProperties: TGUID = (D1:$418AFB70;D2:$F8B8;D3:$11CE;D4:($AA,$C6,$00,$20,$AF,$0B,$99,$A3));
  10485. {$EXTERNALSYM CLSID_QualityProperties}
  10486. CLSID_VPObject: TGUID = (D1:$CE292861;D2:$FC88;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  10487. {$EXTERNALSYM CLSID_VPObject}
  10488. IID_IVPObject: TGUID = (D1:$CE292862;D2:$FC88;D3:$11D0;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  10489. {$EXTERNALSYM IID_IVPObject}
  10490. IID_IVPControl: TGUID = (D1:$25DF12C1;D2:$3DE0;D3:$11D1;D4:($9E,$69,$00,$C0,$4F,$D7,$C1,$5B));
  10491. {$EXTERNALSYM IID_IVPControl}
  10492. CLSID_VPVBIObject: TGUID = (D1:$814B9801;D2:$1C88;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10493. {$EXTERNALSYM CLSID_VPVBIObject}
  10494. IID_IVPVBIObject: TGUID = (D1:$814B9802;D2:$1C88;D3:$11D1;D4:($BA,$D9,$00,$60,$97,$44,$11,$1A));
  10495. {$EXTERNALSYM IID_IVPVBIObject}
  10496. CLSID_ModexProperties: TGUID = (D1:$0618AA30;D2:$6BC4;D3:$11CF;D4:($BF,$36,$00,$AA,$00,$55,$59,$5A));
  10497. {$EXTERNALSYM CLSID_ModexProperties}
  10498. // DV decoder property
  10499. CLSID_DVDecPropertiesPage: TGUID = (D1:$101193C0;D2:$0BFE;D3:$11D0;D4:($AF,$91,$00,$AA,$00,$B6,$7A,$42));
  10500. {$EXTERNALSYM CLSID_DVDecPropertiesPage}
  10501. // DV encoder property
  10502. CLSID_DVEncPropertiesPage: TGUID = (D1:$4150F050;D2:$BB6F;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  10503. {$EXTERNALSYM CLSID_DVEncPropertiesPage}
  10504. // DV Muxer property
  10505. CLSID_DVMuxPropertyPage: TGUID = (D1:$4DB880E0;D2:$C10D;D3:$11D0;D4:($AF,$B9,$00,$AA,$00,$B6,$7A,$42));
  10506. {$EXTERNALSYM CLSID_DVMuxPropertyPage}
  10507. // -- Analog video related GUIDs ---
  10508. // -- format types ---
  10509. FORMAT_AnalogVideo : TGUID = (D1:$0482DDE0;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10510. {$EXTERNALSYM FORMAT_AnalogVideo}
  10511. MEDIATYPE_AnalogAudio : TGUID = '{0482DEE1-7817-11cf-8a03-00aa006ecb65}';
  10512. {$EXTERNALSYM MEDIATYPE_AnalogAudio}
  10513. MEDIATYPE_AnalogVideo : TGUID = (D1:$0482DDE1;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10514. {$EXTERNALSYM MEDIATYPE_AnalogVideo}
  10515. MEDIASUBTYPE_AnalogVideo_NTSC_M: TGUID = (D1:$0482DDE2;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10516. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_NTSC_M}
  10517. MEDIASUBTYPE_AnalogVideo_PAL_B: TGUID = (D1:$0482DDE5;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10518. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_B}
  10519. MEDIASUBTYPE_AnalogVideo_PAL_D: TGUID = (D1:$0482DDE6;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10520. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_D}
  10521. MEDIASUBTYPE_AnalogVideo_PAL_G: TGUID = (D1:$0482DDE7;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10522. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_G}
  10523. MEDIASUBTYPE_AnalogVideo_PAL_H: TGUID = (D1:$0482DDE8;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10524. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_H}
  10525. MEDIASUBTYPE_AnalogVideo_PAL_I: TGUID = (D1:$0482DDE9;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10526. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_I}
  10527. MEDIASUBTYPE_AnalogVideo_PAL_M: TGUID = (D1:$0482DDEA;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10528. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_M}
  10529. MEDIASUBTYPE_AnalogVideo_PAL_N : TGUID = (D1:$0482DDEB;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10530. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_N}
  10531. MEDIASUBTYPE_AnalogVideo_PAL_N_COMBO: TGUID = (D1:$482ddec;D2:$7817;D3:$11cf;D4:($8a,$3,$00,$aa,$00,$6e,$cb,$65));
  10532. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_PAL_N_COMBO}
  10533. // -- Analog Video subtypes, SECAM
  10534. MEDIASUBTYPE_AnalogVideo_SECAM_B: TGUID = (D1:$0482DDF0;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10535. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_B}
  10536. MEDIASUBTYPE_AnalogVideo_SECAM_D: TGUID = (D1:$0482DDF1;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10537. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_D}
  10538. MEDIASUBTYPE_AnalogVideo_SECAM_G: TGUID = (D1:$0482DDF2;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10539. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_G}
  10540. MEDIASUBTYPE_AnalogVideo_SECAM_H: TGUID = (D1:$0482DDF3;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10541. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_H}
  10542. MEDIASUBTYPE_AnalogVideo_SECAM_K: TGUID = (D1:$0482DDF4;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10543. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_K}
  10544. MEDIASUBTYPE_AnalogVideo_SECAM_K1: TGUID = (D1:$0482DDF5;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10545. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_K1}
  10546. MEDIASUBTYPE_AnalogVideo_SECAM_L: TGUID = (D1:$0482DDF6;D2:$7817;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10547. {$EXTERNALSYM MEDIASUBTYPE_AnalogVideo_SECAM_L}
  10548. // -- Well known time format GUIDs ---
  10549. TIME_FORMAT_NONE: TGUID = (D1:$00000000;D2:$0000;D3:$0000;D4:($00,$00,$00,$00,$00,$00,$00,$00));
  10550. {$EXTERNALSYM TIME_FORMAT_NONE}
  10551. TIME_FORMAT_FRAME: TGUID = (D1:$7B785570;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  10552. {$EXTERNALSYM TIME_FORMAT_FRAME}
  10553. TIME_FORMAT_BYTE: TGUID = (D1:$7B785571;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  10554. {$EXTERNALSYM TIME_FORMAT_BYTE}
  10555. TIME_FORMAT_SAMPLE: TGUID = (D1:$7B785572;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  10556. {$EXTERNALSYM TIME_FORMAT_SAMPLE}
  10557. TIME_FORMAT_FIELD: TGUID = (D1:$7B785573;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  10558. {$EXTERNALSYM TIME_FORMAT_FIELD}
  10559. TIME_FORMAT_MEDIA_TIME: TGUID = (D1:$7B785574;D2:$8C82;D3:$11CF;D4:($BC,$0C,$00,$AA,$00,$AC,$74,$F6));
  10560. {$EXTERNALSYM TIME_FORMAT_MEDIA_TIME}
  10561. // for IKsPropertySet
  10562. AMPROPSETID_Pin: TGUID = (D1:$9B00F101;D2:$1567;D3:$11D1;D4:($B3,$F1,$00,$AA,$00,$37,$61,$C5));
  10563. {$EXTERNALSYM AMPROPSETID_Pin}
  10564. PIN_CATEGORY_CAPTURE: TGUID = (D1:$FB6C4281;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10565. {$EXTERNALSYM PIN_CATEGORY_CAPTURE}
  10566. PIN_CATEGORY_PREVIEW: TGUID = (D1:$FB6C4282;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10567. {$EXTERNALSYM PIN_CATEGORY_PREVIEW}
  10568. PIN_CATEGORY_ANALOGVIDEOIN: TGUID = (D1:$FB6C4283;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10569. {$EXTERNALSYM PIN_CATEGORY_ANALOGVIDEOIN}
  10570. PIN_CATEGORY_VBI: TGUID = (D1:$FB6C4284;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10571. {$EXTERNALSYM PIN_CATEGORY_VBI}
  10572. PIN_CATEGORY_VIDEOPORT: TGUID = (D1:$FB6C4285;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10573. {$EXTERNALSYM PIN_CATEGORY_VIDEOPORT}
  10574. PIN_CATEGORY_NABTS: TGUID = (D1:$FB6C4286;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10575. {$EXTERNALSYM PIN_CATEGORY_NABTS}
  10576. PIN_CATEGORY_EDS: TGUID = (D1:$FB6C4287;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10577. {$EXTERNALSYM PIN_CATEGORY_EDS}
  10578. PIN_CATEGORY_TELETEXT: TGUID = (D1:$FB6C4288;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10579. {$EXTERNALSYM PIN_CATEGORY_TELETEXT}
  10580. PIN_CATEGORY_CC: TGUID = (D1:$FB6C4289;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10581. {$EXTERNALSYM PIN_CATEGORY_CC}
  10582. PIN_CATEGORY_STILL: TGUID = (D1:$FB6C428A;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10583. {$EXTERNALSYM PIN_CATEGORY_STILL}
  10584. PIN_CATEGORY_TIMECODE: TGUID = (D1:$FB6C428B;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10585. {$EXTERNALSYM PIN_CATEGORY_TIMECODE}
  10586. PIN_CATEGORY_VIDEOPORT_VBI: TGUID = (D1:$FB6C428C;D2:$0353;D3:$11D1;D4:($90,$5F,$00,$00,$C0,$CC,$16,$BA));
  10587. {$EXTERNALSYM PIN_CATEGORY_VIDEOPORT_VBI}
  10588. // the following special GUIDS are used by ICaptureGraphBuilder::FindInterface
  10589. LOOK_UPSTREAM_ONLY: TGUID = (D1:$ac798be0;D2:$98e3;D3:$11d1;D4:($b3,$f1,$0,$aa,$0,$37,$61,$c5));
  10590. {$EXTERNALSYM LOOK_UPSTREAM_ONLY}
  10591. LOOK_DOWNSTREAM_ONLY: TGUID = (D1:$ac798be1;D2:$98e3;D3:$11d1;D4:($b3,$f1,$0,$aa,$0,$37,$61,$c5));
  10592. {$EXTERNALSYM LOOK_DOWNSTREAM_ONLY}
  10593. // -------------------------------------------------------------------------
  10594. // KSProxy GUIDS
  10595. // -------------------------------------------------------------------------
  10596. CLSID_TVTunerFilterPropertyPage: TGUID = (D1:$266EEE41;D2:$6C63;D3:$11CF;D4:($8A,$03,$00,$AA,$00,$6E,$CB,$65));
  10597. {$EXTERNALSYM CLSID_TVTunerFilterPropertyPage}
  10598. CLSID_CrossbarFilterPropertyPage: TGUID = (D1:$71F96461;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  10599. {$EXTERNALSYM CLSID_CrossbarFilterPropertyPage}
  10600. CLSID_TVAudioFilterPropertyPage: TGUID = (D1:$71F96463;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  10601. {$EXTERNALSYM CLSID_TVAudioFilterPropertyPage}
  10602. CLSID_VideoProcAmpPropertyPage: TGUID = (D1:$71F96464;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  10603. {$EXTERNALSYM CLSID_VideoProcAmpPropertyPage}
  10604. CLSID_CameraControlPropertyPage: TGUID = (D1:$71F96465;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  10605. {$EXTERNALSYM CLSID_CameraControlPropertyPage}
  10606. CLSID_AnalogVideoDecoderPropertyPage: TGUID = (D1:$71F96466;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  10607. {$EXTERNALSYM CLSID_AnalogVideoDecoderPropertyPage}
  10608. CLSID_VideoStreamConfigPropertyPage: TGUID = (D1:$71F96467;D2:$78F3;D3:$11D0;D4:($A1,$8C,$00,$A0,$C9,$11,$89,$56));
  10609. {$EXTERNALSYM CLSID_VideoStreamConfigPropertyPage}
  10610. CLSID_AudioRendererAdvancedProperties: TGUID = (D1:$37e92a92;D2:$d9aa;D3:$11d2;D4:($bf,$84,$8e,$f2,$b1,$55,$5a,$ed));
  10611. {$EXTERNALSYM CLSID_AudioRendererAdvancedProperties}
  10612. // -------------------------------------------------------------------------
  10613. // VMRender GUIDS DX8
  10614. // -------------------------------------------------------------------------
  10615. CLSID_VideoMixingRenderer : TGUID = (D1:$B87BEB7B;D2:$8D29;D3:$423f;D4:($AE,$4D,$65,$82,$C1,$01,$75,$AC));
  10616. {$EXTERNALSYM CLSID_VideoMixingRenderer}
  10617. CLSID_VideoRendererDefault : TGUID = '{6BC1CFFA-8FC1-4261-AC22-CFB4CC38DB50}';
  10618. {$EXTERNALSYM CLSID_VideoRendererDefault}
  10619. CLSID_AllocPresenter : TGUID = '{99d54f63-1a69-41ae-aa4d-c976eb3f0713}';
  10620. {$EXTERNALSYM CLSID_AllocPresenter}
  10621. CLSID_AllocPresenterDDXclMode : TGUID = '{4444ac9e-242e-471b-a3c7-45dcd46352bc}';
  10622. {$EXTERNALSYM CLSID_AllocPresenterDDXclMode}
  10623. CLSID_VideoPortManager : TGUID = '{6f26a6cd-967b-47fd-874a-7aed2c9d25a2}';
  10624. {$EXTERNALSYM CLSID_VideoPortManager}
  10625. CLSID_ImageSynchronization : TGUID = '{7D8AA343-6E63-4663-BE90-6B80F66540A3}';
  10626. {$EXTERNALSYM CLSID_ImageSynchronization}
  10627. CLSID_VideoMixer : TGUID = '{06b32aee-77da-484b-973b-5d64f47201b0}';
  10628. {$EXTERNALSYM CLSID_VideoMixer}
  10629. // -------------------------------------------------------------------------
  10630. // VMR GUIDS for DX9
  10631. // -------------------------------------------------------------------------
  10632. CLSID_VideoMixingRenderer9 : TGUID = '{51b4abf3-748f-4e3b-a276-c828330e926a}';
  10633. {$EXTERNALSYM CLSID_VideoMixingRenderer9}
  10634. CLSID_AllocPresenter9 : TGUID = '{2D2E24CB-0CD5-458F-86EA-3E6FA22C8E64}'; // Found in Registry, Should'nt be used directly
  10635. {$EXTERNALSYM CLSID_AllocPresenter9}
  10636. CLSID_ImageSynchronization9 : TGUID = '{E4979309-7A32-495E-8A92-7B014AAD4961}'; // Found in Registry
  10637. {$EXTERNALSYM CLSID_ImageSynchronization9}
  10638. // -------------------------------------------------------------------------
  10639. // BDA Network Provider GUIDS
  10640. // -------------------------------------------------------------------------
  10641. CLSID_ATSCNetworkProvider : TGUID = (D1:$0dad2fdd;D2:$5fd7;D3:$11d3;D4:($8f,$50,$00,$c0,$4f,$79,$71,$e2));
  10642. {$EXTERNALSYM CLSID_ATSCNetworkProvider}
  10643. CLSID_ATSCNetworkPropertyPage: TGUID = (D1:$e3444d16;D2:$5ac4;D3:$4386;D4:($88,$df,$13,$fd,$23,$0e,$1d,$da));
  10644. {$EXTERNALSYM CLSID_ATSCNetworkPropertyPage}
  10645. CLSID_DVBSNetworkProvider : TGUID = (D1:$fa4b375a;D2:$45b4;D3:$4d45;D4:($84,$40,$26,$39,$57,$b1,$16,$23));
  10646. {$EXTERNALSYM CLSID_DVBSNetworkProvider}
  10647. CLSID_DVBTNetworkProvider : TGUID = '{216C62DF-6D7F-4e9a-8571-05F14EDB766A}';
  10648. {$EXTERNALSYM CLSID_DVBTNetworkProvider}
  10649. CLSID_DVBCNetworkProvider : TGUID = '{DC0C0FE7-0485-4266-B93F-68FBF80ED834}';
  10650. {$EXTERNALSYM CLSID_DVBCNetworkProvider}
  10651. // --- WST Decoder interface GUID ---
  10652. IID_IAMWstDecoder : TGUID = '{C056DE21-75C2-11d3-A184-00105AEF9F33}'; // IID_IAMWstDecoder
  10653. {$EXTERNALSYM IID_IAMWstDecoder}
  10654. // --- WST Decoder Property Page ---
  10655. CLSID_WstDecoderPropertyPage : TGUID = '{04E27F80-91E4-11d3-A184-00105AEF9F33}'; // WST Decoder Property Page
  10656. {$EXTERNALSYM CLSID_WstDecoderPropertyPage}
  10657. // -------------------------------------------------------------------------
  10658. // TVE Receiver filter guids
  10659. // -------------------------------------------------------------------------
  10660. // The CLSID used by the TVE Receiver filter
  10661. CLSID_DShowTVEFilter : TGUID = '{05500280-FAA5-4DF9-8246-BFC23AC5CEA8}';
  10662. {$EXTERNALSYM CLSID_DShowTVEFilter}
  10663. CLSID_TVEFilterTuneProperties : TGUID = '{05500281-FAA5-4DF9-8246-BFC23AC5CEA8}';
  10664. {$EXTERNALSYM CLSID_TVEFilterTuneProperties}
  10665. CLSID_TVEFilterCCProperties : TGUID = '{05500282-FAA5-4DF9-8246-BFC23AC5CEA8}';
  10666. {$EXTERNALSYM CLSID_TVEFilterCCProperties}
  10667. CLSID_TVEFilterStatsProperties : TGUID = '{05500283-FAA5-4DF9-8246-BFC23AC5CEA8}';
  10668. {$EXTERNALSYM CLSID_TVEFilterStatsProperties}
  10669. // -------------------------------------------------------------------------
  10670. // Defined ENCAPI parameter GUIDs
  10671. // -------------------------------------------------------------------------
  10672. // The CLSID for the original IVideoEncoder proxy plug-in
  10673. CLSID_IVideoEncoderProxy : TGUID = '{B43C4EEC-8C32-4791-9102-508ADA5EE8E7}';
  10674. {$EXTERNALSYM CLSID_IVideoEncoderProxy}
  10675. // The CLSID for the ICodecAPI proxy plug-in
  10676. CLSID_ICodecAPIProxy : TGUID = '{7ff0997a-1999-4286-a73c-622b8814e7eb}';
  10677. {$EXTERNALSYM CLSID_ICodecAPIProxy}
  10678. // The CLSID for the combination ICodecAPI/IVideoEncoder proxy plug-in
  10679. CLSID_IVideoEncoderCodecAPIProxy : TGUID = '{b05dabd9-56e5-4fdc-afa4-8a47e91f1c9c}';
  10680. {$EXTERNALSYM CLSID_IVideoEncoderCodecAPIProxy}
  10681. ENCAPIPARAM_BITRATE : TGUID = '{49CC4C43-CA83-4ad4-A9AF-F3696AF666DF}';
  10682. {$EXTERNALSYM ENCAPIPARAM_BITRATE}
  10683. ENCAPIPARAM_PEAK_BITRATE : TGUID = '{703F16A9-3D48-44a1-B077-018DFF915D19}';
  10684. {$EXTERNALSYM ENCAPIPARAM_PEAK_BITRATE}
  10685. ENCAPIPARAM_BITRATE_MODE : TGUID = '{EE5FB25C-C713-40d1-9D58-C0D7241E250F}';
  10686. {$EXTERNALSYM ENCAPIPARAM_BITRATE_MODE}
  10687. // for kernel control
  10688. CODECAPI_CHANGELISTS : TGUID = '{62b12acf-f6b0-47d9-9456-96f22c4e0b9d}';
  10689. {$EXTERNALSYM CODECAPI_CHANGELISTS}
  10690. CODECAPI_VIDEO_ENCODER : TGUID = '{7112e8e1-3d03-47ef-8e60-03f1cf537301}';
  10691. {$EXTERNALSYM CODECAPI_VIDEO_ENCODER}
  10692. CODECAPI_AUDIO_ENCODER : TGUID = '{b9d19a3e-f897-429c-bc46-8138b7272b2d}';
  10693. {$EXTERNALSYM CODECAPI_AUDIO_ENCODER}
  10694. CODECAPI_SETALLDEFAULTS : TGUID = '{6c5e6a7c-acf8-4f55-a999-1a628109051b}';
  10695. {$EXTERNALSYM CODECAPI_SETALLDEFAULTS}
  10696. CODECAPI_ALLSETTINGS : TGUID = '{6a577e92-83e1-4113-adc2-4fcec32f83a1}';
  10697. {$EXTERNALSYM CODECAPI_ALLSETTINGS}
  10698. CODECAPI_SUPPORTSEVENTS : TGUID = '{0581af97-7693-4dbd-9dca-3f9ebd6585a1}';
  10699. {$EXTERNALSYM CODECAPI_SUPPORTSEVENTS}
  10700. CODECAPI_CURRENTCHANGELIST : TGUID = '{1cb14e83-7d72-4657-83fd-47a2c5b9d13d}';
  10701. {$EXTERNALSYM CODECAPI_CURRENTCHANGELIST}
  10702. (*==========================================================================;
  10703. *
  10704. * Copyright (C) 1996-1997 Microsoft Corporation. All Rights Reserved.
  10705. *
  10706. * File: ksuuids.h
  10707. *
  10708. ***************************************************************************)
  10709. // contains the GUIDs for the MediaType type, subtype fields and format types
  10710. // for DVD/MPEG2 media types.
  10711. const
  10712. // --- MPEG 2 definitions ---
  10713. MEDIATYPE_MPEG2_PACK: TGUID = (D1:$36523B13;D2:$8EE5;D3:$11d1;D4:($8C,$A3,$00,$60,$B0,$57,$66,$4A));
  10714. {$EXTERNALSYM MEDIATYPE_MPEG2_PACK}
  10715. MEDIATYPE_MPEG2_PES: TGUID = (D1:$e06d8020;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  10716. {$EXTERNALSYM MEDIATYPE_MPEG2_PES}
  10717. MEDIATYPE_CONTROL: TGUID = (D1:$e06d8021;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  10718. {$EXTERNALSYM MEDIATYPE_CONTROL}
  10719. MEDIASUBTYPE_MPEG2_VIDEO: TGUID = (D1:$e06d8026;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  10720. {$EXTERNALSYM MEDIASUBTYPE_MPEG2_VIDEO}
  10721. MEDIATYPE_MPEG2_SECTIONS : TGUID = '{455f176c-4b06-47ce-9aef-8caef73df7b5}';
  10722. {$EXTERNALSYM MEDIATYPE_MPEG2_SECTIONS}
  10723. MEDIASUBTYPE_ATSC_SI : TGUID = '{b3c7397c-d303-414d-b33c-4ed2c9d29733}';
  10724. {$EXTERNALSYM MEDIASUBTYPE_ATSC_SI}
  10725. MEDIASUBTYPE_DVB_SI : TGUID = '{e9dd31a3-221d-4adb-8532-9af309c1a408}';
  10726. {$EXTERNALSYM MEDIASUBTYPE_DVB_SI}
  10727. MEDIASUBTYPE_MPEG2DATA : TGUID = '{C892E55B-252D-42b5-A316-D997E7A5D995}';
  10728. {$EXTERNALSYM MEDIASUBTYPE_MPEG2DATA}
  10729. // use MPEG2VIDEOINFO (defined below) with FORMAT_MPEG2_VIDEO
  10730. FORMAT_MPEG2_VIDEO: TGUID = (D1:$e06d80e3;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  10731. {$EXTERNALSYM FORMAT_MPEG2_VIDEO}
  10732. // MPEG2 Other subtypes
  10733. MEDIASUBTYPE_MPEG2_PROGRAM: TGUID = (D1:$e06d8022;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$05f,$6c,$bb,$ea));
  10734. {$EXTERNALSYM MEDIASUBTYPE_MPEG2_PROGRAM}
  10735. MEDIASUBTYPE_MPEG2_TRANSPORT: TGUID = (D1:$e06d8023;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$05f,$6c,$bb,$ea));
  10736. {$EXTERNALSYM MEDIASUBTYPE_MPEG2_TRANSPORT}
  10737. MEDIASUBTYPE_MPEG2_AUDIO: TGUID = (D1:$E06D802B;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10738. {$EXTERNALSYM MEDIASUBTYPE_MPEG2_AUDIO}
  10739. MEDIASUBTYPE_DOLBY_AC3: TGUID = (D1:$E06D802C;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10740. {$EXTERNALSYM MEDIASUBTYPE_DOLBY_AC3}
  10741. MEDIASUBTYPE_DVD_SUBPICTURE: TGUID = (D1:$E06D802D;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10742. {$EXTERNALSYM MEDIASUBTYPE_DVD_SUBPICTURE}
  10743. MEDIASUBTYPE_DVD_LPCM_AUDIO: TGUID = (D1:$E06D8032;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10744. {$EXTERNALSYM MEDIASUBTYPE_DVD_LPCM_AUDIO}
  10745. MEDIASUBTYPE_DTS: TGUID = (D1:$e06d8033;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  10746. {$EXTERNALSYM MEDIASUBTYPE_DTS}
  10747. MEDIASUBTYPE_SDDS: TGUID = (D1:$e06d8034;D2:$db46;D3:$11cf;D4:($b4,$d1,$00,$80,$5f,$6c,$bb,$ea));
  10748. {$EXTERNALSYM MEDIASUBTYPE_SDDS}
  10749. // DVD-related mediatypes
  10750. MEDIATYPE_DVD_ENCRYPTED_PACK: TGUID = (D1:$ED0B916A;D2:$044D;D3:$11D1;D4:($AA,$78,$00,$C0,$004F,$C3,$1D,$60));
  10751. {$EXTERNALSYM MEDIATYPE_DVD_ENCRYPTED_PACK}
  10752. MEDIATYPE_DVD_NAVIGATION: TGUID = (D1:$E06D802E;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10753. {$EXTERNALSYM MEDIATYPE_DVD_NAVIGATION}
  10754. MEDIASUBTYPE_DVD_NAVIGATION_PCI: TGUID = (D1:$E06D802F;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10755. {$EXTERNALSYM MEDIASUBTYPE_DVD_NAVIGATION_PCI}
  10756. MEDIASUBTYPE_DVD_NAVIGATION_DSI: TGUID = (D1:$E06D8030;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10757. {$EXTERNALSYM MEDIASUBTYPE_DVD_NAVIGATION_DSI}
  10758. MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER: TGUID = (D1:$E06D8031;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10759. {$EXTERNALSYM MEDIASUBTYPE_DVD_NAVIGATION_PROVIDER}
  10760. //
  10761. // DVD - MPEG2/AC3-related Formats
  10762. //
  10763. FORMAT_MPEG2Video: TGUID = (D1:$E06D80E3;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10764. {$EXTERNALSYM FORMAT_MPEG2Video}
  10765. FORMAT_DolbyAC3: TGUID = (D1:$E06D80E4;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10766. {$EXTERNALSYM FORMAT_DolbyAC3}
  10767. FORMAT_MPEG2Audio: TGUID = (D1:$E06D80E5;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10768. {$EXTERNALSYM FORMAT_MPEG2Audio}
  10769. FORMAT_DVD_LPCMAudio: TGUID = (D1:$E06D80E6;D2:$DB46;D3:$11CF;D4:($B4,$D1,$00,$80,$005F,$6C,$BB,$EA));
  10770. {$EXTERNALSYM FORMAT_DVD_LPCMAudio}
  10771. //
  10772. // KS Property Set Id (to communicate with the WDM Proxy filter) -- from
  10773. // ksmedia.h of WDM DDK.
  10774. //
  10775. AM_KSPROPSETID_AC3: TGUID = (D1:$BFABE720;D2:$6E1F;D3:$11D0;D4:($BC,$F2,$44,$45,$53,$54,$00,$00));
  10776. {$EXTERNALSYM AM_KSPROPSETID_AC3}
  10777. AM_KSPROPSETID_DvdSubPic: TGUID = (D1:$AC390460;D2:$43AF;D3:$11D0;D4:($BD,$6A,$00,$35,$05,$C1,$03,$A9));
  10778. {$EXTERNALSYM AM_KSPROPSETID_DvdSubPic}
  10779. AM_KSPROPSETID_CopyProt: TGUID = (D1:$0E8A0A40;D2:$6AEF;D3:$11D0;D4:($9E,$D0,$00,$A0,$24,$CA,$19,$B3));
  10780. {$EXTERNALSYM AM_KSPROPSETID_CopyProt}
  10781. AM_KSPROPSETID_TSRateChange: TGUID = (D1:$A503C5C0;D2:$1D1D;D3:$11D1;D4:($AD,$80,$44,$45,$53,$54,$00,$00));
  10782. {$EXTERNALSYM AM_KSPROPSETID_TSRateChange}
  10783. AM_KSPROPSETID_DVD_RateChange: TGUID = (D1:$3577eb09;D2:$9582;D3:$477f;D4:($b2,$9c,$b0,$c4,$52,$a4,$ff,$9a));
  10784. {$EXTERNALSYM AM_KSPROPSETID_DVD_RateChange}
  10785. AM_KSPROPSETID_DvdKaraoke: TGUID = (D1:$ae4720ae;D2:$aa71;D3:$42d8;D4:($b8,$2a,$ff,$fd,$f5,$8b,$76,$fd));
  10786. {$EXTERNALSYM AM_KSPROPSETID_DvdKaraoke}
  10787. AM_KSPROPSETID_FrameStep: TGUID = (D1:$c830acbd;D2:$ab07;D3:$492f;D4:($88,$52,$45,$b6,$98,$7c,$29,$79));
  10788. {$EXTERNALSYM AM_KSPROPSETID_FrameStep}
  10789. //
  10790. // KS categories from ks.h and ksmedia.h
  10791. //
  10792. //
  10793. AM_KSCATEGORY_CAPTURE: TGUID = (D1:$65E8773D;D2:$8F56;D3:$11D0;D4:($A3,$B9,$00,$A0,$C9,$22,$31,$96));
  10794. {$EXTERNALSYM AM_KSCATEGORY_CAPTURE}
  10795. AM_KSCATEGORY_RENDER: TGUID = (D1:$65E8773E;D2:$8F56;D3:$11D0;D4:($A3,$B9,$00,$A0,$C9,$22,$31,$96));
  10796. {$EXTERNALSYM AM_KSCATEGORY_RENDER}
  10797. AM_KSCATEGORY_DATACOMPRESSOR: TGUID = (D1:$1E84C900;D2:$7E70;D3:$11D0;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  10798. {$EXTERNALSYM AM_KSCATEGORY_DATACOMPRESSOR}
  10799. AM_KSCATEGORY_AUDIO: TGUID = (D1:$6994AD04;D2:$93EF;D3:$11D0;D4:($A3,$CC,$00,$A0,$C9,$22,$31,$96));
  10800. {$EXTERNALSYM AM_KSCATEGORY_AUDIO}
  10801. AM_KSCATEGORY_VIDEO: TGUID = (D1:$6994AD05;D2:$93EF;D3:$11D0;D4:($A3,$CC,$00,$A0,$C9,$22,$31,$96));
  10802. {$EXTERNALSYM AM_KSCATEGORY_VIDEO}
  10803. AM_KSCATEGORY_TVTUNER: TGUID = (D1:$A799A800;D2:$A46D;D3:$11D0;D4:($A1,$8C,$00,$A0,$24,$01,$DC,$D4));
  10804. {$EXTERNALSYM AM_KSCATEGORY_TVTUNER}
  10805. AM_KSCATEGORY_CROSSBAR: TGUID = (D1:$A799A801;D2:$A46D;D3:$11D0;D4:($A1,$8C,$00,$A0,$24,$01,$DC,$D4));
  10806. {$EXTERNALSYM AM_KSCATEGORY_CROSSBAR}
  10807. AM_KSCATEGORY_TVAUDIO: TGUID = (D1:$A799A802;D2:$A46D;D3:$11D0;D4:($A1,$8C,$00,$A0,$24,$01,$DC,$D4));
  10808. {$EXTERNALSYM AM_KSCATEGORY_TVAUDIO}
  10809. AM_KSCATEGORY_VBICODEC: TGUID = (D1:$07dad660;D2:$22f1;D3:$11d1;D4:($a9,$f4,$00,$c0,$4f,$bb,$de,$8f));
  10810. {$EXTERNALSYM AM_KSCATEGORY_VBICODEC}
  10811. AM_KSCATEGORY_SPLITTER: TGUID = (D1:$0A4252A0;D2:$7E70;D3:$11D0;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  10812. {$EXTERNALSYM AM_KSCATEGORY_SPLITTER}
  10813. //
  10814. // guids needed to support IKsPin interface
  10815. //
  10816. //
  10817. IID_IKsInterfaceHandler: TGUID = (D1:$D3ABC7E0;D2:$9A61;D3:$11D0;D4:($A4,$0D,$00,$A0,$C9,$22,$31,$96));
  10818. {$EXTERNALSYM IID_IKsInterfaceHandler}
  10819. STATIC_IID_IKsInterfaceHandler: TGUID = (D1:$D3ABC7E0;D2:$9A61;D3:$11D0;D4:($A4,$0D,$00,$A0,$C9,$22,$31,$96));
  10820. {$EXTERNALSYM STATIC_IID_IKsInterfaceHandler}
  10821. IID_IKsDataTypeHandler: TGUID = (D1:$5FFBAA02;D2:$49A3;D3:$11D0;D4:($9F,$36,$00,$AA,$00,$A2,$16,$A1));
  10822. {$EXTERNALSYM IID_IKsDataTypeHandler}
  10823. STATIC_IID_IKsDataTypeHandler: TGUID = (D1:$5FFBAA02;D2:$49A3;D3:$11D0;D4:($9F,$36,$00,$AA,$00,$A2,$16,$A1));
  10824. {$EXTERNALSYM STATIC_IID_IKsDataTypeHandler}
  10825. IID_IKsPin: TGUID = (D1:$B61178D1;D2:$A2D9;D3:$11CF;D4:($9E,$53,$00,$AA,$00,$A2,$16,$A1));
  10826. {$EXTERNALSYM IID_IKsPin}
  10827. STATIC_IID_IKsPin: TGUID = (D1:$B61178D1;D2:$A2D9;D3:$11CF;D4:($9E,$53,$00,$AA,$00,$A2,$16,$A1));
  10828. {$EXTERNALSYM STATIC_IID_IKsPin}
  10829. IID_IKsControl: TGUID = (D1:$28F54685;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  10830. {$EXTERNALSYM IID_IKsControl}
  10831. STATIC_IID_IKsControl : TGUID = (D1:$28F54685;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  10832. {$EXTERNALSYM STATIC_IID_IKsControl}
  10833. IID_IKsPinFactory: TGUID = (D1:$CD5EBE6B;D2:$8B6E;D3:$11D1;D4:($8A,$E0,$00,$A0,$C9,$22,$31,$96));
  10834. {$EXTERNALSYM IID_IKsPinFactory}
  10835. AM_INTERFACESETID_Standard: TGUID = (D1:$1A8766A0;D2:$62CE;D3:$11CF;D4:($A5,$D6,$28,$DB,$04,$C1,$00,$00));
  10836. {$EXTERNALSYM AM_INTERFACESETID_Standard}
  10837. //------------------------------------------------------------------------------
  10838. // File: DXVA.h
  10839. // Desc: DirectX Video Acceleration header file.
  10840. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  10841. //------------------------------------------------------------------------------
  10842. const
  10843. DXVA_ModeNone : TGUID = (D1:$1b81be00; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10844. {$EXTERNALSYM DXVA_ModeNone}
  10845. DXVA_ModeH261_A : TGUID = (D1:$1b81be01; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10846. {$EXTERNALSYM DXVA_ModeH261_A}
  10847. DXVA_ModeH261_B : TGUID = (D1:$1b81be02; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10848. {$EXTERNALSYM DXVA_ModeH261_B}
  10849. DXVA_ModeH263_A : TGUID = (D1:$1b81be03; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10850. {$EXTERNALSYM DXVA_ModeH263_A}
  10851. DXVA_ModeH263_B : TGUID = (D1:$1b81be04; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10852. {$EXTERNALSYM DXVA_ModeH263_B}
  10853. DXVA_ModeH263_C : TGUID = (D1:$1b81be05; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10854. {$EXTERNALSYM DXVA_ModeH263_C}
  10855. DXVA_ModeH263_D : TGUID = (D1:$1b81be06; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10856. {$EXTERNALSYM DXVA_ModeH263_D}
  10857. DXVA_ModeH263_E : TGUID = (D1:$1b81be07; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10858. {$EXTERNALSYM DXVA_ModeH263_E}
  10859. DXVA_ModeH263_F : TGUID = (D1:$1b81be08; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10860. {$EXTERNALSYM DXVA_ModeH263_F}
  10861. DXVA_ModeMPEG1_A : TGUID = (D1:$1b81be09; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10862. {$EXTERNALSYM DXVA_ModeMPEG1_A}
  10863. DXVA_ModeMPEG2_A : TGUID = (D1:$1b81be0A; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10864. {$EXTERNALSYM DXVA_ModeMPEG2_A}
  10865. DXVA_ModeMPEG2_B : TGUID = (D1:$1b81be0B; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10866. {$EXTERNALSYM DXVA_ModeMPEG2_B}
  10867. DXVA_ModeMPEG2_C : TGUID = (D1:$1b81be0C; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10868. {$EXTERNALSYM DXVA_ModeMPEG2_C}
  10869. DXVA_ModeMPEG2_D : TGUID = (D1:$1b81be0D; D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10870. {$EXTERNALSYM DXVA_ModeMPEG2_D}
  10871. DXVA_ModeWMV8_A : TGUID = (D1:$1b81be80 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10872. {$EXTERNALSYM DXVA_ModeWMV8_A}
  10873. DXVA_ModeWMV8_B : TGUID = (D1:$1b81be81 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10874. {$EXTERNALSYM DXVA_ModeWMV8_B}
  10875. DXVA_ModeWMV9_A : TGUID = (D1:$1b81be90 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10876. {$EXTERNALSYM DXVA_ModeWMV9_A}
  10877. DXVA_ModeWMV9_B : TGUID = (D1:$1b81be91 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10878. {$EXTERNALSYM DXVA_ModeWMV9_B}
  10879. DXVA_ModeWMV9_Ai : TGUID = (D1:$1b81be92 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10880. {$EXTERNALSYM DXVA_ModeWMV9_Ai}
  10881. DXVA_ModeWMV9_Bi : TGUID = (D1:$1b81be93 ;D2:$a0c7; D3:$11d3; D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10882. {$EXTERNALSYM DXVA_ModeWMV9_Bi}
  10883. DXVA_NoEncrypt : TGUID = (D1:$1b81beD0;D2:$a0c7;D3:$11d3;D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10884. {$EXTERNALSYM DXVA_NoEncrypt}
  10885. //DXVA_EncryptProt1 : TGUID = (D1:$1b81beD1;D2:$a0c7;D3:$11d3;D4:($b9,$84,$00,$c0,$4f,$2e,$73,$c5));
  10886. DXVA_RESTRICTED_MODE_UNRESTRICTED = $FFFF;
  10887. {$EXTERNALSYM DXVA_RESTRICTED_MODE_UNRESTRICTED}
  10888. DXVA_RESTRICTED_MODE_H261_A = 1;
  10889. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H261_A}
  10890. DXVA_RESTRICTED_MODE_H261_B = 2;
  10891. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H261_B}
  10892. DXVA_RESTRICTED_MODE_H263_A = 3;
  10893. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_A}
  10894. DXVA_RESTRICTED_MODE_H263_B = 4;
  10895. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_B}
  10896. DXVA_RESTRICTED_MODE_H263_C = 5;
  10897. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_C}
  10898. DXVA_RESTRICTED_MODE_H263_D = 6;
  10899. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_D}
  10900. DXVA_RESTRICTED_MODE_H263_E = 7;
  10901. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_E}
  10902. DXVA_RESTRICTED_MODE_H263_F = 8;
  10903. {$EXTERNALSYM DXVA_RESTRICTED_MODE_H263_F}
  10904. DXVA_RESTRICTED_MODE_MPEG1_A = 9;
  10905. {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG1_A}
  10906. DXVA_RESTRICTED_MODE_MPEG2_A = $A;
  10907. {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_A}
  10908. DXVA_RESTRICTED_MODE_MPEG2_B = $B;
  10909. {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_B}
  10910. DXVA_RESTRICTED_MODE_MPEG2_C = $C;
  10911. {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_C}
  10912. DXVA_RESTRICTED_MODE_MPEG2_D = $D;
  10913. {$EXTERNALSYM DXVA_RESTRICTED_MODE_MPEG2_D}
  10914. DXVA_RESTRICTED_MODE_WMV8_A = $80;
  10915. {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV8_A}
  10916. DXVA_RESTRICTED_MODE_WMV8_B = $81;
  10917. {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV8_B}
  10918. DXVA_RESTRICTED_MODE_WMV9_A = $90;
  10919. {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_A}
  10920. DXVA_RESTRICTED_MODE_WMV9_B = $91;
  10921. {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_B}
  10922. DXVA_RESTRICTED_MODE_WMV9_Ai = $92;
  10923. {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_Ai}
  10924. DXVA_RESTRICTED_MODE_WMV9_Bi = $93;
  10925. {$EXTERNALSYM DXVA_RESTRICTED_MODE_WMV9_Bi}
  10926. DXVA_COMPBUFFER_TYPE_THAT_IS_NOT_USED = 0;
  10927. {$EXTERNALSYM DXVA_COMPBUFFER_TYPE_THAT_IS_NOT_USED}
  10928. DXVA_PICTURE_DECODE_BUFFER = 1;
  10929. {$EXTERNALSYM DXVA_PICTURE_DECODE_BUFFER}
  10930. DXVA_MACROBLOCK_CONTROL_BUFFER = 2;
  10931. {$EXTERNALSYM DXVA_MACROBLOCK_CONTROL_BUFFER}
  10932. DXVA_RESIDUAL_DIFFERENCE_BUFFER = 3;
  10933. {$EXTERNALSYM DXVA_RESIDUAL_DIFFERENCE_BUFFER}
  10934. DXVA_DEBLOCKING_CONTROL_BUFFER = 4;
  10935. {$EXTERNALSYM DXVA_DEBLOCKING_CONTROL_BUFFER}
  10936. DXVA_INVERSE_QUANTIZATION_MATRIX_BUFFER = 5;
  10937. {$EXTERNALSYM DXVA_INVERSE_QUANTIZATION_MATRIX_BUFFER}
  10938. DXVA_SLICE_CONTROL_BUFFER = 6;
  10939. {$EXTERNALSYM DXVA_SLICE_CONTROL_BUFFER}
  10940. DXVA_BITSTREAM_DATA_BUFFER = 7;
  10941. {$EXTERNALSYM DXVA_BITSTREAM_DATA_BUFFER}
  10942. DXVA_AYUV_BUFFER = 8;
  10943. {$EXTERNALSYM DXVA_AYUV_BUFFER}
  10944. DXVA_IA44_SURFACE_BUFFER = 9;
  10945. {$EXTERNALSYM DXVA_IA44_SURFACE_BUFFER}
  10946. DXVA_DPXD_SURFACE_BUFFER = 10;
  10947. {$EXTERNALSYM DXVA_DPXD_SURFACE_BUFFER}
  10948. DXVA_HIGHLIGHT_BUFFER = 11;
  10949. {$EXTERNALSYM DXVA_HIGHLIGHT_BUFFER}
  10950. DXVA_DCCMD_SURFACE_BUFFER = 12;
  10951. {$EXTERNALSYM DXVA_DCCMD_SURFACE_BUFFER}
  10952. DXVA_ALPHA_BLEND_COMBINATION_BUFFER = 13;
  10953. {$EXTERNALSYM DXVA_ALPHA_BLEND_COMBINATION_BUFFER}
  10954. DXVA_PICTURE_RESAMPLE_BUFFER = 14;
  10955. {$EXTERNALSYM DXVA_PICTURE_RESAMPLE_BUFFER}
  10956. DXVA_READ_BACK_BUFFER = 15;
  10957. {$EXTERNALSYM DXVA_READ_BACK_BUFFER}
  10958. DXVA_NUM_TYPES_COMP_BUFFERS = 16;
  10959. {$EXTERNALSYM DXVA_NUM_TYPES_COMP_BUFFERS}
  10960. // values for bDXVA_Func
  10961. DXVA_PICTURE_DECODING_FUNCTION = 1;
  10962. {$EXTERNALSYM DXVA_PICTURE_DECODING_FUNCTION}
  10963. DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION = 2;
  10964. {$EXTERNALSYM DXVA_ALPHA_BLEND_DATA_LOAD_FUNCTION}
  10965. DXVA_ALPHA_BLEND_COMBINATION_FUNCTION = 3;
  10966. {$EXTERNALSYM DXVA_ALPHA_BLEND_COMBINATION_FUNCTION}
  10967. DXVA_PICTURE_RESAMPLE_FUNCTION = 4;
  10968. {$EXTERNALSYM DXVA_PICTURE_RESAMPLE_FUNCTION}
  10969. // values returned from Execute command in absence of read-back
  10970. DXVA_EXECUTE_RETURN_OK = 0;
  10971. {$EXTERNALSYM DXVA_EXECUTE_RETURN_OK}
  10972. DXVA_EXECUTE_RETURN_DATA_ERROR_MINOR = 1;
  10973. {$EXTERNALSYM DXVA_EXECUTE_RETURN_DATA_ERROR_MINOR}
  10974. DXVA_EXECUTE_RETURN_DATA_ERROR_SIGNIF = 2;
  10975. {$EXTERNALSYM DXVA_EXECUTE_RETURN_DATA_ERROR_SIGNIF}
  10976. DXVA_EXECUTE_RETURN_DATA_ERROR_SEVERE = 3;
  10977. {$EXTERNALSYM DXVA_EXECUTE_RETURN_DATA_ERROR_SEVERE}
  10978. DXVA_EXECUTE_RETURN_OTHER_ERROR_SEVERE = 4;
  10979. {$EXTERNALSYM DXVA_EXECUTE_RETURN_OTHER_ERROR_SEVERE}
  10980. type
  10981. PDXVAConnectMode = ^TDXVAConnectMode;
  10982. _DXVA_ConnectMode = record
  10983. guidMode : TGUID;
  10984. wRestrictedMode : WORD;
  10985. end;
  10986. {$EXTERNALSYM _DXVA_ConnectMode}
  10987. DXVA_ConnectMode = _DXVA_ConnectMode;
  10988. {$EXTERNALSYM DXVA_ConnectMode}
  10989. LPDXVA_ConnectMode = ^DXVA_ConnectMode;
  10990. {$EXTERNALSYM LPDXVA_ConnectMode}
  10991. TDXVAConnectMode = _DXVA_ConnectMode;
  10992. DXVA_ConfigQueryOrReplyFunc = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  10993. {$EXTERNALSYM DXVA_ConfigQueryOrReplyFunc}
  10994. LPDXVA_ConfigQueryOrReplyFunc = ^DXVA_ConfigQueryOrReplyFunc;
  10995. {$EXTERNALSYM LPDXVA_ConfigQueryOrReplyFunc}
  10996. const
  10997. DXVA_QUERYORREPLYFUNCFLAG_DECODER_PROBE_QUERY = $FFFFF1;
  10998. {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_DECODER_PROBE_QUERY}
  10999. DXVA_QUERYORREPLYFUNCFLAG_DECODER_LOCK_QUERY = $FFFFF5;
  11000. {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_DECODER_LOCK_QUERY}
  11001. DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_COPY = $FFFFF8;
  11002. {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_COPY}
  11003. DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_PLUS = $FFFFF9;
  11004. {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_OK_PLUS}
  11005. DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_OK_COPY = $FFFFFC;
  11006. {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_OK_COPY}
  11007. DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_FALSE_PLUS = $FFFFFB;
  11008. {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_PROBE_FALSE_PLUS}
  11009. DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_FALSE_PLUS = $FFFFFF;
  11010. {$EXTERNALSYM DXVA_QUERYORREPLYFUNCFLAG_ACCEL_LOCK_FALSE_PLUS}
  11011. {
  11012. #define readDXVA_QueryOrReplyFuncFlag(ptr) ((*(ptr)) >> 8)
  11013. #define readDXVA_QueryOrReplyFuncFlag_ACCEL(ptr) (((*(ptr)) >> 11) & 1)
  11014. #define readDXVA_QueryOrReplyFuncFlag_LOCK(ptr) (((*(ptr)) >> 10) & 1)
  11015. #define readDXVA_QueryOrReplyFuncFlag_BAD(ptr) (((*(ptr)) >> 9) & 1)
  11016. #define readDXVA_QueryOrReplyFuncFlag_PLUS(ptr) (((*(ptr)) >> 8) & 1)
  11017. #define readDXVA_QueryOrReplyFuncFunc(ptr) ((*(ptr)) & 0xFF)
  11018. #define writeDXVA_QueryOrReplyFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc))
  11019. #define setDXVA_QueryOrReplyFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8))
  11020. #define setDXVA_QueryOrReplyFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc));
  11021. }
  11022. type
  11023. DXVA_EncryptProtocolFunc = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  11024. {$EXTERNALSYM DXVA_EncryptProtocolFunc}
  11025. LPDXVA_EncryptProtocolFunc = ^DXVA_EncryptProtocolFunc;
  11026. {$EXTERNALSYM LPDXVA_EncryptProtocolFunc}
  11027. const
  11028. DXVA_ENCRYPTPROTOCOLFUNCFLAG_HOST = $FFFF00;
  11029. {$EXTERNALSYM DXVA_ENCRYPTPROTOCOLFUNCFLAG_HOST}
  11030. DXVA_ENCRYPTPROTOCOLFUNCFLAG_ACCEL = $FFFF08;
  11031. {$EXTERNALSYM DXVA_ENCRYPTPROTOCOLFUNCFLAG_ACCEL}
  11032. {
  11033. #define readDXVA_EncryptProtocolFuncFlag(ptr) ((*(ptr)) >> 8)
  11034. #define readDXVA_EncryptProtocolFuncFlag_ACCEL(ptr) (((*(ptr)) >> 11) & 1)
  11035. #define readDXVA_EncryptProtocolFuncFunc(ptr) ((*(ptr)) & 0xFF)
  11036. #define writeDXVA_EncryptProtocolFunc(ptr, flg, fnc) ((*(ptr)) = ((flg) << 8) | (fnc))
  11037. #define setDXVA_EncryptProtocolFuncFlag(ptr, flg) ((*(ptr)) |= ((flg) << 8))
  11038. #define setDXVA_EncryptProtocolFuncFunc(ptr, fnc) ((*(ptr)) |= (fnc));
  11039. }
  11040. type
  11041. PDXVAEncryptProtocolHeader = ^TDXVAEncryptProtocolHeader;
  11042. _DXVA_EncryptProtocolHeader = record
  11043. dwFunction : DXVA_EncryptProtocolFunc;
  11044. ReservedBits : array [0..2] of LongWord;
  11045. guidEncryptProtocol : TGUID;
  11046. end;
  11047. {$EXTERNALSYM _DXVA_EncryptProtocolHeader}
  11048. DXVA_EncryptProtocolHeader = _DXVA_EncryptProtocolHeader;
  11049. {$EXTERNALSYM DXVA_EncryptProtocolHeader}
  11050. LPDXVA_EncryptProtocolHeader = ^DXVA_EncryptProtocolHeader;
  11051. {$EXTERNALSYM LPDXVA_EncryptProtocolHeader}
  11052. TDXVAEncryptProtocolHeader = _DXVA_EncryptProtocolHeader;
  11053. PDXVAConfigPictureDecode = ^TDXVAConfigPictureDecode;
  11054. _DXVA_ConfigPictureDecode = record
  11055. // Operation Indicated
  11056. dwFunction: DXVA_ConfigQueryOrReplyFunc;
  11057. // Alignment
  11058. dwReservedBits : array[0..2] of DWORD;
  11059. // Encryption GUIDs
  11060. guidConfigBitstreamEncryption : TGUID;
  11061. guidConfigMBcontrolEncryption : TGUID;
  11062. guidConfigResidDiffEncryption : TGUID;
  11063. // Bitstream Processing Indicator
  11064. bConfigBitstreamRaw : BYTE;
  11065. // Macroblock Control Config
  11066. bConfigMBcontrolRasterOrder : BYTE;
  11067. // Host Resid Diff Config
  11068. bConfigResidDiffHost : BYTE;
  11069. bConfigSpatialResid8 : BYTE;
  11070. bConfigResid8Subtraction : BYTE;
  11071. bConfigSpatialHost8or9Clipping : BYTE;
  11072. bConfigSpatialResidInterleaved : BYTE;
  11073. bConfigIntraResidUnsigned : BYTE;
  11074. // Accelerator Resid Diff Config
  11075. bConfigResidDiffAccelerator : BYTE;
  11076. bConfigHostInverseScan : BYTE;
  11077. bConfigSpecificIDCT : BYTE;
  11078. bConfig4GroupedCoefs : BYTE;
  11079. end;
  11080. {$EXTERNALSYM _DXVA_ConfigPictureDecode}
  11081. DXVA_ConfigPictureDecode = _DXVA_ConfigPictureDecode;
  11082. {$EXTERNALSYM DXVA_ConfigPictureDecode}
  11083. LPDXVA_ConfigPictureDecode = ^DXVA_ConfigPictureDecode;
  11084. {$EXTERNALSYM LPDXVA_ConfigPictureDecode}
  11085. TDXVAConfigPictureDecode = _DXVA_ConfigPictureDecode;
  11086. // Picture Decoding Parameters
  11087. PDXVAPictureParameters = ^TDXVAPictureParameters;
  11088. _DXVA_PictureParameters = record
  11089. wDecodedPictureIndex : WORD;
  11090. wDeblockedPictureIndex : WORD;
  11091. wForwardRefPictureIndex : WORD;
  11092. wBackwardRefPictureIndex : WORD;
  11093. wPicWidthInMBminus1 : WORD;
  11094. wPicHeightInMBminus1 : WORD;
  11095. bMacroblockWidthMinus1 : BYTE;
  11096. bMacroblockHeightMinus1 : BYTE;
  11097. bBlockWidthMinus1 : BYTE;
  11098. bBlockHeightMinus1 : BYTE;
  11099. bBPPminus1 : BYTE;
  11100. bPicStructure : BYTE;
  11101. bSecondField : BYTE;
  11102. bPicIntra : BYTE;
  11103. bPicBackwardPrediction : BYTE;
  11104. bBidirectionalAveragingMode : BYTE;
  11105. bMVprecisionAndChromaRelation : BYTE;
  11106. bChromaFormat : BYTE;
  11107. bPicScanFixed : BYTE;
  11108. bPicScanMethod : BYTE;
  11109. bPicReadbackRequests : BYTE;
  11110. bRcontrol : BYTE;
  11111. bPicSpatialResid8 : BYTE;
  11112. bPicOverflowBlocks : BYTE;
  11113. bPicExtrapolation : BYTE;
  11114. bPicDeblocked : BYTE;
  11115. bPicDeblockConfined : BYTE;
  11116. bPic4MVallowed : BYTE;
  11117. bPicOBMC : BYTE;
  11118. bPicBinPB : BYTE;
  11119. bMV_RPS : BYTE;
  11120. bReservedBits : BYTE;
  11121. wBitstreamFcodes : WORD;
  11122. wBitstreamPCEelements : WORD;
  11123. bBitstreamConcealmentNeed : BYTE;
  11124. bBitstreamConcealmentMethod : BYTE;
  11125. end;
  11126. {$EXTERNALSYM _DXVA_PictureParameters}
  11127. DXVA_PictureParameters = _DXVA_PictureParameters;
  11128. {$EXTERNALSYM DXVA_PictureParameters}
  11129. LPDXVA_PictureParameters = ^DXVA_PictureParameters;
  11130. {$EXTERNALSYM LPDXVA_PictureParameters}
  11131. TDXVAPictureParameters = _DXVA_PictureParameters;
  11132. // Picture Resampling
  11133. PDXVAPicResample = ^TDXVAPicResample;
  11134. _DXVA_PicResample = record
  11135. wPicResampleSourcePicIndex : WORD;
  11136. wPicResampleDestPicIndex : WORD;
  11137. wPicResampleRcontrol : WORD;
  11138. bPicResampleExtrapWidth : BYTE;
  11139. bPicResampleExtrapHeight : BYTE;
  11140. dwPicResampleSourceWidth : DWORD;
  11141. dwPicResampleSourceHeight : DWORD;
  11142. dwPicResampleDestWidth : DWORD;
  11143. dwPicResampleDestHeight : DWORD;
  11144. dwPicResampleFullDestWidth : DWORD;
  11145. dwPicResampleFullDestHeight : DWORD;
  11146. end;
  11147. {$EXTERNALSYM _DXVA_PicResample}
  11148. DXVA_PicResample = _DXVA_PicResample;
  11149. {$EXTERNALSYM DXVA_PicResample}
  11150. LPDXVA_PicResample = ^DXVA_PicResample;
  11151. {$EXTERNALSYM LPDXVA_PicResample}
  11152. TDXVAPicResample = _DXVA_PicResample;
  11153. const
  11154. DXVA_CHROMA_FORMAT_420 = 1;
  11155. {$EXTERNALSYM DXVA_CHROMA_FORMAT_420}
  11156. DXVA_CHROMA_FORMAT_422 = 2;
  11157. {$EXTERNALSYM DXVA_CHROMA_FORMAT_422}
  11158. DXVA_CHROMA_FORMAT_444 = 3;
  11159. {$EXTERNALSYM DXVA_CHROMA_FORMAT_444}
  11160. DXVA_PICTURE_STRUCTURE_TOP_FIELD = 1;
  11161. {$EXTERNALSYM DXVA_PICTURE_STRUCTURE_TOP_FIELD}
  11162. DXVA_PICTURE_STRUCTURE_BOTTOM_FIELD = 2;
  11163. {$EXTERNALSYM DXVA_PICTURE_STRUCTURE_BOTTOM_FIELD}
  11164. DXVA_PICTURE_STRUCTURE_FRAME = 3;
  11165. {$EXTERNALSYM DXVA_PICTURE_STRUCTURE_FRAME}
  11166. DXVA_BIDIRECTIONAL_AVERAGING_MPEG2_ROUND = 0;
  11167. {$EXTERNALSYM DXVA_BIDIRECTIONAL_AVERAGING_MPEG2_ROUND}
  11168. DXVA_BIDIRECTIONAL_AVERAGING_H263_TRUNC = 1;
  11169. {$EXTERNALSYM DXVA_BIDIRECTIONAL_AVERAGING_H263_TRUNC}
  11170. DXVA_MV_PRECISION_AND_CHROMA_RELATION_MPEG2 = 0;
  11171. {$EXTERNALSYM DXVA_MV_PRECISION_AND_CHROMA_RELATION_MPEG2}
  11172. DXVA_MV_PRECISION_AND_CHROMA_RELATION_H263 = 1;
  11173. {$EXTERNALSYM DXVA_MV_PRECISION_AND_CHROMA_RELATION_H263}
  11174. DXVA_MV_PRECISION_AND_CHROMA_RELATION_H261 = 2;
  11175. {$EXTERNALSYM DXVA_MV_PRECISION_AND_CHROMA_RELATION_H261}
  11176. DXVA_SCAN_METHOD_ZIG_ZAG = 0;
  11177. {$EXTERNALSYM DXVA_SCAN_METHOD_ZIG_ZAG}
  11178. DXVA_SCAN_METHOD_ALTERNATE_VERTICAL = 1;
  11179. {$EXTERNALSYM DXVA_SCAN_METHOD_ALTERNATE_VERTICAL}
  11180. DXVA_SCAN_METHOD_ALTERNATE_HORIZONTAL = 2;
  11181. {$EXTERNALSYM DXVA_SCAN_METHOD_ALTERNATE_HORIZONTAL}
  11182. DXVA_SCAN_METHOD_ARBITRARY = 3;
  11183. {$EXTERNALSYM DXVA_SCAN_METHOD_ARBITRARY}
  11184. DXVA_BITSTREAM_CONCEALMENT_NEED_UNLIKELY = 0;
  11185. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_UNLIKELY}
  11186. DXVA_BITSTREAM_CONCEALMENT_NEED_MILD = 1;
  11187. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_MILD}
  11188. DXVA_BITSTREAM_CONCEALMENT_NEED_LIKELY = 2;
  11189. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_LIKELY}
  11190. DXVA_BITSTREAM_CONCEALMENT_NEED_SEVERE = 3;
  11191. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_NEED_SEVERE}
  11192. DXVA_BITSTREAM_CONCEALMENT_METHOD_UNSPECIFIED = 0;
  11193. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_UNSPECIFIED}
  11194. DXVA_BITSTREAM_CONCEALMENT_METHOD_INTRA = 1;
  11195. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_INTRA}
  11196. DXVA_BITSTREAM_CONCEALMENT_METHOD_FORWARD = 2;
  11197. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_FORWARD}
  11198. DXVA_BITSTREAM_CONCEALMENT_METHOD_BACKWARD = 3;
  11199. {$EXTERNALSYM DXVA_BITSTREAM_CONCEALMENT_METHOD_BACKWARD}
  11200. Type
  11201. // Buffer Description Data
  11202. PDXVABufferDescription = ^TDXVABufferDescription;
  11203. _DXVA_BufferDescription = record
  11204. dwTypeIndex : DWORD;
  11205. dwBufferIndex : DWORD;
  11206. dwDataOffset : DWORD;
  11207. dwDataSize : DWORD;
  11208. dwFirstMBaddress : DWORD;
  11209. dwNumMBsInBuffer : DWORD;
  11210. dwWidth : DWORD;
  11211. dwHeight : DWORD;
  11212. dwStride : DWORD;
  11213. dwReservedBits : DWORD;
  11214. end;
  11215. {$EXTERNALSYM _DXVA_BufferDescription}
  11216. DXVA_BufferDescription = _DXVA_BufferDescription;
  11217. {$EXTERNALSYM DXVA_BufferDescription}
  11218. LPDXVA_BufferDescription = ^DXVA_BufferDescription;
  11219. {$EXTERNALSYM LPDXVA_BufferDescription}
  11220. TDXVABufferDescription = _DXVA_BufferDescription;
  11221. // Off-Host IDCT Coefficient Data Structures
  11222. PDXVATCoef4Group = ^TDXVATCoef4Group;
  11223. _DXVA_TCoef4Group = record
  11224. TCoefIDX : array [0..3] of BYTE;
  11225. TCoefValue : array [0..3] of smallint;
  11226. end;
  11227. {$EXTERNALSYM _DXVA_TCoef4Group}
  11228. DXVA_TCoef4Group = _DXVA_TCoef4Group;
  11229. {$EXTERNALSYM DXVA_TCoef4Group}
  11230. LPDXVA_TCoef4Group = ^DXVA_TCoef4Group;
  11231. {$EXTERNALSYM LPDXVA_TCoef4Group}
  11232. TDXVATCoef4Group = _DXVA_TCoef4Group;
  11233. PDXVATCoefSingle = ^TDXVATCoefSingle;
  11234. _DXVA_TCoefSingle = record
  11235. wIndexWithEOB : WORD;
  11236. TCoefValue : smallint;
  11237. end;
  11238. {$EXTERNALSYM _DXVA_TCoefSingle}
  11239. DXVA_TCoefSingle = _DXVA_TCoefSingle;
  11240. {$EXTERNALSYM DXVA_TCoefSingle}
  11241. LPDXVA_TCoefSingle = ^DXVA_TCoefSingle;
  11242. {$EXTERNALSYM LPDXVA_TCoefSingle}
  11243. TDXVATCoefSingle = _DXVA_TCoefSingle;
  11244. // Macros for Reading EOB and Index Values
  11245. {
  11246. #define readDXVA_TCoefSingleIDX(ptr) ((ptr)->wIndexWithEOB >> 1)
  11247. #define readDXVA_TCoefSingleEOB(ptr) ((ptr)->wIndexWithEOB & 1)
  11248. }
  11249. // Macro for Writing EOB and Index Values
  11250. {
  11251. #define writeDXVA_TCoefSingleIndexWithEOB(ptr, idx, eob) ((ptr)->wIndexWithEOB = ((idx) << 1) | (eob))
  11252. #define setDXVA_TCoefSingleIDX(ptr, idx) ((ptr)->wIndexWithEOB |= ((idx) << 1))
  11253. #define setDXVA_TCoefSingleEOB(ptr) ((ptr)->wIndexWithEOB |= 1)
  11254. }
  11255. const
  11256. // Spatial-Domain Residual Difference Blocks
  11257. DXVA_USUAL_BLOCK_WIDTH = 8;
  11258. {$EXTERNALSYM DXVA_USUAL_BLOCK_WIDTH}
  11259. DXVA_USUAL_BLOCK_HEIGHT = 8;
  11260. {$EXTERNALSYM DXVA_USUAL_BLOCK_HEIGHT}
  11261. DXVA_USUAL_BLOCK_SIZE = (DXVA_USUAL_BLOCK_WIDTH * DXVA_USUAL_BLOCK_HEIGHT);
  11262. {$EXTERNALSYM DXVA_USUAL_BLOCK_SIZE}
  11263. type
  11264. DXVA_Sample16 = array[0..DXVA_USUAL_BLOCK_SIZE-1] of smallint;
  11265. {$EXTERNALSYM DXVA_Sample16}
  11266. DXVA_Sample8 = array[0..DXVA_USUAL_BLOCK_SIZE-1] of Shortint;
  11267. {$EXTERNALSYM DXVA_Sample8}
  11268. // Deblocking Filter Control Structure
  11269. DXVA_DeblockingEdgeControl = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BYTE;
  11270. {$EXTERNALSYM DXVA_DeblockingEdgeControl}
  11271. LPDXVA_DeblockingEdgeControl= ^DXVA_DeblockingEdgeControl;
  11272. {$EXTERNALSYM LPDXVA_DeblockingEdgeControl}
  11273. // Macros for Reading STRENGTH and FilterOn
  11274. {
  11275. #define readDXVA_EdgeFilterStrength(ptr) ((*(ptr)) >> 1)
  11276. #define readDXVA_EdgeFilterOn(ptr) ((*(ptr)) & 1)
  11277. }
  11278. // Macro for Writing STRENGTH and FilterOn
  11279. {
  11280. #define writeDXVA_DeblockingEdgeControl(ptr, str, fon) ((*(ptr)) = ((str) << 1) | (fon))
  11281. #define setDXVA_EdgeFilterStrength(ptr, str) ((*(ptr)) |= ((str) << 1))
  11282. #define setDXVA_EdgeFilterOn(ptr) ((*(ptr)) |= 1)
  11283. }
  11284. // Macroblock Control Command Data Structures */
  11285. PDXVAMVvalue = ^TDXVAMVvalue;
  11286. _DXVA_MVvalue = record
  11287. horz,vert : smallint;
  11288. end;
  11289. {$EXTERNALSYM _DXVA_MVvalue}
  11290. DXVA_MVvalue = _DXVA_MVvalue;
  11291. {$EXTERNALSYM DXVA_MVvalue}
  11292. LPDXVA_MVvalue = ^DXVA_MVvalue;
  11293. {$EXTERNALSYM LPDXVA_MVvalue}
  11294. TDXVAMVvalue = _DXVA_MVvalue;
  11295. // Inverse Quantization Matrices
  11296. PDXVAQmatrixData = ^TDXVAQmatrixData;
  11297. _DXVA_QmatrixData = record
  11298. bNewQmatrix : array [0..3] of BYTE;
  11299. // intra Y, inter Y, intra chroma, inter chroma
  11300. Qmatrix : array [0..3,0..(DXVA_USUAL_BLOCK_WIDTH*DXVA_USUAL_BLOCK_HEIGHT)-1] of WORD;
  11301. end;
  11302. {$EXTERNALSYM _DXVA_QmatrixData}
  11303. DXVA_QmatrixData = _DXVA_QmatrixData;
  11304. {$EXTERNALSYM DXVA_QmatrixData}
  11305. LPDXVA_QmatrixData = ^DXVA_QmatrixData;
  11306. {$EXTERNALSYM LPDXVA_QmatrixData}
  11307. TDXVAQmatrixData = _DXVA_QmatrixData;
  11308. // Slice Control Buffer Data
  11309. PDXVASliceInfo = ^TDXVASliceInfo;
  11310. _DXVA_SliceInfo = record
  11311. wHorizontalPosition : WORD;
  11312. wVerticalPosition : WORD;
  11313. dwSliceBitsInBuffer : LongWord;
  11314. dwSliceDataLocation : LongWord;
  11315. bStartCodeBitOffset : BYTE;
  11316. bReservedBits : BYTE;
  11317. wMBbitOffset : WORD;
  11318. wNumberMBsInSlice : WORD;
  11319. wQuantizerScaleCode : WORD;
  11320. wBadSliceChopping : WORD;
  11321. end;
  11322. {$EXTERNALSYM _DXVA_SliceInfo}
  11323. DXVA_SliceInfo = _DXVA_SliceInfo;
  11324. {$EXTERNALSYM DXVA_SliceInfo}
  11325. LPDXVA_SliceInfo = ^DXVA_SliceInfo;
  11326. {$EXTERNALSYM LPDXVA_SliceInfo}
  11327. TDXVASliceInfo = _DXVA_SliceInfo;
  11328. const
  11329. DXVA_NumMV_OBMC_off_BinPBwith4MV_off = 4;
  11330. {$EXTERNALSYM DXVA_NumMV_OBMC_off_BinPBwith4MV_off}
  11331. DXVA_NumMV_OBMC_off_BinPBwith4MV_on = (4+1);
  11332. {$EXTERNALSYM DXVA_NumMV_OBMC_off_BinPBwith4MV_on}
  11333. DXVA_NumMV_OBMC_on__BinPB_off = (10);
  11334. {$EXTERNALSYM DXVA_NumMV_OBMC_on__BinPB_off}
  11335. DXVA_NumMV_OBMC_on__BinPB_on = (11); // not current standards
  11336. {$EXTERNALSYM DXVA_NumMV_OBMC_on__BinPB_on}
  11337. DXVA_NumBlocksPerMB_420 = (4+2+0);
  11338. {$EXTERNALSYM DXVA_NumBlocksPerMB_420}
  11339. DXVA_NumBlocksPerMB_422 = (4+2+2);
  11340. {$EXTERNALSYM DXVA_NumBlocksPerMB_422}
  11341. DXVA_NumBlocksPerMB_444 = (4+4+4);
  11342. {$EXTERNALSYM DXVA_NumBlocksPerMB_444}
  11343. type
  11344. // Basic form for I pictures
  11345. // Host Residual Differences
  11346. _DXVA_MBctrl_I_HostResidDiff_1 = record
  11347. wMBaddress : WORD;
  11348. wMBtype : WORD;
  11349. dwMB_SNL : LongWord;
  11350. wPatternCode : WORD;
  11351. wPC_Overflow : WORD;
  11352. // zero if not overflow format
  11353. dwReservedBits2 : LongWord;
  11354. end;
  11355. {$EXTERNALSYM _DXVA_MBctrl_I_HostResidDiff_1}
  11356. DXVA_MBctrl_I_HostResidDiff_1 = _DXVA_MBctrl_I_HostResidDiff_1;
  11357. {$EXTERNALSYM DXVA_MBctrl_I_HostResidDiff_1}
  11358. TDXVAMBctrlIHostResidDiff1 = _DXVA_MBctrl_I_HostResidDiff_1;
  11359. // Basic form for I pictures
  11360. // Off-Host IDCT, 4:2:0 sampling
  11361. _DXVA_MBctrl_I_OffHostIDCT_1 = record
  11362. wMBaddress : WORD;
  11363. wMBtype : WORD;
  11364. dwMB_SNL : LongWord;
  11365. wPatternCode : WORD;
  11366. bNumCoef : array [0..DXVA_NumBlocksPerMB_420-1] of BYTE;
  11367. end;
  11368. {$EXTERNALSYM _DXVA_MBctrl_I_OffHostIDCT_1}
  11369. DXVA_MBctrl_I_OffHostIDCT_1 = _DXVA_MBctrl_I_OffHostIDCT_1;
  11370. {$EXTERNALSYM DXVA_MBctrl_I_OffHostIDCT_1}
  11371. TDXVAMBctrlIOffHostIDCT1 = _DXVA_MBctrl_I_OffHostIDCT_1;
  11372. // Basic form for P and B pictures
  11373. // Should also be used for concealment MVs in MPEG-2 I pictures
  11374. // Without OBMC, without BinPB and 4MV together, without MV RPS
  11375. // Host Residual Differences
  11376. _DXVA_MBctrl_P_HostResidDiff_1 = record
  11377. wMBaddress : WORD;
  11378. wMBtype : WORD;
  11379. dwMB_SNL : LongWord;
  11380. wPatternCode : WORD;
  11381. wPC_Overflow : WORD;
  11382. // zero if not overflow format
  11383. dwReservedBits2 : LongWord;
  11384. MVector : array [0..DXVA_NumMV_OBMC_off_BinPBwith4MV_off-1] of TDXVAMVvalue;
  11385. end;
  11386. {$EXTERNALSYM _DXVA_MBctrl_P_HostResidDiff_1}
  11387. DXVA_MBctrl_P_HostResidDiff_1 = _DXVA_MBctrl_P_HostResidDiff_1;
  11388. {$EXTERNALSYM DXVA_MBctrl_P_HostResidDiff_1}
  11389. TDXVAMBctrlPHostResidDiff1 = _DXVA_MBctrl_P_HostResidDiff_1;
  11390. // Basic form for P and B pictures
  11391. // Without OBMC, without BinPB and 4MV together, without MV RPS
  11392. // Off-Host IDCT, 4:2:0 sampling
  11393. _DXVA_MBctrl_P_OffHostIDCT_1 = record
  11394. wMBaddress : WORD;
  11395. wMBtype : WORD;
  11396. dwMB_SNL : LongWord;
  11397. wPatternCode : WORD;
  11398. bNumCoef : array [0..DXVA_NumBlocksPerMB_420-1] of BYTE;
  11399. MVector : array [0..DXVA_NumMV_OBMC_off_BinPBwith4MV_off-1] of TDXVAMVvalue;
  11400. end;
  11401. {$EXTERNALSYM _DXVA_MBctrl_P_OffHostIDCT_1}
  11402. DXVA_MBctrl_P_OffHostIDCT_1 = _DXVA_MBctrl_P_OffHostIDCT_1;
  11403. {$EXTERNALSYM DXVA_MBctrl_P_OffHostIDCT_1}
  11404. TDXVAMBctrlPOffHostIDCT1 = _DXVA_MBctrl_P_OffHostIDCT_1;
  11405. // How to load alpha blending graphic data
  11406. PDXVAConfigAlphaLoad = ^TDXVAConfigAlphaLoad;
  11407. _DXVA_ConfigAlphaLoad = record
  11408. // Operation Indicated
  11409. dwFunction: DXVA_ConfigQueryOrReplyFunc ;
  11410. // Alignment
  11411. dwReservedBits: array[0..2] of DWORD;
  11412. bConfigDataType: BYTE;
  11413. end;
  11414. {$EXTERNALSYM _DXVA_ConfigAlphaLoad}
  11415. DXVA_ConfigAlphaLoad = _DXVA_ConfigAlphaLoad;
  11416. {$EXTERNALSYM DXVA_ConfigAlphaLoad}
  11417. LPDXVA_ConfigAlphaLoad = ^DXVA_ConfigAlphaLoad;
  11418. {$EXTERNALSYM LPDXVA_ConfigAlphaLoad}
  11419. TDXVAConfigAlphaLoad = _DXVA_ConfigAlphaLoad;
  11420. const
  11421. DXVA_CONFIG_DATA_TYPE_IA44 = 0;
  11422. {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_IA44}
  11423. DXVA_CONFIG_DATA_TYPE_AI44 = 1;
  11424. {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_AI44}
  11425. DXVA_CONFIG_DATA_TYPE_DPXD = 2;
  11426. {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_DPXD}
  11427. DXVA_CONFIG_DATA_TYPE_AYUV = 3;
  11428. {$EXTERNALSYM DXVA_CONFIG_DATA_TYPE_AYUV}
  11429. // How to combine alpha blending graphic data
  11430. type
  11431. PDXVAConfigAlphaCombine = ^TDXVAConfigAlphaCombine;
  11432. _DXVA_ConfigAlphaCombine = record
  11433. // Operation Indicated
  11434. dwFunction: DXVA_ConfigQueryOrReplyFunc;
  11435. // Alignment
  11436. dwReservedBits: array[0..2] of DWORD;
  11437. bConfigBlendType: BYTE;
  11438. bConfigPictureResizing: BYTE;
  11439. bConfigOnlyUsePicDestRectArea: BYTE;
  11440. bConfigGraphicResizing: BYTE;
  11441. bConfigWholePlaneAlpha: BYTE;
  11442. end;
  11443. {$EXTERNALSYM _DXVA_ConfigAlphaCombine}
  11444. DXVA_ConfigAlphaCombine = _DXVA_ConfigAlphaCombine;
  11445. {$EXTERNALSYM DXVA_ConfigAlphaCombine}
  11446. LPDXVA_ConfigAlphaCombine = ^DXVA_ConfigAlphaCombine;
  11447. {$EXTERNALSYM LPDXVA_ConfigAlphaCombine}
  11448. TDXVAConfigAlphaCombine = _DXVA_ConfigAlphaCombine;
  11449. const
  11450. DXVA_CONFIG_BLEND_TYPE_FRONT_BUFFER = 0;
  11451. {$EXTERNALSYM DXVA_CONFIG_BLEND_TYPE_FRONT_BUFFER}
  11452. DXVA_CONFIG_BLEND_TYPE_BACK_HARDWARE = 1;
  11453. {$EXTERNALSYM DXVA_CONFIG_BLEND_TYPE_BACK_HARDWARE}
  11454. // AYUV sample for 16-entry YUV palette or graphic surface
  11455. type
  11456. PDXVAAYUVsample2 = ^TDXVAAYUVsample2;
  11457. _DXVA_AYUVsample2 = record
  11458. bCrValue : BYTE;
  11459. bCbValue : BYTE;
  11460. bY_Value : BYTE;
  11461. bSampleAlpha8 : BYTE;
  11462. end;
  11463. {$EXTERNALSYM _DXVA_AYUVsample2}
  11464. DXVA_AYUVsample2 = _DXVA_AYUVsample2;
  11465. {$EXTERNALSYM DXVA_AYUVsample2}
  11466. LPDXVA_AYUVsample2 = ^DXVA_AYUVsample2;
  11467. {$EXTERNALSYM LPDXVA_AYUVsample2}
  11468. TDXVAAYUVsample2 = _DXVA_AYUVsample2;
  11469. // Macros for IA44 alpha blending surface samples
  11470. DXVA_AI44sample = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BYTE;
  11471. {$EXTERNALSYM DXVA_AI44sample}
  11472. LPDXVA_AI44sample = ^DXVA_AI44sample;
  11473. {$EXTERNALSYM LPDXVA_AI44sample}
  11474. {
  11475. #define readDXVA_AI44index(ptr) ((*(ptr)) & 0x0F)
  11476. #define readDXVA_AI44alpha(ptr) (((*(ptr)) & 0xF0) >> 4)
  11477. #define writeDXVA_AI44(ptr, idx, alpha) ((*(ptr)) = (((alpha) << 4) | (idx)))
  11478. #define setDXVA_AI44index(ptr, idx) ((*(ptr)) |= (idx))
  11479. #define setDXVA_AI44alpha(ptr, alpha) ((*(ptr)) |= ((alpha) << 4))
  11480. }
  11481. // Highlight data structure
  11482. PDXVAHighlight = ^TDXVAHighlight;
  11483. _DXVA_Highlight = record
  11484. wHighlightActive : WORD;
  11485. wHighlightIndices : WORD;
  11486. wHighlightAlphas : WORD;
  11487. HighlightRect : TRect;
  11488. end;
  11489. {$EXTERNALSYM _DXVA_Highlight}
  11490. DXVA_Highlight = _DXVA_Highlight;
  11491. {$EXTERNALSYM DXVA_Highlight}
  11492. LPDXVA_Highlight = ^DXVA_Highlight;
  11493. {$EXTERNALSYM LPDXVA_Highlight}
  11494. TDXVAHighlight = _DXVA_Highlight;
  11495. DXVA_DPXD = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BYTE;
  11496. {$EXTERNALSYM DXVA_DPXD}
  11497. LPDXVA_DPXD = ^DXVA_DPXD;
  11498. {$EXTERNALSYM LPDXVA_DPXD}
  11499. DXVA_DCCMD = {$IFDEF TYPE_IDENTITY}type {$ENDIF} WORD;
  11500. {$EXTERNALSYM DXVA_DCCMD}
  11501. LPDXVA_DCCMD = ^DXVA_DCCMD;
  11502. {$EXTERNALSYM LPDXVA_DCCMD}
  11503. // Alpha blend combination
  11504. PDXVABlendCombination = ^TDXVABlendCombination;
  11505. _DXVA_BlendCombination = record
  11506. wPictureSourceIndex : WORD;
  11507. wBlendedDestinationIndex : WORD;
  11508. PictureSourceRect16thPel : TRECT;
  11509. PictureDestinationRect : TRECT;
  11510. GraphicSourceRect : TRECT;
  11511. GraphicDestinationRect : TRECT;
  11512. wBlendDelay : WORD;
  11513. bBlendOn : BYTE;
  11514. bWholePlaneAlpha : BYTE;
  11515. OutsideYUVcolor : TDXVAAYUVsample2;
  11516. end;
  11517. {$EXTERNALSYM _DXVA_BlendCombination}
  11518. DXVA_BlendCombination = _DXVA_BlendCombination;
  11519. {$EXTERNALSYM DXVA_BlendCombination}
  11520. LPDXVA_BlendCombination = ^DXVA_BlendCombination;
  11521. {$EXTERNALSYM LPDXVA_BlendCombination}
  11522. TDXVABlendCombination = _DXVA_BlendCombination;
  11523. LPDXVA_MBctrl_I_HostResidDiff_1 = ^DXVA_MBctrl_I_HostResidDiff_1;
  11524. {$EXTERNALSYM LPDXVA_MBctrl_I_HostResidDiff_1}
  11525. LPDXVA_MBctrl_I_OffHostIDCT_1 = ^DXVA_MBctrl_I_OffHostIDCT_1;
  11526. {$EXTERNALSYM LPDXVA_MBctrl_I_OffHostIDCT_1}
  11527. LPDXVA_MBctrl_P_HostResidDiff_1 = ^DXVA_MBctrl_P_HostResidDiff_1;
  11528. {$EXTERNALSYM LPDXVA_MBctrl_P_HostResidDiff_1}
  11529. LPDXVA_MBctrl_P_OffHostIDCT_1 = ^DXVA_MBctrl_P_OffHostIDCT_1;
  11530. {$EXTERNALSYM LPDXVA_MBctrl_P_OffHostIDCT_1}
  11531. //#pragma pack(pop)
  11532. //
  11533. // Other forms of pictures are constructed in the obvious way
  11534. // from the above by adjusting the number of residual difference
  11535. // blocks, the number of motion vectors per macroblock, etc.
  11536. //
  11537. {
  11538. #define readDXVA_MBskipsFollowing(ptr) (((ptr)->dwMB_SNL & 0xFF000000) >> 24)
  11539. #define readDXVA_MBdataLocation(ptr) (((ptr)->dwMB_SNL & 0x00FFFFFF))
  11540. #define writeDXVA_MB_SNL(ptr, skips, dloc) ((ptr)->dwMB_SNL = (((skips) << 24) | (dloc)))
  11541. #define setDXVA_MBskipsFollowing(ptr, skips) ((ptr)->dwMB_SNL |= ((skips) << 24))
  11542. #define setDXVA_MBdataLocation(ptr, dloc) ((ptr)->dwMB_SNL |= (dloc))
  11543. #define readDXVA_MvertFieldSel_3(ptr) (((ptr)->wMBtype & 0x8000) >> 15)
  11544. #define readDXVA_MvertFieldSel_2(ptr) (((ptr)->wMBtype & 0x4000) >> 14)
  11545. #define readDXVA_MvertFieldSel_1(ptr) (((ptr)->wMBtype & 0x2000) >> 13)
  11546. #define readDXVA_MvertFieldSel_0(ptr) (((ptr)->wMBtype & 0x1000) >> 12)
  11547. #define readDXVA_ReservedBits(ptr) (((ptr)->wMBtype & 0x0800) >> 11)
  11548. #define readDXVA_HostResidDiff(ptr) (((ptr)->wMBtype & 0x0400) >> 10)
  11549. #define readDXVA_MotionType(ptr) (((ptr)->wMBtype & 0x0300) >> 8)
  11550. #define readDXVA_MBscanMethod(ptr) (((ptr)->wMBtype & 0x00C0) >> 6)
  11551. #define readDXVA_FieldResidual(ptr) (((ptr)->wMBtype & 0x0020) >> 5)
  11552. #define readDXVA_H261LoopFilter(ptr) (((ptr)->wMBtype & 0x0010) >> 4)
  11553. #define readDXVA_Motion4MV(ptr) (((ptr)->wMBtype & 0x0008) >> 3)
  11554. #define readDXVA_MotionBackward(ptr) (((ptr)->wMBtype & 0x0004) >> 2)
  11555. #define readDXVA_MotionForward(ptr) (((ptr)->wMBtype & 0x0002) >> 1)
  11556. #define readDXVA_IntraMacroblock(ptr) (((ptr)->wMBtype & 0x0001))
  11557. #define setDXVA_MvertFieldSel_3(ptr) ((ptr)->wMBtype |= 0x8000)
  11558. #define setDXVA_MvertFieldSel_2(ptr) ((ptr)->wMBtype |= 0x4000)
  11559. #define setDXVA_MvertFieldSel_1(ptr) ((ptr)->wMBtype |= 0x2000)
  11560. #define setDXVA_MvertFieldSel_0(ptr) ((ptr)->wMBtype |= 0x1000)
  11561. #define setDXVA_ReservedBits(ptr) ((ptr)->wMBtype |= 0x0800)
  11562. #define setDXVA_HostResidDiff(ptr) ((ptr)->wMBtype |= 0x0400)
  11563. #define setDXVA_MotionType(ptr, value) ((ptr)->wMBtype |= ((value) << 8))
  11564. #define setDXVA_MBscanMethod(ptr, value) ((ptr)->wMBtype |= ((value) << 6))
  11565. #define setDXVA_FieldResidual(ptr) ((ptr)->wMBtype |= 0x0020)
  11566. #define setDXVA_H261LoopFilter(ptr) ((ptr)->wMBtype |= 0x0010)
  11567. #define setDXVA_Motion4MV(ptr) ((ptr)->wMBtype |= 0x0008)
  11568. #define setDXVA_MotionBackward(ptr) ((ptr)->wMBtype |= 0x0004)
  11569. #define setDXVA_MotionForward(ptr) ((ptr)->wMBtype |= 0x0002)
  11570. #define setDXVA_IntraMacroblock(ptr) ((ptr)->wMBtype |= 0x0001)
  11571. #define readDXVA_Y___0coded(ptr) (((ptr)->wPatternCode & 0x0800) >> 11)
  11572. #define readDXVA_Y___1coded(ptr) (((ptr)->wPatternCode & 0x0400) >> 10)
  11573. #define readDXVA_Y___2coded(ptr) (((ptr)->wPatternCode & 0x0200) >> 9)
  11574. #define readDXVA_Y___3coded(ptr) (((ptr)->wPatternCode & 0x0100) >> 8)
  11575. #define readDXVA_Cb__4coded(ptr) (((ptr)->wPatternCode & 0x0080) >> 7)
  11576. #define readDXVA_Cr__5coded(ptr) (((ptr)->wPatternCode & 0x0040) >> 6)
  11577. #define readDXVA_Cb__6coded(ptr) (((ptr)->wPatternCode & 0x0020) >> 5)
  11578. #define readDXVA_Cr__7coded(ptr) (((ptr)->wPatternCode & 0x0010) >> 4)
  11579. #define readDXVA_Cb__8coded(ptr) (((ptr)->wPatternCode & 0x0008) >> 3)
  11580. #define readDXVA_Cb__9coded(ptr) (((ptr)->wPatternCode & 0x0004) >> 2)
  11581. #define readDXVA_Cr_10coded(ptr) (((ptr)->wPatternCode & 0x0002) >> 1)
  11582. #define readDXVA_Cr_11coded(ptr) (((ptr)->wPatternCode & 0x0001))
  11583. #define readDXVA_Y___0oflow(ptr) (((ptr)->wPC_Overflow & 0x0800) >> 11)
  11584. #define readDXVA_Y___1oflow(ptr) (((ptr)->wPC_Overflow & 0x0400) >> 10)
  11585. #define readDXVA_Y___2oflow(ptr) (((ptr)->wPC_Overflow & 0x0200) >> 9)
  11586. #define readDXVA_Y___3oflow(ptr) (((ptr)->wPC_Overflow & 0x0100) >> 8)
  11587. #define readDXVA_Cb__4oflow(ptr) (((ptr)->wPC_Overflow & 0x0080) >> 7)
  11588. #define readDXVA_Cr__5oflow(ptr) (((ptr)->wPC_Overflow & 0x0040) >> 6)
  11589. #define readDXVA_Cb__6oflow(ptr) (((ptr)->wPC_Overflow & 0x0020) >> 5)
  11590. #define readDXVA_Cr__7oflow(ptr) (((ptr)->wPC_Overflow & 0x0010) >> 4)
  11591. #define readDXVA_Cb__8oflow(ptr) (((ptr)->wPC_Overflow & 0x0008) >> 3)
  11592. #define readDXVA_Cb__9oflow(ptr) (((ptr)->wPC_Overflow & 0x0004) >> 2)
  11593. #define readDXVA_Cr_10oflow(ptr) (((ptr)->wPC_Overflow & 0x0002) >> 1)
  11594. #define readDXVA_Cr_11oflow(ptr) (((ptr)->wPC_Overflow & 0x0001))
  11595. }
  11596. // -------------------------------------------------------------------------
  11597. //
  11598. // D3DFORMAT describes a pixel memory layout, DXVA sample format contains
  11599. // additional information that describes how the pixels should be interpreted.
  11600. //
  11601. // -------------------------------------------------------------------------
  11602. //#define DXVABit(__x) (1 << __x)
  11603. const
  11604. DXVA_SampleFormatMask = $FF; // 8 bits used for DXVA Sample format
  11605. {$EXTERNALSYM DXVA_SampleFormatMask}
  11606. type
  11607. DXVA_SampleFormat = (
  11608. DXVA_SampleUnknown,
  11609. DXVA_SamplePreviousFrame,
  11610. DXVA_SampleProgressiveFrame,
  11611. DXVA_SampleFieldInterleavedEvenFirst,
  11612. DXVA_SampleFieldInterleavedOddFirst,
  11613. DXVA_SampleFieldSingleEven,
  11614. DXVA_SampleFieldSingleOdd,
  11615. DXVA_SampleSubStream
  11616. );
  11617. {$EXTERNALSYM DXVA_SampleFormat}
  11618. TDXVASampleFormat = DXVA_SampleFormat;
  11619. //#define DXVA_ExtractSampleFormat(_sf) ((_sf) & (DXVA_SampleFormatMask))
  11620. // -------------------------------------------------------------------------
  11621. //
  11622. // DXVA Extended color data - occupies the HIWORD of the SampleFormat DWORD
  11623. // use the DXVA_ExtractExtColorData macro to extract the individual color
  11624. // data fields.
  11625. //
  11626. // The packed form is:
  11627. // VideoTransferFunction (bits 15..12)
  11628. // VideoPrimaries (bits 11..8)
  11629. // VideoLighting (bits 7..5)
  11630. // VideoTransferMatrix (Y'Cb'Cr') OR VideoNominalRange (RGB images) (bits 4..2)
  11631. // VideoChromaSubsampling (bits 1..0)
  11632. //
  11633. // -------------------------------------------------------------------------
  11634. //#define DXVA_ExtractExtColorData(_sf, _Mask, _Shift) \
  11635. // (((_sf) >> (_Shift)) & (_Mask))
  11636. const
  11637. DXVA_ExtColorData_ShiftBase = 16;
  11638. {$EXTERNALSYM DXVA_ExtColorData_ShiftBase}
  11639. DXVA_VideoTransFuncMask = (1 shl 15) or (1 shl 14) or (1 shl 13) or (1 shl 12);
  11640. {$EXTERNALSYM DXVA_VideoTransFuncMask}
  11641. DXVA_VideoTransFuncShift = (DXVA_ExtColorData_ShiftBase + 12);
  11642. {$EXTERNALSYM DXVA_VideoTransFuncShift}
  11643. type
  11644. DXVA_VideoTransferFunction = (
  11645. DXVA_VideoTransFunc_Unknown,
  11646. DXVA_VideoTransFunc_10,
  11647. DXVA_VideoTransFunc_18,
  11648. DXVA_VideoTransFunc_20,
  11649. DXVA_VideoTransFunc_22,
  11650. DXVA_VideoTransFunc_22_8bit,
  11651. DXVA_VideoTransFunc_22_8bit_240M,
  11652. DXVA_VideoTransFunc_24_8bit_sRGB,
  11653. DXVA_VideoTransFunc_28
  11654. );
  11655. {$EXTERNALSYM DXVA_VideoTransferFunction}
  11656. TDXVAVideoTransferFunction = DXVA_VideoTransferFunction;
  11657. const
  11658. DXVA_VideoPrimariesMask = (1 shl 11)or (1 shl 10) or (1 shl 9) or (1 shl 8);
  11659. {$EXTERNALSYM DXVA_VideoPrimariesMask}
  11660. DXVA_VideoPrimariesShift = (DXVA_ExtColorData_ShiftBase + 8);
  11661. {$EXTERNALSYM DXVA_VideoPrimariesShift}
  11662. type
  11663. DXVA_VideoPrimaries = (
  11664. DXVA_VideoPrimaries_Unknown,
  11665. DXVA_VideoPrimaries_BT601,
  11666. DXVA_VideoPrimaries_BT709,
  11667. DXVA_VideoPrimaries_BT470_2_SysM,
  11668. DXVA_VideoPrimaries_BT470_2_SysBG,
  11669. DXVA_VideoPrimaries_SMPTE170M,
  11670. DXVA_VideoPrimaries_SMPTE240M,
  11671. DXVA_VideoPrimaries_EBU3213,
  11672. DXVA_VideoPrimaries_SMPTE_C
  11673. );
  11674. {$EXTERNALSYM DXVA_VideoPrimaries}
  11675. TDXVAVideoPrimaries = DXVA_VideoPrimaries;
  11676. const
  11677. DXVA_VideoLightingMask = (1 shl 7)or (1 shl 6) or (1 shl 5);
  11678. {$EXTERNALSYM DXVA_VideoLightingMask}
  11679. DXVA_VideoLightingShift = (DXVA_ExtColorData_ShiftBase + 5);
  11680. {$EXTERNALSYM DXVA_VideoLightingShift}
  11681. type
  11682. DXVA_VideoLighting = (
  11683. DXVA_VideoLighting_Unknown,
  11684. DXVA_VideoLighting_bright,
  11685. DXVA_VideoLighting_office,
  11686. DXVA_VideoLighting_dim,
  11687. DXVA_VideoLighting_dark
  11688. );
  11689. {$EXTERNALSYM DXVA_VideoLighting}
  11690. TDXVAVideoLighting = DXVA_VideoLighting;
  11691. // -------------------------------------------------------------------------
  11692. // Note:
  11693. //
  11694. // DXVA_NominalRange and DXVA_VideoTransferMatrix are unioned together.
  11695. //
  11696. // -------------------------------------------------------------------------
  11697. //
  11698. const
  11699. DXVA_VideoTransferMatrixMask = (1 shl 4) or (1 shl 3) or (1 shl 2);
  11700. {$EXTERNALSYM DXVA_VideoTransferMatrixMask}
  11701. DXVA_VideoTransferMatrixShift = (DXVA_ExtColorData_ShiftBase + 2);
  11702. {$EXTERNALSYM DXVA_VideoTransferMatrixShift}
  11703. type
  11704. DXVA_VideoTransferMatrix = (
  11705. DXVA_VideoTransferMatrix_Unknown,
  11706. DXVA_VideoTransferMatrix_BT709,
  11707. DXVA_VideoTransferMatrix_BT601,
  11708. DXVA_VideoTransferMatrix_SMPTE240M
  11709. );
  11710. {$EXTERNALSYM DXVA_VideoTransferMatrix}
  11711. TDXVAVideoTransferMatrix = DXVA_VideoTransferMatrix;
  11712. const
  11713. DXVA_NominalRangeMask = (1 shl 4) or (1 shl 3) or (1 shl 2);
  11714. {$EXTERNALSYM DXVA_NominalRangeMask}
  11715. DXVA_NominalRangeShift = (DXVA_ExtColorData_ShiftBase + 2);
  11716. {$EXTERNALSYM DXVA_NominalRangeShift}
  11717. type
  11718. DXVA_NominalRange = (
  11719. DXVA_NominalRange_Normal,
  11720. DXVA_NominalRange_Wide
  11721. );
  11722. {$EXTERNALSYM DXVA_NominalRange}
  11723. TDXVANominalRange = DXVA_NominalRange;
  11724. const
  11725. DXVA_VideoChromaSubsamplingMask = (1 shl 1) or (1 shl 0);
  11726. {$EXTERNALSYM DXVA_VideoChromaSubsamplingMask}
  11727. DXVA_VideoChromaSubsamplingShift = (DXVA_ExtColorData_ShiftBase + 0);
  11728. {$EXTERNALSYM DXVA_VideoChromaSubsamplingShift}
  11729. type
  11730. DXVA_VideoChromaSubsampling = (
  11731. DXVA_VideoChromaSubsampling_Unknown,
  11732. DXVA_VideoChromaSubsampling_non_cosited,
  11733. DXVA_VideoChromaSubsampling_cosited
  11734. );
  11735. {$EXTERNALSYM DXVA_VideoChromaSubsampling}
  11736. TDXVAVideoChromaSubsampling = DXVA_VideoChromaSubsampling;
  11737. // -------------------------------------------------------------------------
  11738. //
  11739. // The definitions that follow describe the video de-interlace interface
  11740. // between the VMR and the graphics device driver. This interface is not
  11741. // accessable via the IAMVideoAccelerator interface.
  11742. //
  11743. // -------------------------------------------------------------------------
  11744. //
  11745. const
  11746. DXVA_DeinterlaceBobDevice : TGUID = '{335aa36e-7884-43a4-9c91-7f87faf3e37e}';
  11747. {$EXTERNALSYM DXVA_DeinterlaceBobDevice}
  11748. DXVA_DeinterlaceContainerDevice : TGUID = '{0e85cb93-3046-4ff0-aecc-d58cb5f035fd}';
  11749. {$EXTERNALSYM DXVA_DeinterlaceContainerDevice}
  11750. type
  11751. _DXVA_Frequency = record
  11752. Numerator : DWORD;
  11753. Denominator : DWORD;
  11754. end;
  11755. {$EXTERNALSYM _DXVA_Frequency}
  11756. DXVA_Frequency = _DXVA_Frequency;
  11757. {$EXTERNALSYM DXVA_Frequency}
  11758. TDXVAFrequency = _DXVA_Frequency;
  11759. PDXVAVideoDesc = ^TDXVAVideoDesc;
  11760. _DXVA_VideoDesc = record
  11761. Size : DWORD;
  11762. SampleWidth : DWORD;
  11763. SampleHeight : DWORD;
  11764. SampleFormat : DWORD; // also contains extend color data
  11765. d3dFormat : TD3DFORMAT;
  11766. InputSampleFreq : TDXVAFrequency;
  11767. OutputFrameFreq : TDXVAFrequency;
  11768. end;
  11769. {$EXTERNALSYM _DXVA_VideoDesc}
  11770. DXVA_VideoDesc = _DXVA_VideoDesc;
  11771. {$EXTERNALSYM DXVA_VideoDesc}
  11772. LPDXVA_VideoDesc = ^DXVA_VideoDesc;
  11773. {$EXTERNALSYM LPDXVA_VideoDesc}
  11774. TDXVAVideoDesc = _DXVA_VideoDesc;
  11775. DXVA_VideoProcessCaps = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  11776. {$EXTERNALSYM DXVA_VideoProcessCaps}
  11777. const
  11778. DXVA_VideoProcess_None = $0000;
  11779. {$EXTERNALSYM DXVA_VideoProcess_None}
  11780. DXVA_VideoProcess_YUV2RGB = $0001;
  11781. {$EXTERNALSYM DXVA_VideoProcess_YUV2RGB}
  11782. DXVA_VideoProcess_StretchX = $0002;
  11783. {$EXTERNALSYM DXVA_VideoProcess_StretchX}
  11784. DXVA_VideoProcess_StretchY = $0004;
  11785. {$EXTERNALSYM DXVA_VideoProcess_StretchY}
  11786. DXVA_VideoProcess_AlphaBlend = $0008;
  11787. {$EXTERNALSYM DXVA_VideoProcess_AlphaBlend}
  11788. DXVA_VideoProcess_SubRects = $0010;
  11789. {$EXTERNALSYM DXVA_VideoProcess_SubRects}
  11790. DXVA_VideoProcess_SubStreams = $0020;
  11791. {$EXTERNALSYM DXVA_VideoProcess_SubStreams}
  11792. DXVA_VideoProcess_SubStreamsExtended = $0040;
  11793. {$EXTERNALSYM DXVA_VideoProcess_SubStreamsExtended}
  11794. DXVA_VideoProcess_YUV2RGBExtended = $0080;
  11795. {$EXTERNALSYM DXVA_VideoProcess_YUV2RGBExtended}
  11796. DXVA_VideoProcess_AlphaBlendExtended = $0100;
  11797. {$EXTERNALSYM DXVA_VideoProcess_AlphaBlendExtended}
  11798. type
  11799. DXVA_DeinterlaceTech = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  11800. {$EXTERNALSYM DXVA_DeinterlaceTech}
  11801. const
  11802. // the algorithm is unknown or proprietary
  11803. DXVA_DeinterlaceTech_Unknown = $0000;
  11804. {$EXTERNALSYM DXVA_DeinterlaceTech_Unknown}
  11805. // the algorithm creates the missing lines by repeating
  11806. // the line either above or below it - this method will look very jaggy and
  11807. // isn't recommended
  11808. DXVA_DeinterlaceTech_BOBLineReplicate = $0001;
  11809. {$EXTERNALSYM DXVA_DeinterlaceTech_BOBLineReplicate}
  11810. // The algorithm creates the missing lines by vertically stretching each
  11811. // video field by a factor of two by averaging two lines
  11812. DXVA_DeinterlaceTech_BOBVerticalStretch = $0002;
  11813. {$EXTERNALSYM DXVA_DeinterlaceTech_BOBVerticalStretch}
  11814. // or using a [-1, 9, 9, -1]/16 filter across four lines.
  11815. DXVA_DeinterlaceTech_BOBVerticalStretch4Tap = $0100;
  11816. {$EXTERNALSYM DXVA_DeinterlaceTech_BOBVerticalStretch4Tap}
  11817. // the pixels in the missing line are recreated by a median filtering operation
  11818. DXVA_DeinterlaceTech_MedianFiltering = $0004;
  11819. {$EXTERNALSYM DXVA_DeinterlaceTech_MedianFiltering}
  11820. // the pixels in the missing line are recreated by an edge filter.
  11821. // In this process, spatial directional filters are applied to determine
  11822. // the orientation of edges in the picture content, and missing
  11823. // pixels are created by filtering along (rather than across) the
  11824. // detected edges.
  11825. DXVA_DeinterlaceTech_EdgeFiltering = $0010;
  11826. {$EXTERNALSYM DXVA_DeinterlaceTech_EdgeFiltering}
  11827. // the pixels in the missing line are recreated by switching on a field by
  11828. // field basis between using either spatial or temporal interpolation
  11829. // depending on the amount of motion.
  11830. DXVA_DeinterlaceTech_FieldAdaptive = $0020;
  11831. {$EXTERNALSYM DXVA_DeinterlaceTech_FieldAdaptive}
  11832. // the pixels in the missing line are recreated by switching on a pixel by pixel
  11833. // basis between using either spatial or temporal interpolation depending on
  11834. // the amount of motion..
  11835. DXVA_DeinterlaceTech_PixelAdaptive = $0040;
  11836. {$EXTERNALSYM DXVA_DeinterlaceTech_PixelAdaptive}
  11837. // Motion Vector Steering identifies objects within a sequence of video
  11838. // fields. The missing pixels are recreated after first aligning the
  11839. // movement axes of the individual objects in the scene to make them
  11840. // parallel with the time axis.
  11841. DXVA_DeinterlaceTech_MotionVectorSteered = $0080;
  11842. {$EXTERNALSYM DXVA_DeinterlaceTech_MotionVectorSteered}
  11843. type
  11844. PDXVAVideoSample = ^TDXVAVideoSample;
  11845. _DXVA_VideoSample = record
  11846. rtStart : TReferenceTime;
  11847. rtEnd : TReferenceTime;
  11848. SampleFormat : TDXVASampleFormat; // only lower 8 bits used
  11849. lpDDSSrcSurface : Pointer;
  11850. end;
  11851. {$EXTERNALSYM _DXVA_VideoSample}
  11852. DXVA_VideoSample = _DXVA_VideoSample;
  11853. {$EXTERNALSYM DXVA_VideoSample}
  11854. LPDXVA_VideoSample = ^DXVA_VideoSample;
  11855. {$EXTERNALSYM LPDXVA_VideoSample}
  11856. TDXVAVideoSample = _DXVA_VideoSample;
  11857. // -------------------------------------------------------------------------
  11858. // DeinterlaceBltEx declarations
  11859. // -------------------------------------------------------------------------
  11860. //
  11861. type
  11862. DXVA_SampleFlags = LongWord;
  11863. {$EXTERNALSYM DXVA_SampleFlags}
  11864. const
  11865. DXVA_SampleFlagsMask = (1 shl 3) or (1 shl 2) or (1 shl 1) or (1 shl 0);
  11866. {$EXTERNALSYM DXVA_SampleFlagsMask}
  11867. DXVA_SampleFlag_Palette_Changed = $0001;
  11868. {$EXTERNALSYM DXVA_SampleFlag_Palette_Changed}
  11869. DXVA_SampleFlag_SrcRect_Changed = $0002;
  11870. {$EXTERNALSYM DXVA_SampleFlag_SrcRect_Changed}
  11871. DXVA_SampleFlag_DstRect_Changed = $0004;
  11872. {$EXTERNALSYM DXVA_SampleFlag_DstRect_Changed}
  11873. DXVA_SampleFlag_ColorData_Changed = $0008;
  11874. {$EXTERNALSYM DXVA_SampleFlag_ColorData_Changed}
  11875. type
  11876. DXVA_DestinationFlags = LongWord;
  11877. const
  11878. DXVA_DestinationFlagMask = (1 shl 3) or (1 shl 2) or (1 shl 1) or (1 shl 0);
  11879. {$EXTERNALSYM DXVA_DestinationFlagMask}
  11880. DXVA_DestinationFlag_Background_Changed = $0001;
  11881. {$EXTERNALSYM DXVA_DestinationFlag_Background_Changed}
  11882. DXVA_DestinationFlag_TargetRect_Changed = $0002;
  11883. {$EXTERNALSYM DXVA_DestinationFlag_TargetRect_Changed}
  11884. DXVA_DestinationFlag_ColorData_Changed = $0004;
  11885. {$EXTERNALSYM DXVA_DestinationFlag_ColorData_Changed}
  11886. DXVA_DestinationFlag_Alpha_Changed = $0008;
  11887. {$EXTERNALSYM DXVA_DestinationFlag_Alpha_Changed}
  11888. type
  11889. PDXVAVideoSample2 = ^TDXVAVideoSample2;
  11890. DXVA_VideoSample2 = record
  11891. rtStart: REFERENCE_TIME;
  11892. rtEnd: REFERENCE_TIME;
  11893. SampleFormat: DWORD;
  11894. SampleFlags: DWORD;
  11895. lpDDSSrcSurface: Pointer;
  11896. rcSrc: TRect;
  11897. rcDst: TRect;
  11898. Palette: array[0..15] of TDXVAAYUVsample2;
  11899. end;
  11900. {$EXTERNALSYM DXVA_VideoSample2}
  11901. LPDXVA_VideoSample2 = ^DXVA_VideoSample2;
  11902. {$EXTERNALSYM LPDXVA_VideoSample2}
  11903. TDXVAVideoSample2 = DXVA_VideoSample2;
  11904. PDXVADeinterlaceCaps = ^TDXVADeinterlaceCaps;
  11905. _DXVA_DeinterlaceCaps = record
  11906. Size : DWORD;
  11907. NumPreviousOutputFrames : DWORD;
  11908. InputPool : DWORD;
  11909. NumForwardRefSamples : DWORD;
  11910. NumBackwardRefSamples : DWORD;
  11911. d3dOutputFormat : TD3DFORMAT;
  11912. VideoProcessingCaps : DXVA_VideoProcessCaps;
  11913. DeinterlaceTechnology : DXVA_DeinterlaceTech;
  11914. end;
  11915. {$EXTERNALSYM _DXVA_DeinterlaceCaps}
  11916. DXVA_DeinterlaceCaps = _DXVA_DeinterlaceCaps;
  11917. {$EXTERNALSYM DXVA_DeinterlaceCaps}
  11918. LPDXVA_DeinterlaceCaps = ^DXVA_DeinterlaceCaps;
  11919. {$EXTERNALSYM LPDXVA_DeinterlaceCaps}
  11920. TDXVADeinterlaceCaps = _DXVA_DeinterlaceCaps;
  11921. // -------------------------------------------------------------------------
  11922. // Data types used with RenderMoComp in kernel mode
  11923. // -------------------------------------------------------------------------
  11924. const
  11925. // Function codes for RenderMoComp
  11926. MAX_DEINTERLACE_SURFACES = 32;
  11927. {$EXTERNALSYM MAX_DEINTERLACE_SURFACES}
  11928. type
  11929. PDXVADeinterlaceBlt = ^TDXVADeinterlaceBlt;
  11930. _DXVA_DeinterlaceBlt = record
  11931. Size : DWORD;
  11932. Reserved : DWORD;
  11933. rtTarget : TReferenceTime;
  11934. DstRect : TRECT;
  11935. SrcRect : TRECT;
  11936. NumSourceSurfaces : DWORD;
  11937. Alpha : Single;
  11938. Source: array[0..MAX_DEINTERLACE_SURFACES-1] of TDXVAVideoSample;
  11939. end;
  11940. {$EXTERNALSYM _DXVA_DeinterlaceBlt}
  11941. DXVA_DeinterlaceBlt = _DXVA_DeinterlaceBlt;
  11942. {$EXTERNALSYM DXVA_DeinterlaceBlt}
  11943. TDXVADeinterlaceBlt = _DXVA_DeinterlaceBlt;
  11944. const
  11945. DXVA_DeinterlaceBltFnCode = $01;
  11946. {$EXTERNALSYM DXVA_DeinterlaceBltFnCode}
  11947. // lpInput => DXVA_DeinterlaceBlt*
  11948. // lpOuput => NULL /* not currently used */
  11949. type
  11950. DXVA_DeinterlaceBltEx = record
  11951. Size: DWORD;
  11952. BackgroundColor : DXVA_AYUVsample2;
  11953. rcTarget : TRect;
  11954. rtTarget : REFERENCE_TIME;
  11955. NumSourceSurfaces : DWORD;
  11956. Alpha : Single;
  11957. Source : array[0..MAX_DEINTERLACE_SURFACES-1] of DXVA_VideoSample2;
  11958. DestinationFormat : DWORD;
  11959. DestinationFlags : DWORD;
  11960. end;
  11961. {$EXTERNALSYM DXVA_DeinterlaceBltEx}
  11962. const
  11963. DXVA_DeinterlaceBltExFnCode = $02;
  11964. {$EXTERNALSYM DXVA_DeinterlaceBltExFnCode}
  11965. // lpInput => DXVA_DeinterlaceBltEx*
  11966. // lpOuput => NULL /* not currently used */
  11967. MAX_DEINTERLACE_DEVICE_GUIDS = 32;
  11968. {$EXTERNALSYM MAX_DEINTERLACE_DEVICE_GUIDS}
  11969. type
  11970. PDXVADeinterlaceQueryAvailableModes = ^TDXVADeinterlaceQueryAvailableModes;
  11971. _DXVA_DeinterlaceQueryAvailableModes = record
  11972. Size : DWORD;
  11973. NumGuids : DWORD;
  11974. Guids: array[0..MAX_DEINTERLACE_DEVICE_GUIDS-1] of TGUID;
  11975. end;
  11976. {$EXTERNALSYM _DXVA_DeinterlaceQueryAvailableModes}
  11977. DXVA_DeinterlaceQueryAvailableModes = _DXVA_DeinterlaceQueryAvailableModes;
  11978. {$EXTERNALSYM DXVA_DeinterlaceQueryAvailableModes}
  11979. TDXVADeinterlaceQueryAvailableModes = _DXVA_DeinterlaceQueryAvailableModes;
  11980. const
  11981. TDXVA_DeinterlaceQueryAvailableModesFnCode = $01;
  11982. {$EXTERNALSYM TDXVA_DeinterlaceQueryAvailableModesFnCode}
  11983. // lpInput => DXVA_VideoDesc*
  11984. // lpOuput => DXVA_DeinterlaceQueryAvailableModes*
  11985. type
  11986. PDXVADeinterlaceQueryModeCaps = ^TDXVADeinterlaceQueryModeCaps;
  11987. _DXVA_DeinterlaceQueryModeCaps = record
  11988. Size : DWORD;
  11989. Guid : TGUID;
  11990. VideoDesc : TDXVAVideoDesc;
  11991. end;
  11992. {$EXTERNALSYM _DXVA_DeinterlaceQueryModeCaps}
  11993. DXVA_DeinterlaceQueryModeCaps = _DXVA_DeinterlaceQueryModeCaps;
  11994. {$EXTERNALSYM DXVA_DeinterlaceQueryModeCaps}
  11995. TDXVADeinterlaceQueryModeCaps = _DXVA_DeinterlaceQueryModeCaps;
  11996. const
  11997. DXVA_DeinterlaceQueryModeCapsFnCode = $02;
  11998. {$EXTERNALSYM DXVA_DeinterlaceQueryModeCapsFnCode}
  11999. // lpInput => DXVA_DeinterlaceQueryModeCaps*
  12000. // lpOuput => DXVA_DeinterlaceCaps*
  12001. // -------------------------------------------------------------------------
  12002. //
  12003. // The definitions that follow describe the video ProcAmp interface
  12004. // between the VMR and the graphics device driver. This interface is not
  12005. // accessable via the IAMVideoAccelerator interface.
  12006. //
  12007. // -------------------------------------------------------------------------
  12008. //
  12009. const
  12010. DXVA_ProcAmpControlDevice : TGUID = '{9f200913-2ffd-4056-9f1e-e1b508f22dcf}';
  12011. {$EXTERNALSYM DXVA_ProcAmpControlDevice}
  12012. type
  12013. DXVA_ProcAmpControlProp = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  12014. {$EXTERNALSYM DXVA_ProcAmpControlProp}
  12015. const
  12016. DXVA_ProcAmp_None = $0000;
  12017. {$EXTERNALSYM DXVA_ProcAmp_None}
  12018. DXVA_ProcAmp_Brightness = $0001;
  12019. {$EXTERNALSYM DXVA_ProcAmp_Brightness}
  12020. DXVA_ProcAmp_Contrast = $0002;
  12021. {$EXTERNALSYM DXVA_ProcAmp_Contrast}
  12022. DXVA_ProcAmp_Hue = $0004;
  12023. {$EXTERNALSYM DXVA_ProcAmp_Hue}
  12024. DXVA_ProcAmp_Saturation = $0008;
  12025. {$EXTERNALSYM DXVA_ProcAmp_Saturation}
  12026. type
  12027. PDXVAProcAmpControlCaps = ^TDXVAProcAmpControlCaps;
  12028. _DXVA_ProcAmpControlCaps = record
  12029. Size : DWORD;
  12030. InputPool : DWORD;
  12031. d3dOutputFormat : TD3DFORMAT;
  12032. ProcAmpControlProps : DWORD; // see DXVA_ProcAmpControlProp
  12033. VideoProcessingCaps : DWORD; // see DXVA_VideoProcessCaps
  12034. end;
  12035. {$EXTERNALSYM _DXVA_ProcAmpControlCaps}
  12036. DXVA_ProcAmpControlCaps = _DXVA_ProcAmpControlCaps;
  12037. {$EXTERNALSYM DXVA_ProcAmpControlCaps}
  12038. LPDXVA_ProcAmpControlCaps = ^DXVA_ProcAmpControlCaps;
  12039. {$EXTERNALSYM LPDXVA_ProcAmpControlCaps}
  12040. TDXVAProcAmpControlCaps = _DXVA_ProcAmpControlCaps;
  12041. const
  12042. DXVA_ProcAmpControlQueryCapsFnCode = $03;
  12043. {$EXTERNALSYM DXVA_ProcAmpControlQueryCapsFnCode}
  12044. // lpInput => DXVA_VideoDesc*
  12045. // lpOuput => DXVA_ProcAmpControlCaps*
  12046. type
  12047. PDXVAProcAmpControlQueryRange = ^TDXVAProcAmpControlQueryRange;
  12048. _DXVA_ProcAmpControlQueryRange = record
  12049. Size : DWORD;
  12050. ProcAmpControlProp : DXVA_ProcAmpControlProp;
  12051. VideoDesc : TDXVAVideoDesc;
  12052. end;
  12053. {$EXTERNALSYM _DXVA_ProcAmpControlQueryRange}
  12054. DXVA_ProcAmpControlQueryRange = _DXVA_ProcAmpControlQueryRange;
  12055. {$EXTERNALSYM DXVA_ProcAmpControlQueryRange}
  12056. LPDXVA_ProcAmpControlQueryRange = ^DXVA_ProcAmpControlQueryRange;
  12057. {$EXTERNALSYM LPDXVA_ProcAmpControlQueryRange}
  12058. TDXVAProcAmpControlQueryRange = _DXVA_ProcAmpControlQueryRange;
  12059. PDXVAVideoPropertyRange = ^TDXVAVideoPropertyRange;
  12060. _DXVA_VideoPropertyRange = record
  12061. MinValue : Single;
  12062. MaxValue : Single;
  12063. DefaultValue : Single;
  12064. StepSize : Single;
  12065. end;
  12066. {$EXTERNALSYM _DXVA_VideoPropertyRange}
  12067. DXVA_VideoPropertyRange = _DXVA_VideoPropertyRange;
  12068. {$EXTERNALSYM DXVA_VideoPropertyRange}
  12069. LPDXVA_VideoPropertyRange = ^DXVA_VideoPropertyRange;
  12070. {$EXTERNALSYM LPDXVA_VideoPropertyRange}
  12071. TDXVAVideoPropertyRange = _DXVA_VideoPropertyRange;
  12072. const
  12073. DXVA_ProcAmpControlQueryRangeFnCode = $04;
  12074. {$EXTERNALSYM DXVA_ProcAmpControlQueryRangeFnCode}
  12075. // lpInput => DXVA_ProcAmpControlQueryRange*
  12076. // lpOuput => DXVA_VideoPropertyRange*
  12077. type
  12078. PDXVAProcAmpControlBlt = ^TDXVAProcAmpControlBlt;
  12079. _DXVA_ProcAmpControlBlt = record
  12080. Size : DWORD;
  12081. DstRect : TRECT;
  12082. SrcRect : TRECT;
  12083. Alpha : Single;
  12084. Brightness : Single;
  12085. Contrast : Single;
  12086. Hue : Single;
  12087. Saturation : Single;
  12088. end;
  12089. {$EXTERNALSYM _DXVA_ProcAmpControlBlt}
  12090. DXVA_ProcAmpControlBlt = _DXVA_ProcAmpControlBlt;
  12091. {$EXTERNALSYM DXVA_ProcAmpControlBlt}
  12092. TDXVAProcAmpControlBlt = _DXVA_ProcAmpControlBlt;
  12093. const
  12094. DXVA_ProcAmpControlBltFnCode = $01;
  12095. {$EXTERNALSYM DXVA_ProcAmpControlBltFnCode}
  12096. // lpInput => DXVA_ProcAmpControlBlt*
  12097. // lpOuput => NULL /* not currently used */
  12098. // -------------------------------------------------------------------------
  12099. //
  12100. // The definitions that follow describe the Certified Output Protection
  12101. // Protocol between the VMR and the graphics device driver. This interface
  12102. // is not accessable via the IAMVideoAccelerator interface.
  12103. //
  12104. // -------------------------------------------------------------------------
  12105. //
  12106. const
  12107. DXVA_COPPDevice : TGUID = '{D2457ADD-8999-45ED-8A8A-D1AA047BA4D5}';
  12108. {$EXTERNALSYM DXVA_COPPDevice}
  12109. // -------------------------------------------------------------------------
  12110. // COPPGetCertificateLength
  12111. // -------------------------------------------------------------------------
  12112. DXVA_COPPGetCertificateLengthFnCode = $01;
  12113. {$EXTERNALSYM DXVA_COPPGetCertificateLengthFnCode}
  12114. // lpInput => NULL
  12115. // lpOuput => DWORD*
  12116. // -------------------------------------------------------------------------
  12117. // COPPKeyExchange
  12118. // -------------------------------------------------------------------------
  12119. DXVA_COPPKeyExchangeFnCode = $02;
  12120. {$EXTERNALSYM DXVA_COPPKeyExchangeFnCode}
  12121. // lpInputData => NULL
  12122. // lpOuputData => GUID*
  12123. // -------------------------------------------------------------------------
  12124. // COPPSequenceStart
  12125. // -------------------------------------------------------------------------
  12126. type
  12127. PDXVACOPPSignature = ^TDXVACOPPSignature;
  12128. DXVA_COPPSignature = record
  12129. Signature: array[0..255] of Char;
  12130. end;
  12131. {$EXTERNALSYM DXVA_COPPSignature}
  12132. LPDXVA_COPPSignature = ^DXVA_COPPSignature;
  12133. {$EXTERNALSYM LPDXVA_COPPSignature}
  12134. TDXVACOPPSignature = DXVA_COPPSignature;
  12135. const
  12136. DXVA_COPPSequenceStartFnCode = $03;
  12137. {$EXTERNALSYM DXVA_COPPSequenceStartFnCode}
  12138. // lpInputData => DXVA_COPPSignature*
  12139. // lpOuputData => NULL
  12140. // -------------------------------------------------------------------------
  12141. // COPPCommand
  12142. // -------------------------------------------------------------------------
  12143. type
  12144. PDXVACOPPCommand = ^TDXVACOPPCommand;
  12145. DXVA_COPPCommand = packed record
  12146. macKDI: TGUID; // 16 bytes
  12147. guidCommandID: TGUID; // 16 bytes
  12148. dwSequence: ULONG; // 4 bytes
  12149. cbSizeData: ULONG; // 4 bytes
  12150. CommandData: array[0..4055] of Char; // 4056 bytes (4056+4+4+16+16 = 4096)
  12151. end;
  12152. {$EXTERNALSYM DXVA_COPPCommand}
  12153. LPDXVA_COPPCommand = ^DXVA_COPPCommand;
  12154. {$EXTERNALSYM LPDXVA_COPPCommand}
  12155. TDXVACOPPCommand = DXVA_COPPCommand;
  12156. const
  12157. DXVA_COPPCommandFnCode = $04;
  12158. {$EXTERNALSYM DXVA_COPPCommandFnCode}
  12159. // lpInputData => DXVA_COPPCommand*
  12160. // lpOuputData => NULL
  12161. DXVA_COPPSetProtectionLevel : TGUID = '{9bb9327c-4eb5-4727-9f00-b42b0919c0da}';
  12162. {$EXTERNALSYM DXVA_COPPSetProtectionLevel}
  12163. type
  12164. PDXVACOPPSetProtectionLevelCmdData = ^TDXVACOPPSetProtectionLevelCmdData;
  12165. DXVA_COPPSetProtectionLevelCmdData = packed record
  12166. ProtType: ULONG;
  12167. ProtLevel: ULONG;
  12168. TypeSpecificMask: ULONG;
  12169. TypeSpecificInfo: ULONG;
  12170. end;
  12171. {$EXTERNALSYM DXVA_COPPSetProtectionLevelCmdData}
  12172. TDXVACOPPSetProtectionLevelCmdData = DXVA_COPPSetProtectionLevelCmdData;
  12173. // Set the HDCP protection level - (0 - 1 DWORD, 4 bytes)
  12174. COPP_HDCP_Protection_Level = LongWord;
  12175. {$EXTERNALSYM COPP_HDCP_Protection_Level}
  12176. const
  12177. COPP_HDCP_Level0 = 0;
  12178. {$EXTERNALSYM COPP_HDCP_Level0}
  12179. COPP_HDCP_LevelMin = COPP_HDCP_Level0;
  12180. {$EXTERNALSYM COPP_HDCP_LevelMin}
  12181. COPP_HDCP_Level1 = 1;
  12182. {$EXTERNALSYM COPP_HDCP_Level1}
  12183. COPP_HDCP_LevelMax = COPP_HDCP_Level1;
  12184. {$EXTERNALSYM COPP_HDCP_LevelMax}
  12185. COPP_HDCP_ForceDWORD = $7fffffff;
  12186. {$EXTERNALSYM COPP_HDCP_ForceDWORD}
  12187. type
  12188. COPP_CGMSA_Protection_Level = LongWord;
  12189. {$EXTERNALSYM COPP_CGMSA_Protection_Level}
  12190. const
  12191. COPP_CGMSA_CopyFreely = 0;
  12192. {$EXTERNALSYM COPP_CGMSA_CopyFreely}
  12193. COPP_CGMSA_LevelMin = COPP_CGMSA_CopyFreely;
  12194. {$EXTERNALSYM COPP_CGMSA_LevelMin}
  12195. COPP_CGMSA_CopyOneGeneration = 2;
  12196. {$EXTERNALSYM COPP_CGMSA_CopyOneGeneration}
  12197. COPP_CGMSA_CopyNever = 3;
  12198. {$EXTERNALSYM COPP_CGMSA_CopyNever}
  12199. COPP_CGMSA_RedistributionControlRequired = $04;
  12200. {$EXTERNALSYM COPP_CGMSA_RedistributionControlRequired}
  12201. COPP_CGMSA_LevelMax = (COPP_CGMSA_RedistributionControlRequired + COPP_CGMSA_CopyNever);
  12202. {$EXTERNALSYM COPP_CGMSA_LevelMax}
  12203. COPP_CGMSA_ForceDWORD = $7fffffff;
  12204. {$EXTERNALSYM COPP_CGMSA_ForceDWORD}
  12205. COPP_WSS_FLAG = $01; // used with DXVA_COPPSetProtectionLevelCmdData::TypeSpecificInfo
  12206. {$EXTERNALSYM COPP_WSS_FLAG}
  12207. type
  12208. COPP_ACP_Protection_Level = LongWord;
  12209. {$EXTERNALSYM COPP_ACP_Protection_Level}
  12210. const
  12211. COPP_ACP_Level0 = 0;
  12212. {$EXTERNALSYM COPP_ACP_Level0}
  12213. COPP_ACP_LevelMin = COPP_ACP_Level0;
  12214. {$EXTERNALSYM COPP_ACP_LevelMin}
  12215. COPP_ACP_Level1 = 1;
  12216. {$EXTERNALSYM COPP_ACP_Level1}
  12217. COPP_ACP_Level2 = 2;
  12218. {$EXTERNALSYM COPP_ACP_Level2}
  12219. COPP_ACP_Level3 = 3;
  12220. {$EXTERNALSYM COPP_ACP_Level3}
  12221. COPP_ACP_LevelMax = COPP_ACP_Level3;
  12222. {$EXTERNALSYM COPP_ACP_LevelMax}
  12223. COPP_ACP_ForceDWORD = $7fffffff;
  12224. {$EXTERNALSYM COPP_ACP_ForceDWORD}
  12225. COPP_NoProtectionLevelAvailable = -1;
  12226. {$EXTERNALSYM COPP_NoProtectionLevelAvailable}
  12227. COPP_DefaultProtectionLevel = 0;
  12228. {$EXTERNALSYM COPP_DefaultProtectionLevel}
  12229. //
  12230. // Bit flags of possible protection types. Note that it is possible to apply
  12231. // different protection settings to a single connector.
  12232. //
  12233. COPP_ProtectionType_Unknown = $80000000;
  12234. {$EXTERNALSYM COPP_ProtectionType_Unknown}
  12235. COPP_ProtectionType_None = $00000000;
  12236. {$EXTERNALSYM COPP_ProtectionType_None}
  12237. COPP_ProtectionType_HDCP = $00000001;
  12238. {$EXTERNALSYM COPP_ProtectionType_HDCP}
  12239. COPP_ProtectionType_ACP = $00000002;
  12240. {$EXTERNALSYM COPP_ProtectionType_ACP}
  12241. COPP_ProtectionType_CGMSA = $00000004;
  12242. {$EXTERNALSYM COPP_ProtectionType_CGMSA}
  12243. COPP_ProtectionType_Mask = $80000007;
  12244. {$EXTERNALSYM COPP_ProtectionType_Mask}
  12245. COPP_ProtectionType_Reserved = $7FFFFFF8;
  12246. {$EXTERNALSYM COPP_ProtectionType_Reserved}
  12247. // -------------------------------------------------------------------------
  12248. // COPPQueryStatus
  12249. // -------------------------------------------------------------------------
  12250. type
  12251. PDXVACOPPStatusInput = ^TDXVACOPPStatusInput;
  12252. DXVA_COPPStatusInput = packed record
  12253. rApp : TGUID; // 16 bytes
  12254. guidStatusRequestID : TGUID; // 16 bytes
  12255. dwSequence : ULONG; // 4 bytes
  12256. cbSizeData : ULONG; // 4 bytes
  12257. StatusData: array[0..4055] of char; // 4056 bytes (4056+4+4+16+16 = 4096)
  12258. end;
  12259. {$EXTERNALSYM DXVA_COPPStatusInput}
  12260. LPDXVA_COPPStatusInput = ^DXVA_COPPStatusInput;
  12261. {$EXTERNALSYM LPDXVA_COPPStatusInput}
  12262. TDXVACOPPStatusInput = DXVA_COPPStatusInput;
  12263. PDXVACOPPStatusOutput = ^TDXVACOPPStatusOutput;
  12264. DXVA_COPPStatusOutput = packed record
  12265. macKDI : TGUID; // 16 bytes
  12266. cbSizeData : ULONG; // 4 bytes
  12267. COPPStatus : array[0..4075] of Char; // 4076 bytes (4076+16+4 = 4096)
  12268. end;
  12269. {$EXTERNALSYM DXVA_COPPStatusOutput}
  12270. LPDXVA_COPPStatusOutput = ^DXVA_COPPStatusOutput;
  12271. {$EXTERNALSYM LPDXVA_COPPStatusOutput}
  12272. TDXVACOPPStatusOutput = DXVA_COPPStatusOutput;
  12273. type
  12274. COPP_StatusFlags = (
  12275. COPP_StatusNormal,
  12276. COPP_LinkLost,
  12277. COPP_RenegotiationRequired
  12278. );
  12279. {$EXTERNALSYM COPP_StatusFlags}
  12280. TCOPPStatusFlags = COPP_StatusFlags;
  12281. const
  12282. COPP_StatusFlagsReserved = $FFFFFFFC;
  12283. {$EXTERNALSYM COPP_StatusFlagsReserved}
  12284. type
  12285. PDXVACOPPStatusData = ^TDXVACOPPStatusData;
  12286. DXVA_COPPStatusData = packed record
  12287. rApp : TGUID;
  12288. dwFlags : ULONG; // See COPP_StatusFlags above
  12289. dwData : ULONG;
  12290. TypeSpecificMask : ULONG;
  12291. TypeSpecificInfo : ULONG;
  12292. end;
  12293. {$EXTERNALSYM DXVA_COPPStatusData}
  12294. TDXVACOPPStatusData = DXVA_COPPStatusData;
  12295. DXVA_COPPStatusDisplayData = packed record
  12296. rApp: TGUID;
  12297. dwFlags: ULONG; // See COPP_StatusFlags above
  12298. DisplayWidth: ULONG;
  12299. Displayheight: ULONG;
  12300. Format: ULONG; // also contains extended color data
  12301. d3dFormat: ULONG;
  12302. FreqNumerator: ULONG;
  12303. FreqDenominator: ULONG;
  12304. end;
  12305. {$EXTERNALSYM DXVA_COPPStatusDisplayData}
  12306. COPP_StatusHDCPFlags = (
  12307. COPP_HDCPReceiver,
  12308. COPP_HDCPRepeater
  12309. );
  12310. {$EXTERNALSYM COPP_StatusHDCPFlags}
  12311. TCOPPStatusHDCPFlags = COPP_StatusHDCPFlags;
  12312. PDXVACOPPStatusHDCPKeyData = ^TDXVACOPPStatusHDCPKeyData;
  12313. DXVA_COPPStatusHDCPKeyData = packed record
  12314. rApp: TGUID;
  12315. dwFlags: ULONG; // See COPP_StatusFlags above
  12316. dwHDCPFlags: ULONG; // See COPP_StatusHDCPFlags above
  12317. BKey: TGUID; // Lower 40 bits
  12318. reserved1: TGUID;
  12319. reserved2: TGUID;
  12320. end;
  12321. {$EXTERNALSYM DXVA_COPPStatusHDCPKeyData}
  12322. TDXVACOPPStatusHDCPKeyData = DXVA_COPPStatusHDCPKeyData;
  12323. const
  12324. DXVA_COPPQueryStatusFnCode = $05;
  12325. {$EXTERNALSYM DXVA_COPPQueryStatusFnCode}
  12326. // lpInputData => DXVA_COPPStatusInput*
  12327. // lpOuputData => DXVA_COPPStatusOutput*
  12328. //
  12329. // Status GUID and enumerations
  12330. //
  12331. DXVA_COPPQueryConnectorType: TGUID = '{81d0bfd5-6afe-48c2-99c0-95a08f97c5da}';
  12332. {$EXTERNALSYM DXVA_COPPQueryConnectorType}
  12333. const
  12334. COPP_ConnectorType_Unknown = -1;
  12335. {$EXTERNALSYM COPP_ConnectorType_Unknown}
  12336. COPP_ConnectorType_Internal = $80000000; // can be combined with the other connector types
  12337. {$EXTERNALSYM COPP_ConnectorType_Internal}
  12338. type
  12339. COPP_ConnectorType = (
  12340. COPP_ConnectorType_VGA,
  12341. COPP_ConnectorType_SVideo,
  12342. COPP_ConnectorType_CompositeVideo,
  12343. COPP_ConnectorType_ComponentVideo,
  12344. COPP_ConnectorType_DVI,
  12345. COPP_ConnectorType_HDMI,
  12346. COPP_ConnectorType_LVDS,
  12347. COPP_ConnectorType_TMDS,
  12348. COPP_ConnectorType_D_JPN
  12349. //COPP_ConnectorType_ForceDWORD = $7fffffff; (* force 32-bit size enum *)
  12350. );
  12351. {$EXTERNALSYM COPP_ConnectorType}
  12352. TCOPPConnectorType = COPP_ConnectorType;
  12353. const
  12354. DXVA_COPPQueryProtectionType : TGUID = '{38f2a801-9a6c-48bb-9107-b6696e6f1797}';
  12355. {$EXTERNALSYM DXVA_COPPQueryProtectionType}
  12356. DXVA_COPPQueryLocalProtectionLevel : TGUID = '{b2075857-3eda-4d5d-88db-748f8c1a0549}';
  12357. {$EXTERNALSYM DXVA_COPPQueryLocalProtectionLevel}
  12358. DXVA_COPPQueryGlobalProtectionLevel : TGUID = '{1957210a-7766-452a-b99a-d27aed54f03a}';
  12359. {$EXTERNALSYM DXVA_COPPQueryGlobalProtectionLevel}
  12360. DXVA_COPPQueryDisplayData : TGUID = '{d7bf1ba3-ad13-4f8e-af98-0dcb3ca204cc}';
  12361. {$EXTERNALSYM DXVA_COPPQueryDisplayData}
  12362. DXVA_COPPQueryHDCPKeyData : TGUID = '{0db59d74-a992-492e-a0bd-c23fda564e00}';
  12363. {$EXTERNALSYM DXVA_COPPQueryHDCPKeyData}
  12364. DXVA_COPPQueryBusData : TGUID = '{c6f4d673-6174-4184-8e35-f6db5200bcba}';
  12365. {$EXTERNALSYM DXVA_COPPQueryBusData}
  12366. COPP_BusType_Integrated = $80000000; // can be combined with the other bus types
  12367. {$EXTERNALSYM COPP_BusType_Integrated}
  12368. type
  12369. COPP_BusType = (
  12370. COPP_BusType_Unknown,
  12371. COPP_BusType_PCI,
  12372. COPP_BusType_PCIX,
  12373. COPP_BusType_PCIExpress,
  12374. COPP_BusType_AGP
  12375. //COPP_BusType_ForceDWORD = 0x7fffffff /* force 32-bit size enum */
  12376. );
  12377. {$EXTERNALSYM COPP_BusType}
  12378. TCOPPBusType = COPP_BusType;
  12379. //------------------------------------------------------------------------------
  12380. // File: AMVA.h
  12381. // Desc: DirectShowMotionComp include file.
  12382. // Copyright (c) 1997 - 2000, Microsoft Corporation. All rights reserved.
  12383. //------------------------------------------------------------------------------
  12384. const
  12385. AMVA_TYPEINDEX_OUTPUTFRAME = $FFFFFFFF;
  12386. {$EXTERNALSYM AMVA_TYPEINDEX_OUTPUTFRAME}
  12387. // Flags for QueryRenderStatus
  12388. AMVA_QUERYRENDERSTATUSF_READ = $00000001; // Query for read
  12389. {$EXTERNALSYM AMVA_QUERYRENDERSTATUSF_READ}
  12390. // set this bit to 0
  12391. // if query for update
  12392. type
  12393. PAMVAUncompBufferInfo = ^TAMVAUncompBufferInfo;
  12394. _tag_AMVAUncompBufferInfo = record
  12395. dwMinNumSurfaces : DWORD ; // IN min number of surfaces to be allocated
  12396. dwMaxNumSurfaces : DWORD ; // IN max number of surfaces to be allocated
  12397. ddUncompPixelFormat : TDDPixelFormat ; // IN pixel format of surfaces to be allocated
  12398. end;
  12399. {$EXTERNALSYM _tag_AMVAUncompBufferInfo}
  12400. AMVAUncompBufferInfo = _tag_AMVAUncompBufferInfo;
  12401. {$EXTERNALSYM AMVAUncompBufferInfo}
  12402. LPAMVAUncompBufferInfo = ^AMVAUncompBufferInfo;
  12403. {$EXTERNALSYM LPAMVAUncompBufferInfo}
  12404. TAMVAUncompBufferInfo = _tag_AMVAUncompBufferInfo;
  12405. PAMVAUncompDataInfo = ^TAMVAUncompDataInfo;
  12406. _tag_AMVAUncompDataInfo = record
  12407. dwUncompWidth : DWORD ; // [in] width of uncompressed data
  12408. dwUncompHeight : DWORD ; // [in] height of uncompressed data
  12409. ddUncompPixelFormat : TDDPixelFormat ; // [in] pixel-format of uncompressed data
  12410. end;
  12411. {$EXTERNALSYM _tag_AMVAUncompDataInfo}
  12412. AMVAUncompDataInfo = _tag_AMVAUncompDataInfo;
  12413. {$EXTERNALSYM AMVAUncompDataInfo}
  12414. LPAMVAUncompDataInfo = ^AMVAUncompDataInfo;
  12415. {$EXTERNALSYM LPAMVAUncompDataInfo}
  12416. TAMVAUncompDataInfo = _tag_AMVAUncompDataInfo;
  12417. PAMVAInternalMemInfo = ^TAMVAInternalMemInfo;
  12418. _tag_AMVAInternalMemInfo = record
  12419. dwScratchMemAlloc : DWORD ; // [out] amount of scratch memory will the hal allocate for its private use
  12420. end;
  12421. {$EXTERNALSYM _tag_AMVAInternalMemInfo}
  12422. AMVAInternalMemInfo = _tag_AMVAInternalMemInfo;
  12423. {$EXTERNALSYM AMVAInternalMemInfo}
  12424. LPAMVAInternalMemInfo = ^AMVAInternalMemInfo;
  12425. {$EXTERNALSYM LPAMVAInternalMemInfo}
  12426. TAMVAInternalMemInfo = _tag_AMVAInternalMemInfo;
  12427. PAMVACompBufferInfo = ^TAMVACompBufferInfo;
  12428. _tag_AMVACompBufferInfo = record
  12429. dwNumCompBuffers : DWORD ; // [out] number of buffers reqd for compressed data
  12430. dwWidthToCreate : DWORD ; // [out] Width of surface to create
  12431. dwHeightToCreate : DWORD ; // [out] Height of surface to create
  12432. dwBytesToAllocate : DWORD ; // [out] Total number of bytes used by each surface
  12433. ddCompCaps : TDDSCAPS2 ; // [out] caps to create surfaces to store compressed data
  12434. ddPixelFormat : TDDPixelFormat; // [out] fourcc to create surfaces to store compressed data
  12435. end;
  12436. {$EXTERNALSYM _tag_AMVACompBufferInfo}
  12437. AMVACompBufferInfo = _tag_AMVACompBufferInfo;
  12438. {$EXTERNALSYM AMVACompBufferInfo}
  12439. LPAMVACompBufferInfo = ^AMVACompBufferInfo;
  12440. {$EXTERNALSYM LPAMVACompBufferInfo}
  12441. TAMVACompBufferInfo = _tag_AMVACompBufferInfo;
  12442. // Note that you are NOT allowed to store any pointer in pMiscData
  12443. PAMVABeginFrameInfo = ^TAMVABeginFrameInfo;
  12444. _tag_AMVABeginFrameInfo = record
  12445. dwDestSurfaceIndex : DWORD ; // IN destination buffer in which to decoding this frame
  12446. pInputData : pointer ; // IN pointer to misc data
  12447. dwSizeInputData : DWORD ; // IN size of other misc data to begin frame
  12448. pOutputData : pointer ; // OUT pointer to data which the VGA is going to fill
  12449. dwSizeOutputData : DWORD ; // IN size of data which the VGA is going to fill
  12450. end;
  12451. {$EXTERNALSYM _tag_AMVABeginFrameInfo}
  12452. AMVABeginFrameInfo = _tag_AMVABeginFrameInfo;
  12453. {$EXTERNALSYM AMVABeginFrameInfo}
  12454. LPAMVABeginFrameInfo = ^AMVABeginFrameInfo;
  12455. {$EXTERNALSYM LPAMVABeginFrameInfo}
  12456. TAMVABeginFrameInfo = _tag_AMVABeginFrameInfo;
  12457. // Note that you are NOT allowed to store any pointer in pMiscData
  12458. PAMVAEndFrameInfo = ^TAMVAEndFrameInfo;
  12459. _tag_AMVAEndFrameInfo = record
  12460. dwSizeMiscData : DWORD ; // [in] size of other misc data to begin frame
  12461. pMiscData : pointer; // [in] pointer to misc data
  12462. end;
  12463. {$EXTERNALSYM _tag_AMVAEndFrameInfo}
  12464. AMVAEndFrameInfo = _tag_AMVAEndFrameInfo;
  12465. {$EXTERNALSYM AMVAEndFrameInfo}
  12466. LPAMVAEndFrameInfo = ^AMVAEndFrameInfo;
  12467. {$EXTERNALSYM LPAMVAEndFrameInfo}
  12468. TAMVAEndFrameInfo = _tag_AMVAEndFrameInfo;
  12469. PAMVABufferInfo = ^TAMVABufferInfo;
  12470. _tag_AMVABUFFERINFO = record
  12471. dwTypeIndex : DWORD; // [in] Type of buffer
  12472. dwBufferIndex : DWORD; // [in] Buffer index
  12473. dwDataOffset : DWORD; // [in] offset of relevant data from the beginning of buffer
  12474. dwDataSize : DWORD; // [in] size of relevant data
  12475. end;
  12476. {$EXTERNALSYM _tag_AMVABUFFERINFO}
  12477. AMVABUFFERINFO = _tag_AMVABUFFERINFO;
  12478. {$EXTERNALSYM AMVABUFFERINFO}
  12479. LPAMVABUFFERINFO = ^AMVABUFFERINFO;
  12480. {$EXTERNALSYM LPAMVABUFFERINFO}
  12481. TAMVABufferInfo = _tag_AMVABUFFERINFO;
  12482. //------------------------------------------------------------------------------
  12483. // File: videoacc.h
  12484. // Desc: DirectX Video Acceleration interfaces
  12485. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  12486. //------------------------------------------------------------------------------
  12487. const
  12488. IID_IAMVideoAcceleratorNotify : TGUID = '{256A6A21-FBAD-11d1-82BF-00A0C9696C8F}';
  12489. {$EXTERNALSYM IID_IAMVideoAcceleratorNotify}
  12490. IID_IAMVideoAccelerator : TGUID = '{256A6A22-FBAD-11d1-82BF-00A0C9696C8F}';
  12491. {$EXTERNALSYM IID_IAMVideoAccelerator}
  12492. type
  12493. {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoAcceleratorNotify> _di_IAMVideoAcceleratorNotify;'}
  12494. {$EXTERNALSYM IAMVideoAcceleratorNotify}
  12495. IAMVideoAcceleratorNotify = interface(IUnknown)
  12496. ['{256A6A21-FBAD-11d1-82BF-00A0C9696C8F}']
  12497. (*** IAMVideoAcceleratorNotify methods ***)
  12498. function GetUncompSurfacesInfo(const pGuid: TGUID; var pUncompBufferInfo: PAMVAUncompBufferInfo): HResult; stdcall;
  12499. function SetUncompSurfacesInfo(dwActualUncompSurfacesAllocated: DWORD): HResult; stdcall;
  12500. function GetCreateVideoAcceleratorData(const pGuid: TGUID; out pdwSizeMiscData: PDWORD; out ppMiscData: pointer): HResult; stdcall;
  12501. end;
  12502. {$HPPEMIT 'typedef System::DelphiInterface<IAMVideoAccelerator> _di_IAMVideoAccelerator;'}
  12503. {$EXTERNALSYM IAMVideoAccelerator}
  12504. IAMVideoAccelerator = interface(IUnknown)
  12505. ['{256A6A22-FBAD-11d1-82BF-00A0C9696C8F}']
  12506. (*** IAMVideoAccelerator methods ***)
  12507. function GetVideoAcceleratorGUIDs(var pdwNumGuidsSupported: PDWORD; var pGuidsSupported: PGUID): HResult; stdcall;
  12508. function GetUncompFormatsSupported(const pGuid: TGUID; var pdwNumFormatsSupported: PDWORD;
  12509. var pFormatsSupported: PDDPixelFormat): HResult; stdcall;
  12510. function GetInternalMemInfo(const pGuid: TGUID; const pamvaUncompDataInfo: TAMVAUncompDataInfo;
  12511. var pamvaInternalMemInfo: PAMVAInternalMemInfo): HResult; stdcall;
  12512. function GetCompBufferInfo(const pGuid: TGUID; const pamvaUncompDataInfo: TAMVAUncompDataInfo ;
  12513. var pdwNumTypesCompBuffers: PDWORD; out pamvaCompBufferInfo: PAMVACompBufferInfo): HResult; stdcall;
  12514. function GetInternalCompBufferInfo(var pdwNumTypesCompBuffers: PDWORD; out pamvaCompBufferInfo: PAMVACompBufferInfo): HResult; stdcall;
  12515. function BeginFrame(const amvaBeginFrameInfo: TAMVABeginFrameInfo): HResult; stdcall;
  12516. function EndFrame(const pEndFrameInfo: TAMVAEndFrameInfo): HResult; stdcall;
  12517. function GetBuffer(dwTypeIndex, dwBufferIndex: DWORD; bReadOnly: BOOL; out ppBuffer; out lpStride: LONGINT): HResult; stdcall;
  12518. function ReleaseBuffer(dwTypeIndex, dwBufferIndex: DWORD): HResult; stdcall;
  12519. function Execute(dwFunction: DWORD; lpPrivateInputData : pointer; cbPrivateInputData: DWORD;
  12520. lpPrivateOutputDat: pointer; cbPrivateOutputData, dwNumBuffers: DWORD;
  12521. const pamvaBufferInfo: TAMVABUFFERINFO): HResult; stdcall;
  12522. function QueryRenderStatus(dwTypeIndex, dwBufferIndex, dwFlags: DWORD): HResult; stdcall;
  12523. function DisplayFrame(dwFlipToIndex: DWORD; pMediaSample: IMediaSample): HResult; stdcall;
  12524. end;
  12525. //------------------------------------------------------------------------------
  12526. // File: BDATypes.h
  12527. //
  12528. // Desc: Typedefs and enums needed by both the WDM drivers and the user mode
  12529. // COM interfaces.
  12530. //
  12531. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  12532. //------------------------------------------------------------------------------
  12533. // Utility Macros
  12534. const
  12535. MIN_DIMENSION = 1;
  12536. {$EXTERNALSYM MIN_DIMENSION}
  12537. NATURAL = 4;
  12538. {$EXTERNALSYM NATURAL}
  12539. CACHE_LINE = 128;
  12540. {$EXTERNALSYM CACHE_LINE}
  12541. PAGE = 4096;
  12542. {$EXTERNALSYM PAGE}
  12543. //#define ALIGN( pointer, size) (((ULONG)(pointer) + (ULONG)(size) - 1) & ~((ULONG)(size) - 1))
  12544. //#define BDA_STRING_CONST(x) {sizeof(L##x)-2, sizeof(L##x), L##x}
  12545. //===========================================================================
  12546. //
  12547. // BDA Topology Structures
  12548. //
  12549. //===========================================================================
  12550. type
  12551. PBDATemplateConnection = ^TBDATemplateConnection;
  12552. _BDA_TEMPLATE_CONNECTION = record
  12553. FromNodeType : ULONG;
  12554. FromNodePinType : ULONG;
  12555. ToNodeType : ULONG;
  12556. ToNodePinType : ULONG;
  12557. end;
  12558. {$EXTERNALSYM _BDA_TEMPLATE_CONNECTION}
  12559. BDA_TEMPLATE_CONNECTION = _BDA_TEMPLATE_CONNECTION;
  12560. {$EXTERNALSYM BDA_TEMPLATE_CONNECTION}
  12561. PBDA_TEMPLATE_CONNECTION = ^BDA_TEMPLATE_CONNECTION;
  12562. {$EXTERNALSYM PBDA_TEMPLATE_CONNECTION}
  12563. TBDATemplateConnection = _BDA_TEMPLATE_CONNECTION;
  12564. PBDATemplatePinJoint = ^TBDATemplatePinJoint;
  12565. _BDA_TEMPLATE_PIN_JOINT = record
  12566. uliTemplateConnection : ULONG;
  12567. ulcInstancesMax : ULONG;
  12568. end;
  12569. {$EXTERNALSYM _BDA_TEMPLATE_PIN_JOINT}
  12570. BDA_TEMPLATE_PIN_JOINT = _BDA_TEMPLATE_PIN_JOINT;
  12571. {$EXTERNALSYM BDA_TEMPLATE_PIN_JOINT}
  12572. PBDA_TEMPLATE_PIN_JOINT = ^BDA_TEMPLATE_PIN_JOINT;
  12573. {$EXTERNALSYM PBDA_TEMPLATE_PIN_JOINT}
  12574. TBDATemplatePinJoint = _BDA_TEMPLATE_PIN_JOINT;
  12575. //===========================================================================
  12576. // BDA Events
  12577. //===========================================================================
  12578. // In-band Event IDs
  12579. PBDAEventID = ^TBDAEventID;
  12580. BDA_EVENT_ID = (
  12581. BDA_EVENT_SIGNAL_LOSS,
  12582. BDA_EVENT_SIGNAL_LOCK,
  12583. BDA_EVENT_DATA_START,
  12584. BDA_EVENT_DATA_STOP,
  12585. BDA_EVENT_CHANNEL_ACQUIRED,
  12586. BDA_EVENT_CHANNEL_LOST,
  12587. BDA_EVENT_CHANNEL_SOURCE_CHANGED,
  12588. BDA_EVENT_CHANNEL_ACTIVATED,
  12589. BDA_EVENT_CHANNEL_DEACTIVATED,
  12590. BDA_EVENT_SUBCHANNEL_ACQUIRED,
  12591. BDA_EVENT_SUBCHANNEL_LOST,
  12592. BDA_EVENT_SUBCHANNEL_SOURCE_CHANGED,
  12593. BDA_EVENT_SUBCHANNEL_ACTIVATED,
  12594. BDA_EVENT_SUBCHANNEL_DEACTIVATED,
  12595. BDA_EVENT_ACCESS_GRANTED,
  12596. BDA_EVENT_ACCESS_DENIED,
  12597. BDA_EVENT_OFFER_EXTENDED,
  12598. BDA_EVENT_PURCHASE_COMPLETED,
  12599. BDA_EVENT_SMART_CARD_INSERTED,
  12600. BDA_EVENT_SMART_CARD_REMOVED
  12601. );
  12602. {$EXTERNALSYM BDA_EVENT_ID}
  12603. PBDA_EVENT_ID = ^BDA_EVENT_ID;
  12604. {$EXTERNALSYM PBDA_EVENT_ID}
  12605. TBDAEventID = BDA_EVENT_ID;
  12606. //===========================================================================
  12607. //
  12608. // KSSTREAM_HEADER extensions for BDA
  12609. //
  12610. //===========================================================================
  12611. PKSBDAFrameInfo = ^TKSBDAFrameInfo;
  12612. tagKS_BDA_FRAME_INFO = record
  12613. ExtendedHeaderSize : ULONG; // Size of this extended header
  12614. dwFrameFlags : DWORD;
  12615. ulEvent : ULONG;
  12616. ulChannelNumber : ULONG;
  12617. ulSubchannelNumber : ULONG;
  12618. ulReason : ULONG;
  12619. end;
  12620. {$EXTERNALSYM tagKS_BDA_FRAME_INFO}
  12621. KS_BDA_FRAME_INFO = tagKS_BDA_FRAME_INFO;
  12622. {$EXTERNALSYM KS_BDA_FRAME_INFO}
  12623. PKS_BDA_FRAME_INFO = ^KS_BDA_FRAME_INFO;
  12624. {$EXTERNALSYM PKS_BDA_FRAME_INFO}
  12625. TKSBDAFrameInfo = tagKS_BDA_FRAME_INFO;
  12626. //------------------------------------------------------------
  12627. // BDA Network Ethernet Filter Property Set
  12628. // {71985F43-1CA1-11d3-9CC8-00C04F7971E0}
  12629. PBDAEthernetAddress = ^TBDAEthernetAddress;
  12630. _BDA_ETHERNET_ADDRESS = record
  12631. rgbAddress : array[0..5] of BYTE;
  12632. end;
  12633. {$EXTERNALSYM _BDA_ETHERNET_ADDRESS}
  12634. BDA_ETHERNET_ADDRESS = _BDA_ETHERNET_ADDRESS;
  12635. {$EXTERNALSYM BDA_ETHERNET_ADDRESS}
  12636. PBDA_ETHERNET_ADDRESS = ^BDA_ETHERNET_ADDRESS;
  12637. {$EXTERNALSYM PBDA_ETHERNET_ADDRESS}
  12638. TBDAEthernetAddress = _BDA_ETHERNET_ADDRESS;
  12639. PBDAEthernetAddressList = ^TBDAEthernetAddressList;
  12640. _BDA_ETHERNET_ADDRESS_LIST = record
  12641. ulcAddresses : ULONG;
  12642. rgAddressl : array[0..MIN_DIMENSION-1] of TBDAEthernetAddress;
  12643. end;
  12644. {$EXTERNALSYM _BDA_ETHERNET_ADDRESS_LIST}
  12645. BDA_ETHERNET_ADDRESS_LIST = _BDA_ETHERNET_ADDRESS_LIST;
  12646. {$EXTERNALSYM BDA_ETHERNET_ADDRESS_LIST}
  12647. PBDA_ETHERNET_ADDRESS_LIST = ^BDA_ETHERNET_ADDRESS_LIST;
  12648. {$EXTERNALSYM PBDA_ETHERNET_ADDRESS_LIST}
  12649. TBDAEthernetAddressList = _BDA_ETHERNET_ADDRESS_LIST;
  12650. PBDAMulticastMode = ^TBDAMulticastMode;
  12651. BDA_MULTICAST_MODE = (
  12652. BDA_PROMISCUOUS_MULTICAST,
  12653. BDA_FILTERED_MULTICAST,
  12654. BDA_NO_MULTICAST
  12655. );
  12656. {$EXTERNALSYM BDA_MULTICAST_MODE}
  12657. PBDA_MULTICAST_MODE = ^BDA_MULTICAST_MODE;
  12658. {$EXTERNALSYM PBDA_MULTICAST_MODE}
  12659. TBDAMulticastMode = BDA_MULTICAST_MODE;
  12660. //------------------------------------------------------------
  12661. // BDA Network IPv4 Filter Property Set
  12662. // {71985F44-1CA1-11d3-9CC8-00C04F7971E0}
  12663. PBDAIPv4Address = ^TBDAIPv4Address;
  12664. _BDA_IPv4_ADDRESS = record
  12665. rgbAddress : array[0..3] of BYTE;
  12666. end;
  12667. {$EXTERNALSYM _BDA_IPv4_ADDRESS}
  12668. BDA_IPv4_ADDRESS = _BDA_IPv4_ADDRESS;
  12669. {$EXTERNALSYM BDA_IPv4_ADDRESS}
  12670. PBDA_IPv4_ADDRESS = ^BDA_IPv4_ADDRESS;
  12671. {$EXTERNALSYM PBDA_IPv4_ADDRESS}
  12672. TBDAIPv4Address = _BDA_IPv4_ADDRESS;
  12673. PBDAIPv4AddressList = ^TBDAIPv4AddressList;
  12674. _BDA_IPv4_ADDRESS_LIST = record
  12675. ulcAddresses : ULONG;
  12676. rgAddressl : array[0..MIN_DIMENSION-1] of TBDAIPv4Address;
  12677. end;
  12678. {$EXTERNALSYM _BDA_IPv4_ADDRESS_LIST}
  12679. BDA_IPv4_ADDRESS_LIST = _BDA_IPv4_ADDRESS_LIST;
  12680. {$EXTERNALSYM BDA_IPv4_ADDRESS_LIST}
  12681. PBDA_IPv4_ADDRESS_LIST = ^BDA_IPv4_ADDRESS_LIST;
  12682. {$EXTERNALSYM PBDA_IPv4_ADDRESS_LIST}
  12683. TBDAIPv4AddressList = _BDA_IPv4_ADDRESS_LIST;
  12684. //------------------------------------------------------------
  12685. // BDA Network IPv4 Filter Property Set
  12686. // {E1785A74-2A23-4fb3-9245-A8F88017EF33}
  12687. PBDAIPv6Address = ^TBDAIPv6Address;
  12688. _BDA_IPv6_ADDRESS = record
  12689. rgbAddress : array[0..5] of BYTE;
  12690. end;
  12691. {$EXTERNALSYM _BDA_IPv6_ADDRESS}
  12692. BDA_IPv6_ADDRESS = _BDA_IPv6_ADDRESS;
  12693. {$EXTERNALSYM BDA_IPv6_ADDRESS}
  12694. PBDA_IPv6_ADDRESS = ^BDA_IPv6_ADDRESS;
  12695. {$EXTERNALSYM PBDA_IPv6_ADDRESS}
  12696. TBDAIPv6Address = _BDA_IPv6_ADDRESS;
  12697. PBDAIPv6AddressList = ^TBDAIPv6AddressList;
  12698. _BDA_IPv6_ADDRESS_LIST = record
  12699. ulcAddresses : ULONG;
  12700. rgAddressl : array [0..MIN_DIMENSION-1] of TBDAIPv6Address;
  12701. end;
  12702. {$EXTERNALSYM _BDA_IPv6_ADDRESS_LIST}
  12703. BDA_IPv6_ADDRESS_LIST = _BDA_IPv6_ADDRESS_LIST;
  12704. {$EXTERNALSYM BDA_IPv6_ADDRESS_LIST}
  12705. PBDA_IPv6_ADDRESS_LIST = ^BDA_IPv6_ADDRESS_LIST;
  12706. {$EXTERNALSYM PBDA_IPv6_ADDRESS_LIST}
  12707. TBDAIPv6AddressList = _BDA_IPv6_ADDRESS_LIST;
  12708. //------------------------------------------------------------
  12709. // BDA Signal Property Set
  12710. // {D2F1644B-B409-11d2-BC69-00A0C9EE9E16}
  12711. PBDASignalState = ^TBDASignalState;
  12712. BDA_SIGNAL_STATE = (
  12713. BDA_SIGNAL_UNAVAILABLE,
  12714. BDA_SIGNAL_INACTIVE,
  12715. BDA_SIGNAL_ACTIVE
  12716. );
  12717. {$EXTERNALSYM BDA_SIGNAL_STATE}
  12718. PBDA_SIGNAL_STATE = ^BDA_SIGNAL_STATE;
  12719. {$EXTERNALSYM PBDA_SIGNAL_STATE}
  12720. TBDASignalState = BDA_SIGNAL_STATE;
  12721. //------------------------------------------------------------
  12722. // BDA Change Sync Method Set
  12723. // {FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}
  12724. PBDAChangeState = ^TBDAChangeState;
  12725. BDA_CHANGE_STATE = (
  12726. BDA_CHANGES_COMPLETE,
  12727. BDA_CHANGES_PENDING
  12728. );
  12729. {$EXTERNALSYM BDA_CHANGE_STATE}
  12730. PBDA_CHANGE_STATE = ^BDA_CHANGE_STATE;
  12731. TBDAChangeState = BDA_CHANGE_STATE;
  12732. //------------------------------------------------------------
  12733. // BDA Device Configuration Method Set
  12734. // {71985F45-1CA1-11d3-9CC8-00C04F7971E0}
  12735. //------------------------------------------------------------
  12736. // BDA Topology Property Set
  12737. // {A14EE835-0A23-11d3-9CC7-00C04F7971E0}
  12738. PBDANodeDescriptor = ^TBDANodeDescriptor;
  12739. _BDANODE_DESCRIPTOR = record
  12740. ulBdaNodeType : ULONG; // The node type as it is used
  12741. // in the BDA template topology
  12742. guidFunction : TGUID; // GUID from BdaMedia.h describing
  12743. // the node's function (e.g.
  12744. // KSNODE_BDA_RF_TUNER)
  12745. guidName : TGUID; // GUID that can be use to look up
  12746. // a displayable name for the node.
  12747. end;
  12748. {$EXTERNALSYM _BDANODE_DESCRIPTOR}
  12749. BDANODE_DESCRIPTOR = _BDANODE_DESCRIPTOR;
  12750. {$EXTERNALSYM BDANODE_DESCRIPTOR}
  12751. PBDANODE_DESCRIPTOR = ^BDANODE_DESCRIPTOR;
  12752. {$EXTERNALSYM PBDANODE_DESCRIPTOR}
  12753. TBDANodeDescriptor = _BDANODE_DESCRIPTOR;
  12754. //------------------------------------------------------------
  12755. // BDA Void Transform Property Set
  12756. // {71985F46-1CA1-11d3-9CC8-00C04F7971E0}
  12757. //------------------------------------------------------------
  12758. // BDA Null Transform Property Set
  12759. // {DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}
  12760. //------------------------------------------------------------
  12761. // BDA Frequency Filter Property Set
  12762. // {71985F47-1CA1-11d3-9CC8-00C04F7971E0}
  12763. //------------------------------------------------------------
  12764. // BDA Autodemodulate Property Set
  12765. // {DDF15B12-BD25-11d2-9CA0-00C04F7971E0}
  12766. //------------------------------------------------------------
  12767. // BDA Table Section Property Set
  12768. // {516B99C5-971C-4aaf-B3F3-D9FDA8A15E16}
  12769. PBDATableSection = ^TBDATableSection;
  12770. _BDA_TABLE_SECTION = record
  12771. ulPrimarySectionId : ULONG;
  12772. ulSecondarySectionId : ULONG;
  12773. ulcbSectionLength : ULONG;
  12774. argbSectionData : array[0..MIN_DIMENSION-1] of ULONG;
  12775. end;
  12776. {$EXTERNALSYM _BDA_TABLE_SECTION}
  12777. BDA_TABLE_SECTION = _BDA_TABLE_SECTION;
  12778. {$EXTERNALSYM BDA_TABLE_SECTION}
  12779. PBDA_TABLE_SECTION = ^BDA_TABLE_SECTION;
  12780. {$EXTERNALSYM PBDA_TABLE_SECTION}
  12781. TBDATableSection = _BDA_TABLE_SECTION;
  12782. //------------------------------------------------------------
  12783. // BDA PID Filter Property Set
  12784. // {D0A67D65-08DF-4fec-8533-E5B550410B85}
  12785. //---------------------------------------------------------------------
  12786. // From IEnumPIDMap interface
  12787. //---------------------------------------------------------------------
  12788. MEDIA_SAMPLE_CONTENT = (
  12789. MEDIA_TRANSPORT_PACKET, // complete TS packet e.g. pass-through mode
  12790. MEDIA_ELEMENTARY_STREAM, // PES payloads; audio/video only
  12791. MEDIA_MPEG2_PSI, // PAT, PMT, CAT, Private
  12792. MEDIA_TRANSPORT_PAYLOAD // gathered TS packet payloads (PES packets, etc...)
  12793. );
  12794. {$EXTERNALSYM MEDIA_SAMPLE_CONTENT}
  12795. TMediaSampleContent = MEDIA_SAMPLE_CONTENT;
  12796. PID_MAP = record
  12797. ulPID : ULONG;
  12798. MediaSampleContent : TMediaSampleContent;
  12799. end;
  12800. {$EXTERNALSYM PID_MAP}
  12801. TPIDMap = PID_MAP;
  12802. PBDAPIDMap = ^TBDAPIDMap;
  12803. _BDA_PID_MAP = record
  12804. MediaSampleContent : TMediaSampleContent;
  12805. ulcPIDs : ULONG;
  12806. aulPIDs : array[0..MIN_DIMENSION-1] of ULONG;
  12807. end;
  12808. {$EXTERNALSYM _BDA_PID_MAP}
  12809. BDA_PID_MAP = _BDA_PID_MAP;
  12810. {$EXTERNALSYM BDA_PID_MAP}
  12811. PBDA_PID_MAP = ^BDA_PID_MAP;
  12812. TBDAPIDMap = _BDA_PID_MAP;
  12813. PBDAPIDUnmap = ^TBDAPIDUnmap;
  12814. _BDA_PID_UNMAP = record
  12815. ulcPIDs : ULONG;
  12816. aulPIDs : array[0..MIN_DIMENSION-1] of ULONG;
  12817. end;
  12818. {$EXTERNALSYM _BDA_PID_UNMAP}
  12819. BDA_PID_UNMAP = _BDA_PID_UNMAP;
  12820. {$EXTERNALSYM BDA_PID_UNMAP}
  12821. PBDA_PID_UNMAP = ^BDA_PID_UNMAP;
  12822. {$EXTERNALSYM PBDA_PID_UNMAP}
  12823. TBDAPIDUnmap = _BDA_PID_UNMAP;
  12824. //------------------------------------------------------------
  12825. // BDA CA Property Set
  12826. // {B0693766-5278-4ec6-B9E1-3CE40560EF5A}
  12827. PBDACAModuleUI = ^TBDACAModuleUI;
  12828. _BDA_CA_MODULE_UI = record
  12829. ulFormat : ULONG;
  12830. ulbcDesc : ULONG;
  12831. ulDesc : array[0..MIN_DIMENSION-1] of ULONG;
  12832. end;
  12833. {$EXTERNALSYM _BDA_CA_MODULE_UI}
  12834. BDA_CA_MODULE_UI = _BDA_CA_MODULE_UI;
  12835. {$EXTERNALSYM BDA_CA_MODULE_UI}
  12836. PBDA_CA_MODULE_UI = ^BDA_CA_MODULE_UI;
  12837. {$EXTERNALSYM PBDA_CA_MODULE_UI}
  12838. TBDACAModuleUI = _BDA_CA_MODULE_UI;
  12839. PBDAProgramPIDList = ^TBDAProgramPIDList;
  12840. _BDA_PROGRAM_PID_LIST = record
  12841. ulProgramNumber : ULONG;
  12842. ulcPIDs : ULONG;
  12843. ulPID : array[0..MIN_DIMENSION-1] of ULONG;
  12844. end;
  12845. {$EXTERNALSYM _BDA_PROGRAM_PID_LIST}
  12846. BDA_PROGRAM_PID_LIST = _BDA_PROGRAM_PID_LIST;
  12847. {$EXTERNALSYM BDA_PROGRAM_PID_LIST}
  12848. PBDA_PROGRAM_PID_LIST = ^BDA_PROGRAM_PID_LIST;
  12849. {$EXTERNALSYM PBDA_PROGRAM_PID_LIST}
  12850. TBDAProgramPIDList = _BDA_PROGRAM_PID_LIST;
  12851. //------------------------------------------------------------
  12852. // BDA CA Event Set
  12853. // {488C4CCC-B768-4129-8EB1-B00A071F9068}
  12854. //=============================================================
  12855. //
  12856. //
  12857. // BDA Tuning Model enumerations
  12858. //
  12859. //
  12860. //=============================================================
  12861. // system type for particular DVB Tuning Space instance
  12862. DVBSystemType = (
  12863. DVB_Cable,
  12864. DVB_Terrestrial,
  12865. DVB_Satellite
  12866. );
  12867. {$EXTERNALSYM DVBSystemType}
  12868. TDVBSystemType = DVBSystemType;
  12869. //------------------------------------------------------------
  12870. // BDA Channel Tune Request
  12871. const
  12872. BDA_UNDEFINED_CHANNEL = -1;
  12873. {$EXTERNALSYM BDA_UNDEFINED_CHANNEL}
  12874. //------------------------------------------------------------
  12875. // BDA Component(substream)
  12876. type
  12877. ComponentCategory = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  12878. {$EXTERNALSYM ComponentCategory}
  12879. const
  12880. CategoryNotSet = -1;
  12881. {$EXTERNALSYM CategoryNotSet}
  12882. CategoryOther = 0;
  12883. {$EXTERNALSYM CategoryOther}
  12884. CategoryVideo = 1;
  12885. {$EXTERNALSYM CategoryVideo}
  12886. CategoryAudio = 2;
  12887. {$EXTERNALSYM CategoryAudio}
  12888. CategoryText = 3;
  12889. {$EXTERNALSYM CategoryText}
  12890. CategoryData = 4;
  12891. {$EXTERNALSYM CategoryData}
  12892. // Component Status
  12893. type
  12894. ComponentStatus = (
  12895. StatusActive,
  12896. StatusInactive,
  12897. StatusUnavailable
  12898. );
  12899. {$EXTERNALSYM ComponentStatus}
  12900. TComponentStatus = ComponentStatus;
  12901. //------------------------------------------------------------
  12902. //
  12903. // BDA MPEG2 Component Type
  12904. //
  12905. // from the MPEG2 specification
  12906. MPEG2StreamType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  12907. {$EXTERNALSYM MPEG2StreamType}
  12908. const
  12909. BDA_UNITIALIZED_MPEG2STREAMTYPE = -1;
  12910. {$EXTERNALSYM BDA_UNITIALIZED_MPEG2STREAMTYPE}
  12911. Reserved1 = $0;
  12912. {$NODEFINE Reserved1}
  12913. ISO_IEC_11172_2_VIDEO = Reserved1 + 1;
  12914. {$EXTERNALSYM ISO_IEC_11172_2_VIDEO}
  12915. ISO_IEC_13818_2_VIDEO = ISO_IEC_11172_2_VIDEO + 1;
  12916. {$EXTERNALSYM ISO_IEC_13818_2_VIDEO}
  12917. ISO_IEC_11172_3_AUDIO = ISO_IEC_13818_2_VIDEO + 1;
  12918. {$EXTERNALSYM ISO_IEC_11172_3_AUDIO}
  12919. ISO_IEC_13818_3_AUDIO = ISO_IEC_11172_3_AUDIO + 1;
  12920. {$EXTERNALSYM ISO_IEC_13818_3_AUDIO}
  12921. ISO_IEC_13818_1_PRIVATE_SECTION = ISO_IEC_13818_3_AUDIO + 1;
  12922. {$EXTERNALSYM ISO_IEC_13818_1_PRIVATE_SECTION}
  12923. ISO_IEC_13818_1_PES = ISO_IEC_13818_1_PRIVATE_SECTION + 1;
  12924. {$EXTERNALSYM ISO_IEC_13818_1_PES}
  12925. ISO_IEC_13522_MHEG = ISO_IEC_13818_1_PES + 1;
  12926. {$EXTERNALSYM ISO_IEC_13522_MHEG}
  12927. ANNEX_A_DSM_CC = ISO_IEC_13522_MHEG + 1;
  12928. {$EXTERNALSYM ANNEX_A_DSM_CC}
  12929. ITU_T_REC_H_222_1 = ANNEX_A_DSM_CC + 1;
  12930. {$EXTERNALSYM ITU_T_REC_H_222_1}
  12931. ISO_IEC_13818_6_TYPE_A = ITU_T_REC_H_222_1 + 1;
  12932. {$EXTERNALSYM ISO_IEC_13818_6_TYPE_A}
  12933. ISO_IEC_13818_6_TYPE_B = ISO_IEC_13818_6_TYPE_A + 1;
  12934. {$EXTERNALSYM ISO_IEC_13818_6_TYPE_B}
  12935. ISO_IEC_13818_6_TYPE_C = ISO_IEC_13818_6_TYPE_B + 1;
  12936. {$EXTERNALSYM ISO_IEC_13818_6_TYPE_C}
  12937. ISO_IEC_13818_6_TYPE_D = ISO_IEC_13818_6_TYPE_C + 1;
  12938. {$EXTERNALSYM ISO_IEC_13818_6_TYPE_D}
  12939. ISO_IEC_13818_1_AUXILIARY = ISO_IEC_13818_6_TYPE_D + 1;
  12940. {$EXTERNALSYM ISO_IEC_13818_1_AUXILIARY}
  12941. ISO_IEC_13818_1_RESERVED = ISO_IEC_13818_1_AUXILIARY + 1;
  12942. {$EXTERNALSYM ISO_IEC_13818_1_RESERVED}
  12943. USER_PRIVATE = ISO_IEC_13818_1_RESERVED + 1;
  12944. {$EXTERNALSYM USER_PRIVATE}
  12945. //------------------------------------------------------------
  12946. //
  12947. // mpeg-2 transport stride format block; associated with media
  12948. // types MEDIATYPE_Stream/MEDIASUBTYPE_MPEG2_TRANSPORT_STRIDE;
  12949. // *all* format blocks associated with above media type *must*
  12950. // start with the MPEG2_TRANSPORT_STRIDE structure
  12951. //
  12952. type
  12953. PMPEG2TransportStride = ^TMPEG2TransportStride;
  12954. _MPEG2_TRANSPORT_STRIDE = record
  12955. dwOffset : DWORD;
  12956. dwPacketLength : DWORD;
  12957. dwStride : DWORD;
  12958. end;
  12959. {$EXTERNALSYM _MPEG2_TRANSPORT_STRIDE}
  12960. MPEG2_TRANSPORT_STRIDE = _MPEG2_TRANSPORT_STRIDE;
  12961. {$EXTERNALSYM MPEG2_TRANSPORT_STRIDE}
  12962. PMPEG2_TRANSPORT_STRIDE = ^MPEG2_TRANSPORT_STRIDE;
  12963. {$EXTERNALSYM PMPEG2_TRANSPORT_STRIDE}
  12964. TMPEG2TransportStride = _MPEG2_TRANSPORT_STRIDE;
  12965. //------------------------------------------------------------
  12966. //
  12967. // BDA ATSC Component Type
  12968. //
  12969. //
  12970. // ATSC made AC3 Audio a descriptor instead of
  12971. // defining a user private stream type.
  12972. //enum ATSCComponentTypeFlags {
  12973. // bit flags for various component type properties
  12974. const
  12975. ATSCCT_AC3 = $00000001;
  12976. {$EXTERNALSYM ATSCCT_AC3}
  12977. //------------------------------------------------------------
  12978. // BDA Locators
  12979. type
  12980. BinaryConvolutionCodeRate = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  12981. {$EXTERNALSYM BinaryConvolutionCodeRate}
  12982. const
  12983. BDA_BCC_RATE_NOT_SET = -1;
  12984. {$EXTERNALSYM BDA_BCC_RATE_NOT_SET}
  12985. BDA_BCC_RATE_NOT_DEFINED = 0;
  12986. {$EXTERNALSYM BDA_BCC_RATE_NOT_DEFINED}
  12987. BDA_BCC_RATE_1_2 = 1; // 1/2
  12988. {$EXTERNALSYM BDA_BCC_RATE_1_2}
  12989. BDA_BCC_RATE_2_3 = 2; // 2/3
  12990. {$EXTERNALSYM BDA_BCC_RATE_2_3}
  12991. BDA_BCC_RATE_3_4 = 3; // 3/4
  12992. {$EXTERNALSYM BDA_BCC_RATE_3_4}
  12993. BDA_BCC_RATE_3_5 = 4;
  12994. {$EXTERNALSYM BDA_BCC_RATE_3_5}
  12995. BDA_BCC_RATE_4_5 = 5;
  12996. {$EXTERNALSYM BDA_BCC_RATE_4_5}
  12997. BDA_BCC_RATE_5_6 = 6; // 5/6
  12998. {$EXTERNALSYM BDA_BCC_RATE_5_6}
  12999. BDA_BCC_RATE_5_11 = 7;
  13000. {$EXTERNALSYM BDA_BCC_RATE_5_11}
  13001. BDA_BCC_RATE_7_8 = 8; // 7/8
  13002. {$EXTERNALSYM BDA_BCC_RATE_7_8}
  13003. BDA_BCC_RATE_MAX = 9;
  13004. {$EXTERNALSYM BDA_BCC_RATE_MAX}
  13005. type
  13006. FECMethod = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13007. {$EXTERNALSYM FECMethod}
  13008. const
  13009. BDA_FEC_METHOD_NOT_SET = -1;
  13010. {$EXTERNALSYM BDA_FEC_METHOD_NOT_SET}
  13011. BDA_FEC_METHOD_NOT_DEFINED = 0;
  13012. {$EXTERNALSYM BDA_FEC_METHOD_NOT_DEFINED}
  13013. BDA_FEC_VITERBI = 1; // FEC is a Viterbi Binary Convolution.
  13014. {$EXTERNALSYM BDA_FEC_VITERBI}
  13015. BDA_FEC_RS_204_188 = 2; // The FEC is Reed-Solomon 204/188 (outer FEC)
  13016. {$EXTERNALSYM BDA_FEC_RS_204_188}
  13017. BDA_FEC_MAX = 3;
  13018. {$EXTERNALSYM BDA_FEC_MAX}
  13019. type
  13020. ModulationType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13021. {$EXTERNALSYM ModulationType}
  13022. const
  13023. BDA_MOD_NOT_SET = -1;
  13024. {$EXTERNALSYM BDA_MOD_NOT_SET}
  13025. BDA_MOD_NOT_DEFINED = 0;
  13026. {$EXTERNALSYM BDA_MOD_NOT_DEFINED}
  13027. BDA_MOD_16QAM = 1;
  13028. {$EXTERNALSYM BDA_MOD_16QAM}
  13029. BDA_MOD_32QAM = 2;
  13030. {$EXTERNALSYM BDA_MOD_32QAM}
  13031. BDA_MOD_64QAM = 3;
  13032. {$EXTERNALSYM BDA_MOD_64QAM}
  13033. BDA_MOD_80QAM = 4;
  13034. {$EXTERNALSYM BDA_MOD_80QAM}
  13035. BDA_MOD_96QAM = 5;
  13036. {$EXTERNALSYM BDA_MOD_96QAM}
  13037. BDA_MOD_112QAM = 6;
  13038. {$EXTERNALSYM BDA_MOD_112QAM}
  13039. BDA_MOD_128QAM = 7;
  13040. {$EXTERNALSYM BDA_MOD_128QAM}
  13041. BDA_MOD_160QAM = 8;
  13042. {$EXTERNALSYM BDA_MOD_160QAM}
  13043. BDA_MOD_192QAM = 9;
  13044. {$EXTERNALSYM BDA_MOD_192QAM}
  13045. BDA_MOD_224QAM = 10;
  13046. {$EXTERNALSYM BDA_MOD_224QAM}
  13047. BDA_MOD_256QAM = 11;
  13048. {$EXTERNALSYM BDA_MOD_256QAM}
  13049. BDA_MOD_320QAM = 12;
  13050. {$EXTERNALSYM BDA_MOD_320QAM}
  13051. BDA_MOD_384QAM = 13;
  13052. {$EXTERNALSYM BDA_MOD_384QAM}
  13053. BDA_MOD_448QAM = 14;
  13054. {$EXTERNALSYM BDA_MOD_448QAM}
  13055. BDA_MOD_512QAM = 15;
  13056. {$EXTERNALSYM BDA_MOD_512QAM}
  13057. BDA_MOD_640QAM = 16;
  13058. {$EXTERNALSYM BDA_MOD_640QAM}
  13059. BDA_MOD_768QAM = 17;
  13060. {$EXTERNALSYM BDA_MOD_768QAM}
  13061. BDA_MOD_896QAM = 18;
  13062. {$EXTERNALSYM BDA_MOD_896QAM}
  13063. BDA_MOD_1024QAM = 19;
  13064. {$EXTERNALSYM BDA_MOD_1024QAM}
  13065. BDA_MOD_QPSK = 20;
  13066. {$EXTERNALSYM BDA_MOD_QPSK}
  13067. BDA_MOD_BPSK = 21;
  13068. {$EXTERNALSYM BDA_MOD_BPSK}
  13069. BDA_MOD_OQPSK = 22;
  13070. {$EXTERNALSYM BDA_MOD_OQPSK}
  13071. BDA_MOD_8VSB = 23;
  13072. {$EXTERNALSYM BDA_MOD_8VSB}
  13073. BDA_MOD_16VSB = 24;
  13074. {$EXTERNALSYM BDA_MOD_16VSB}
  13075. BDA_MOD_ANALOG_AMPLITUDE = 25; // std am
  13076. {$EXTERNALSYM BDA_MOD_ANALOG_AMPLITUDE}
  13077. BDA_MOD_ANALOG_FREQUENCY = 26; // std fm
  13078. {$EXTERNALSYM BDA_MOD_ANALOG_FREQUENCY}
  13079. BDA_MOD_MAX = 27;
  13080. {$EXTERNALSYM BDA_MOD_MAX}
  13081. Type
  13082. SpectralInversion = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13083. {$EXTERNALSYM SpectralInversion}
  13084. const
  13085. BDA_SPECTRAL_INVERSION_NOT_SET = -1;
  13086. {$EXTERNALSYM BDA_SPECTRAL_INVERSION_NOT_SET}
  13087. BDA_SPECTRAL_INVERSION_NOT_DEFINED = 0;
  13088. {$EXTERNALSYM BDA_SPECTRAL_INVERSION_NOT_DEFINED}
  13089. BDA_SPECTRAL_INVERSION_AUTOMATIC = 1;
  13090. {$EXTERNALSYM BDA_SPECTRAL_INVERSION_AUTOMATIC}
  13091. BDA_SPECTRAL_INVERSION_NORMAL = 2;
  13092. {$EXTERNALSYM BDA_SPECTRAL_INVERSION_NORMAL}
  13093. BDA_SPECTRAL_INVERSION_INVERTED = 3;
  13094. {$EXTERNALSYM BDA_SPECTRAL_INVERSION_INVERTED}
  13095. BDA_SPECTRAL_INVERSION_MAX = 4;
  13096. {$EXTERNALSYM BDA_SPECTRAL_INVERSION_MAX}
  13097. Type
  13098. Polarisation = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13099. {$EXTERNALSYM Polarisation}
  13100. const
  13101. BDA_POLARISATION_NOT_SET = -1;
  13102. {$EXTERNALSYM BDA_POLARISATION_NOT_SET}
  13103. BDA_POLARISATION_NOT_DEFINED = 0;
  13104. {$EXTERNALSYM BDA_POLARISATION_NOT_DEFINED}
  13105. BDA_POLARISATION_LINEAR_H = 1; // Linear horizontal polarisation
  13106. {$EXTERNALSYM BDA_POLARISATION_LINEAR_H}
  13107. BDA_POLARISATION_LINEAR_V = 2; // Linear vertical polarisation
  13108. {$EXTERNALSYM BDA_POLARISATION_LINEAR_V}
  13109. BDA_POLARISATION_CIRCULAR_L = 3; // Circular left polarisation
  13110. {$EXTERNALSYM BDA_POLARISATION_CIRCULAR_L}
  13111. BDA_POLARISATION_CIRCULAR_R = 4; // Circular right polarisation
  13112. {$EXTERNALSYM BDA_POLARISATION_CIRCULAR_R}
  13113. BDA_POLARISATION_MAX = 5;
  13114. {$EXTERNALSYM BDA_POLARISATION_MAX}
  13115. type
  13116. GuardInterval = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13117. {$EXTERNALSYM GuardInterval}
  13118. const
  13119. BDA_GUARD_NOT_SET = -1;
  13120. {$EXTERNALSYM BDA_GUARD_NOT_SET}
  13121. BDA_GUARD_NOT_DEFINED = 0;
  13122. {$EXTERNALSYM BDA_GUARD_NOT_DEFINED}
  13123. BDA_GUARD_1_32 = 1; // Guard interval is 1/32
  13124. {$EXTERNALSYM BDA_GUARD_1_32}
  13125. BDA_GUARD_1_16 = 2; // Guard interval is 1/16
  13126. {$EXTERNALSYM BDA_GUARD_1_16}
  13127. BDA_GUARD_1_8 = 3; // Guard interval is 1/8
  13128. {$EXTERNALSYM BDA_GUARD_1_8}
  13129. BDA_GUARD_1_4 = 4; // Guard interval is 1/4
  13130. {$EXTERNALSYM BDA_GUARD_1_4}
  13131. BDA_GUARD_MAX = 5;
  13132. {$EXTERNALSYM BDA_GUARD_MAX}
  13133. type
  13134. HierarchyAlpha = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13135. {$EXTERNALSYM HierarchyAlpha}
  13136. const
  13137. BDA_HALPHA_NOT_SET = -1;
  13138. {$EXTERNALSYM BDA_HALPHA_NOT_SET}
  13139. BDA_HALPHA_NOT_DEFINED = 0;
  13140. {$EXTERNALSYM BDA_HALPHA_NOT_DEFINED}
  13141. BDA_HALPHA_1 = 1; // Hierarchy alpha is 1.
  13142. {$EXTERNALSYM BDA_HALPHA_1}
  13143. BDA_HALPHA_2 = 2; // Hierarchy alpha is 2.
  13144. {$EXTERNALSYM BDA_HALPHA_2}
  13145. BDA_HALPHA_4 = 3; // Hierarchy alpha is 4.
  13146. {$EXTERNALSYM BDA_HALPHA_4}
  13147. BDA_HALPHA_MAX = 4;
  13148. {$EXTERNALSYM BDA_HALPHA_MAX}
  13149. type
  13150. TransmissionMode = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  13151. {$EXTERNALSYM TransmissionMode}
  13152. const
  13153. BDA_XMIT_MODE_NOT_SET = -1;
  13154. {$EXTERNALSYM BDA_XMIT_MODE_NOT_SET}
  13155. BDA_XMIT_MODE_NOT_DEFINED = 0;
  13156. {$EXTERNALSYM BDA_XMIT_MODE_NOT_DEFINED}
  13157. BDA_XMIT_MODE_2K = 1; // Transmission uses 1705 carriers (use a 2K FFT)
  13158. {$EXTERNALSYM BDA_XMIT_MODE_2K}
  13159. BDA_XMIT_MODE_8K = 2; // Transmission uses 6817 carriers (use an 8K FFT)
  13160. {$EXTERNALSYM BDA_XMIT_MODE_8K}
  13161. BDA_XMIT_MODE_MAX = 3;
  13162. {$EXTERNALSYM BDA_XMIT_MODE_MAX}
  13163. // Settings for Tuner Frequency
  13164. //
  13165. BDA_FREQUENCY_NOT_SET = -1;
  13166. {$EXTERNALSYM BDA_FREQUENCY_NOT_SET}
  13167. BDA_FREQUENCY_NOT_DEFINED = 0;
  13168. {$EXTERNALSYM BDA_FREQUENCY_NOT_DEFINED}
  13169. // Settings for Tuner Range
  13170. //
  13171. // Tuner range refers to the setting of LNB High/Low as well as the
  13172. // selection of a satellite on a multiple satellite switch.
  13173. //
  13174. BDA_RANGE_NOT_SET = -1;
  13175. {$EXTERNALSYM BDA_RANGE_NOT_SET}
  13176. BDA_RANGE_NOT_DEFINED = 0;
  13177. {$EXTERNALSYM BDA_RANGE_NOT_DEFINED}
  13178. // Settings for Tuner Channel Bandwidth
  13179. //
  13180. BDA_CHAN_BANDWITH_NOT_SET = -1;
  13181. {$EXTERNALSYM BDA_CHAN_BANDWITH_NOT_SET}
  13182. BDA_CHAN_BANDWITH_NOT_DEFINED = 0;
  13183. {$EXTERNALSYM BDA_CHAN_BANDWITH_NOT_DEFINED}
  13184. // Settings for Tuner Frequency Multiplier
  13185. //
  13186. BDA_FREQUENCY_MULTIPLIER_NOT_SET = -1;
  13187. {$EXTERNALSYM BDA_FREQUENCY_MULTIPLIER_NOT_SET}
  13188. BDA_FREQUENCY_MULTIPLIER_NOT_DEFINED = 0;
  13189. {$EXTERNALSYM BDA_FREQUENCY_MULTIPLIER_NOT_DEFINED}
  13190. //------------------------------------------------------------------------------
  13191. // File: Regbag.h
  13192. // Desc: part of Tuner library
  13193. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  13194. //------------------------------------------------------------------------------
  13195. const
  13196. IID_ICreatePropBagOnRegKey : TGUID = '{8A674B48-1F63-11d3-B64C-00C04F79498E}';
  13197. {$EXTERNALSYM IID_ICreatePropBagOnRegKey}
  13198. type
  13199. {$HPPEMIT 'typedef System::DelphiInterface<ICreatePropBagOnRegKey> _di_ICreatePropBagOnRegKey;'}
  13200. {$EXTERNALSYM ICreatePropBagOnRegKey}
  13201. ICreatePropBagOnRegKey = interface(IUnknown)
  13202. ['{8A674B48-1F63-11d3-B64C-00C04F79498E}']
  13203. (*** ICreatePropBagOnRegKey methods ***)
  13204. function Create(hkey: HKEY; subkey: POleStr; ulOptions, samDesired: DWORD;
  13205. const iid: TGUID; out ppBag): HResult; stdcall;
  13206. end;
  13207. //------------------------------------------------------------------------------
  13208. // File: Tuner.h
  13209. // Desc: Tuner library
  13210. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  13211. //------------------------------------------------------------------------------
  13212. const
  13213. IID_ITuningSpaces : TGUID = '{901284E4-33FE-4b69-8D63-634A596F3756}';
  13214. {$EXTERNALSYM IID_ITuningSpaces}
  13215. IID_ITuningSpaceContainer : TGUID = '{5B692E84-E2F1-11d2-9493-00C04F72D980}';
  13216. {$EXTERNALSYM IID_ITuningSpaceContainer}
  13217. IID_ITuningSpace : TGUID = '{061C6E30-E622-11d2-9493-00C04F72D980}';
  13218. {$EXTERNALSYM IID_ITuningSpace}
  13219. IID_IEnumTuningSpaces : TGUID = '{8B8EB248-FC2B-11d2-9D8C-00C04F72D980}';
  13220. {$EXTERNALSYM IID_IEnumTuningSpaces}
  13221. IID_IDVBTuningSpace : TGUID = '{ADA0B268-3B19-4e5b-ACC4-49F852BE13BA}';
  13222. {$EXTERNALSYM IID_IDVBTuningSpace}
  13223. IID_IAnalogTVTuningSpace : TGUID = '{2A6E293C-2595-11d3-B64C-00C04F79498E}';
  13224. {$EXTERNALSYM IID_IAnalogTVTuningSpace}
  13225. IID_IATSCTuningSpace : TGUID = '{0369B4E2-45B6-11d3-B650-00C04F79498E}';
  13226. {$EXTERNALSYM IID_IATSCTuningSpace}
  13227. IID_IAnalogRadioTuningSpace : TGUID = '{2A6E293B-2595-11d3-B64C-00C04F79498E}';
  13228. {$EXTERNALSYM IID_IAnalogRadioTuningSpace}
  13229. IID_ITuneRequest : TGUID = '{07DDC146-FC3D-11d2-9D8C-00C04F72D980}';
  13230. {$EXTERNALSYM IID_ITuneRequest}
  13231. IID_IChannelTuneRequest : TGUID = '{0369B4E0-45B6-11d3-B650-00C04F79498E}';
  13232. {$EXTERNALSYM IID_IChannelTuneRequest}
  13233. IID_IATSCChannelTuneRequest : TGUID = '{0369B4E1-45B6-11d3-B650-00C04F79498E}';
  13234. {$EXTERNALSYM IID_IATSCChannelTuneRequest}
  13235. IID_IDVBTuneRequest : TGUID = '{0D6F567E-A636-42bb-83BA-CE4C1704AFA2}';
  13236. {$EXTERNALSYM IID_IDVBTuneRequest}
  13237. IID_ITuner : TGUID = '{28C52640-018A-11d3-9D8E-00C04F72D980}';
  13238. {$EXTERNALSYM IID_ITuner}
  13239. IID_IScanningTuner : TGUID = '{1DFD0A5C-0284-11d3-9D8E-00C04F72D980}';
  13240. {$EXTERNALSYM IID_IScanningTuner}
  13241. IID_ITunerEvents : TGUID = '{68481420-0280-11d3-9D8E-00C04F72D980}';
  13242. {$EXTERNALSYM IID_ITunerEvents}
  13243. IID_ISignalEvents : TGUID = '{85E2439E-0E23-11d3-9D8E-00C04F72D980}';
  13244. {$EXTERNALSYM IID_ISignalEvents}
  13245. IID_IComponentType : TGUID = '{6A340DC0-0311-11d3-9D8E-00C04F72D980}';
  13246. {$EXTERNALSYM IID_IComponentType}
  13247. IID_ILanguageComponentType : TGUID = '{B874C8BA-0FA2-11d3-9D8E-00C04F72D980}';
  13248. {$EXTERNALSYM IID_ILanguageComponentType}
  13249. IID_IMPEG2ComponentType : TGUID = '{2C073D84-B51C-48c9-AA9F-68971E1F6E38}';
  13250. {$EXTERNALSYM IID_IMPEG2ComponentType}
  13251. IID_IATSCComponentType : TGUID = '{FC189E4D-7BD4-4125-B3B3-3A76A332CC96}';
  13252. {$EXTERNALSYM IID_IATSCComponentType}
  13253. IID_IEnumComponentTypes : TGUID = '{8A674B4A-1F63-11d3-B64C-00C04F79498E}';
  13254. {$EXTERNALSYM IID_IEnumComponentTypes}
  13255. IID_IComponentTypes : TGUID = '{0DC13D4A-0313-11d3-9D8E-00C04F72D980}';
  13256. {$EXTERNALSYM IID_IComponentTypes}
  13257. IID_IComponent : TGUID = '{1A5576FC-0E19-11d3-9D8E-00C04F72D980}';
  13258. {$EXTERNALSYM IID_IComponent}
  13259. IID_IMPEG2Component : TGUID = '{1493E353-1EB6-473c-802D-8E6B8EC9D2A9}';
  13260. {$EXTERNALSYM IID_IMPEG2Component}
  13261. IID_IEnumComponents : TGUID = '{2A6E2939-2595-11d3-B64C-00C04F79498E}';
  13262. {$EXTERNALSYM IID_IEnumComponents}
  13263. IID_IComponents : TGUID = '{FCD01846-0E19-11d3-9D8E-00C04F72D980}';
  13264. {$EXTERNALSYM IID_IComponents}
  13265. IID_ILocator : TGUID = '{286D7F89-760C-4F89-80C4-66841D2507AA}';
  13266. {$EXTERNALSYM IID_ILocator}
  13267. IID_IATSCLocator : TGUID = '{BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF}';
  13268. {$EXTERNALSYM IID_IATSCLocator}
  13269. IID_IDVBTLocator : TGUID = '{8664DA16-DDA2-42ac-926A-C18F9127C302}';
  13270. {$EXTERNALSYM IID_IDVBTLocator}
  13271. IID_IDVBSLocator : TGUID = '{3D7C353C-0D04-45f1-A742-F97CC1188DC8}';
  13272. {$EXTERNALSYM IID_IDVBSLocator}
  13273. IID_IDVBCLocator : TGUID = '{6E42F36E-1DD2-43c4-9F78-69D25AE39034}';
  13274. {$EXTERNALSYM IID_IDVBCLocator}
  13275. IID_IDVBTuningSpace2 : TGUID = '{843188B4-CE62-43db-966B-8145A094E040}';
  13276. {$EXTERNALSYM IID_IDVBTuningSpace2}
  13277. IID_IDVBSTuningSpace : TGUID = '{CDF7BE60-D954-42fd-A972-78971958E470}';
  13278. {$EXTERNALSYM IID_IDVBSTuningSpace}
  13279. IID_IMPEG2TuneRequest : TGUID = '{EB7D987F-8A01-42AD-B8AE-574DEEE44D1A}';
  13280. {$EXTERNALSYM IID_IMPEG2TuneRequest}
  13281. IID_IMPEG2TuneRequestFactory : TGUID = '{14E11ABD-EE37-4893-9EA1-6964DE933E39}';
  13282. {$EXTERNALSYM IID_IMPEG2TuneRequestFactory}
  13283. IID_IMPEG2TuneRequestSupport : TGUID = '{1B9D5FC3-5BBC-4b6c-BB18-B9D10E3EEEBF}';
  13284. {$EXTERNALSYM IID_IMPEG2TuneRequestSupport}
  13285. IID_IBroadcastEvent : TGUID = '{3B21263F-26E8-489d-AAC4-924F7EFD9511}';
  13286. {$EXTERNALSYM IID_IBroadcastEvent}
  13287. IID_IAuxInTuningSpace : TGUID = '{E48244B8-7E17-4f76-A763-5090FF1E2F30}'; // DX9
  13288. {$EXTERNALSYM IID_IAuxInTuningSpace}
  13289. CLSID_SystemTuningSpaces : TGUID = '{D02AAC50-027E-11d3-9D8E-00C04F72D980}';
  13290. {$EXTERNALSYM CLSID_SystemTuningSpaces}
  13291. CLSID_TuningSpace : TGUID = '{5FFDC5E6-B83A-4b55-B6E8-C69E765FE9DB}';
  13292. {$EXTERNALSYM CLSID_TuningSpace}
  13293. CLSID_ATSCTuningSpace : TGUID = '{A2E30750-6C3D-11d3-B653-00C04F79498E}';
  13294. {$EXTERNALSYM CLSID_ATSCTuningSpace}
  13295. CLSID_AnalogRadioTuningSpace : TGUID = '{8A674B4C-1F63-11d3-B64C-00C04F79498E}';
  13296. {$EXTERNALSYM CLSID_AnalogRadioTuningSpace}
  13297. CLSID_AnalogTVTuningSpace : TGUID = '{8A674B4D-1F63-11d3-B64C-00C04F79498E}';
  13298. {$EXTERNALSYM CLSID_AnalogTVTuningSpace}
  13299. CLSID_DVBTuningSpace : TGUID = '{C6B14B32-76AA-4a86-A7AC-5C79AAF58DA7}';
  13300. {$EXTERNALSYM CLSID_DVBTuningSpace}
  13301. CLSID_ComponentTypes : TGUID = '{A1A2B1C4-0E3A-11d3-9D8E-00C04F72D980}';
  13302. {$EXTERNALSYM CLSID_ComponentTypes}
  13303. CLSID_ComponentType : TGUID = '{823535A0-0318-11d3-9D8E-00C04F72D980}';
  13304. {$EXTERNALSYM CLSID_ComponentType}
  13305. CLSID_LanguageComponentType : TGUID = '{1BE49F30-0E1B-11d3-9D8E-00C04F72D980}';
  13306. {$EXTERNALSYM CLSID_LanguageComponentType}
  13307. CLSID_MPEG2ComponentType : TGUID = '{418008F3-CF67-4668-9628-10DC52BE1D08}';
  13308. {$EXTERNALSYM CLSID_MPEG2ComponentType}
  13309. CLSID_ATSCComponentType : TGUID = '{A8DCF3D5-0780-4ef4-8A83-2CFFAACB8ACE}';
  13310. {$EXTERNALSYM CLSID_ATSCComponentType}
  13311. CLSID_Components : TGUID = '{809B6661-94C4-49e6-B6EC-3F0F862215AA}';
  13312. {$EXTERNALSYM CLSID_Components}
  13313. CLSID_Component : TGUID = '{59DC47A8-116C-11d3-9D8E-00C04F72D980}';
  13314. {$EXTERNALSYM CLSID_Component}
  13315. CLSID_MPEG2Component : TGUID = '{055CB2D7-2969-45cd-914B-76890722F112}';
  13316. {$EXTERNALSYM CLSID_MPEG2Component}
  13317. CLSID_TuneRequest : TGUID = '{B46E0D38-AB35-4a06-A137-70576B01B39F}';
  13318. {$EXTERNALSYM CLSID_TuneRequest}
  13319. CLSID_ChannelTuneRequest : TGUID = '{0369B4E5-45B6-11d3-B650-00C04F79498E}';
  13320. {$EXTERNALSYM CLSID_ChannelTuneRequest}
  13321. CLSID_ATSCChannelTuneRequest : TGUID = '{0369B4E6-45B6-11d3-B650-00C04F79498E}';
  13322. {$EXTERNALSYM CLSID_ATSCChannelTuneRequest}
  13323. CLSID_Locator : TGUID = '{0888C883-AC4F-4943-B516-2C38D9B34562}';
  13324. {$EXTERNALSYM CLSID_Locator}
  13325. CLSID_ATSCLocator : TGUID = '{8872FF1B-98FA-4d7a-8D93-C9F1055F85BB}';
  13326. {$EXTERNALSYM CLSID_ATSCLocator}
  13327. CLSID_DVBTLocator : TGUID = '{9CD64701-BDF3-4d14-8E03-F12983D86664}';
  13328. {$EXTERNALSYM CLSID_DVBTLocator}
  13329. CLSID_DVBSLocator : TGUID = '{1DF7D126-4050-47f0-A7CF-4C4CA9241333}';
  13330. {$EXTERNALSYM CLSID_DVBSLocator}
  13331. CLSID_DVBCLocator : TGUID = '{C531D9FD-9685-4028-8B68-6E1232079F1E}';
  13332. {$EXTERNALSYM CLSID_DVBCLocator}
  13333. CLSID_DVBTuneRequest : TGUID = '{15D6504A-5494-499c-886C-973C9E53B9F1}';
  13334. {$EXTERNALSYM CLSID_DVBTuneRequest}
  13335. CLSID_CreatePropBagOnRegKey : TGUID = '{8A674B49-1F63-11d3-B64C-00C04F79498E}';
  13336. {$EXTERNALSYM CLSID_CreatePropBagOnRegKey}
  13337. CLSID_DVBSTuningSpace : TGUID = '{B64016F3-C9A2-4066-96F0-BD9563314726}';
  13338. {$EXTERNALSYM CLSID_DVBSTuningSpace}
  13339. CLSID_MPEG2TuneRequest : TGUID = '{0955AC62-BF2E-4CBA-A2B9-A63F772D46CF}';
  13340. {$EXTERNALSYM CLSID_MPEG2TuneRequest}
  13341. CLSID_BroadcastEventService : TGUID = '{0B3FFB92-0919-4934-9D5B-619C719D0202}';
  13342. {$EXTERNALSYM CLSID_BroadcastEventService}
  13343. CLSID_MPEG2TuneRequestFactory: TGUID = '{2C63E4EB-4CEA-41B8-919C-E947EA19A77C}';
  13344. {$EXTERNALSYM CLSID_MPEG2TuneRequestFactory}
  13345. CLSID_AuxInTuningSpace : TGUID = '{F9769A06-7ACA-4e39-9CFB-97BB35F0E77E}';
  13346. {$EXTERNALSYM CLSID_AuxInTuningSpace}
  13347. DISPID_TUNER_TS_UNIQUENAME = 1;
  13348. {$EXTERNALSYM DISPID_TUNER_TS_UNIQUENAME}
  13349. DISPID_TUNER_TS_FRIENDLYNAME = 2;
  13350. {$EXTERNALSYM DISPID_TUNER_TS_FRIENDLYNAME}
  13351. DISPID_TUNER_TS_CLSID = 3;
  13352. {$EXTERNALSYM DISPID_TUNER_TS_CLSID}
  13353. DISPID_TUNER_TS_NETWORKTYPE = 4;
  13354. {$EXTERNALSYM DISPID_TUNER_TS_NETWORKTYPE}
  13355. DISPID_TUNER_TS__NETWORKTYPE = 5;
  13356. {$EXTERNALSYM DISPID_TUNER_TS__NETWORKTYPE}
  13357. DISPID_TUNER_TS_CREATETUNEREQUEST = 6;
  13358. {$EXTERNALSYM DISPID_TUNER_TS_CREATETUNEREQUEST}
  13359. DISPID_TUNER_TS_ENUMCATEGORYGUIDS = 7;
  13360. {$EXTERNALSYM DISPID_TUNER_TS_ENUMCATEGORYGUIDS}
  13361. DISPID_TUNER_TS_ENUMDEVICEMONIKERS = 8;
  13362. {$EXTERNALSYM DISPID_TUNER_TS_ENUMDEVICEMONIKERS}
  13363. DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES = 9;
  13364. {$EXTERNALSYM DISPID_TUNER_TS_DEFAULTPREFERREDCOMPONENTTYPES}
  13365. DISPID_TUNER_TS_FREQMAP = 10;
  13366. {$EXTERNALSYM DISPID_TUNER_TS_FREQMAP}
  13367. DISPID_TUNER_TS_DEFLOCATOR = 11;
  13368. {$EXTERNALSYM DISPID_TUNER_TS_DEFLOCATOR}
  13369. DISPID_TUNER_TS_CLONE = 12;
  13370. {$EXTERNALSYM DISPID_TUNER_TS_CLONE}
  13371. // DISPIDs for ITuneRequest interface
  13372. DISPID_TUNER_TR_TUNINGSPACE = 1;
  13373. {$EXTERNALSYM DISPID_TUNER_TR_TUNINGSPACE}
  13374. DISPID_TUNER_TR_COMPONENTS = 2;
  13375. {$EXTERNALSYM DISPID_TUNER_TR_COMPONENTS}
  13376. DISPID_TUNER_TR_CLONE = 3;
  13377. {$EXTERNALSYM DISPID_TUNER_TR_CLONE}
  13378. DISPID_TUNER_TR_LOCATOR = 4;
  13379. {$EXTERNALSYM DISPID_TUNER_TR_LOCATOR}
  13380. // DISPID for IComponentType interface
  13381. DISPID_TUNER_CT_CATEGORY = 1;
  13382. {$EXTERNALSYM DISPID_TUNER_CT_CATEGORY}
  13383. DISPID_TUNER_CT_MEDIAMAJORTYPE = 2;
  13384. {$EXTERNALSYM DISPID_TUNER_CT_MEDIAMAJORTYPE}
  13385. DISPID_TUNER_CT__MEDIAMAJORTYPE = 3;
  13386. {$EXTERNALSYM DISPID_TUNER_CT__MEDIAMAJORTYPE}
  13387. DISPID_TUNER_CT_MEDIASUBTYPE = 4;
  13388. {$EXTERNALSYM DISPID_TUNER_CT_MEDIASUBTYPE}
  13389. DISPID_TUNER_CT__MEDIASUBTYPE = 5;
  13390. {$EXTERNALSYM DISPID_TUNER_CT__MEDIASUBTYPE}
  13391. DISPID_TUNER_CT_MEDIAFORMATTYPE = 6;
  13392. {$EXTERNALSYM DISPID_TUNER_CT_MEDIAFORMATTYPE}
  13393. DISPID_TUNER_CT__MEDIAFORMATTYPE = 7;
  13394. {$EXTERNALSYM DISPID_TUNER_CT__MEDIAFORMATTYPE}
  13395. DISPID_TUNER_CT_MEDIATYPE = 8;
  13396. {$EXTERNALSYM DISPID_TUNER_CT_MEDIATYPE}
  13397. DISPID_TUNER_CT_CLONE = 9;
  13398. {$EXTERNALSYM DISPID_TUNER_CT_CLONE}
  13399. // DISPID for ILanguageComponentType interface
  13400. DISPID_TUNER_LCT_LANGID = 100;
  13401. {$EXTERNALSYM DISPID_TUNER_LCT_LANGID}
  13402. // DISPID for IMPEG2ComponentType interface
  13403. DISPID_TUNER_MP2CT_TYPE = 200;
  13404. {$EXTERNALSYM DISPID_TUNER_MP2CT_TYPE}
  13405. // DISPID for IATSCComponentType interface
  13406. DISPID_TUNER_ATSCCT_FLAGS = 300;
  13407. {$EXTERNALSYM DISPID_TUNER_ATSCCT_FLAGS}
  13408. // DISPID for ILocator interface
  13409. DISPID_TUNER_L_CARRFREQ = 1;
  13410. {$EXTERNALSYM DISPID_TUNER_L_CARRFREQ}
  13411. DISPID_TUNER_L_INNERFECMETHOD = 2;
  13412. {$EXTERNALSYM DISPID_TUNER_L_INNERFECMETHOD}
  13413. DISPID_TUNER_L_INNERFECRATE = 3;
  13414. {$EXTERNALSYM DISPID_TUNER_L_INNERFECRATE}
  13415. DISPID_TUNER_L_OUTERFECMETHOD = 4;
  13416. {$EXTERNALSYM DISPID_TUNER_L_OUTERFECMETHOD}
  13417. DISPID_TUNER_L_OUTERFECRATE = 5;
  13418. {$EXTERNALSYM DISPID_TUNER_L_OUTERFECRATE}
  13419. DISPID_TUNER_L_MOD = 6;
  13420. {$EXTERNALSYM DISPID_TUNER_L_MOD}
  13421. DISPID_TUNER_L_SYMRATE = 7;
  13422. {$EXTERNALSYM DISPID_TUNER_L_SYMRATE}
  13423. DISPID_TUNER_L_CLONE = 8;
  13424. {$EXTERNALSYM DISPID_TUNER_L_CLONE}
  13425. // DISPID for IATSCLocator interface
  13426. DISPID_TUNER_L_ATSC_PHYS_CHANNEL = 201;
  13427. {$EXTERNALSYM DISPID_TUNER_L_ATSC_PHYS_CHANNEL}
  13428. DISPID_TUNER_L_ATSC_TSID = 202;
  13429. {$EXTERNALSYM DISPID_TUNER_L_ATSC_TSID}
  13430. // DISPID for IDVBTLocator interface
  13431. DISPID_TUNER_L_DVBT_BANDWIDTH = 301;
  13432. {$EXTERNALSYM DISPID_TUNER_L_DVBT_BANDWIDTH}
  13433. DISPID_TUNER_L_DVBT_LPINNERFECMETHOD = 302;
  13434. {$EXTERNALSYM DISPID_TUNER_L_DVBT_LPINNERFECMETHOD}
  13435. DISPID_TUNER_L_DVBT_LPINNERFECRATE = 303;
  13436. {$EXTERNALSYM DISPID_TUNER_L_DVBT_LPINNERFECRATE}
  13437. DISPID_TUNER_L_DVBT_GUARDINTERVAL = 304;
  13438. {$EXTERNALSYM DISPID_TUNER_L_DVBT_GUARDINTERVAL}
  13439. DISPID_TUNER_L_DVBT_HALPHA = 305;
  13440. {$EXTERNALSYM DISPID_TUNER_L_DVBT_HALPHA}
  13441. DISPID_TUNER_L_DVBT_TRANSMISSIONMODE = 306;
  13442. {$EXTERNALSYM DISPID_TUNER_L_DVBT_TRANSMISSIONMODE}
  13443. DISPID_TUNER_L_DVBT_INUSE = 307;
  13444. {$EXTERNALSYM DISPID_TUNER_L_DVBT_INUSE}
  13445. // DISPID for IDVBSLocator interface
  13446. DISPID_TUNER_L_DVBS_POLARISATION = 401;
  13447. {$EXTERNALSYM DISPID_TUNER_L_DVBS_POLARISATION}
  13448. DISPID_TUNER_L_DVBS_WEST = 402;
  13449. {$EXTERNALSYM DISPID_TUNER_L_DVBS_WEST}
  13450. DISPID_TUNER_L_DVBS_ORBITAL = 403;
  13451. {$EXTERNALSYM DISPID_TUNER_L_DVBS_ORBITAL}
  13452. DISPID_TUNER_L_DVBS_AZIMUTH = 404;
  13453. {$EXTERNALSYM DISPID_TUNER_L_DVBS_AZIMUTH}
  13454. DISPID_TUNER_L_DVBS_ELEVATION = 405;
  13455. {$EXTERNALSYM DISPID_TUNER_L_DVBS_ELEVATION}
  13456. // DISPID for IDVBCLocator interface
  13457. // DISPIDs for IComponent interface
  13458. DISPID_TUNER_C_TYPE = 1;
  13459. {$EXTERNALSYM DISPID_TUNER_C_TYPE}
  13460. DISPID_TUNER_C_STATUS = 2;
  13461. {$EXTERNALSYM DISPID_TUNER_C_STATUS}
  13462. DISPID_TUNER_C_LANGID = 3;
  13463. {$EXTERNALSYM DISPID_TUNER_C_LANGID}
  13464. DISPID_TUNER_C_DESCRIPTION = 4;
  13465. {$EXTERNALSYM DISPID_TUNER_C_DESCRIPTION}
  13466. DISPID_TUNER_C_CLONE = 5;
  13467. {$EXTERNALSYM DISPID_TUNER_C_CLONE}
  13468. // DISPIDs for IMPEG2Component interface
  13469. DISPID_TUNER_C_MP2_PID = 101;
  13470. {$EXTERNALSYM DISPID_TUNER_C_MP2_PID}
  13471. DISPID_TUNER_C_MP2_PCRPID = 102;
  13472. {$EXTERNALSYM DISPID_TUNER_C_MP2_PCRPID}
  13473. DISPID_TUNER_C_MP2_PROGNO = 103;
  13474. {$EXTERNALSYM DISPID_TUNER_C_MP2_PROGNO}
  13475. DISPID_TUNER_TS_DVB_SYSTEMTYPE = 101;
  13476. {$EXTERNALSYM DISPID_TUNER_TS_DVB_SYSTEMTYPE}
  13477. // DISPIDs for IDVBTuningSpace2 interface
  13478. DISPID_TUNER_TS_DVB2_NETWORK_ID = 102;
  13479. {$EXTERNALSYM DISPID_TUNER_TS_DVB2_NETWORK_ID}
  13480. // DISPIDs for IDVBSTuningSpace interface
  13481. DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ = 1001;
  13482. {$EXTERNALSYM DISPID_TUNER_TS_DVBS_LOW_OSC_FREQ}
  13483. DISPID_TUNER_TS_DVBS_HI_OSC_FREQ = 1002;
  13484. {$EXTERNALSYM DISPID_TUNER_TS_DVBS_HI_OSC_FREQ}
  13485. DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ = 1003;
  13486. {$EXTERNALSYM DISPID_TUNER_TS_DVBS_LNB_SWITCH_FREQ}
  13487. DISPID_TUNER_TS_DVBS_INPUT_RANGE = 1004;
  13488. {$EXTERNALSYM DISPID_TUNER_TS_DVBS_INPUT_RANGE}
  13489. DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION = 1005;
  13490. {$EXTERNALSYM DISPID_TUNER_TS_DVBS_SPECTRAL_INVERSION}
  13491. // DISPIDs for IAnalogRadioTuningSpace interface
  13492. DISPID_TUNER_TS_AR_MINFREQUENCY = 101;
  13493. {$EXTERNALSYM DISPID_TUNER_TS_AR_MINFREQUENCY}
  13494. DISPID_TUNER_TS_AR_MAXFREQUENCY = 102;
  13495. {$EXTERNALSYM DISPID_TUNER_TS_AR_MAXFREQUENCY}
  13496. DISPID_TUNER_TS_AR_STEP = 103;
  13497. {$EXTERNALSYM DISPID_TUNER_TS_AR_STEP}
  13498. // DISPIDs for IAnalogTVTuningSpace interface
  13499. DISPID_TUNER_TS_ATV_MINCHANNEL = 101;
  13500. {$EXTERNALSYM DISPID_TUNER_TS_ATV_MINCHANNEL}
  13501. DISPID_TUNER_TS_ATV_MAXCHANNEL = 102;
  13502. {$EXTERNALSYM DISPID_TUNER_TS_ATV_MAXCHANNEL}
  13503. DISPID_TUNER_TS_ATV_INPUTTYPE = 103;
  13504. {$EXTERNALSYM DISPID_TUNER_TS_ATV_INPUTTYPE}
  13505. DISPID_TUNER_TS_ATV_COUNTRYCODE = 104;
  13506. {$EXTERNALSYM DISPID_TUNER_TS_ATV_COUNTRYCODE}
  13507. // DISPIDs for IATSCTuningSpace interface
  13508. DISPID_TUNER_TS_ATSC_MINMINORCHANNEL = 201;
  13509. {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MINMINORCHANNEL}
  13510. DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL = 202;
  13511. {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MAXMINORCHANNEL}
  13512. DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL = 203;
  13513. {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MINPHYSCHANNEL}
  13514. DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL = 204;
  13515. {$EXTERNALSYM DISPID_TUNER_TS_ATSC_MAXPHYSCHANNEL}
  13516. // DISPID for IAnalogTVAudioComponent interface
  13517. DISPID_CHTUNER_ATVAC_CHANNEL = 101;
  13518. {$EXTERNALSYM DISPID_CHTUNER_ATVAC_CHANNEL}
  13519. // DISPIDs for IAnalogTVDataComponent interface
  13520. DISPID_CHTUNER_ATVDC_SYSTEM = 101;
  13521. {$EXTERNALSYM DISPID_CHTUNER_ATVDC_SYSTEM}
  13522. DISPID_CHTUNER_ATVDC_CONTENT = 102;
  13523. {$EXTERNALSYM DISPID_CHTUNER_ATVDC_CONTENT}
  13524. // DISPID for IChannelTuneRequest interface
  13525. DISPID_CHTUNER_CTR_CHANNEL = 101;
  13526. {$EXTERNALSYM DISPID_CHTUNER_CTR_CHANNEL}
  13527. // DISPID IATSCChannelTuneRequest
  13528. DISPID_CHTUNER_ACTR_MINOR_CHANNEL = 201;
  13529. {$EXTERNALSYM DISPID_CHTUNER_ACTR_MINOR_CHANNEL}
  13530. // DISPIDs for IDVBComponent interface
  13531. DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID = 101;
  13532. {$EXTERNALSYM DISPID_DVBTUNER_DVBC_ATTRIBUTESVALID}
  13533. DISPID_DVBTUNER_DVBC_PID = 102;
  13534. {$EXTERNALSYM DISPID_DVBTUNER_DVBC_PID}
  13535. DISPID_DVBTUNER_DVBC_TAG = 103;
  13536. {$EXTERNALSYM DISPID_DVBTUNER_DVBC_TAG}
  13537. DISPID_DVBTUNER_DVBC_COMPONENTTYPE = 104;
  13538. {$EXTERNALSYM DISPID_DVBTUNER_DVBC_COMPONENTTYPE}
  13539. // DISPIDs for IDVBTuneRequest interface
  13540. DISPID_DVBTUNER_ONID = 101;
  13541. {$EXTERNALSYM DISPID_DVBTUNER_ONID}
  13542. DISPID_DVBTUNER_TSID = 102;
  13543. {$EXTERNALSYM DISPID_DVBTUNER_TSID}
  13544. DISPID_DVBTUNER_SID = 103;
  13545. {$EXTERNALSYM DISPID_DVBTUNER_SID}
  13546. // DISPIDs for IMPEG2TuneRequest interface
  13547. DISPID_MP2TUNER_TSID = 101;
  13548. {$EXTERNALSYM DISPID_MP2TUNER_TSID}
  13549. DISPID_MP2TUNER_PROGNO = 102;
  13550. {$EXTERNALSYM DISPID_MP2TUNER_PROGNO}
  13551. // DISPIDs for IMPEG2TuneRequestFactory interface
  13552. DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST = 1;
  13553. {$EXTERNALSYM DISPID_MP2TUNERFACTORY_CREATETUNEREQUEST}
  13554. type
  13555. ITuningSpace = interface;
  13556. IEnumTuningSpaces = interface;
  13557. {$HPPEMIT 'typedef System::DelphiInterface<ITuningSpaces> _di_ITuningSpaces;'}
  13558. {$EXTERNALSYM ITuningSpaces}
  13559. ITuningSpaces = interface(IDispatch)
  13560. ['{901284E4-33FE-4b69-8D63-634A596F3756}']
  13561. (*** ITuningSpaces methods ***)
  13562. function get_Count(out Count: longint): HResult; stdcall;
  13563. function get__NewEnum(out NewEnum: IEnumVARIANT): HResult; stdcall;
  13564. function get_Item(varIndex: OLEVARIANT; out TuningSpace: ITuningSpace): HResult; stdcall;
  13565. function get_EnumTuningSpaces(out NewEnum: IEnumTuningSpaces): HResult; stdcall;
  13566. end;
  13567. {$HPPEMIT 'typedef System::DelphiInterface<ITuningSpaceContainer> _di_ITuningSpaceContainer;'}
  13568. {$EXTERNALSYM ITuningSpaceContainer}
  13569. ITuningSpaceContainer = interface(IDispatch)
  13570. ['{5B692E84-E2F1-11d2-9493-00C04F72D980}']
  13571. (*** ITuningSpaceContainer methods ***)
  13572. function get_Count(out Count: longint): HResult; stdcall;
  13573. function get__NewEnum(out NewEnum: IEnumVARIANT): HResult; stdcall;
  13574. function get_Item(varIndex: OLEVARIANT; out TuningSpace: ITuningSpace): HResult; stdcall;
  13575. function put_Item(varIndex: OLEVARIANT; TuningSpace: ITuningSpace): HResult; stdcall;
  13576. function TuningSpacesForCLSID(SpaceCLSID: widestring; out NewColl: ITuningSpaces): HResult; stdcall;
  13577. function _TuningSpacesForCLSID(const SpaceCLSID: TGUID; out NewColl: ITuningSpaces): HResult; stdcall;
  13578. function TuningSpacesForName(Name: WideString; out NewColl: ITuningSpaces): HResult; stdcall;
  13579. function FindID(TuningSpace: ITuningSpace; out ID: longint): HResult; stdcall;
  13580. function Add(TuningSpace: ITuningSpace; out NewIndex: OLEVARIANT): HResult; stdcall;
  13581. function get_EnumTuningSpaces(out ppEnum: IEnumTuningSpaces): HResult; stdcall;
  13582. function Remove(Index: OLEVARIANT): HResult; stdcall;
  13583. function get_MaxCount(out MaxCount: longint): HResult; stdcall;
  13584. function put_MaxCount(MaxCount: longint): HResult; stdcall;
  13585. end;
  13586. ITuneRequest = interface;
  13587. IComponentTypes = interface;
  13588. ILocator = interface;
  13589. {$HPPEMIT 'typedef System::DelphiInterface<ITuningSpace> _di_ITuningSpace;'}
  13590. {$EXTERNALSYM ITuningSpace}
  13591. ITuningSpace = interface(IDispatch)
  13592. ['{061C6E30-E622-11d2-9493-00C04F72D980}']
  13593. (*** ITuningSpace methods ***)
  13594. function get_UniqueName(out Name: WideString): HResult; stdcall;
  13595. function put_UniqueName(Name: WideString): HResult; stdcall;
  13596. function get_FriendlyName(out Name: WideString): HResult; stdcall;
  13597. function put_FriendlyName: HResult; stdcall;
  13598. function get_CLSID(out SpaceCLSID: WideString): HResult; stdcall;
  13599. function get_NetworkType(out NetworkTypeGuid: WideString): HResult; stdcall;
  13600. function put_NetworkType(NetworkTypeGuid: WideString): HResult; stdcall;
  13601. function get__NetworkType(out NetworkTypeGuid: WideString): HResult; stdcall;
  13602. function put__NetworkType(const NetworkTypeGuid: WideString): HResult; stdcall;
  13603. // this method creates the "best" kind of tune request for this tuning space.
  13604. // the tuning space may support other kinds of tune requests created via
  13605. // other factory mechanisms(for example, see mpeg2tunerequestfactory). but,
  13606. // this method is the preferred way to get a tune request as it always returns
  13607. // the optimal type of tune request for this space.
  13608. function CreateTuneRequest(out TuneRequest: ITuneRequest): HResult; stdcall;
  13609. function EnumCategoryGUIDs(out ppEnum: IEnumGUID): HResult; stdcall;
  13610. function EnumDeviceMonikers(out ppEnum: IEnumMoniker): HResult; stdcall;
  13611. function get_DefaultPreferredComponentTypes(out ComponentTypes: IComponentTypes): HResult; stdcall;
  13612. function put_DefaultPreferredComponentTypes(NewComponentTypes: IComponentTypes): HResult; stdcall;
  13613. function get_FrequencyMapping(out pMapping: WideString): HResult; stdcall;
  13614. function put_FrequencyMapping(Mapping: WideString): HResult; stdcall;
  13615. function get_DefaultLocator(out LocatorVal: ILocator): HResult; stdcall;
  13616. function put_DefaultLocator(LocatorVal: ILocator): HResult; stdcall;
  13617. function Clone(out NewTS: ITuningSpace): HResult; stdcall;
  13618. end;
  13619. {$HPPEMIT 'typedef System::DelphiInterface<IEnumTuningSpaces> _di_IEnumTuningSpaces;'}
  13620. {$EXTERNALSYM IEnumTuningSpaces}
  13621. IEnumTuningSpaces = interface(IUnknown)
  13622. ['{8B8EB248-FC2B-11d2-9D8C-00C04F72D980}']
  13623. (*** IEnumTuningSpaces methods ***)
  13624. function Next(celt: ULONG; out rgelt: ITuningSpace; out pceltFetched: ULONG): HResult; stdcall;
  13625. function Skip(celt: ULONG): HResult; stdcall;
  13626. function Reset: HResult; stdcall;
  13627. function Clone(out ppEnum: IEnumTuningSpaces): HResult; stdcall;
  13628. end;
  13629. {$HPPEMIT 'typedef System::DelphiInterface<IDVBTuningSpace> _di_IDVBTuningSpace;'}
  13630. {$EXTERNALSYM IDVBTuningSpace}
  13631. IDVBTuningSpace = interface(ITuningSpace)
  13632. ['{ADA0B268-3B19-4e5b-ACC4-49F852BE13BA}']
  13633. (*** IDVBTuningSpace methods ***)
  13634. function get_SystemType(out SysType: TDVBSystemType): HResult; stdcall;
  13635. function put_SystemType(SysType: TDVBSystemType): HResult; stdcall;
  13636. end;
  13637. {$HPPEMIT 'typedef System::DelphiInterface<IDVBTuningSpace2> _di_IDVBTuningSpace2;'}
  13638. {$EXTERNALSYM IDVBTuningSpace2}
  13639. IDVBTuningSpace2 = interface(IDVBTuningSpace)
  13640. ['{843188B4-CE62-43db-966B-8145A094E040}']
  13641. (*** IDVBTuningSpace2 methods ***)
  13642. function get_NetworkID(out NetworkID: longint): HResult; stdcall;
  13643. function put_NetworkID(NetworkID: longint): HResult; stdcall;
  13644. end;
  13645. {$HPPEMIT 'typedef System::DelphiInterface<IDVBSTuningSpace> _di_IDVBSTuningSpace;'}
  13646. {$EXTERNALSYM IDVBSTuningSpace}
  13647. IDVBSTuningSpace = interface(IDVBTuningSpace2)
  13648. ['{CDF7BE60-D954-42FD-A972-78971958E470}']
  13649. (*** IDVBSTuningSpace methods ***)
  13650. function get_LowOscillator(out LowOscillator: longint): HResult; stdcall;
  13651. function put_LowOscillator(LowOscillator: longint): HResult; stdcall;
  13652. function get_HighOscillator(out HighOscillator: longint): HResult; stdcall;
  13653. function put_HighOscillator(HighOscillator: longint): HResult; stdcall;
  13654. function get_LNBSwitch(out LNBSwitch: longint): HResult; stdcall;
  13655. function put_LNBSwitch(LNBSwitch: longint): HResult; stdcall;
  13656. function get_InputRange(out InputRange: WideString): HResult; stdcall;
  13657. function put_InputRange(const InputRange: WideString): HResult; stdcall;
  13658. function get_SpectralInversion(out SpectralInversionVal: SpectralInversion): HResult; stdcall;
  13659. function put_SpectralInversion(SpectralInversionVal: SpectralInversion): HResult; stdcall;
  13660. end;
  13661. {$HPPEMIT 'typedef System::DelphiInterface<IAuxInTuningSpace> _di_IAuxInTuningSpace;'}
  13662. {$EXTERNALSYM IAuxInTuningSpace}
  13663. IAuxInTuningSpace = interface(ITuningSpace)
  13664. ['{E48244B8-7E17-4f76-A763-5090FF1E2F30}']
  13665. (*** IAuxInTuningSpace methods ***)
  13666. end;
  13667. {$HPPEMIT 'typedef System::DelphiInterface<IAnalogTVTuningSpace> _di_IAnalogTVTuningSpace;'}
  13668. {$EXTERNALSYM IAnalogTVTuningSpace}
  13669. IAnalogTVTuningSpace = interface(ITuningSpace)
  13670. ['{2A6E293C-2595-11d3-B64C-00C04F79498E}']
  13671. (*** IAnalogTVTuningSpace methods ***)
  13672. function get_MinChannel(out MinChannelVal: longint): HResult; stdcall;
  13673. function put_MinChannel(NewMinChannelVal: longint): HResult; stdcall;
  13674. function get_MaxChannel(out MaxChannelVal: longint): HResult; stdcall;
  13675. function put_MaxChannel(NewMaxChannelVal: longint): HResult; stdcall;
  13676. function get_InputType(out InputTypeVal: TTunerInputType): HResult; stdcall;
  13677. function put_InputType(NewInputTypeVal: TTunerInputType): HResult; stdcall;
  13678. function get_CountryCode(out CountryCodeVal: longint): HResult; stdcall;
  13679. function put_CountryCode(NewCountryCodeVal: longint): HResult; stdcall;
  13680. end;
  13681. {$HPPEMIT 'typedef System::DelphiInterface<IATSCTuningSpace> _di_IATSCTuningSpace;'}
  13682. {$EXTERNALSYM IATSCTuningSpace}
  13683. IATSCTuningSpace = interface(IAnalogTVTuningSpace)
  13684. ['{0369B4E2-45B6-11d3-B650-00C04F79498E}']
  13685. (*** IATSCTuningSpace methods ***)
  13686. function get_MinMinorChannel(out MinMinorChannelVal: longint): HResult; stdcall;
  13687. function put_MinMinorChannel(NewMinMinorChannelVal: longint): HResult; stdcall;
  13688. function get_MaxMinorChannel(out MaxMinorChannelVal: longint): HResult; stdcall;
  13689. function put_MaxMinorChannel(NewMaxMinorChannelVal: longint): HResult; stdcall;
  13690. function get_MinPhysicalChannel(out MinPhysicalChannelVal: longint): HResult; stdcall;
  13691. function put_MinPhysicalChannel(NewMinPhysicalChannelVal: longint): HResult; stdcall;
  13692. function get_MaxPhysicalChannel(out MaxPhysicalChannelVal: longint): HResult; stdcall;
  13693. function put_MaxPhysicalChannel(NewMaxPhysicalChannelVal: longint): HResult; stdcall;
  13694. end;
  13695. {$HPPEMIT 'typedef System::DelphiInterface<IAnalogRadioTuningSpace> _di_IAnalogRadioTuningSpace;'}
  13696. {$EXTERNALSYM IAnalogRadioTuningSpace}
  13697. IAnalogRadioTuningSpace = interface(ITuningSpace)
  13698. ['{2A6E293B-2595-11d3-B64C-00C04F79498E}']
  13699. (*** IAnalogRadioTuningSpace methods ***)
  13700. function get_MinFrequency(out MinFrequencyVal: longint): HResult; stdcall;
  13701. function put_MinFrequency(NewMinFrequencyVal: longint): HResult; stdcall;
  13702. function get_MaxFrequency(out MaxFrequencyVal: longint): HResult; stdcall;
  13703. function put_MaxFrequency(NewMaxFrequencyVal: longint): HResult; stdcall;
  13704. function get_Step(out StepVal: longint): HResult; stdcall;
  13705. function put_Step(NewStepVal: longint): HResult; stdcall;
  13706. end;
  13707. IComponents = interface;
  13708. //////////////////////////////////////////////////////////////////////////////////////
  13709. // Tune Request Interfaces
  13710. //////////////////////////////////////////////////////////////////////////////////////
  13711. // tune requests(of any kind) can only be obtained from tune request factories such as
  13712. // ITuningSpace::CreateTuneRequest. one reason for this is that we always want to be
  13713. // certain that a tune request is bound to the right tuning space. this means we don't
  13714. // have to perform consistency checks all over the place.
  13715. {$HPPEMIT 'typedef System::DelphiInterface<ITuneRequest> _di_ITuneRequest;'}
  13716. {$EXTERNALSYM ITuneRequest}
  13717. ITuneRequest = interface(IDispatch)
  13718. ['{07DDC146-FC3D-11d2-9D8C-00C04F72D980}']
  13719. (*** ITuneRequest methods ***)
  13720. function get_TuningSpace(out TuningSpace: ITuningSpace): HResult; stdcall;
  13721. function get_Components(out Components: IComponents): HResult; stdcall;
  13722. function Clone(out NewTuneRequest: ITuneRequest): HResult; stdcall;
  13723. function get_Locator(out Locator: ILocator): HResult; stdcall;
  13724. function put_Locator(Locator: ILocator): HResult; stdcall;
  13725. end;
  13726. {$HPPEMIT 'typedef System::DelphiInterface<IChannelTuneRequest> _di_IChannelTuneRequest;'}
  13727. {$EXTERNALSYM IChannelTuneRequest}
  13728. IChannelTuneRequest = interface(ITuneRequest)
  13729. ['{0369B4E0-45B6-11d3-B650-00C04F79498E}']
  13730. (*** IChannelTuneRequest methods ***)
  13731. function get_Channel(out Channel: longint): HResult; stdcall;
  13732. function put_Channel(Channel: longint): HResult; stdcall;
  13733. end;
  13734. {$HPPEMIT 'typedef System::DelphiInterface<IATSCChannelTuneRequest> _di_IATSCChannelTuneRequest;'}
  13735. {$EXTERNALSYM IATSCChannelTuneRequest}
  13736. IATSCChannelTuneRequest = interface(IChannelTuneRequest)
  13737. ['{0369B4E1-45B6-11d3-B650-00C04F79498E}']
  13738. (*** IATSCChannelTuneRequest methods ***)
  13739. function get_MinorChannel(out MinorChannel: longint): HResult; stdcall;
  13740. function put_MinorChannel(MinorChannel: longint): HResult; stdcall;
  13741. end;
  13742. {$HPPEMIT 'typedef System::DelphiInterface<IDVBTuneRequest> _di_IDVBTuneRequest;'}
  13743. {$EXTERNALSYM IDVBTuneRequest}
  13744. IDVBTuneRequest = interface(ITuneRequest)
  13745. ['{0D6F567E-A636-42bb-83BA-CE4C1704AFA2}']
  13746. (*** IDVBTuneRequest methods ***)
  13747. function get_ONID(out ONID: longint): HResult; stdcall;
  13748. function put_ONID(ONID: longint): HResult; stdcall;
  13749. function get_TSID(out TSID: longint): HResult; stdcall;
  13750. function put_TSID(TSID: longint): HResult; stdcall;
  13751. function get_SID(out SID: longint): HResult; stdcall;
  13752. function put_SID(SID: longint): HResult; stdcall;
  13753. end;
  13754. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2TuneRequest> _di_IMPEG2TuneRequest;'}
  13755. {$EXTERNALSYM IMPEG2TuneRequest}
  13756. IMPEG2TuneRequest = interface(ITuneRequest)
  13757. ['{EB7D987F-8A01-42AD-B8AE-574DEEE44D1A}']
  13758. (*** IMPEG2TuneRequest methods ***)
  13759. function get_TSID: HResult; stdcall;
  13760. function put_TSID(TSID: longint): HResult; stdcall;
  13761. function get_ProgNo: HResult; stdcall;
  13762. function put_ProgNo(ProgNo: longint): HResult; stdcall;
  13763. end;
  13764. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2TuneRequestFactory> _di_IMPEG2TuneRequestFactory;'}
  13765. {$EXTERNALSYM IMPEG2TuneRequestFactory}
  13766. IMPEG2TuneRequestFactory = interface(IDispatch)
  13767. ['{14E11ABD-EE37-4893-9EA1-6964DE933E39}']
  13768. (*** IMPEG2TuneRequestFactory methods ***)
  13769. function CreateTuneRequest(TuningSpace: ITuningSpace;
  13770. out TuneRequest: IMPEG2TuneRequest): HResult; stdcall;
  13771. end;
  13772. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2TuneRequestSupport> _di_IMPEG2TuneRequestSupport;'}
  13773. {$EXTERNALSYM IMPEG2TuneRequestSupport}
  13774. IMPEG2TuneRequestSupport = interface(IUnknown)
  13775. ['{1B9D5FC3-5BBC-4b6c-BB18-B9D10E3EEEBF}']
  13776. (*** IMPEG2TuneRequestSupport methods ***)
  13777. end;
  13778. {$HPPEMIT 'typedef System::DelphiInterface<ITuner> _di_ITuner;'}
  13779. {$EXTERNALSYM ITuner}
  13780. ITuner = interface(IUnknown)
  13781. ['{28C52640-018A-11d3-9D8E-00C04F72D980}']
  13782. (*** ITuner methods ***)
  13783. function get_TuningSpace(out TuningSpace: ITuningSpace): HResult; stdcall;
  13784. function put_TuningSpace(TuningSpace: ITuningSpace): HResult; stdcall;
  13785. function EnumTuningSpaces(out ppEnum: IEnumTuningSpaces): HResult; stdcall;
  13786. function get_TuneRequest(out TuneRequest: ITuneRequest): HResult; stdcall;
  13787. function put_TuneRequest(TuneRequest: ITuneRequest): HResult; stdcall;
  13788. function Validate(TuneRequest: ITuneRequest): HResult; stdcall;
  13789. function get_PreferredComponentTypes(out ComponentTypes: IComponentTypes): HResult; stdcall;
  13790. function put_PreferredComponentTypes(ComponentTypes: IComponentTypes): HResult; stdcall;
  13791. function get_SignalStrength(out Strength: longint): HResult; stdcall;
  13792. function TriggerSignalEvents(Interval: longint): HResult; stdcall;
  13793. end;
  13794. {$HPPEMIT 'typedef System::DelphiInterface<IScanningTuner> _di_IScanningTuner;'}
  13795. {$EXTERNALSYM IScanningTuner}
  13796. IScanningTuner = interface(ITuner)
  13797. ['{1DFD0A5C-0284-11d3-9D8E-00C04F72D980}']
  13798. (*** IScanningTuner methods ***)
  13799. function SeekUp: HResult; stdcall;
  13800. function SeekDown: HResult; stdcall;
  13801. function ScanUp(MillisecondsPause: longint): HResult; stdcall;
  13802. function ScanDown(MillisecondsPause: longint): HResult; stdcall;
  13803. function AutoProgram: HResult; stdcall;
  13804. end;
  13805. {$HPPEMIT 'typedef System::DelphiInterface<IComponentType> _di_IComponentType;'}
  13806. {$EXTERNALSYM IComponentType}
  13807. IComponentType = interface(IDispatch)
  13808. ['{6A340DC0-0311-11d3-9D8E-00C04F72D980}']
  13809. (*** IComponentType methods ***)
  13810. function get_Category(out Category: ComponentCategory): HResult; stdcall;
  13811. function put_Category(Category: ComponentCategory): HResult; stdcall;
  13812. function get_MediaMajorType(out MediaMajorType: WideString): HResult; stdcall;
  13813. function put_MediaMajorType(MediaMajorType: WideString): HResult; stdcall;
  13814. function get__MediaMajorType(out MediaMajorTypeGuid: TGUID): HResult; stdcall;
  13815. function put__MediaMajorType(const MediaMajorTypeGuid: TGUID): HResult; stdcall;
  13816. function get_MediaSubType(out MediaSubType: WideString): HResult; stdcall;
  13817. function put_MediaSubType(MediaSubType: WideString): HResult; stdcall;
  13818. function get__MediaSubType(out MediaSubTypeGuid: TGUID): HResult; stdcall;
  13819. function put__MediaSubType(const MediaSubTypeGuid: TGUID): HResult; stdcall;
  13820. function get_MediaFormatType(out MediaFormatType: WideString): HResult; stdcall;
  13821. function put_MediaFormatType(MediaFormatType: WideString): HResult; stdcall;
  13822. function get__MediaFormatType(out MediaFormatTypeGuid: TGUID): HResult; stdcall;
  13823. function put__MediaFormatType(const MediaFormatTypeGuid: TGUID): HResult; stdcall;
  13824. function get_MediaType(out MediaType: TAMMediaType): HResult; stdcall;
  13825. function put_MediaType(MediaType: TAMMediaType): HResult; stdcall;
  13826. function Clone(out NewCT: IComponentType): HResult; stdcall;
  13827. end;
  13828. {$HPPEMIT 'typedef System::DelphiInterface<ILanguageComponentType> _di_ILanguageComponentType;'}
  13829. {$EXTERNALSYM ILanguageComponentType}
  13830. ILanguageComponentType = interface(IComponentType)
  13831. ['{B874C8BA-0FA2-11d3-9D8E-00C04F72D980}']
  13832. (*** ILanguageComponentType methods ***)
  13833. function get_LangID(out LangID: longint): HResult; stdcall;
  13834. function put_LangID(LangID: longint): HResult; stdcall;
  13835. end;
  13836. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2ComponentType> _di_IMPEG2ComponentType;'}
  13837. {$EXTERNALSYM IMPEG2ComponentType}
  13838. IMPEG2ComponentType = interface(ILanguageComponentType)
  13839. ['{2C073D84-B51C-48c9-AA9F-68971E1F6E38}']
  13840. (*** IMPEG2ComponentType methods ***)
  13841. function get_StreamType(out MP2StreamType: MPEG2StreamType): HResult; stdcall;
  13842. function put_StreamType(MP2StreamType: MPEG2StreamType): HResult; stdcall;
  13843. end;
  13844. {$HPPEMIT 'typedef System::DelphiInterface<IATSCComponentType> _di_IATSCComponentType;'}
  13845. {$EXTERNALSYM IATSCComponentType}
  13846. IATSCComponentType = interface(IMPEG2ComponentType)
  13847. ['{FC189E4D-7BD4-4125-B3B3-3A76A332CC96}']
  13848. (*** IATSCComponentType methods ***)
  13849. function get_Flags(out Flags: longint): HResult; stdcall;
  13850. function put_Flags(Flags: longint): HResult; stdcall;
  13851. end;
  13852. {$HPPEMIT 'typedef System::DelphiInterface<IEnumComponentTypes> _di_IEnumComponentTypes;'}
  13853. {$EXTERNALSYM IEnumComponentTypes}
  13854. IEnumComponentTypes = interface(IUnknown)
  13855. ['{8A674B4A-1F63-11d3-B64C-00C04F79498E}']
  13856. (*** IEnumComponentTypes methods ***)
  13857. function Next(celt: ULONG; out rgelt: IComponentType; out pceltFetched: ULONG): HResult; stdcall;
  13858. function Skip(celt: ULONG): HResult; stdcall;
  13859. function Reset: HResult; stdcall;
  13860. function Clone(out ppEnum: IEnumComponentTypes): HResult; stdcall;
  13861. end;
  13862. {$HPPEMIT 'typedef System::DelphiInterface<IComponentTypes> _di_IComponentTypes;'}
  13863. {$EXTERNALSYM IComponentTypes}
  13864. IComponentTypes = interface(IDispatch)
  13865. ['{0DC13D4A-0313-11d3-9D8E-00C04F72D980}']
  13866. (*** IComponentTypes methods ***)
  13867. function get_Count(out Count: longint): HResult; stdcall;
  13868. function get__NewEnum(out ppNewEnum: IEnumVARIANT): HResult; stdcall;
  13869. function EnumComponentTypes(out ppNewEnum: IEnumComponentTypes): HResult; stdcall;
  13870. function get_Item(Index: OLEVARIANT; out ComponentType: IComponentType): HResult; stdcall;
  13871. function put_Item(Index: OLEVARIANT; ComponentType: IComponentType): HResult; stdcall;
  13872. function Add(ComponentType: IComponentType; out NewIndex: OLEVARIANT): HResult; stdcall;
  13873. function Remove(Index: OLEVARIANT): HResult; stdcall;
  13874. function Clone(out NewList: IComponentTypes): HResult; stdcall;
  13875. end;
  13876. {$HPPEMIT 'typedef System::DelphiInterface<IComponent> _di_IComponent;'}
  13877. {$EXTERNALSYM IComponent}
  13878. IComponent = interface(IDispatch)
  13879. ['{1A5576FC-0E19-11d3-9D8E-00C04F72D980}']
  13880. (*** IComponent methods ***)
  13881. function get_Type(out CT: IComponentType): HResult; stdcall;
  13882. function put_Type(CT: IComponentType): HResult; stdcall;
  13883. function get_DescLangID(out LangID: longint): HResult; stdcall;
  13884. function put_DescLangID(LangID: longint): HResult; stdcall;
  13885. function get_Status(out Status: TComponentStatus): HResult; stdcall;
  13886. function put_Status(Status: TComponentStatus): HResult; stdcall;
  13887. function get_Description(out Description: WideString): HResult; stdcall;
  13888. function put_Description(Description: WideString): HResult; stdcall;
  13889. function Clone(out NewComponent: IComponent): HResult; stdcall;
  13890. end;
  13891. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2Component> _di_IMPEG2Component;'}
  13892. {$EXTERNALSYM IMPEG2Component}
  13893. IMPEG2Component = interface(IComponent)
  13894. ['{1493E353-1EB6-473c-802D-8E6B8EC9D2A9}']
  13895. (*** IMPEG2Component methods ***)
  13896. function get_PID(out PID: longint): HResult; stdcall;
  13897. function put_PID(PID: longint): HResult; stdcall;
  13898. function get_PCRPID(out PCRPID: longint): HResult; stdcall;
  13899. function put_PCRPID(PCRPID: longint): HResult; stdcall;
  13900. function get_ProgramNumber(out ProgramNumber: longint): HResult; stdcall;
  13901. function put_ProgramNumber(ProgramNumber: longint): HResult; stdcall;
  13902. end;
  13903. {$HPPEMIT 'typedef System::DelphiInterface<IEnumComponents> _di_IEnumComponents;'}
  13904. {$EXTERNALSYM IEnumComponents}
  13905. IEnumComponents = interface(IUnknown)
  13906. ['{2A6E2939-2595-11d3-B64C-00C04F79498E}']
  13907. (*** IEnumComponents methods ***)
  13908. function Next(celt: ULONG; out rgelt: IComponent; out pceltFetched: ULONG): HResult; stdcall;
  13909. function Skip(celt: ULONG): HResult; stdcall;
  13910. function Reset: HResult; stdcall;
  13911. function Clone(out ppEnum: IEnumComponents): HResult; stdcall;
  13912. end;
  13913. {$HPPEMIT 'typedef System::DelphiInterface<IComponents> _di_IComponents;'}
  13914. {$EXTERNALSYM IComponents}
  13915. IComponents = interface(IDispatch)
  13916. ['{FCD01846-0E19-11d3-9D8E-00C04F72D980}']
  13917. (*** IComponents methods ***)
  13918. function get_Count(out Count: longint): HResult; stdcall;
  13919. function get__NewEnum(out ppNewEnum: IEnumVARIANT): HResult; stdcall;
  13920. function EnumComponents(out ppNewEnum: IEnumComponents): HResult; stdcall;
  13921. function get_Item(Index: OLEVARIANT; out ppComponent: IComponent): HResult; stdcall;
  13922. function Add(Component: IComponent; out NewIndex: OLEVARIANT): HResult; stdcall;
  13923. function Remove(Index: OLEVARIANT): HResult; stdcall;
  13924. function Clone(out NewList: IComponents): HResult; stdcall;
  13925. end;
  13926. {$HPPEMIT 'typedef System::DelphiInterface<ILocator> _di_ILocator;'}
  13927. {$EXTERNALSYM ILocator}
  13928. ILocator = interface(IDispatch)
  13929. ['{286D7F89-760C-4F89-80C4-66841D2507AA}']
  13930. (*** ILocator methods ***)
  13931. function get_CarrierFrequency(out Frequency: longint): HResult; stdcall;
  13932. function put_CarrierFrequency(Frequency: longint): HResult; stdcall;
  13933. function get_InnerFEC(out FEC: FECMethod): HResult; stdcall;
  13934. function put_InnerFEC(FEC: FECMethod): HResult; stdcall;
  13935. function get_InnerFECRate(out FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  13936. function put_InnerFECRate(FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  13937. function get_OuterFEC(out FEC: FECMethod): HResult; stdcall;
  13938. function put_OuterFEC(FEC: FECMethod): HResult; stdcall;
  13939. function get_OuterFECRate(out FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  13940. function put_OuterFECRate(FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  13941. function get_Modulation(out Modulation: ModulationType): HResult; stdcall;
  13942. function put_Modulation(Modulation: ModulationType): HResult; stdcall;
  13943. function get_SymbolRate(out Rate: longint): HResult; stdcall;
  13944. function put_SymbolRate(Rate: longint): HResult; stdcall;
  13945. function Clone(out NewLocator: ILocator): HResult; stdcall;
  13946. end;
  13947. {$HPPEMIT 'typedef System::DelphiInterface<IATSCLocator> _di_IATSCLocator;'}
  13948. {$EXTERNALSYM IATSCLocator}
  13949. IATSCLocator = interface(ILocator)
  13950. ['{BF8D986F-8C2B-4131-94D7-4D3D9FCC21EF}']
  13951. (*** IATSCLocator methods ***)
  13952. function get_PhysicalChannel(out PhysicalChannel: longint): HResult; stdcall;
  13953. function put_PhysicalChannel(PhysicalChannel: longint): HResult; stdcall;
  13954. function get_TSID(out TSID: longint): HResult; stdcall;
  13955. function put_TSID(TSID: longint): HResult; stdcall;
  13956. end;
  13957. {$HPPEMIT 'typedef System::DelphiInterface<IDVBTLocator> _di_IDVBTLocator;'}
  13958. {$EXTERNALSYM IDVBTLocator}
  13959. IDVBTLocator = interface(ILocator)
  13960. ['{8664DA16-DDA2-42ac-926A-C18F9127C302}']
  13961. (*** IDVBTLocator methods ***)
  13962. function get_Bandwidth(out BandWidthVal: longint): HResult; stdcall;
  13963. function put_Bandwidth(BandwidthVal: longint): HResult; stdcall;
  13964. function get_LPInnerFEC(out FEC: FECMethod): HResult; stdcall;
  13965. function put_LPInnerFEC(FEC: FECMethod): HResult; stdcall;
  13966. function get_LPInnerFECRate(out FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  13967. function put_LPInnerFECRate(FEC: BinaryConvolutionCodeRate): HResult; stdcall;
  13968. function get_HAlpha(out Alpha: HierarchyAlpha): HResult; stdcall;
  13969. function put_HAlpha(Alpha: HierarchyAlpha): HResult; stdcall;
  13970. function get_Guard(out GI: GuardInterval): HResult; stdcall;
  13971. function put_Guard(GI: GuardInterval): HResult; stdcall;
  13972. function get_Mode(out mode: TransmissionMode): HResult; stdcall;
  13973. function put_Mode(mode: TransmissionMode): HResult; stdcall;
  13974. function get_OtherFrequencyInUse(out OtherFrequencyInUseVal: WordBool): HResult; stdcall;
  13975. function put_OtherFrequencyInUse(OtherFrequencyInUseVal: WordBool): HResult; stdcall;
  13976. end;
  13977. {$HPPEMIT 'typedef System::DelphiInterface<IDVBSLocator> _di_IDVBSLocator;'}
  13978. {$EXTERNALSYM IDVBSLocator}
  13979. IDVBSLocator = interface(ILocator)
  13980. ['{3D7C353C-0D04-45f1-A742-F97CC1188DC8}']
  13981. (*** IDVBSLocator methods ***)
  13982. function get_SignalPolarisation(out PolarisationVal: Polarisation): HResult; stdcall;
  13983. function put_SignalPolarisation(PolarisationVal: Polarisation): HResult; stdcall;
  13984. function get_WestPosition(out WestLongitude: WordBool): HResult; stdcall;
  13985. function put_WestPosition(WestLongitude: WordBool): HResult; stdcall;
  13986. function get_OrbitalPosition(out longitude: longint): HResult; stdcall;
  13987. function put_OrbitalPosition(longitude: longint): HResult; stdcall;
  13988. function get_Azimuth(out Azimuth: longint): HResult; stdcall;
  13989. function put_Azimuth(Azimuth: longint): HResult; stdcall;
  13990. function get_Elevation(out Elevation: longint): HResult; stdcall;
  13991. function put_Elevation(Elevation: longint): HResult; stdcall;
  13992. end;
  13993. {$HPPEMIT 'typedef System::DelphiInterface<IDVBCLocator> _di_IDVBCLocator;'}
  13994. {$EXTERNALSYM IDVBCLocator}
  13995. IDVBCLocator = interface(ILocator)
  13996. ['{6E42F36E-1DD2-43c4-9F78-69D25AE39034}']
  13997. (*** IDVBCLocator methods ***)
  13998. end;
  13999. {$HPPEMIT 'typedef System::DelphiInterface<IBroadcastEvent> _di_IBroadcastEvent;'}
  14000. {$EXTERNALSYM IBroadcastEvent}
  14001. IBroadcastEvent = interface(IUnknown)
  14002. ['{3B21263F-26E8-489d-AAC4-924F7EFD9511}']
  14003. (*** IBroadcastEvent methods ***)
  14004. function Fire(EventID: TGUID): HResult; stdcall;
  14005. end;
  14006. //------------------------------------------------------------------------------
  14007. // File: DXTrans.h
  14008. // Desc: DirectX Transform library
  14009. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  14010. //------------------------------------------------------------------------------
  14011. const
  14012. LIBID_DXTRANSLib : TGUID = '{54314D1D-35FE-11D1-81A1-0000F87557DB}';
  14013. {$EXTERNALSYM LIBID_DXTRANSLib}
  14014. IID_IDXBaseObject : TGUID = '{17B59B2B-9CC8-11D1-9053-00C04FD9189D}';
  14015. {$EXTERNALSYM IID_IDXBaseObject}
  14016. IID_IDXTransformFactory : TGUID = '{6A950B2B-A971-11D1-81C8-0000F87557DB}';
  14017. {$EXTERNALSYM IID_IDXTransformFactory}
  14018. IID_IDXTransform : TGUID = '{30A5FB78-E11F-11D1-9064-00C04FD9189D}';
  14019. {$EXTERNALSYM IID_IDXTransform}
  14020. IID_IDXSurfacePick : TGUID = '{30A5FB79-E11F-11d1-9064-00C04FD9189D}';
  14021. {$EXTERNALSYM IID_IDXSurfacePick}
  14022. IID_IDXTBindHost : TGUID = '{D26BCE55-E9DC-11d1-9066-00C04FD9189D}';
  14023. {$EXTERNALSYM IID_IDXTBindHost}
  14024. IID_IDXTaskManager : TGUID = '{254DBBC1-F922-11D0-883A-3C8B00C10000}';
  14025. {$EXTERNALSYM IID_IDXTaskManager}
  14026. IID_IDXSurfaceFactory : TGUID = '{144946F5-C4D4-11D1-81D1-0000F87557DB}';
  14027. {$EXTERNALSYM IID_IDXSurfaceFactory}
  14028. IID_IDXSurfaceModifier : TGUID = '{9EA3B637-C37D-11D1-905E-00C04FD9189D}';
  14029. {$EXTERNALSYM IID_IDXSurfaceModifier}
  14030. IID_IDXSurface : TGUID = '{B39FD73F-E139-11D1-9065-00C04FD9189D}';
  14031. {$EXTERNALSYM IID_IDXSurface}
  14032. IID_IDXSurfaceInit : TGUID = '{9EA3B639-C37D-11d1-905E-00C04FD9189D}';
  14033. {$EXTERNALSYM IID_IDXSurfaceInit}
  14034. IID_IDXARGBSurfaceInit : TGUID = '{9EA3B63A-C37D-11d1-905E-00C04FD9189D}';
  14035. {$EXTERNALSYM IID_IDXARGBSurfaceInit}
  14036. IID_IDXARGBReadPtr : TGUID = '{EAAAC2D6-C290-11d1-905D-00C04FD9189D}';
  14037. {$EXTERNALSYM IID_IDXARGBReadPtr}
  14038. IID_IDXARGBReadWritePtr : TGUID = '{EAAAC2D7-C290-11d1-905D-00C04FD9189D}';
  14039. {$EXTERNALSYM IID_IDXARGBReadWritePtr}
  14040. IID_IDXDCLock : TGUID = '{0F619456-CF39-11D1-905E-00C04FD9189D}';
  14041. {$EXTERNALSYM IID_IDXDCLock}
  14042. IID_IDXTScaleOutput : TGUID = '{B2024B50-EE77-11D1-9066-00C04FD9189D}';
  14043. {$EXTERNALSYM IID_IDXTScaleOutput}
  14044. IID_IDXGradient : TGUID = '{B2024B51-EE77-11D1-9066-00C04FD9189D}';
  14045. {$EXTERNALSYM IID_IDXGradient}
  14046. IID_IDXTScale : TGUID = '{B39FD742-E139-11D1-9065-00C04FD9189D}';
  14047. {$EXTERNALSYM IID_IDXTScale}
  14048. IID_IDXEffect : TGUID = '{E31FB81B-1335-11d1-8189-0000F87557DB}';
  14049. {$EXTERNALSYM IID_IDXEffect}
  14050. IID_IDXLookupTable : TGUID = '{01BAFC7F-9E63-11D1-9053-00C04FD9189D}';
  14051. {$EXTERNALSYM IID_IDXLookupTable}
  14052. IID_IDXRawSurface : TGUID = '{09756C8A-D96A-11d1-9062-00C04FD9189D}';
  14053. {$EXTERNALSYM IID_IDXRawSurface}
  14054. IID_IHTMLDXTransform : TGUID = '{30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5}';
  14055. {$EXTERNALSYM IID_IHTMLDXTransform}
  14056. CLSID_DXTransformFactory : TGUID = '{D1FE6762-FC48-11D0-883A-3C8B00C10000}';
  14057. {$EXTERNALSYM CLSID_DXTransformFactory}
  14058. CLSID_DXTaskManager : TGUID = '{4CB26C03-FF93-11D0-817E-0000F87557DB}';
  14059. {$EXTERNALSYM CLSID_DXTaskManager}
  14060. CLSID_DXTScale : TGUID = '{555278E2-05DB-11D1-883A-3C8B00C10000}';
  14061. {$EXTERNALSYM CLSID_DXTScale}
  14062. CLSID_DXSurface : TGUID = '{0E890F83-5F79-11D1-9043-00C04FD9189D}';
  14063. {$EXTERNALSYM CLSID_DXSurface}
  14064. CLSID_DXSurfaceModifier : TGUID = '{3E669F1D-9C23-11D1-9053-00C04FD9189D}';
  14065. {$EXTERNALSYM CLSID_DXSurfaceModifier}
  14066. CLSID_DXGradient : TGUID = '{C6365470-F667-11D1-9067-00C04FD9189D}';
  14067. {$EXTERNALSYM CLSID_DXGradient}
  14068. //
  14069. // Pixel format definitions
  14070. //
  14071. DDPF_RGB1 : TGUID = '{e436eb78-524f-11ce-9f53-0020af0ba770}';
  14072. {$EXTERNALSYM DDPF_RGB1}
  14073. DDPF_RGB2 : TGUID = '{BBF7D3F3-143F-11d1-B50A-0000F8756A10}';
  14074. {$EXTERNALSYM DDPF_RGB2}
  14075. DDPF_RGB4 : TGUID = '{e436eb79-524f-11ce-9f53-0020af0ba770}';
  14076. {$EXTERNALSYM DDPF_RGB4}
  14077. DDPF_RGB8 : TGUID = '{e436eb7a-524f-11ce-9f53-0020af0ba770}';
  14078. {$EXTERNALSYM DDPF_RGB8}
  14079. DDPF_RGB332 : TGUID = '{BBF7D3F6-143F-11d1-B50A-0000F8756A10}';
  14080. {$EXTERNALSYM DDPF_RGB332}
  14081. DDPF_ARGB4444 : TGUID = '{BBF7D3F7-143F-11d1-B50A-0000F8756A10}';
  14082. {$EXTERNALSYM DDPF_ARGB4444}
  14083. DDPF_RGB565 : TGUID = '{e436eb7b-524f-11ce-9f53-0020af0ba770}';
  14084. {$EXTERNALSYM DDPF_RGB565}
  14085. DDPF_BGR565 : TGUID = '{BBF7D3F9-143F-11d1-B50A-0000F8756A10}';
  14086. {$EXTERNALSYM DDPF_BGR565}
  14087. DDPF_RGB555 : TGUID = '{e436eb7c-524f-11ce-9f53-0020af0ba770}';
  14088. {$EXTERNALSYM DDPF_RGB555}
  14089. DDPF_ARGB1555 : TGUID = '{BBF7D3FB-143F-11d1-B50A-0000F8756A10}';
  14090. {$EXTERNALSYM DDPF_ARGB1555}
  14091. DDPF_RGB24 : TGUID = '{e436eb7d-524f-11ce-9f53-0020af0ba770}';
  14092. {$EXTERNALSYM DDPF_RGB24}
  14093. DDPF_BGR24 : TGUID = '{BBF7D3FD-143F-11d1-B50A-0000F8756A10}';
  14094. {$EXTERNALSYM DDPF_BGR24}
  14095. DDPF_RGB32 : TGUID = '{e436eb7e-524f-11ce-9f53-0020af0ba770}';
  14096. {$EXTERNALSYM DDPF_RGB32}
  14097. DDPF_BGR32 : TGUID = '{BBF7D3FF-143F-11d1-B50A-0000F8756A10}';
  14098. {$EXTERNALSYM DDPF_BGR32}
  14099. DDPF_ABGR32 : TGUID = '{BBF7D401-143F-11d1-B50A-0000F8756A10}';
  14100. {$EXTERNALSYM DDPF_ABGR32}
  14101. DDPF_ARGB32 : TGUID = '{773c9ac0-3274-11d0-B724-00aa006c1A01}';
  14102. {$EXTERNALSYM DDPF_ARGB32}
  14103. DDPF_PMARGB32 : TGUID = '{BBF7D403-143F-11d1-B50A-0000F8756A10}';
  14104. {$EXTERNALSYM DDPF_PMARGB32}
  14105. DDPF_A1 : TGUID = '{7846F94E-3915-11d1-99AA-0000F8756A10}';
  14106. {$EXTERNALSYM DDPF_A1}
  14107. DDPF_A2 : TGUID = '{7846F94F-3915-11d1-99AA-0000F8756A10}';
  14108. {$EXTERNALSYM DDPF_A2}
  14109. DDPF_A4 : TGUID = '{7846F950-3915-11d1-99AA-0000F8756A10}';
  14110. {$EXTERNALSYM DDPF_A4}
  14111. DDPF_A8 : TGUID = '{7846F951-3915-11d1-99AA-0000F8756A10}';
  14112. {$EXTERNALSYM DDPF_A8}
  14113. DDPF_Z8 : TGUID = '{7846F952-3915-11d1-99AA-0000F8756A10}';
  14114. {$EXTERNALSYM DDPF_Z8}
  14115. DDPF_Z16 : TGUID = '{7846F953-3915-11d1-99AA-0000F8756A10}';
  14116. {$EXTERNALSYM DDPF_Z16}
  14117. DDPF_Z24 : TGUID = '{7846F954-3915-11d1-99AA-0000F8756A10}';
  14118. {$EXTERNALSYM DDPF_Z24}
  14119. DDPF_Z32 : TGUID = '{7846F955-3915-11d1-99AA-0000F8756A10}';
  14120. {$EXTERNALSYM DDPF_Z32}
  14121. //
  14122. // Component categories
  14123. //
  14124. CATID_DXImageTransform : TGUID = '{C501EDBE-9E70-11d1-9053-00C04FD9189D}';
  14125. {$EXTERNALSYM CATID_DXImageTransform}
  14126. CATID_DX3DTransform : TGUID = '{C501EDBF-9E70-11d1-9053-00C04FD9189D}';
  14127. {$EXTERNALSYM CATID_DX3DTransform}
  14128. CATID_DXAuthoringTransform : TGUID = '{ACAC94FC-E5CF-11d1-9066-00C04FD9189D}';
  14129. {$EXTERNALSYM CATID_DXAuthoringTransform}
  14130. CATID_DXSurface : TGUID = '{52BA7097-B52C-11d1-81CB-0000F87557DB}';
  14131. {$EXTERNALSYM CATID_DXSurface}
  14132. //
  14133. // Service IDs.
  14134. //
  14135. SID_SDirectDraw : TGUID = (D1:$618f8ad4;D2:$8b7a;D3:$11d0;D4:($8f,$cc,$0,$c0,$4f,$d9,$18,$9d));
  14136. {$EXTERNALSYM SID_SDirectDraw}
  14137. SID_SDirect3DRM : TGUID = (D1:$2bc49361;D2:$8327;D3:$11cf;D4:($ac,$4a,$0,$0,$c0,$38,$25,$a1));
  14138. {$EXTERNALSYM SID_SDirect3DRM}
  14139. SID_SDXTaskManager : TGUID = '{4CB26C03-FF93-11D0-817E-0000F87557DB}';
  14140. {$EXTERNALSYM SID_SDXTaskManager}
  14141. SID_SDXSurfaceFactory : TGUID = '{144946F5-C4D4-11D1-81D1-0000F87557DB}';
  14142. {$EXTERNALSYM SID_SDXSurfaceFactory}
  14143. SID_SDXTransformFactory : TGUID = '{6A950B2B-A971-11D1-81C8-0000F87557DB}';
  14144. {$EXTERNALSYM SID_SDXTransformFactory}
  14145. type
  14146. {$HPPEMIT 'typedef System::DelphiInterface<IDXBaseObject> _di_IDXBaseObject;'}
  14147. {$EXTERNALSYM IDXBaseObject}
  14148. IDXBaseObject = interface(IUnknown)
  14149. ['{17B59B2B-9CC8-11D1-9053-00C04FD9189D}']
  14150. (*** IDXBaseObject methods ***)
  14151. function GetGenerationId(out pID: ULONG): HResult; stdcall;
  14152. function IncrementGenerationId(bRefresh: BOOL): HResult; stdcall;
  14153. function GetObjectSize(out pcbSize: ULONG): HResult; stdcall;
  14154. end;
  14155. DXBNDID = (
  14156. DXB_X,
  14157. DXB_Y,
  14158. DXB_Z,
  14159. DXB_T
  14160. );
  14161. {$EXTERNALSYM DXBNDID}
  14162. TDXBNDID = DXBNDID;
  14163. DXBNDTYPE = (
  14164. DXBT_DISCRETE,
  14165. DXBT_DISCRETE64,
  14166. DXBT_CONTINUOUS,
  14167. DXBT_CONTINUOUS64
  14168. );
  14169. {$EXTERNALSYM DXBNDTYPE}
  14170. TDXBNDType = DXBNDTYPE;
  14171. DXDBND = record
  14172. Min: longint;
  14173. Max: longint;
  14174. end;
  14175. {$EXTERNALSYM DXDBND}
  14176. TDXDBND = DXDBND;
  14177. DXDBNDS = array[0..3] of TDXDBND;
  14178. {$EXTERNALSYM DXDBNDS}
  14179. DXDBND64 = record
  14180. Min: int64;
  14181. Max: int64;
  14182. end;
  14183. {$EXTERNALSYM DXDBND64}
  14184. TDXDBND64 = DXDBND64;
  14185. DXDBNDS64 = array [0..3] of TDXDBND64;
  14186. {$EXTERNALSYM DXDBNDS64}
  14187. DXCBND = record
  14188. {$EXTERNALSYM DXCBND}
  14189. Min: single;
  14190. Max: single;
  14191. end;
  14192. TDXCBND = DXCBND;
  14193. DXCBNDS = array[0..3] of TDXCBND;
  14194. {$EXTERNALSYM DXCBNDS}
  14195. DXCBND64 = record
  14196. Min: double;
  14197. Max: double;
  14198. end;
  14199. {$EXTERNALSYM DXCBND64}
  14200. TDXCBND64 = DXCBND64;
  14201. DXCBNDS64 = array[0..3] of TDXCBND64;
  14202. {$EXTERNALSYM DXCBNDS64}
  14203. DXBNDS = record
  14204. {$EXTERNALSYM DXBNDS}
  14205. eType: TDXBNDTYPE;
  14206. case Integer of
  14207. 0: (D: array[0..3] of TDXDBND);
  14208. 1: (LD: array[0..3] of TDXDBND64);
  14209. 2: (C: array[0..3] of TDXCBND);
  14210. 3: (LC: array[0..3] of TDXCBND64);
  14211. end;
  14212. TDXBNDS = DXBNDS;
  14213. DXDVEC = array[0..3] of longint;
  14214. {$EXTERNALSYM DXDVEC}
  14215. DXDVEC64 = array[0..3] of int64;
  14216. {$EXTERNALSYM DXDVEC64}
  14217. DXCVEC = array[0..3] of single;
  14218. {$EXTERNALSYM DXCVEC}
  14219. DXCVEC64 = array[0..3] of double;
  14220. {$EXTERNALSYM DXCVEC64}
  14221. DXVEC = record
  14222. eType: TDXBNDTYPE;
  14223. case Integer of
  14224. 0: (D: array[0..3] of Longint);
  14225. 1: (LD: array[0..3] of Int64);
  14226. 2: (C: array[0..3] of Single);
  14227. 3: (LC: array[0..3] of Double);
  14228. end;
  14229. {$EXTERNALSYM DXVEC}
  14230. TDXVEC = DXVEC;
  14231. {$HPPEMIT 'typedef System::DelphiInterface<IDXTransform> _di_IDXTransform;'}
  14232. {$EXTERNALSYM IDXTransform}
  14233. IDXTransform = interface(IDXBaseObject)
  14234. ['{30A5FB78-E11F-11D1-9064-00C04FD9189D}']
  14235. (*** IDXTransform methods ***)
  14236. function Setup(punkInputs: IUnknown; ulNumInputs: ULONG; punkOutputs: IUnknown;
  14237. ulNumOutputs: ULONG; dwFlags: DWORD): HResult; stdcall;
  14238. function Execute(const pRequestID: TGUID; var pClipBnds: TDXBNDS; var pPlacement: TDXVEC): HResult; stdcall;
  14239. function MapBoundsIn2Out(var pInBounds: TDXBNDS; ulNumInBnds: ULONG; ulOutIndex: ULONG;
  14240. out pOutBounds: TDXBNDS): HResult; stdcall;
  14241. function MapBoundsOut2In(ulOutIndex: ULONG; var pOutBounds: TDXBNDS; ulInIndex: ULONG;
  14242. out pInBounds: TDXBNDS): HResult; stdcall;
  14243. function SetMiscFlags(dwMiscFlags: DWORD): HResult; stdcall;
  14244. function GetMiscFlags(out pdwMiscFlags: DWORD): HResult; stdcall;
  14245. function GetInOutInfo(bIsOutput: BOOL; ulIndex: ULONG; out pdwFlags: DWORD;
  14246. out pIDs: TGUID; var pcIDs: ULONG; out ppUnkCurrentObject: IUnknown): HResult; stdcall;
  14247. function SetQuality(fQuality: Single): HResult; stdcall;
  14248. function GetQuality(out fQuality: Single): HResult; stdcall;
  14249. end;
  14250. {$HPPEMIT 'typedef System::DelphiInterface<IDXTransformFactory> _di_IDXTransformFactory;'}
  14251. {$EXTERNALSYM IDXTransformFactory}
  14252. IDXTransformFactory = interface(IServiceProvider)
  14253. ['{6A950B2B-A971-11D1-81C8-0000F87557DB}']
  14254. (*** IDXTransformFactory methods ***)
  14255. function SetService(const guidService: TGUID; pUnkService: IUnknown;
  14256. bWeakReference: BOOL): HResult; stdcall;
  14257. function CreateTransform(punkInputs: IUnknown; ulNumInputs: ULONG;
  14258. punkOutputs: IUnknown; ulNumOutputs: ULONG;
  14259. pInitProps: IPropertyBag; pErrLog: IErrorLog;
  14260. const TransCLSID: TGUID; const TransIID: TGUID; out ppTransform: Pointer): HResult; stdcall;
  14261. function InitializeTransform(pTransform: IDXTransform; punkInputs: IUnknown;
  14262. ulNumInputs: ULONG; punkOutputs: IUnknown;
  14263. ulNumOutputs: ULONG; pInitProps: IPropertyBag;
  14264. pErrLog: IErrorLog): HResult; stdcall;
  14265. end;
  14266. DXTMISCFLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14267. {$EXTERNALSYM DXTMISCFLAGS}
  14268. const
  14269. DXTMF_BLEND_WITH_OUTPUT = 1 shl 0;
  14270. {$EXTERNALSYM DXTMF_BLEND_WITH_OUTPUT}
  14271. DXTMF_DITHER_OUTPUT = 1 shl 1;
  14272. {$EXTERNALSYM DXTMF_DITHER_OUTPUT}
  14273. DXTMF_OPTION_MASK = $ffff;
  14274. {$EXTERNALSYM DXTMF_OPTION_MASK}
  14275. DXTMF_VALID_OPTIONS = DXTMF_BLEND_WITH_OUTPUT or DXTMF_DITHER_OUTPUT;
  14276. {$EXTERNALSYM DXTMF_VALID_OPTIONS}
  14277. DXTMF_BLEND_SUPPORTED = 1 shl 16;
  14278. {$EXTERNALSYM DXTMF_BLEND_SUPPORTED}
  14279. DXTMF_DITHER_SUPPORTED = 1 shl 17;
  14280. {$EXTERNALSYM DXTMF_DITHER_SUPPORTED}
  14281. DXTMF_INPLACE_OPERATION = 1 shl 24;
  14282. {$EXTERNALSYM DXTMF_INPLACE_OPERATION}
  14283. DXTMF_BOUNDS_SUPPORTED = 1 shl 25;
  14284. {$EXTERNALSYM DXTMF_BOUNDS_SUPPORTED}
  14285. DXTMF_PLACEMENT_SUPPORTED= 1 shl 26;
  14286. {$EXTERNALSYM DXTMF_PLACEMENT_SUPPORTED}
  14287. DXTMF_QUALITY_SUPPORTED = 1 shl 27;
  14288. {$EXTERNALSYM DXTMF_QUALITY_SUPPORTED}
  14289. DXTMF_OPAQUE_RESULT = 1 shl 28;
  14290. {$EXTERNALSYM DXTMF_OPAQUE_RESULT}
  14291. type
  14292. DXINOUTINFOFLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14293. {$EXTERNALSYM DXINOUTINFOFLAGS}
  14294. const
  14295. DXINOUTF_OPTIONAL = 1 shl 0;
  14296. {$EXTERNALSYM DXINOUTF_OPTIONAL}
  14297. type
  14298. {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfacePick> _di_IDXSurfacePick;'}
  14299. {$EXTERNALSYM IDXSurfacePick}
  14300. IDXSurfacePick = interface(IUnknown)
  14301. ['{30A5FB79-E11F-11d1-9064-00C04FD9189D}']
  14302. (*** IDXSurfacePick methods ***)
  14303. function PointPick(var pPoint: TDXVEC; out pulInputSurfaceIndex: ULONG;
  14304. out pInputPoint: TDXVEC): HResult; stdcall;
  14305. end;
  14306. {$HPPEMIT 'typedef System::DelphiInterface<IDXTBindHost> _di_IDXTBindHost;'}
  14307. {$EXTERNALSYM IDXTBindHost}
  14308. IDXTBindHost = interface(IUnknown)
  14309. ['{D26BCE55-E9DC-11d1-9066-00C04FD9189D}']
  14310. (*** IDXTBindHost methods ***)
  14311. function SetBindHost(pBindHost: IBindHost): HResult; stdcall;
  14312. end;
  14313. DXTASKPROC = procedure(var pTaskData: pointer; var pbContinueProcessing: BOOL); stdcall;
  14314. {$EXTERNALSYM DXTASKPROC}
  14315. PFNDXTASKPROC = ^DXTASKPROC;
  14316. {$EXTERNALSYM PFNDXTASKPROC}
  14317. DXAPCPROC = procedure(dwData: DWORD);stdcall;
  14318. {$EXTERNALSYM DXAPCPROC}
  14319. PFNDXAPCPROC = ^DXAPCPROC;
  14320. {$EXTERNALSYM PFNDXAPCPROC}
  14321. DXTMTASKINFO = record
  14322. pfnTaskProc: PFNDXTASKPROC;
  14323. pTaskData: Pointer;
  14324. pfnCompletionAPC: PFNDXAPCPROC;
  14325. dwCompletionData: DWORD;
  14326. pRequestID: PGUID;
  14327. end;
  14328. {$EXTERNALSYM DXTMTASKINFO}
  14329. TDXTMTaskInfo = DXTMTASKINFO;
  14330. {$HPPEMIT 'typedef System::DelphiInterface<IDXTaskManager> _di_IDXTaskManager;'}
  14331. {$EXTERNALSYM IDXTaskManager}
  14332. IDXTaskManager = interface(IUnknown)
  14333. ['{254DBBC1-F922-11D0-883A-3C8B00C10000}']
  14334. (*** IDXTaskManager methods ***)
  14335. function QueryNumProcessors(out pulNumProc: ULONG): HResult; stdcall;
  14336. function SetThreadPoolSize(ulNumThreads: ULONG): HResult; stdcall;
  14337. function GetThreadPoolSize(out pulNumThreads: ULONG): HResult; stdcall;
  14338. function SetConcurrencyLimit(ulNumThreads: ULONG): HResult; stdcall;
  14339. function GetConcurrencyLimit(out pulNumThreads: ULONG): HResult; stdcall;
  14340. function ScheduleTasks(var TaskInfo: TDXTMTASKINFO; Events: PHANDLE;
  14341. out TaskIDs: DWORD; ulNumTasks: ULONG; ulWaitPeriod: ULONG): HResult; stdcall;
  14342. function TerminateTasks(var TaskIDs: DWORD; ulCount: ULONG; ulTimeOut: ULONG): HResult; stdcall;
  14343. function TerminateRequest(const RequestID: TGUID; ulTimeOut: ULONG): HResult; stdcall;
  14344. end;
  14345. DXBASESAMPLE = record
  14346. Blue : Byte;
  14347. Green : Byte;
  14348. Red : Byte;
  14349. Alpha : Byte;
  14350. end;
  14351. {$EXTERNALSYM DXBASESAMPLE}
  14352. TDXBaseSample = DXBASESAMPLE;
  14353. DXSAMPLE = record
  14354. Blue : Byte;
  14355. Green : Byte;
  14356. Red : Byte;
  14357. Alpha : Byte;
  14358. end;
  14359. {$EXTERNALSYM DXSAMPLE}
  14360. TDXSample = DXSAMPLE;
  14361. DXPMSAMPLE = record
  14362. Blue : Byte;
  14363. Green : Byte;
  14364. Red : Byte;
  14365. Alpha : Byte;
  14366. end;
  14367. {$EXTERNALSYM DXPMSAMPLE}
  14368. TDXPMSample = DXPMSAMPLE;
  14369. DXRUNTYPE = (
  14370. DXRUNTYPE_CLEAR,
  14371. DXRUNTYPE_OPAQUE,
  14372. DXRUNTYPE_TRANS,
  14373. DXRUNTYPE_UNKNOWN
  14374. );
  14375. {$EXTERNALSYM DXRUNTYPE}
  14376. TDXRunType = DXRUNTYPE;
  14377. const
  14378. DX_MAX_RUN_INFO_COUNT = 128;
  14379. {$EXTERNALSYM DX_MAX_RUN_INFO_COUNT}
  14380. type
  14381. // 2 : Type ; // Type
  14382. // 30 : Count ; // Number of samples in run
  14383. PDXRunInfo = ^TDXRunInfo;
  14384. DXRUNINFO = record
  14385. Bitfields : ULONG;
  14386. end;
  14387. {$EXTERNALSYM DXRUNINFO}
  14388. TDXRunInfo = DXRUNINFO;
  14389. DXSFCREATE = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14390. {$EXTERNALSYM DXSFCREATE}
  14391. const
  14392. DXSF_FORMAT_IS_CLSID = 1 shl 0;
  14393. {$EXTERNALSYM DXSF_FORMAT_IS_CLSID}
  14394. DXSF_NO_LAZY_DDRAW_LOCK = 1 shl 1;
  14395. {$EXTERNALSYM DXSF_NO_LAZY_DDRAW_LOCK}
  14396. type
  14397. DXBLTOPTIONS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14398. {$EXTERNALSYM DXBLTOPTIONS}
  14399. const
  14400. DXBOF_DO_OVER = 1 shl 0;
  14401. {$EXTERNALSYM DXBOF_DO_OVER}
  14402. DXBOF_DITHER = 1 shl 1;
  14403. {$EXTERNALSYM DXBOF_DITHER}
  14404. type
  14405. DXSAMPLEFORMATENUM = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14406. {$EXTERNALSYM DXSAMPLEFORMATENUM}
  14407. const
  14408. DXPF_FLAGSMASK = $FFFF0000;
  14409. {$EXTERNALSYM DXPF_FLAGSMASK}
  14410. DXPF_NONPREMULT = $00010000;
  14411. {$EXTERNALSYM DXPF_NONPREMULT}
  14412. DXPF_TRANSPARENCY = $00020000;
  14413. {$EXTERNALSYM DXPF_TRANSPARENCY}
  14414. DXPF_TRANSLUCENCY = $00040000;
  14415. {$EXTERNALSYM DXPF_TRANSLUCENCY}
  14416. DXPF_2BITERROR = $00200000;
  14417. {$EXTERNALSYM DXPF_2BITERROR}
  14418. DXPF_3BITERROR = $00300000;
  14419. {$EXTERNALSYM DXPF_3BITERROR}
  14420. DXPF_4BITERROR = $00400000;
  14421. {$EXTERNALSYM DXPF_4BITERROR}
  14422. DXPF_5BITERROR = $00500000;
  14423. {$EXTERNALSYM DXPF_5BITERROR}
  14424. DXPF_ERRORMASK = $00700000;
  14425. {$EXTERNALSYM DXPF_ERRORMASK}
  14426. DXPF_NONSTANDARD = $00000000;
  14427. {$EXTERNALSYM DXPF_NONSTANDARD}
  14428. DXPF_PMARGB32 = $00060001;
  14429. {$EXTERNALSYM DXPF_PMARGB32}
  14430. DXPF_ARGB32 = $00070002;
  14431. {$EXTERNALSYM DXPF_ARGB32}
  14432. DXPF_ARGB4444 = $00470003;
  14433. {$EXTERNALSYM DXPF_ARGB4444}
  14434. DXPF_A8 = $00060004;
  14435. {$EXTERNALSYM DXPF_A8}
  14436. DXPF_RGB32 = $00000005;
  14437. {$EXTERNALSYM DXPF_RGB32}
  14438. DXPF_RGB24 = $00000006;
  14439. {$EXTERNALSYM DXPF_RGB24}
  14440. DXPF_RGB565 = $00300007;
  14441. {$EXTERNALSYM DXPF_RGB565}
  14442. DXPF_RGB555 = $00300008;
  14443. {$EXTERNALSYM DXPF_RGB555}
  14444. DXPF_RGB8 = $00500009;
  14445. {$EXTERNALSYM DXPF_RGB8}
  14446. DXPF_ARGB1555 = $0032000A;
  14447. {$EXTERNALSYM DXPF_ARGB1555}
  14448. DXPF_RGB32_CK = $00020005;
  14449. {$EXTERNALSYM DXPF_RGB32_CK}
  14450. DXPF_RGB24_CK = $00020006;
  14451. {$EXTERNALSYM DXPF_RGB24_CK}
  14452. DXPF_RGB555_CK = $00320008;
  14453. {$EXTERNALSYM DXPF_RGB555_CK}
  14454. DXPF_RGB565_CK = $00320007;
  14455. {$EXTERNALSYM DXPF_RGB565_CK}
  14456. DXPF_RGB8_CK = $00520009;
  14457. {$EXTERNALSYM DXPF_RGB8_CK}
  14458. type
  14459. DXLOCKSURF = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14460. {$EXTERNALSYM DXLOCKSURF}
  14461. const
  14462. DXLOCKF_READ = 0;
  14463. {$EXTERNALSYM DXLOCKF_READ}
  14464. DXLOCKF_READWRITE = 1 shl 0;
  14465. {$EXTERNALSYM DXLOCKF_READWRITE}
  14466. DXLOCKF_EXISTINGINFOONLY = 1 shl 1;
  14467. {$EXTERNALSYM DXLOCKF_EXISTINGINFOONLY}
  14468. DXLOCKF_WANTRUNINFO = 1 shl 2;
  14469. {$EXTERNALSYM DXLOCKF_WANTRUNINFO}
  14470. DXLOCKF_NONPREMULT = 1 shl 16;
  14471. {$EXTERNALSYM DXLOCKF_NONPREMULT}
  14472. DXLOCKF_VALIDFLAGS = (DXLOCKF_READWRITE or DXLOCKF_EXISTINGINFOONLY or DXLOCKF_WANTRUNINFO or DXLOCKF_NONPREMULT);
  14473. {$EXTERNALSYM DXLOCKF_VALIDFLAGS}
  14474. Type
  14475. DXSURFSTATUS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14476. {$EXTERNALSYM DXSURFSTATUS}
  14477. const
  14478. DXSURF_TRANSIENT = 1 shl 0;
  14479. {$EXTERNALSYM DXSURF_TRANSIENT}
  14480. DXSURF_READONLY = 1 shl 1;
  14481. {$EXTERNALSYM DXSURF_READONLY}
  14482. DXSURF_VALIDFLAGS = (DXSURF_TRANSIENT or DXSURF_READONLY);
  14483. {$EXTERNALSYM DXSURF_VALIDFLAGS}
  14484. type
  14485. {$HPPEMIT 'typedef System::DelphiInterface<IDXDCLock> _di_IDXDCLock;'}
  14486. {$EXTERNALSYM IDXDCLock}
  14487. IDXDCLock = interface(IUnknown)
  14488. ['{0F619456-CF39-11D1-905E-00C04FD9189D}']
  14489. (*** IDXDCLock methods ***)
  14490. function GetDC: HDC; stdcall;
  14491. end;
  14492. {$HPPEMIT 'typedef System::DelphiInterface<IDXSurface> _di_IDXSurface;'}
  14493. {$EXTERNALSYM IDXSurface}
  14494. IDXSurface = interface(IDXBaseObject)
  14495. ['{B39FD73F-E139-11D1-9065-00C04FD9189D}']
  14496. (*** IDXSurface methods ***)
  14497. function GetPixelFormat(out pFormatID: TGUID; out pSampleFormatEnum: DXSAMPLEFORMATENUM): HResult; stdcall;
  14498. function GetBounds(out pBounds: TDXBNDS): HResult; stdcall;
  14499. function GetStatusFlags(out pdwStatusFlags: DWORD): HResult; stdcall;
  14500. function SetStatusFlags(dwStatusFlags: DWORD): HResult; stdcall;
  14501. function LockSurface(var pBounds: TDXBNDS; ulTimeOut: ULONG; dwFlags: DWORD;
  14502. const riid: TGUID; out ppPointer: Pointer; out pulGenerationId: ULONG): HResult; stdcall;
  14503. function GetDirectDrawSurface(const riid: TGUID; out ppSurface: Pointer): HResult; stdcall;
  14504. function GetColorKey(var pColorKey: TDXSAMPLE): HResult; stdcall;
  14505. function SetColorKey(ColorKey: TDXSAMPLE): HResult; stdcall;
  14506. function LockSurfaceDC(var pBounds: TDXBNDS; ulTimeOut: ULONG; dwFlags: DWORD;
  14507. out ppDCLock: IDXDCLock): HResult; stdcall;
  14508. function SetAppData(dwAppData: DWORD): HResult; stdcall;
  14509. function GetAppData(var pdwAppData: DWORD): HResult; stdcall;
  14510. end;
  14511. {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfaceFactory> _di_IDXSurfaceFactory;'}
  14512. {$EXTERNALSYM IDXSurfaceFactory}
  14513. IDXSurfaceFactory = interface(IUnknown)
  14514. ['{144946F5-C4D4-11D1-81D1-0000F87557DB}']
  14515. (*** IDXSurfaceFactory methods ***)
  14516. function CreateSurface(pDirectDraw: IUnknown; var pDDSurfaceDesc: PDDSurfaceDesc;
  14517. const pFormatID: TGUID; var pBounds: TDXBNDS; dwFlags: DWORD;
  14518. punkOuter: IUnknown; const riid: TGUID; out ppDXSurface: Pointer): HResult; stdcall;
  14519. function CreateFromDDSurface(pDDrawSurface: IUnknown; const pFormatID: TGUID;
  14520. dwFlags: DWORD; punkOuter: IUnknown; const riid: TGUID;
  14521. out ppDXSurface: Pointer): HResult; stdcall;
  14522. function LoadImage(pszFileName: PWideChar; pDirectDraw: IUnknown;
  14523. pDDSurfaceDesc: PDDSURFACEDESC; const pFormatID: TGUID; const riid: TGUID;
  14524. out ppDXSurface: Pointer): HResult; stdcall;
  14525. function LoadImageFromStream(pStream: IStream; pDirectDraw: IUnknown;
  14526. pDDSurfaceDesc: PDDSURFACEDESC; const pFormatID: TGUID;
  14527. const riid: TGUID; out ppDXSurface: Pointer): HResult; stdcall;
  14528. function CopySurfaceToNewFormat(pSrc: IDXSurface; pDirectDraw: IUnknown;
  14529. pDDSurfaceDesc: PDDSURFACEDESC; const pDestFormatID: TGUID;
  14530. out ppNewSurface: IDXSurface): HResult; stdcall;
  14531. function CreateD3DRMTexture(pSrc: IDXSurface; pDirectDraw: IUnknown;
  14532. pD3DRM3: IUnknown; const riid: TGUID; out ppTexture3: Pointer): HResult; stdcall;
  14533. function BitBlt(pDest: IDXSurface; var pPlacement: TDXVEC; pSrc: IDXSurface;
  14534. var pClipBounds: TDXBNDS; dwFlags: DWORD): HResult; stdcall;
  14535. end;
  14536. //convenient type declaration for IDXLookupTable
  14537. LUT = array[0..255] of Byte;
  14538. {$EXTERNALSYM LUT}
  14539. {$HPPEMIT 'typedef System::DelphiInterface<IDXLookupTable> _di_IDXLookupTable;'}
  14540. {$EXTERNALSYM IDXLookupTable}
  14541. IDXLookupTable = interface(IDXBaseObject)
  14542. ['{01BAFC7F-9E63-11D1-9053-00C04FD9189D}']
  14543. (*** IDXLookupTable methods ***)
  14544. function GetTables(RedLUT: LUT; GreenLUT: LUT; BlueLUT: LUT; AlphaLUT: LUT): HResult; stdcall;
  14545. function IsChannelIdentity(out pSampleBools: TDXBASESAMPLE): HResult; stdcall;
  14546. function GetIndexValues(Index: ULONG; out pSample: TDXBASESAMPLE): HResult; stdcall;
  14547. function ApplyTables(var pSamples: TDXSAMPLE; cSamples: ULONG): HResult; stdcall;
  14548. end;
  14549. DXSURFMODCOMPOP = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14550. {$EXTERNALSYM DXSURFMODCOMPOP}
  14551. const
  14552. DXSURFMOD_COMP_OVER = 0;
  14553. {$EXTERNALSYM DXSURFMOD_COMP_OVER}
  14554. DXSURFMOD_COMP_ALPHA_MASK = 1;
  14555. {$EXTERNALSYM DXSURFMOD_COMP_ALPHA_MASK}
  14556. DXSURFMOD_COMP_MAX_VALID = 1;
  14557. {$EXTERNALSYM DXSURFMOD_COMP_MAX_VALID}
  14558. type
  14559. {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfaceModifier> _di_IDXSurfaceModifier;'}
  14560. {$EXTERNALSYM IDXSurfaceModifier}
  14561. IDXSurfaceModifier = interface(IUnknown)
  14562. ['{9EA3B637-C37D-11D1-905E-00C04FD9189D}']
  14563. (*** IDXSurfaceModifier methods ***)
  14564. function SetFillColor(Color: TDXSAMPLE): HResult; stdcall;
  14565. function GetFillColor(out pColor: TDXSAMPLE): HResult; stdcall;
  14566. function SetBounds(var pBounds: TDXBNDS): HResult; stdcall;
  14567. function SetBackground(pSurface: IDXSurface): HResult; stdcall;
  14568. function GetBackground(out ppSurface: IDXSurface): HResult; stdcall;
  14569. function SetCompositeOperation(CompOp: DXSURFMODCOMPOP): HResult; stdcall;
  14570. function GetCompositeOperation(out pCompOp: DXSURFMODCOMPOP): HResult; stdcall;
  14571. function SetForeground(pSurface: IDXSurface; bTile: BOOL; var pOrigin: TPOINT): HResult; stdcall;
  14572. function GetForeground(out ppSurface: IDXSurface; out pbTile: BOOL; out pOrigin: TPOINT): HResult; stdcall;
  14573. function SetOpacity(Opacity: Single): HResult; stdcall;
  14574. function GetOpacity(out pOpacity: Single): HResult; stdcall;
  14575. function SetLookup(pLookupTable: IDXLookupTable): HResult; stdcall;
  14576. function GetLookup(out ppLookupTable: IDXLookupTable): HResult; stdcall;
  14577. end;
  14578. {$HPPEMIT 'typedef System::DelphiInterface<IDXSurfaceInit> _di_IDXSurfaceInit;'}
  14579. {$EXTERNALSYM IDXSurfaceInit}
  14580. IDXSurfaceInit = interface(IUnknown)
  14581. ['{9EA3B639-C37D-11d1-905E-00C04FD9189D}']
  14582. (*** IDXSurfaceInit methods ***)
  14583. function InitSurface(pDirectDraw: IUnknown; var pDDSurfaceDesc: TDDSURFACEDESC;
  14584. const pFormatID: TGUID; var pBounds: TDXBNDS; dwFlags: DWORD): HResult; stdcall;
  14585. end;
  14586. DXRAWSURFACEINFO = record
  14587. pFirstByte : PBYTE;
  14588. lPitch : LongInt;
  14589. Width : ULONG;
  14590. Height : ULONG;
  14591. pPixelFormat : PGUID;
  14592. hdc : HDC;
  14593. dwColorKey : DWORD;
  14594. pPalette : ^TDXBASESAMPLE;
  14595. end;
  14596. {$EXTERNALSYM DXRAWSURFACEINFO}
  14597. TDXRawSurfaceInfo = DXRAWSURFACEINFO;
  14598. {$HPPEMIT 'typedef System::DelphiInterface<IDXRawSurface> _di_IDXRawSurface;'}
  14599. {$EXTERNALSYM IDXRawSurface}
  14600. IDXRawSurface = interface(IUnknown)
  14601. ['{09756C8A-D96A-11d1-9062-00C04FD9189D}']
  14602. (*** IDXRawSurface methods ***)
  14603. function GetSurfaceInfo(var pSurfaceInfo: TDXRawSurfaceInfo): HResult; stdcall;
  14604. end;
  14605. {$HPPEMIT 'typedef System::DelphiInterface<IDXARGBSurfaceInit> _di_IDXARGBSurfaceInit;'}
  14606. {$EXTERNALSYM IDXARGBSurfaceInit}
  14607. IDXARGBSurfaceInit = interface(IDXSurfaceInit)
  14608. ['{9EA3B63A-C37D-11d1-905E-00C04FD9189D}']
  14609. (*** IDXARGBSurfaceInit methods ***)
  14610. function InitFromDDSurface(pDDrawSurface: IUnknown; const pFormatID: TGUID;
  14611. dwFlags: DWORD): HResult; stdcall;
  14612. function InitFromRawSurface(pRawSurface: IDXRawSurface): HResult; stdcall;
  14613. end;
  14614. DXNATIVETYPEINFO = record
  14615. pCurrentData : ^BYTE;
  14616. pFirstByte : ^PBYTE;
  14617. lPitch : LongInt;
  14618. dwColorKey : DWORD;
  14619. end;
  14620. {$EXTERNALSYM DXNATIVETYPEINFO}
  14621. TDXNativeTypeInfo = DXNATIVETYPEINFO;
  14622. DXPACKEDRECTDESC = record
  14623. pSamples : ^TDXBASESAMPLE;
  14624. bPremult : BOOL;
  14625. rect : TRECT;
  14626. lRowPadding : LongInt;
  14627. end;
  14628. {$EXTERNALSYM DXPACKEDRECTDESC}
  14629. TDXPackedRectDesc = DXPACKEDRECTDESC;
  14630. DXOVERSAMPLEDESC = record
  14631. p : TPOINT;
  14632. Color : TDXPMSAMPLE;
  14633. end;
  14634. {$EXTERNALSYM DXOVERSAMPLEDESC}
  14635. TDXOverSampleDesc = DXOVERSAMPLEDESC;
  14636. {$HPPEMIT 'typedef System::DelphiInterface<IDXARGBReadPtr> _di_IDXARGBReadPtr;'}
  14637. {$EXTERNALSYM IDXARGBReadPtr}
  14638. IDXARGBReadPtr = interface(IUnknown)
  14639. ['{EAAAC2D6-C290-11d1-905D-00C04FD9189D}']
  14640. (*** IDXARGBReadPtr methods ***)
  14641. function GetSurface(const riid: TGUID; out ppSurface: pointer): HResult; stdcall;
  14642. function GetNativeType(out pInfo: TDXNativeTypeInfo): DXSAMPLEFORMATENUM; stdcall;
  14643. procedure Move(cSamples: LongInt); stdcall;
  14644. procedure MoveToRow(y: ULONG); stdcall;
  14645. procedure MoveToXY(x, y: ULONG); stdcall;
  14646. function MoveAndGetRunInfo(Row: ULONG; out ppInfo: PDXRUNINFO): ULONG; stdcall;
  14647. function Unpack(var pSamples: TDXSAMPLE; cSamples: ULONG; bMove: BOOL): TDXSAMPLE; stdcall;
  14648. function UnpackPremult(var pSamples: TDXPMSAMPLE; cSamples: ULONG; bMove: BOOL): TDXPMSAMPLE; stdcall;
  14649. procedure UnpackRect(var pRectDesc: TDXPackedRectDesc); stdcall;
  14650. end;
  14651. {$HPPEMIT 'typedef System::DelphiInterface<IDXARGBReadWritePtr> _di_IDXARGBReadWritePtr;'}
  14652. {$EXTERNALSYM IDXARGBReadWritePtr}
  14653. IDXARGBReadWritePtr = interface(IDXARGBReadPtr)
  14654. ['{EAAAC2D7-C290-11d1-905D-00C04FD9189D}']
  14655. (*** IDXARGBReadWritePtr methods ***)
  14656. procedure PackAndMove(var pSamples: TDXSAMPLE; cSamples: ULONG); stdcall;
  14657. procedure PackPremultAndMove(var pSamples: TDXPMSAMPLE; cSamples: ULONG); stdcall;
  14658. procedure PackRect(var pRectDesc: TDXPackedRectDesc); stdcall;
  14659. procedure CopyAndMoveBoth(var pScratchBuffer: TDXBASESAMPLE; pSrc: IDXARGBReadPtr;
  14660. cSamples: ULONG; bIsOpaque: BOOL); stdcall;
  14661. procedure CopyRect(var pScratchBuffer: TDXBASESAMPLE; var pDestRect: TRECT;
  14662. pSrc: IDXARGBReadPtr; var pSrcOrigin: TPOINT; bIsOpaque: BOOL); stdcall;
  14663. procedure FillAndMove(var pScratchBuffer: TDXBASESAMPLE; SampVal: TDXPMSAMPLE;
  14664. cSamples: ULONG; bDoOver: BOOL); stdcall;
  14665. procedure FillRect(var pRect: TRECT; SampVal: TDXPMSAMPLE; bDoOver: BOOL); stdcall;
  14666. procedure OverSample(var pOverDesc: TDXOverSampleDesc); stdcall;
  14667. procedure OverArrayAndMove(var pScratchBuffer: TDXBASESAMPLE; var pSrc: TDXPMSAMPLE;
  14668. cSamples: ULONG); stdcall;
  14669. end;
  14670. {$HPPEMIT 'typedef System::DelphiInterface<IDXTScaleOutput> _di_IDXTScaleOutput;'}
  14671. {$EXTERNALSYM IDXTScaleOutput}
  14672. IDXTScaleOutput = interface(IUnknown)
  14673. ['{B2024B50-EE77-11D1-9066-00C04FD9189D}']
  14674. (*** IDXTScaleOutput methods ***)
  14675. function SetOutputSize(const OutSize: SIZE; bMaintainAspect: BOOL): HResult; stdcall;
  14676. end;
  14677. {$HPPEMIT 'typedef System::DelphiInterface<IDXGradient> _di_IDXGradient;'}
  14678. {$EXTERNALSYM IDXGradient}
  14679. IDXGradient = interface(IDXTScaleOutput)
  14680. ['{B2024B51-EE77-11D1-9066-00C04FD9189D}']
  14681. (*** IDXGradient methods ***)
  14682. function SetGradient(StartColor: TDXSAMPLE; EndColor: TDXSAMPLE; bHorizontal: BOOL): HResult; stdcall;
  14683. function GetOutputSize(out pOutSize: SIZE): HResult; stdcall;
  14684. end;
  14685. Scales = array[0..1] of Single;
  14686. {$EXTERNALSYM Scales}
  14687. {$HPPEMIT 'typedef System::DelphiInterface<IDXTScale> _di_IDXTScale;'}
  14688. {$EXTERNALSYM IDXTScale}
  14689. IDXTScale = interface(IUnknown)
  14690. ['{B39FD742-E139-11D1-9065-00C04FD9189D}']
  14691. (*** IDXTScale methods ***)
  14692. function SetScales(var Scales: Scales): HResult; stdcall;
  14693. function GetScales(out Scales: Scales): HResult; stdcall;
  14694. function ScaleFitToSize(var pClipBounds: TDXBNDS; FitToSize: SIZE; bMaintainAspect: BOOL): HResult; stdcall;
  14695. end;
  14696. DISPIDDXEFFECT = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14697. {$EXTERNALSYM DISPIDDXEFFECT}
  14698. const
  14699. DISPID_DXECAPABILITIES = 10000;
  14700. {$EXTERNALSYM DISPID_DXECAPABILITIES}
  14701. DISPID_DXEPROGRESS = DISPID_DXECAPABILITIES + 1;
  14702. {$EXTERNALSYM DISPID_DXEPROGRESS}
  14703. DISPID_DXESTEP = DISPID_DXEPROGRESS + 1;
  14704. {$EXTERNALSYM DISPID_DXESTEP}
  14705. DISPID_DXEDURATION = DISPID_DXESTEP + 1;
  14706. {$EXTERNALSYM DISPID_DXEDURATION}
  14707. DISPID_DXE_NEXT_ID = DISPID_DXEDURATION + 1;
  14708. {$EXTERNALSYM DISPID_DXE_NEXT_ID}
  14709. type
  14710. DXEFFECTTYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  14711. {$EXTERNALSYM DXEFFECTTYPE}
  14712. const
  14713. DXTET_PERIODIC = 1 shl 0;
  14714. {$EXTERNALSYM DXTET_PERIODIC}
  14715. DXTET_MORPH = 1 shl 1;
  14716. {$EXTERNALSYM DXTET_MORPH}
  14717. type
  14718. {$HPPEMIT 'typedef System::DelphiInterface<IDXEffect> _di_IDXEffect;'}
  14719. {$EXTERNALSYM IDXEffect}
  14720. IDXEffect = interface(IDispatch)
  14721. ['{E31FB81B-1335-11d1-8189-0000F87557DB}']
  14722. (*** IDXEffect methods ***)
  14723. function get_Capabilities(out pVal: LongInt): HResult; stdcall;
  14724. function get_Progress(out pVal: Single): HResult; stdcall;
  14725. function put_Progress(newVal: Single): HResult; stdcall;
  14726. function get_StepResolution(out pVal: Single): HResult; stdcall;
  14727. function get_Duration(out pVal: Single): HResult; stdcall;
  14728. function put_Duration(newVal: Single): HResult; stdcall;
  14729. end;
  14730. {$HPPEMIT 'typedef System::DelphiInterface<IHTMLDXTransform> _di_IHTMLDXTransform;'}
  14731. {$EXTERNALSYM IHTMLDXTransform}
  14732. IHTMLDXTransform = interface(IUnknown)
  14733. ['{30E2AB7D-4FDD-4159-B7EA-DC722BF4ADE5}']
  14734. (*** IHTMLDXTransform methods ***)
  14735. function SetHostUrl(bstrHostUrl: WideString): HResult; stdcall;
  14736. end;
  14737. //------------------------------------------------------------------------------
  14738. // File: QEdit.h
  14739. // Desc: Dexter library (DES)
  14740. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  14741. //------------------------------------------------------------------------------
  14742. const
  14743. LIBID_DexterLib: TGUID = '{78530B68-61F9-11D2-8CAD-00A024580902}';
  14744. {$EXTERNALSYM LIBID_DexterLib}
  14745. IID_IPropertySetter : TGUID = '{AE9472BD-B0C3-11D2-8D24-00A0C9441E20}';
  14746. {$EXTERNALSYM IID_IPropertySetter}
  14747. IID_IDxtCompositor : TGUID = '{BB44391E-6ABD-422F-9E2E-385C9DFF51FC}';
  14748. {$EXTERNALSYM IID_IDxtCompositor}
  14749. IID_IDxtAlphaSetter : TGUID = '{4EE9EAD9-DA4D-43D0-9383-06B90C08B12B}';
  14750. {$EXTERNALSYM IID_IDxtAlphaSetter}
  14751. IID_IDxtJpeg : TGUID = '{DE75D011-7A65-11D2-8CEA-00A0C9441E20}';
  14752. {$EXTERNALSYM IID_IDxtJpeg}
  14753. IID_IDxtKey : TGUID = '{3255DE56-38FB-4901-B980-94B438010D7B}';
  14754. {$EXTERNALSYM IID_IDxtKey}
  14755. IID_IMediaLocator : TGUID = '{288581E0-66CE-11D2-918F-00C0DF10D434}';
  14756. {$EXTERNALSYM IID_IMediaLocator}
  14757. IID_IMediaDet : TGUID = '{65BD0710-24D2-4FF7-9324-ED2E5D3ABAFA}';
  14758. {$EXTERNALSYM IID_IMediaDet}
  14759. IID_IGrfCache : TGUID = '{AE9472BE-B0C3-11D2-8D24-00A0C9441E20}';
  14760. {$EXTERNALSYM IID_IGrfCache}
  14761. IID_IRenderEngine : TGUID = '{6BEE3A81-66C9-11D2-918F-00C0DF10D434}';
  14762. {$EXTERNALSYM IID_IRenderEngine}
  14763. IID_IRenderEngine2 : TGUID = '{6BEE3A82-66C9-11d2-918F-00C0DF10D434}';
  14764. {$EXTERNALSYM IID_IRenderEngine2}
  14765. IID_IFindCompressorCB : TGUID = '{F03FA8DE-879A-4D59-9B2C-26BB1CF83461}';
  14766. {$EXTERNALSYM IID_IFindCompressorCB}
  14767. IID_ISmartRenderEngine : TGUID = '{F03FA8CE-879A-4D59-9B2C-26BB1CF83461}';
  14768. {$EXTERNALSYM IID_ISmartRenderEngine}
  14769. IID_IAMTimelineObj : TGUID = '{78530B77-61F9-11D2-8CAD-00A024580902}';
  14770. {$EXTERNALSYM IID_IAMTimelineObj}
  14771. IID_IAMTimelineEffectable : TGUID = '{EAE58537-622E-11D2-8CAD-00A024580902}';
  14772. {$EXTERNALSYM IID_IAMTimelineEffectable}
  14773. IID_IAMTimelineEffect : TGUID = '{BCE0C264-622D-11D2-8CAD-00A024580902}';
  14774. {$EXTERNALSYM IID_IAMTimelineEffect}
  14775. IID_IAMTimelineTransable : TGUID = '{378FA386-622E-11D2-8CAD-00A024580902}';
  14776. {$EXTERNALSYM IID_IAMTimelineTransable}
  14777. IID_IAMTimelineSplittable : TGUID = '{A0F840A0-D590-11D2-8D55-00A0C9441E20}';
  14778. {$EXTERNALSYM IID_IAMTimelineSplittable}
  14779. IID_IAMTimelineTrans : TGUID = '{BCE0C265-622D-11D2-8CAD-00A024580902}';
  14780. {$EXTERNALSYM IID_IAMTimelineTrans}
  14781. IID_IAMTimelineSrc : TGUID = '{78530B79-61F9-11D2-8CAD-00A024580902}';
  14782. {$EXTERNALSYM IID_IAMTimelineSrc}
  14783. IID_IAMTimelineTrack : TGUID = '{EAE58538-622E-11D2-8CAD-00A024580902}';
  14784. {$EXTERNALSYM IID_IAMTimelineTrack}
  14785. IID_IAMTimelineVirtualTrack : TGUID = '{A8ED5F80-C2C7-11D2-8D39-00A0C9441E20}';
  14786. {$EXTERNALSYM IID_IAMTimelineVirtualTrack}
  14787. IID_IAMTimelineComp : TGUID = '{EAE58536-622E-11D2-8CAD-00A024580902}';
  14788. {$EXTERNALSYM IID_IAMTimelineComp}
  14789. IID_IAMTimelineGroup : TGUID = '{9EED4F00-B8A6-11D2-8023-00C0DF10D434}';
  14790. {$EXTERNALSYM IID_IAMTimelineGroup}
  14791. IID_IAMTimeline : TGUID = '{78530B74-61F9-11D2-8CAD-00A024580902}';
  14792. {$EXTERNALSYM IID_IAMTimeline}
  14793. IID_IXml2Dex : TGUID = '{18C628ED-962A-11D2-8D08-00A0C9441E20}';
  14794. {$EXTERNALSYM IID_IXml2Dex}
  14795. IID_IAMErrorLog : TGUID = '{E43E73A2-0EFA-11D3-9601-00A0C9441E20}';
  14796. {$EXTERNALSYM IID_IAMErrorLog}
  14797. IID_IAMSetErrorLog : TGUID = '{963566DA-BE21-4EAF-88E9-35704F8F52A1}';
  14798. {$EXTERNALSYM IID_IAMSetErrorLog}
  14799. IID_ISampleGrabberCB : TGUID = '{0579154A-2B53-4994-B0D0-E773148EFF85}';
  14800. {$EXTERNALSYM IID_ISampleGrabberCB}
  14801. IID_ISampleGrabber : TGUID = '{6B652FFF-11FE-4FCE-92AD-0266B5D7C78F}';
  14802. {$EXTERNALSYM IID_ISampleGrabber}
  14803. IID_IResize : TGUID = '{4ada63a0-72d5-11d2-952a-0060081840bc}';
  14804. {$EXTERNALSYM IID_IResize}
  14805. CLSID_AMTimeline : TGUID = '{78530B75-61F9-11D2-8CAD-00A024580902}';
  14806. {$EXTERNALSYM CLSID_AMTimeline}
  14807. CLSID_AMTimelineObj : TGUID = '{78530B78-61F9-11D2-8CAD-00A024580902}';
  14808. {$EXTERNALSYM CLSID_AMTimelineObj}
  14809. CLSID_AMTimelineSrc : TGUID = '{78530B7A-61F9-11D2-8CAD-00A024580902}';
  14810. {$EXTERNALSYM CLSID_AMTimelineSrc}
  14811. CLSID_AMTimelineTrack : TGUID = '{8F6C3C50-897B-11D2-8CFB-00A0C9441E20}';
  14812. {$EXTERNALSYM CLSID_AMTimelineTrack}
  14813. CLSID_AMTimelineComp : TGUID = '{74D2EC80-6233-11D2-8CAD-00A024580902}';
  14814. {$EXTERNALSYM CLSID_AMTimelineComp}
  14815. CLSID_AMTimelineGroup : TGUID = '{F6D371E1-B8A6-11D2-8023-00C0DF10D434}';
  14816. {$EXTERNALSYM CLSID_AMTimelineGroup}
  14817. CLSID_AMTimelineTrans : TGUID = '{74D2EC81-6233-11D2-8CAD-00A024580902}';
  14818. {$EXTERNALSYM CLSID_AMTimelineTrans}
  14819. CLSID_AMTimelineEffect : TGUID = '{74D2EC82-6233-11D2-8CAD-00A024580902}';
  14820. {$EXTERNALSYM CLSID_AMTimelineEffect}
  14821. CLSID_RenderEngine : TGUID = '{64D8A8E0-80A2-11D2-8CF3-00A0C9441E20}';
  14822. {$EXTERNALSYM CLSID_RenderEngine}
  14823. CLSID_SmartRenderEngine : TGUID = '{498B0949-BBE9-4072-98BE-6CCAEB79DC6F}';
  14824. {$EXTERNALSYM CLSID_SmartRenderEngine}
  14825. CLSID_AudMixer : TGUID = '{036A9790-C153-11D2-9EF7-006008039E37}';
  14826. {$EXTERNALSYM CLSID_AudMixer}
  14827. CLSID_Xml2Dex : TGUID = '{18C628EE-962A-11D2-8D08-00A0C9441E20}';
  14828. {$EXTERNALSYM CLSID_Xml2Dex}
  14829. CLSID_MediaLocator : TGUID = '{CC1101F2-79DC-11D2-8CE6-00A0C9441E20}';
  14830. {$EXTERNALSYM CLSID_MediaLocator}
  14831. CLSID_PropertySetter : TGUID = '{ADF95821-DED7-11D2-ACBE-0080C75E246E}';
  14832. {$EXTERNALSYM CLSID_PropertySetter}
  14833. CLSID_MediaDet : TGUID = '{65BD0711-24D2-4FF7-9324-ED2E5D3ABAFA}';
  14834. {$EXTERNALSYM CLSID_MediaDet}
  14835. CLSID_SampleGrabber : TGUID = '{C1F400A0-3F08-11D3-9F0B-006008039E37}';
  14836. {$EXTERNALSYM CLSID_SampleGrabber}
  14837. CLSID_NullRenderer : TGUID = '{C1F400A4-3F08-11D3-9F0B-006008039E37}';
  14838. {$EXTERNALSYM CLSID_NullRenderer}
  14839. CLSID_DxtCompositor : TGUID = '{BB44391D-6ABD-422F-9E2E-385C9DFF51FC}';
  14840. {$EXTERNALSYM CLSID_DxtCompositor}
  14841. CLSID_DxtAlphaSetter : TGUID = '{506D89AE-909A-44F7-9444-ABD575896E35}';
  14842. {$EXTERNALSYM CLSID_DxtAlphaSetter}
  14843. CLSID_DxtJpeg : TGUID = '{DE75D012-7A65-11D2-8CEA-00A0C9441E20}';
  14844. {$EXTERNALSYM CLSID_DxtJpeg}
  14845. CLSID_ColorSource : TGUID = '{0CFDD070-581A-11D2-9EE6-006008039E37}';
  14846. {$EXTERNALSYM CLSID_ColorSource}
  14847. CLSID_DxtKey : TGUID = '{C5B19592-145E-11D3-9F04-006008039E37}';
  14848. {$EXTERNALSYM CLSID_DxtKey}
  14849. type
  14850. // used by DEXTER_VALUE's dwInterp var
  14851. DEXTERF = (
  14852. DEXTERF_JUMP,
  14853. DEXTERF_INTERPOLATE
  14854. );
  14855. {$EXTERNALSYM DEXTERF}
  14856. TDexterF = DEXTERF;
  14857. // used to set values on the property setter
  14858. PDexterParam = ^TDexterParam;
  14859. DEXTER_PARAM = record
  14860. Name : WideString ;
  14861. dispID : longint;
  14862. nValues : longint;
  14863. end;
  14864. {$EXTERNALSYM DEXTER_PARAM}
  14865. TDexterParam = DEXTER_PARAM;
  14866. // used to set values on the property setter
  14867. PDexterValue = ^TDexterValue;
  14868. DEXTER_VALUE = record
  14869. v : OLEVARIANT ;
  14870. rt : TReferenceTime ;
  14871. dwInterp : DWORD ;
  14872. end;
  14873. {$EXTERNALSYM DEXTER_VALUE}
  14874. TDexterValue = DEXTER_VALUE;
  14875. const
  14876. // used by bMethod directly below
  14877. DEXTER_AUDIO_JUMP = 0;
  14878. {$EXTERNALSYM DEXTER_AUDIO_JUMP}
  14879. DEXTER_AUDIO_INTERPOLATE = DEXTER_AUDIO_JUMP + 1;
  14880. {$EXTERNALSYM DEXTER_AUDIO_INTERPOLATE}
  14881. type
  14882. // used to set volumes on the mixer and mixer pins
  14883. DEXTER_AUDIO_VOLUMEENVELOPE = record
  14884. rtEnd : TReferenceTime ;
  14885. dLevel : double ;
  14886. bMethod : BOOL ;
  14887. end;
  14888. {$EXTERNALSYM DEXTER_AUDIO_VOLUMEENVELOPE}
  14889. TDexterAudioVolumeEnvelope = DEXTER_AUDIO_VOLUMEENVELOPE;
  14890. const
  14891. // used in IAMTimeline::Get(Set)InsertMode
  14892. TIMELINE_INSERT_MODE_INSERT = 1;
  14893. {$EXTERNALSYM TIMELINE_INSERT_MODE_INSERT}
  14894. TIMELINE_INSERT_MODE_OVERLAY = 2;
  14895. {$EXTERNALSYM TIMELINE_INSERT_MODE_OVERLAY}
  14896. // define what main 'things' can be put into the timeline tree.
  14897. // these values are used quite a bit with timeline access
  14898. // (bitmap mask flags)
  14899. // TIMELINE_MAJOR_TYPE
  14900. TIMELINE_MAJOR_TYPE_COMPOSITE = 1;
  14901. {$EXTERNALSYM TIMELINE_MAJOR_TYPE_COMPOSITE}
  14902. TIMELINE_MAJOR_TYPE_TRACK = 2;
  14903. {$EXTERNALSYM TIMELINE_MAJOR_TYPE_TRACK}
  14904. TIMELINE_MAJOR_TYPE_SOURCE = 4;
  14905. {$EXTERNALSYM TIMELINE_MAJOR_TYPE_SOURCE}
  14906. TIMELINE_MAJOR_TYPE_TRANSITION = 8;
  14907. {$EXTERNALSYM TIMELINE_MAJOR_TYPE_TRANSITION}
  14908. TIMELINE_MAJOR_TYPE_EFFECT = 16;
  14909. {$EXTERNALSYM TIMELINE_MAJOR_TYPE_EFFECT}
  14910. TIMELINE_MAJOR_TYPE_GROUP = 128;
  14911. {$EXTERNALSYM TIMELINE_MAJOR_TYPE_GROUP}
  14912. // used in various IAMTimelineXXX "search" functions. Look in this
  14913. // file for "SearchDirection" to see where it's used. I didn't want
  14914. // to use an enum as an interface param type, so I used a long. Probably
  14915. // silly of me.
  14916. // DEXTERF_TRACK_SEARCH_FLAGS
  14917. DEXTERF_BOUNDING = -1;
  14918. {$EXTERNALSYM DEXTERF_BOUNDING}
  14919. DEXTERF_EXACTLY_AT = 0;
  14920. {$EXTERNALSYM DEXTERF_EXACTLY_AT}
  14921. DEXTERF_FORWARDS = 1;
  14922. {$EXTERNALSYM DEXTERF_FORWARDS}
  14923. type
  14924. // right now, the media type in the group contains enough information about
  14925. // how we want to recompress. This might not be enough information in the
  14926. // future, so we define a structure we can get and set to the group.
  14927. _SCompFmt0 = record
  14928. nFormatId : longint ;
  14929. MediaType : TAMMediaType ;
  14930. end;
  14931. {$EXTERNALSYM _SCompFmt0}
  14932. SCompFmt0 = _SCompFmt0;
  14933. {$EXTERNALSYM SCompFmt0}
  14934. TSCompFmt0 = _SCompFmt0;
  14935. const
  14936. // used in IAMTimelineSrc::Get(Set)StretchMode
  14937. RESIZEF_STRETCH = 0;
  14938. {$EXTERNALSYM RESIZEF_STRETCH}
  14939. RESIZEF_CROP = RESIZEF_STRETCH + 1;
  14940. {$EXTERNALSYM RESIZEF_CROP}
  14941. RESIZEF_PRESERVEASPECTRATIO = RESIZEF_CROP + 1;
  14942. {$EXTERNALSYM RESIZEF_PRESERVEASPECTRATIO}
  14943. RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX = RESIZEF_PRESERVEASPECTRATIO + 1;
  14944. {$EXTERNALSYM RESIZEF_PRESERVEASPECTRATIO_NOLETTERBOX}
  14945. // used in IRenderEngine::SetDynamicReconnectLevel
  14946. // (bitmap mask flags)
  14947. CONNECTF_DYNAMIC_NONE = 0;
  14948. {$EXTERNALSYM CONNECTF_DYNAMIC_NONE}
  14949. CONNECTF_DYNAMIC_SOURCES = $1;
  14950. {$EXTERNALSYM CONNECTF_DYNAMIC_SOURCES}
  14951. CONNECTF_DYNAMIC_EFFECTS = $2;
  14952. {$EXTERNALSYM CONNECTF_DYNAMIC_EFFECTS}
  14953. // used in
  14954. // IMediaLocator::FindMediaFile
  14955. // IRenderEngine::SetSourceNameValidation
  14956. // IAMTimeline::ValidateSourceNames
  14957. // (bitmap mask flags)
  14958. SFN_VALIDATEF_CHECK = $1;
  14959. {$EXTERNALSYM SFN_VALIDATEF_CHECK}
  14960. SFN_VALIDATEF_POPUP = $2;
  14961. {$EXTERNALSYM SFN_VALIDATEF_POPUP}
  14962. SFN_VALIDATEF_TELLME = $4;
  14963. {$EXTERNALSYM SFN_VALIDATEF_TELLME}
  14964. SFN_VALIDATEF_REPLACE = $8;
  14965. {$EXTERNALSYM SFN_VALIDATEF_REPLACE}
  14966. SFN_VALIDATEF_USELOCAL = $10;
  14967. {$EXTERNALSYM SFN_VALIDATEF_USELOCAL}
  14968. SFN_VALIDATEF_NOFIND = $20;
  14969. {$EXTERNALSYM SFN_VALIDATEF_NOFIND}
  14970. SFN_VALIDATEF_IGNOREMUTED = $40;
  14971. {$EXTERNALSYM SFN_VALIDATEF_IGNOREMUTED}
  14972. SFN_VALIDATEF_END = SFN_VALIDATEF_IGNOREMUTED + 1;
  14973. {$EXTERNALSYM SFN_VALIDATEF_END}
  14974. // key transitions types
  14975. DXTKEY_RGB = 0;
  14976. {$EXTERNALSYM DXTKEY_RGB}
  14977. DXTKEY_NONRED = DXTKEY_RGB + 1;
  14978. {$EXTERNALSYM DXTKEY_NONRED}
  14979. DXTKEY_LUMINANCE = DXTKEY_NONRED + 1;
  14980. {$EXTERNALSYM DXTKEY_LUMINANCE}
  14981. DXTKEY_ALPHA = DXTKEY_LUMINANCE + 1;
  14982. {$EXTERNALSYM DXTKEY_ALPHA}
  14983. DXTKEY_HUE = DXTKEY_ALPHA + 1;
  14984. {$EXTERNALSYM DXTKEY_HUE}
  14985. type
  14986. ////////////////////////////////////////////////////////////////
  14987. ////////////////////////////////////////////////////////////////
  14988. // New Property setting Interfaces
  14989. ////////////////////////////////////////////////////////////////
  14990. ////////////////////////////////////////////////////////////////
  14991. {$HPPEMIT 'typedef System::DelphiInterface<IPropertySetter> _di_IPropertySetter;'}
  14992. {$EXTERNALSYM IPropertySetter}
  14993. IPropertySetter = interface(IUnknown)
  14994. ['{AE9472BD-B0C3-11D2-8D24-00A0C9441E20}']
  14995. (*** IPropertySetter methods ***)
  14996. // for loading and saving through XML
  14997. function LoadXML(pxml: IUnknown): HResult; stdcall;
  14998. // !!! doesn't work HResult LoadXML([in] IXMLElement * pxml);
  14999. function PrintXML(out pszXML: pchar; cbXML: integer; out pcbPrinted: pinteger; indent: integer): HResult; stdcall;
  15000. // for cloning a portion of the props when splitting the object
  15001. function CloneProps(out ppSetter: IPropertySetter; rtStart, rtStop: TReferenceTime): HResult; stdcall;
  15002. // for loading and saving programmatically
  15003. // caller must call this in pre-sorted order, this time must be > all
  15004. // previous times
  15005. function AddProp(Param: TDexterParam; var paValue: TDexterValue): HResult; stdcall;
  15006. function GetProps(out pcParams: longint; out paParam: PDexterParam; out paValue: PDexterValue): HResult; stdcall;
  15007. // after calling GetProps, you must call FreeProps to free resources
  15008. function FreeProps(cParams: longint; var paParam: TDexterParam; var paValue: TDexterValue): HResult; stdcall;
  15009. // to empty to property setter, so you can start over again
  15010. function ClearProps: HResult; stdcall;
  15011. // for persisting
  15012. function SaveToBlob(out pcSize: longint; out ppb: pbyte): HResult; stdcall;
  15013. //
  15014. function LoadFromBlob(cSize: longint; var pb: Byte): HResult; stdcall;
  15015. // to program the object that supports IDispatch with the props
  15016. // call with rtNow == -1 to set Static Props when your object instantiates
  15017. // errors will be logged, if a log is provided
  15018. function SetProps(pTarget: IUnknown; rtNow: TReferenceTime): HResult; stdcall;
  15019. // unicode version
  15020. function PrintXMLW({out}pszXML: PWideChar; cchXML: integer; out pcchPrinted: integer; indent: integer): HResult; stdcall;
  15021. end;
  15022. {$HPPEMIT 'typedef System::DelphiInterface<IDxtCompositor> _di_IDxtCompositor;'}
  15023. {$EXTERNALSYM IDxtCompositor}
  15024. IDxtCompositor = interface(IDXEffect)
  15025. ['{BB44391E-6ABD-422F-9E2E-385C9DFF51FC}']
  15026. (*** IDxtCompositor methods ***)
  15027. function get_OffsetX(out pVal: longint): HResult; stdcall;
  15028. function put_OffsetX(newVal: longint): HResult; stdcall;
  15029. function get_OffsetY(out pVal: longint): HResult; stdcall;
  15030. function put_OffsetY(newVal: longint): HResult; stdcall;
  15031. function get_Width(out pVal: longint): HResult; stdcall;
  15032. function put_Width(newVal: longint): HResult; stdcall;
  15033. function get_Height(out pVal: longint): HResult; stdcall;
  15034. function put_Height(newVal: longint): HResult; stdcall;
  15035. function get_SrcOffsetX(out pVal: longint): HResult; stdcall;
  15036. function put_SrcOffsetX(newVal: longint): HResult; stdcall;
  15037. function get_SrcOffsetY(out pVal: longint): HResult; stdcall;
  15038. function put_SrcOffsetY(newVal: longint): HResult; stdcall;
  15039. function get_SrcWidth(out pVal: longint): HResult; stdcall;
  15040. function put_SrcWidth(newVal: longint): HResult; stdcall;
  15041. function get_SrcHeight(out pVal: longint): HResult; stdcall;
  15042. function put_SrcHeight(newVal: longint): HResult; stdcall;
  15043. end;
  15044. {$HPPEMIT 'typedef System::DelphiInterface<IDxtAlphaSetter> _di_IDxtAlphaSetter;'}
  15045. {$EXTERNALSYM IDxtAlphaSetter}
  15046. IDxtAlphaSetter = interface(IDXEffect)
  15047. ['{4EE9EAD9-DA4D-43D0-9383-06B90C08B12B}']
  15048. (*** IDxtAlphaSetter methods ***)
  15049. function get_Alpha(out pVal: longint): HResult; stdcall;
  15050. function put_Alpha(newVal: longint): HResult; stdcall;
  15051. function get_AlphaRamp(out pVal: Double): HResult; stdcall;
  15052. function put_AlphaRamp(newVal: Double): HResult; stdcall;
  15053. end;
  15054. {$HPPEMIT 'typedef System::DelphiInterface<IDxtJpeg> _di_IDxtJpeg;'}
  15055. {$EXTERNALSYM IDxtJpeg}
  15056. IDxtJpeg = interface(IDXEffect)
  15057. ['{DE75D011-7A65-11D2-8CEA-00A0C9441E20}']
  15058. (*** IDxtJpeg methods ***)
  15059. function get_MaskNum(out pVal: longint): HResult; stdcall;
  15060. function put_MaskNum(newVal: longint): HResult; stdcall;
  15061. function get_MaskName(out pVal: WideString): HResult; stdcall;
  15062. function put_MaskName(newVal: WideString): HResult; stdcall;
  15063. function get_ScaleX(out pVal: Double): HResult; stdcall;
  15064. function put_ScaleX(newVal: Double): HResult; stdcall;
  15065. function get_ScaleY(out pVal: Double): HResult; stdcall;
  15066. function put_ScaleY(newVal: Double): HResult; stdcall;
  15067. function get_OffsetX(out pVal: longint): HResult; stdcall;
  15068. function put_OffsetX(newVal: longint): HResult; stdcall;
  15069. function get_OffsetY(out pVal: longint): HResult; stdcall;
  15070. function put_OffsetY(newVal: longint): HResult; stdcall;
  15071. function get_ReplicateX(out pVal: longint): HResult; stdcall;
  15072. function put_ReplicateX(newVal: longint): HResult; stdcall;
  15073. function get_ReplicateY(out pVal: longint): HResult; stdcall;
  15074. function put_ReplicateY(newVal: longint): HResult; stdcall;
  15075. function get_BorderColor(out pVal: longint): HResult; stdcall;
  15076. function put_BorderColor(newVal: longint): HResult; stdcall;
  15077. function get_BorderWidth(out pVal: longint): HResult; stdcall;
  15078. function put_BorderWidth(newVal: longint): HResult; stdcall;
  15079. function get_BorderSoftness(out pVal: longint): HResult; stdcall;
  15080. function put_BorderSoftness(newVal: longint): HResult; stdcall;
  15081. function ApplyChanges: HResult; stdcall;
  15082. function LoadDefSettings: HResult; stdcall;
  15083. end;
  15084. {$HPPEMIT 'typedef System::DelphiInterface<IDxtKey> _di_IDxtKey;'}
  15085. {$EXTERNALSYM IDxtKey}
  15086. IDxtKey = interface(IDXEffect)
  15087. ['{3255DE56-38FB-4901-B980-94B438010D7B}']
  15088. (*** IDxtKey methods ***)
  15089. function get_KeyType(out pVal: integer): HResult; stdcall;
  15090. function put_KeyType(newVal: integer): HResult; stdcall;
  15091. function get_Hue(out pVal: integer): HResult; stdcall;
  15092. function put_Hue(newVal: integer): HResult; stdcall;
  15093. function get_Luminance(out pVal: integer): HResult; stdcall;
  15094. function put_Luminance(newVal: integer): HResult; stdcall;
  15095. function get_RGB(out pVal: DWORD): HResult; stdcall;
  15096. function put_RGB(newVal: DWORD): HResult; stdcall;
  15097. function get_Similarity(out pVal: integer): HResult; stdcall;
  15098. function put_Similarity(newVal: integer): HResult; stdcall;
  15099. function get_Invert(out pVal: BOOL): HResult; stdcall;
  15100. function put_Invert(newVal: BOOL): HResult; stdcall;
  15101. end;
  15102. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15103. // This little COM interface will look 'around' for the closest
  15104. // path match for a given file. If the file already exists, then
  15105. // this interface should hardly do anything. If it's not found,
  15106. // it will go look for it and if successful, return S_FALSE. If it
  15107. // cannot find the file, it will call the hook, if set and return
  15108. // it's return code. if the hook is not set, it is in a type of
  15109. // error condition. The Dexter-provided MediaLocator will bring up
  15110. // a dialog box asking you to browse for your file. Other COM
  15111. // objects may do something else.
  15112. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15113. {$HPPEMIT 'typedef System::DelphiInterface<IMediaLocator> _di_IMediaLocator;'}
  15114. {$EXTERNALSYM IMediaLocator}
  15115. IMediaLocator = interface(IUnknown)
  15116. ['{288581E0-66CE-11D2-918F-00C0DF10D434}']
  15117. (*** IMediaLocator methods ***)
  15118. function FindMediaFile(Input: TBSTR; FilterString: TBSTR;
  15119. out pOutput: TBSTR; Flags: longint): HResult; stdcall;
  15120. function AddFoundLocation(DirectoryName: TBSTR): HResult; stdcall;
  15121. end;
  15122. ISampleGrabber = interface;
  15123. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15124. // This object provides caching of duration and stream type
  15125. // information for files that would produce a directshow source
  15126. // filter. It takes too long to figure this out in DShow right
  15127. // now, so this is one way around it. The way it works is that
  15128. // you first fill out the Filename property, then call and
  15129. // ask how many streams it has, or, set the CurrentStream prop
  15130. // and then ask for the per-stream properties, StreamType or
  15131. // StreamLength. They both reference the CurrentStream prop that
  15132. // you set. I also allowed you (for convenience) to just give
  15133. // it a IUnknown Filter that represents an IBaseFilter source
  15134. // filter that is NOT currently in a graph. It will use that
  15135. // instead. When using this, though, you will not get cached
  15136. // values. The cached values are stored in the system's ini file
  15137. // called DCBC2A70-70D8-4459-BFFA-E0D61DEA3FDF.INI. Nice, huh? :-)
  15138. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15139. {$HPPEMIT 'typedef System::DelphiInterface<IMediaDet> _di_IMediaDet;'}
  15140. {$EXTERNALSYM IMediaDet}
  15141. IMediaDet = interface(IUnknown)
  15142. ['{65BD0710-24D2-4FF7-9324-ED2E5D3ABAFA}']
  15143. (*** IMediaDet methods ***)
  15144. function get_Filter(out pVal: IUnknown): HResult; stdcall;
  15145. function put_Filter(newVal: IUnknown): HResult; stdcall;
  15146. function get_OutputStreams(out pVal: longint): HResult; stdcall;
  15147. function get_CurrentStream(out pVal: longint): HResult; stdcall;
  15148. function put_CurrentStream(newVal: longint): HResult; stdcall;
  15149. function get_StreamType(out pVal: TGUID): HResult; stdcall;
  15150. function get_StreamTypeB(out pVal: WideString): HResult; stdcall;
  15151. function get_StreamLength(out pVal: Double): HResult; stdcall;
  15152. function get_Filename(out pVal: WideString): HResult; stdcall;
  15153. function put_Filename(pVal: WideString): HResult; stdcall;
  15154. function GetBitmapBits(streamTime: Double; pBufferSize: Plongint; pBuffer: PByte;
  15155. Width: longint; Height: longint): HResult; stdcall;
  15156. function WriteBitmapBits(streamTime: Double; Width: longint; Height: longint;
  15157. Filename: WideString): HResult; stdcall;
  15158. function get_StreamMediaType(out pVal: TAMMediaType): HResult; stdcall;
  15159. function GetSampleGrabber(out ppVal: ISampleGrabber): HResult; stdcall;
  15160. function get_FrameRate(out pVal: Double): HResult; stdcall;
  15161. function EnterBitmapGrabMode(SeekTime: Double): HResult; stdcall;
  15162. end;
  15163. // useless interface, don't use it!
  15164. {$HPPEMIT 'typedef System::DelphiInterface<IGrfCache> _di_IGrfCache;'}
  15165. {$EXTERNALSYM IGrfCache}
  15166. IGrfCache = interface(IDispatch)
  15167. ['{AE9472BE-B0C3-11D2-8D24-00A0C9441E20}']
  15168. (*** IGrfCache methods ***)
  15169. function AddFilter(ChainedCache: IGrfCache; Id: Int64; const pFilter: IBaseFilter;
  15170. pName: PWideChar): HResult; stdcall;
  15171. function ConnectPins(ChainedCache: IGrfCache; PinID1: Int64; const pPin1: IPin;
  15172. PinID2: Int64; const pPin2: IPin): HResult; stdcall;
  15173. function SetGraph(const pGraph: IGraphBuilder): HResult; stdcall;
  15174. function DoConnectionsNow: HResult; stdcall;
  15175. end;
  15176. IAMTimeline = interface;
  15177. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15178. // The RenderEngin builds a graph from the timeline and gives
  15179. // you some simple positional commands.
  15180. // explained methods:
  15181. // SetTimelineObject - tell the render engine who to parse
  15182. // ConnectEverything - build up a graph based on the timeline
  15183. // ScrapIt - throw away graph and everything
  15184. // GetFilterGraph - get the graph that's built up, if any
  15185. // SetFilterGraph - allows you to preset the graph that's built up.
  15186. // cannot call this if there already is a graph.
  15187. // !!! the following methods are unused/not implemented
  15188. // SetInterestRange - discard COM objects and memory outside of this
  15189. // range, if possible. Used for scrubbing on a long timeline and
  15190. // freeing up resources
  15191. // SetRenderRange - pretend like a portion of the timeline IS the timeline
  15192. // and don't connect anything in the graph outside of that range.
  15193. // Commit - allocate what's necessary and get prepared to run
  15194. // Decommit - free anything possible
  15195. // GetCaps - find out some info about the render engine
  15196. // DoSmartRecompression - connect compressed sources if
  15197. // possible
  15198. // in the graph, this will RenderPin( ) on every switcher
  15199. // rendering pin.
  15200. // SetSourceNameValidation - allows you to set some flags which
  15201. // determine how source files are found, if they need to be found.
  15202. // FilterString is a list of extensions to find for the media
  15203. // files (see OPENFILENAME filters)
  15204. // pOverride is a media locator you would like to use instead
  15205. // of the built in one
  15206. // The flags are defined in the struct immediately below.
  15207. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15208. {$HPPEMIT 'typedef System::DelphiInterface<IRenderEngine> _di_IRenderEngine;'}
  15209. {$EXTERNALSYM IRenderEngine}
  15210. IRenderEngine = interface(IUnknown)
  15211. ['{6BEE3A81-66C9-11D2-918F-00C0DF10D434}']
  15212. (*** IRenderEngine methods ***)
  15213. function SetTimelineObject(pTimeline: IAMTimeline): HResult; stdcall;
  15214. function GetTimelineObject(out ppTimeline: IAMTimeline): HResult; stdcall;
  15215. function GetFilterGraph(out ppFG: IGraphBuilder): HResult; stdcall;
  15216. function SetFilterGraph(pFG: IGraphBuilder): HResult; stdcall;
  15217. function SetInterestRange(Start, Stop: TReferenceTime): HResult; stdcall;
  15218. function SetInterestRange2(Start, Stop: Double): HResult; stdcall;
  15219. function SetRenderRange(Start, Stop: TReferenceTime): HResult; stdcall;
  15220. function SetRenderRange2(Start, Stop: Double): HResult; stdcall;
  15221. function GetGroupOutputPin(Group: longint; out ppRenderPin: IPin): HResult; stdcall;
  15222. function ScrapIt: HResult; stdcall;
  15223. function RenderOutputPins: HResult; stdcall;
  15224. function GetVendorString(out pVendorID: WideString): HResult; stdcall;
  15225. function ConnectFrontEnd: HResult; stdcall;
  15226. function SetSourceConnectCallback(pCallback: IGrfCache): HResult; stdcall;
  15227. function SetDynamicReconnectLevel(Level: longint): HResult; stdcall;
  15228. function DoSmartRecompression: HResult; stdcall;
  15229. function UseInSmartRecompressionGraph: HResult; stdcall;
  15230. function SetSourceNameValidation(const FilterString: WideString;
  15231. pOverride: IMediaLocator; Flags: longint): HResult; stdcall;
  15232. function Commit: HResult; stdcall;
  15233. function Decommit: HResult; stdcall;
  15234. function GetCaps(Index: longint; var pReturn: longint): HResult; stdcall;
  15235. end;
  15236. {$HPPEMIT 'typedef System::DelphiInterface<IRenderEngine2> _di_IRenderEngine2;'}
  15237. {$EXTERNALSYM IRenderEngine2}
  15238. IRenderEngine2 = interface(IUnknown)
  15239. ['{6BEE3A82-66C9-11d2-918F-00C0DF10D434}']
  15240. (*** IRenderEngine2 methods ***)
  15241. function SetResizerGUID(const ResizerGuid: TGUID): HResult;
  15242. end;
  15243. // used for the smart render engine when it needs to find a compressor
  15244. {$HPPEMIT 'typedef System::DelphiInterface<IFindCompressorCB> _di_IFindCompressorCB;'}
  15245. {$EXTERNALSYM IFindCompressorCB}
  15246. IFindCompressorCB = interface(IUnknown)
  15247. ['{F03FA8DE-879A-4D59-9B2C-26BB1CF83461}']
  15248. (*** IFindCompressorCB methods ***)
  15249. function GetCompressor(var pType: TAMMediaType; var pCompType: TAMMediaType;
  15250. out ppFilter: IBaseFilter): HResult; stdcall;
  15251. end;
  15252. {$HPPEMIT 'typedef System::DelphiInterface<ISmartRenderEngine> _di_ISmartRenderEngine;'}
  15253. {$EXTERNALSYM ISmartRenderEngine}
  15254. ISmartRenderEngine = interface(IUnknown)
  15255. ['{F03FA8CE-879A-4D59-9B2C-26BB1CF83461}']
  15256. (*** ISmartRenderEngine methods ***)
  15257. function SetGroupCompressor(Group: longint; pCompressor: IBaseFilter): HResult; stdcall;
  15258. function GetGroupCompressor(Group: longint; var pCompressor: IBaseFilter): HResult; stdcall;
  15259. function SetFindCompressorCB(pCallback: IFindCompressorCB): HResult; stdcall;
  15260. end;
  15261. IAMTimelineGroup = interface;
  15262. ////////////////////////////////////////////////////////////////
  15263. ////////////////////////////////////////////////////////////////
  15264. // TIMELINE TIMELINE TIMELINE TIMELINE TIMELINE TIMELINE
  15265. ////////////////////////////////////////////////////////////////
  15266. ////////////////////////////////////////////////////////////////
  15267. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15268. // Every object on the timeline supports at least this interface.
  15269. // explained methods:
  15270. // Get/SetStartStop - the timeline times at which this object is
  15271. // active. Groups and Tracks have start times of zero.
  15272. // FixTimes - used by the render engine. Rounds the input times
  15273. // to the nearest FPS of the parent Group, for use in setting
  15274. // up the big switch.
  15275. // GetSubObject - get the sub-object which is associated with this
  15276. // timeline object. Each timeline object can carry around a
  15277. // pointer to 'something else'. For our Render Engine, this is
  15278. // a pointer to a filter that gets put into a graph.
  15279. // NOTE: Getting the subobject will FORCE it to load if it's possible
  15280. // to force this. If you don't want it to do this, don't call
  15281. // this function.
  15282. // SetSubObject - see GetSubObject
  15283. // SetSubObjectGUID - instead of giving the node a pointer, you can
  15284. // instead give it a GUID and see if this works instead. The
  15285. // sub-object will attempt to be instantiated when 'necessary'
  15286. // which is really when it's asked for with GetSubObject./
  15287. // !!! a better way to do this perhaps?
  15288. // GetSubObjectLoaded - ask if the sub-object pointer is set
  15289. // Get/SetTimelineType - return the major type which is stored here,
  15290. // used by the API user and the render engine.
  15291. // Get/SetTimelineSubType - see above
  15292. // Get/SetUserID - get and set a number, any number
  15293. // GetGenID - every created object has a unique number to it. Used
  15294. // by the render engine.
  15295. // Get/SetUserName - a storable name, for users of the API
  15296. // Get/SetPropertySetter - the object that will set properties for this
  15297. // object (it will support IPropertySetter and it is created by
  15298. // CPropertySetter)
  15299. // Get/SetUserData - gets the persistant data used by the user of
  15300. // the API.
  15301. // Get/SetMuted - set whether this object should be active or not.
  15302. // Setting a parent of other objects off also turns off the
  15303. // sub-objects.
  15304. // Get/SetLocked - set whether you can edit this object or not.
  15305. // Note: the timeline doesn't enforce this, it just stores
  15306. // a value for convenience.
  15307. // Get/SetDirtyRange -
  15308. // RemoveAll - remove this object, and if in the tree already, all it's
  15309. // sub objects, including children
  15310. // Remove - remove this object, and if in the tree already, all it's
  15311. // sub objects, but not kids
  15312. // GetTimelineNoRef - called internally by the timeline.
  15313. // GetGroupIBelongTo - called internally by the timeline.
  15314. // GetEmbedDepth - find out how many tracks we are a part of
  15315. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15316. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineObj> _di_IAMTimelineObj;'}
  15317. {$EXTERNALSYM IAMTimelineObj}
  15318. IAMTimelineObj = interface(IUnknown)
  15319. ['{78530B77-61F9-11D2-8CAD-00A024580902}']
  15320. (*** IAMTimelineObj methods ***)
  15321. function GetStartStop(var pStart, pStop: TReferenceTime): HResult; stdcall;
  15322. function GetStartStop2(var pStart, pStop: TREFTIME): HResult; stdcall;
  15323. function FixTimes(var pStart, pStop: TReferenceTime): HResult; stdcall;
  15324. function FixTimes2(var pStart, pStop: TREFTIME): HResult; stdcall;
  15325. function SetStartStop(Start, Stop: TReferenceTime): HResult; stdcall;
  15326. function SetStartStop2(Start, Stop: TREFTIME): HResult; stdcall;
  15327. function GetPropertySetter(out pVal: IPropertySetter): HResult; stdcall;
  15328. function SetPropertySetter(newVal: IPropertySetter): HResult; stdcall;
  15329. function GetSubObject(out pVal: IUnknown): HResult; stdcall;
  15330. function SetSubObject(newVal: IUnknown): HResult; stdcall;
  15331. function SetSubObjectGUID(newVal: TGUID): HResult; stdcall;
  15332. function SetSubObjectGUIDB(const newVal: WideString): HResult; stdcall;
  15333. function GetSubObjectGUID(var pVal: TGUID): HResult; stdcall;
  15334. function GetSubObjectGUIDB(out pVal: WideString): HResult; stdcall;
  15335. function GetSubObjectLoaded(var pVal: BOOL): HResult; stdcall;
  15336. function GetTimelineType(var pVal: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  15337. function SetTimelineType(newVal: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  15338. function GetUserID(var pVal: longint): HResult; stdcall;
  15339. function SetUserID(newVal: longint): HResult; stdcall;
  15340. function GetGenID(var pVal: longint): HResult; stdcall;
  15341. function GetUserName(out pVal: WideString): HResult; stdcall;
  15342. function SetUserName(const newVal: WideString): HResult; stdcall;
  15343. function GetUserData(var pData: PByte; var pSize: Integer): HResult; stdcall;
  15344. function SetUserData(var pData: Byte; Size: Integer): HResult; stdcall;
  15345. function GetMuted(var pVal: BOOL): HResult; stdcall;
  15346. function SetMuted(newVal: BOOL): HResult; stdcall;
  15347. function GetLocked(var pVal: BOOL): HResult; stdcall;
  15348. function SetLocked(newVal: BOOL): HResult; stdcall;
  15349. function GetDirtyRange(var pStart, pStop: TReferenceTime): HResult; stdcall;
  15350. function GetDirtyRange2(var pStart, pStop: TREFTIME): HResult; stdcall;
  15351. function SetDirtyRange(Start, Stop: TReferenceTime): HResult; stdcall;
  15352. function SetDirtyRange2(Start, Stop: TREFTIME): HResult; stdcall;
  15353. function ClearDirty: HResult; stdcall;
  15354. function Remove: HResult; stdcall;
  15355. function RemoveAll: HResult; stdcall;
  15356. function GetTimelineNoRef(var ppResult: IAMTimeline): HResult; stdcall;
  15357. function GetGroupIBelongTo(out ppGroup: IAMTimelineGroup): HResult; stdcall;
  15358. function GetEmbedDepth(var pVal: longint): HResult; stdcall;
  15359. end;
  15360. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15361. // Any object on the timeline that can have an effect put on it
  15362. // implements this interface. This includes sources, tracks, and
  15363. // compositions.
  15364. // explained methods:
  15365. // EffectInsBefore - insert an effect at the given priority onto
  15366. // this object. The effect's times will be clipped within
  15367. // this object's bounds. Use -1 to specify 'at the end' for priority.
  15368. // You cannot have two effects at the same priority.
  15369. // EffectSwapPriorities - swaparoo two effects. Makes undo easier to
  15370. // implement.
  15371. // EffectGetCount - get how many effects are applied to this object.
  15372. // GetEffect - get the nth effect applied to this object
  15373. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15374. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineEffectable> _di_IAMTimelineEffectable;'}
  15375. {$EXTERNALSYM IAMTimelineEffectable}
  15376. IAMTimelineEffectable = interface(IUnknown)
  15377. ['{EAE58537-622E-11D2-8CAD-00A024580902}']
  15378. (*** IAMTimelineEffectable methods ***)
  15379. function EffectInsBefore(pFX: IAMTimelineObj; priority: longint): HResult; stdcall;
  15380. function EffectSwapPriorities(PriorityA, PriorityB: longint): HResult; stdcall;
  15381. function EffectGetCount(var pCount: longint): HResult; stdcall;
  15382. function GetEffect(out ppFx: IAMTimelineObj; Which: longint): HResult; stdcall;
  15383. end;
  15384. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15385. // Any effect on the timeline will support at least this interface.
  15386. // NOTE: The Start/Stop times on this object are RELATIVE to their
  15387. // parent's, as are all start/stop times.
  15388. // explained methods:
  15389. // EffectGetPriority - finds out this effect's priority related to the others.
  15390. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15391. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineEffect> _di_IAMTimelineEffect;'}
  15392. {$EXTERNALSYM IAMTimelineEffect}
  15393. IAMTimelineEffect = interface(IUnknown)
  15394. ['{BCE0C264-622D-11D2-8CAD-00A024580902}']
  15395. (*** IAMTimelineEffect methods ***)
  15396. function EffectGetPriority(var pVal: longint): HResult; stdcall;
  15397. end;
  15398. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15399. // Any object on the timeline that can have a transition put on it
  15400. // implements this interface
  15401. // explained methods:
  15402. // TransAdd - add a transition on this object. Multiple trans's on
  15403. // the same object cannot overlap in time. Transitions' times
  15404. // must lie within the bounds of their parent.
  15405. // TransGetCount - get how many transitions are applied to this
  15406. // object.
  15407. // GetNextTrans - given a time, get the next transition that happens
  15408. // on this object after that time. On exit, the input time is
  15409. // set to the start time of the transition.
  15410. // GetTransAtTime - find a transition forwards or backwards from
  15411. // a given spot. See DEXTERF_TRACK_SEARCH_FLAGS enum.
  15412. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15413. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineTransable> _di_IAMTimelineTransable;'}
  15414. {$EXTERNALSYM IAMTimelineTransable}
  15415. IAMTimelineTransable = interface(IUnknown)
  15416. ['{378FA386-622E-11D2-8CAD-00A024580902}']
  15417. (*** IAMTimelineTransable methods ***)
  15418. function TransAdd(pTrans: IAMTimelineObj): HResult; stdcall;
  15419. function TransGetCount(var pCount: longint): HResult; stdcall;
  15420. function GetNextTrans(out ppTrans: IAMTimelineObj; var pInOut: TReferenceTime): HResult; stdcall;
  15421. function GetNextTrans2(out ppTrans: IAMTimelineObj; var pInOut: TREFTIME): HResult; stdcall;
  15422. function GetTransAtTime(out ppObj: IAMTimelineObj; Time: TReferenceTime; SearchDirection: longint): HResult; stdcall;
  15423. function GetTransAtTime2(out ppObj: IAMTimelineObj; Time: TREFTIME; SearchDirection: longint): HResult; stdcall;
  15424. end;
  15425. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15426. // Any object on the timeline that can be split into two will
  15427. // implement this interface. Namely, source, effects, and transitions
  15428. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15429. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineSplittable> _di_IAMTimelineSplittable;'}
  15430. {$EXTERNALSYM IAMTimelineSplittable}
  15431. IAMTimelineSplittable = interface(IUnknown)
  15432. ['{A0F840A0-D590-11D2-8D55-00A0C9441E20}']
  15433. (*** IAMTimelineSplittable methods ***)
  15434. function SplitAt(Time: TReferenceTime): HResult; stdcall;
  15435. function SplitAt2(Time: TREFTIME): HResult; stdcall;
  15436. end;
  15437. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15438. // Any trans on the timeline will support at least this interface.
  15439. // NOTE: The Start/Stop times on this object are RELATIVE to their
  15440. // parent's, as are all start/stop times.
  15441. // explained methods:
  15442. // GetCutPoint - get where this transition should cut from A to B
  15443. // if the transition were not applied.
  15444. // GetA2B - get if this transition is to go from A->B or B->A.
  15445. // GetBackwards - get if this transition should run backwards.
  15446. // GetCutsOnly - force no transition, force doing a cut
  15447. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15448. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineTrans> _di_IAMTimelineTrans;'}
  15449. {$EXTERNALSYM IAMTimelineTrans}
  15450. IAMTimelineTrans = interface(IUnknown)
  15451. ['{BCE0C265-622D-11D2-8CAD-00A024580902}']
  15452. (*** IAMTimelineTrans methods ***)
  15453. function GetCutPoint(var pTLTime: TReferenceTime): HResult; stdcall;
  15454. function GetCutPoint2(var pTLTime: TREFTIME): HResult; stdcall;
  15455. function SetCutPoint(TLTime: TReferenceTime): HResult; stdcall;
  15456. function SetCutPoint2(TLTime: TREFTIME): HResult; stdcall;
  15457. function GetSwapInputs(var pVal: BOOL): HResult; stdcall;
  15458. function SetSwapInputs(pVal: BOOL): HResult; stdcall;
  15459. function GetCutsOnly(var pVal: BOOL): HResult; stdcall;
  15460. function SetCutsOnly(pVal: BOOL): HResult; stdcall;
  15461. end;
  15462. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15463. // Sources represent any source media object on the timeline.
  15464. // They extend an IAMTimelineObj to include media start and stop
  15465. // times, a media name (which could represent darned near anything),
  15466. // and a StreamNumber, which defines which stream out of a potential
  15467. // many this stream represents from a source clip.
  15468. // explained methods:
  15469. // ModifyStopTime - like calling SetStartStop, but this method just
  15470. // adjusts the tail end of the clip.
  15471. // FixMediaTimes - called by the render engine to round times to
  15472. // this source clip's parent group's FPS.
  15473. // SpliceWithNext - if the next clip after this is the same source
  15474. // and this's stop time matches next's start time, the two
  15475. // will be joined.
  15476. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15477. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineSrc> _di_IAMTimelineSrc;'}
  15478. {$EXTERNALSYM IAMTimelineSrc}
  15479. IAMTimelineSrc = interface(IUnknown)
  15480. ['{78530B79-61F9-11D2-8CAD-00A024580902}']
  15481. (*** IAMTimelineSrc methods ***)
  15482. function GetMediaTimes(var pStart, pStop: TReferenceTime): HResult; stdcall;
  15483. function GetMediaTimes2(var pStart, pStop: TREFTIME): HResult; stdcall;
  15484. function ModifyStopTime(Stop: TReferenceTime): HResult; stdcall;
  15485. function ModifyStopTime2(Stop: TREFTIME): HResult; stdcall;
  15486. function FixMediaTimes(var pStart, pStop: TReferenceTime): HResult; stdcall;
  15487. function FixMediaTimes2(var pStart, pStop: TREFTIME): HResult; stdcall;
  15488. function SetMediaTimes(Start, Stop: TReferenceTime): HResult; stdcall;
  15489. function SetMediaTimes2(Start, Stop: TREFTIME): HResult; stdcall;
  15490. function SetMediaLength(Length: TReferenceTime): HResult; stdcall;
  15491. function SetMediaLength2(Length: TREFTIME): HResult; stdcall;
  15492. function GetMediaLength(var pLength: TReferenceTime): HResult; stdcall;
  15493. function GetMediaLength2(var pLength: TREFTIME): HResult; stdcall;
  15494. function GetMediaName(out pVal: WideString): HResult; stdcall;
  15495. function SetMediaName(const newVal: WideString): HResult; stdcall;
  15496. function SpliceWithNext(pNext: IAMTimelineObj): HResult; stdcall;
  15497. function GetStreamNumber(var pVal: longint): HResult; stdcall;
  15498. function SetStreamNumber(Val: longint): HResult; stdcall;
  15499. function IsNormalRate(var pVal: BOOL): HResult; stdcall;
  15500. // If a source can't figure out its frames per second, this number
  15501. // will be used (eg: Dib sequences). AVI, MPEG, etc. will not need this
  15502. // Use 0 fps to prevent a filename like "ski4.jpg" from using a dib seq
  15503. function GetDefaultFPS(var pFPS: Double): HResult; stdcall;
  15504. function SetDefaultFPS(FPS: Double): HResult; stdcall;
  15505. // !!! This is video specific.. new interface?
  15506. // what kind of stretching? Stretch, crop, or preserve aspect ratio?
  15507. function GetStretchMode(var pnStretchMode: integer): HResult; stdcall;
  15508. function SetStretchMode(nStretchMode: integer): HResult; stdcall;
  15509. end;
  15510. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15511. // Tracks are things that can contain media in them. You can add
  15512. // and remove sources, effects, and transitions from them. Sources
  15513. // are added according to the current insert mode of the timeline.
  15514. // If in OVERLAY mode, moving or adding a source to a time that's
  15515. // already occupied by another source will wipe out any overlapping
  15516. // portion of the underlying source. In InsertMode, everything at
  15517. // the insert point is moved down in time to make room for the
  15518. // new source.
  15519. // explained methods:
  15520. // SrcAdd - add the source to this track. The source's start/stop
  15521. // times must be set up first.
  15522. // GetNextSrc - pass a time in at which you wish to find a source
  15523. // and it will return the first source which occurs after the
  15524. // given time.
  15525. // MoveEverythingBy - bump a bunch of objects a certain direction
  15526. // on the track by a given time.
  15527. // GetSourcesCount - how many sources are on this track?
  15528. // AreYouBlank - do you contain anything at all?
  15529. // GetSrcAtTime - find a source at a given time. SearchDirection
  15530. // is which way to search. -1 = backwards, 1 = forwards
  15531. // MakeSpace - !!! what does this do, anyhow?
  15532. // RemoveSlice - !!! what does this do, anyhow?
  15533. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15534. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineTrack> _di_IAMTimelineTrack;'}
  15535. {$EXTERNALSYM IAMTimelineTrack}
  15536. IAMTimelineTrack = interface(IUnknown)
  15537. ['{EAE58538-622E-11D2-8CAD-00A024580902}']
  15538. (*** IAMTimelineTrack methods ***)
  15539. function SrcAdd(pSource: IAMTimelineObj): HResult; stdcall;
  15540. function GetNextSrc(out ppSrc: IAMTimelineObj; var pInOut: TReferenceTime): HResult; stdcall;
  15541. function GetNextSrc2(out ppSrc: IAMTimelineObj; var pInOut: TREFTIME): HResult; stdcall;
  15542. function MoveEverythingBy(Start, MoveBy: TReferenceTime): HResult; stdcall;
  15543. function MoveEverythingBy2(Start, MoveBy: TREFTIME): HResult; stdcall;
  15544. function GetSourcesCount(var pVal: longint): HResult; stdcall;
  15545. function AreYouBlank(var pVal: longint): HResult; stdcall;
  15546. function GetSrcAtTime(out ppSrc: IAMTimelineObj; Time: TReferenceTime; SearchDirection: longint): HResult; stdcall;
  15547. function GetSrcAtTime2(out ppSrc: IAMTimelineObj; Time: TREFTIME; SearchDirection: longint): HResult; stdcall;
  15548. function InsertSpace(rtStart, rtEnd: TReferenceTime): HResult; stdcall;
  15549. function InsertSpace2(rtStart, rtEnd: TREFTIME): HResult; stdcall;
  15550. function ZeroBetween(rtStart, rtEnd: TReferenceTime): HResult; stdcall;
  15551. function ZeroBetween2(rtStart, rtEnd: TREFTIME): HResult; stdcall;
  15552. function GetNextSrcEx(pLast: IAMTimelineObj; out ppNext: IAMTimelineObj): HResult; stdcall;
  15553. end;
  15554. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15555. // This virtual track interface is shared by both the compositions
  15556. // and tracks (and groups).
  15557. // explained methods:
  15558. // TrackGetPriority - used by rendering objects which need to know this.
  15559. // SetTrackDirty - !!! not sure if this is useful.
  15560. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15561. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineVirtualTrack> _di_IAMTimelineVirtualTrack;'}
  15562. {$EXTERNALSYM IAMTimelineVirtualTrack}
  15563. IAMTimelineVirtualTrack = interface(IUnknown)
  15564. ['{A8ED5F80-C2C7-11D2-8D39-00A0C9441E20}']
  15565. (*** IAMTimelineVirtualTrack methods ***)
  15566. function TrackGetPriority(var pPriority: longint): HResult; stdcall;
  15567. function SetTrackDirty: HResult; stdcall;
  15568. end;
  15569. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15570. // Compositions are like tracks in the sense that they also
  15571. // implement IAMVirtualTrack and you can put transitions and effects
  15572. // on them, but they really are the SUM of those tracks that they
  15573. // contain. They are "embedded" compositions. They should only contain
  15574. // media of one particular type (like all video or all audio), but
  15575. // this is not enforced. You can add a composition to another
  15576. // composition with VTrackInsBefore, just like you can add a track.
  15577. // The very top composition to which all other comps and tracks belong
  15578. // is a Group, which supports I-AMTimelineGroup as well as I-AMTimelineComp.
  15579. // explained methods:
  15580. // VTrackInsBefore - does NOT mean VideoTrack. Means Virtual Track.
  15581. // Adds a virtual track to a composition at a given priority.
  15582. // use -1 to mean "at the end"
  15583. // VTrackSwapPriorities - switch two vtracks around.
  15584. // VTrackGetCount - get how many vtracks this comp contains.
  15585. // GetVTrack - you get the idea
  15586. // GetCountOfType - Get the total number of these objects this comp
  15587. // and all it's vtracks (recursively) contains. !!! this may be dead.
  15588. // GetRecursiveLayerOfType - given a number, returns a given track. This
  15589. // is done recursively. You need to pass in a pointer to the number,
  15590. // and it will be modified upon exit to an unknown value. DO NOT
  15591. // CALL THE VERSION WITH THE POINTER!
  15592. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15593. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineComp> _di_IAMTimelineComp;'}
  15594. {$EXTERNALSYM IAMTimelineComp}
  15595. IAMTimelineComp = interface(IUnknown)
  15596. ['{EAE58536-622E-11D2-8CAD-00A024580902}']
  15597. (*** IAMTimelineComp methods ***)
  15598. function VTrackInsBefore(pVirtualTrack: IAMTimelineObj; priority: longint): HResult; stdcall;
  15599. function VTrackSwapPriorities(VirtualTrackA, VirtualTrackB: longint): HResult; stdcall;
  15600. function VTrackGetCount(var pVal: longint): HResult; stdcall;
  15601. function GetVTrack(out ppVirtualTrack: IAMTimelineObj; Which: longint): HResult; stdcall;
  15602. function GetCountOfType(var pVal, pValWithComps: longint; majortype: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  15603. function GetRecursiveLayerOfType(out ppVirtualTrack: IAMTimelineObj; WhichLayer: longint;
  15604. Type_: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  15605. function GetRecursiveLayerOfTypeI(out ppVirtualTrack: IAMTimelineObj;
  15606. var pWhichLayer: longint; Type_: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  15607. function GetNextVTrack(pVirtualTrack: IAMTimelineObj; out ppNextVirtualTrack: IAMTimelineObj): HResult; stdcall;
  15608. end;
  15609. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15610. // Groups represent the topmost composition in a timeline. Every
  15611. // group should contain media of only one major type (like all video).
  15612. // The timeline can contain multiple groups, see it's interface for
  15613. // this. Each group has a particular "media type" that you can get/set
  15614. // which help identify it. Each group has an associated FPS which
  15615. // is used by the render engine in setting up the big switch. All
  15616. // cuts on the timeline will happen rounded to this nearest FPS for
  15617. // this particular group. Each group has a priority which enables
  15618. // writing out multiple-stream files with 1 or more streams of the
  15619. // same type. (Like a 2 video stream AVI file).
  15620. // explained methods:
  15621. // SetTimeline - this is called internally when the group is added.
  15622. // Do not call this.
  15623. // GetTimeline - get the timeline this group belongs to.
  15624. // GetPriority - get this group's priority
  15625. // Get/SetOutputFPS - explained above
  15626. // SetMediaTypeForVB - method for VB. Pass in 0 for video, 1 for audio
  15627. // SetRecompFormatFromSource - set the recompress format based on the
  15628. // source that's loaded or set in the IAMTimelineSrc
  15629. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15630. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimelineGroup> _di_IAMTimelineGroup;'}
  15631. {$EXTERNALSYM IAMTimelineGroup}
  15632. IAMTimelineGroup = interface(IUnknown)
  15633. ['{9EED4F00-B8A6-11D2-8023-00C0DF10D434}']
  15634. (*** IAMTimelineGroup methods ***)
  15635. function SetTimeline(pTimeline: IAMTimeline): HResult; stdcall;
  15636. function GetTimeline(out ppTimeline: IAMTimeline): HResult; stdcall;
  15637. function GetPriority(var pPriority: longint): HResult; stdcall;
  15638. function GetMediaType(out value: TAMMediaType): HResult; stdcall;
  15639. function SetMediaType(value: PAMMediaType): HResult; stdcall;
  15640. function SetOutputFPS(FPS: Double): HResult; stdcall;
  15641. function GetOutputFPS(var pFPS: Double): HResult; stdcall;
  15642. function SetGroupName(const pGroupName: WideString): HResult; stdcall;
  15643. function GetGroupName(out pGroupName: WideString): HResult; stdcall;
  15644. function SetPreviewMode(fPreview: BOOL): HResult; stdcall;
  15645. function GetPreviewMode(var pfPreview: BOOL): HResult; stdcall;
  15646. function SetMediaTypeForVB(Val: longint): HResult; stdcall;
  15647. function GetOutputBuffering(out pnBuffer: integer): HResult; stdcall;
  15648. function SetOutputBuffering(nBuffer: integer): HResult; stdcall;
  15649. function SetSmartRecompressFormat(var pFormat: longint): HResult; stdcall;
  15650. function GetSmartRecompressFormat(ppFormat: Plongint): HResult; stdcall;
  15651. function IsSmartRecompressFormatSet(var pVal: BOOL): HResult; stdcall;
  15652. function IsRecompressFormatDirty(var pVal: BOOL): HResult; stdcall;
  15653. function ClearRecompressFormatDirty: HResult; stdcall;
  15654. function SetRecompFormatFromSource(pSource: IAMTimelineSrc): HResult; stdcall;
  15655. end;
  15656. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15657. // The main timeline. This is the base object you use to set
  15658. // properties of the timeline as a whole, and to create blank
  15659. // objects for use within the timeline. You cannot create the
  15660. // objects using COM methods, you must go through the timeline to
  15661. // create this. That's because certain information is set before
  15662. // handing the object back to you. Every object created by the
  15663. // timeline will support at LEAST IAMTimelineObj. For any timeline,
  15664. // it can have one or more "groups" that it knows about. Each group
  15665. // has the capability to hold a complete sub-tree containing media
  15666. // that is all of one type. This logical seperation is used for the
  15667. // rendering engine, but is not strictly enforced.
  15668. // explained methods:
  15669. // CreateEmptyNode - pass in a mid type and it will pass back
  15670. // an object of the type you requested.
  15671. // AddGroup - add a created group to the tree
  15672. // RemGroupFromList - make sure timeline no longer knows about this group.
  15673. // does NOT do anything to the group itself. Normally the user
  15674. // does not want to call this, it's called from the Group's Remove( ) method.
  15675. // GetGroup - get a certain group
  15676. // GetGroupCount - get how many groups
  15677. // ClearAllGroups - clear everything
  15678. // GetInsertMode - ask what the insert mode is, overlay or insert
  15679. // SetInsertMode - set whether to insert or overlay
  15680. // EnableTransitions - turn transitions on or off as a whole
  15681. // EnableEffects - same deal.
  15682. // SetIntererstRange - discard sub-objects outside of a given
  15683. // time range, to save memory/resources
  15684. // Get/SetDefaultFPS - set the 'default' FPS for this timeline,
  15685. // the RenderEngine reads this information for setting itself up
  15686. // by default.
  15687. // GetCountOfType - ask for how many of a given thing are in a given
  15688. // group. !!! this may be a useless function.
  15689. // !!! not implemented
  15690. // IsDirty - asks if anything in the timeline needs to be redrawn
  15691. // GetDirtyRange - same deal
  15692. // ValidateSourceNames - make sure the filenames in the sources
  15693. // really exist. Use the same enum flags as the render engine
  15694. // uses for SetSourceNameValidation. Source's filenames will be
  15695. // changed to those of the found ones in the timeline.
  15696. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15697. {$HPPEMIT 'typedef System::DelphiInterface<IAMTimeline> _di_IAMTimeline;'}
  15698. {$EXTERNALSYM IAMTimeline}
  15699. IAMTimeline = interface(IUnknown)
  15700. ['{78530B74-61F9-11D2-8CAD-00A024580902}']
  15701. (*** IAMTimeline methods ***)
  15702. function CreateEmptyNode(out ppObj: IAMTimelineObj; Type_: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  15703. function AddGroup(pGroup: IAMTimelineObj): HResult; stdcall;
  15704. function RemGroupFromList(pGroup: IAMTimelineObj): HResult; stdcall;
  15705. function GetGroup(out ppGroup: IAMTimelineObj; WhichGroup: longint): HResult; stdcall;
  15706. function GetGroupCount(var pCount: longint): HResult; stdcall;
  15707. function ClearAllGroups: HResult; stdcall;
  15708. function GetInsertMode(var pMode: longint): HResult; stdcall;
  15709. function SetInsertMode(Mode: longint): HResult; stdcall;
  15710. function EnableTransitions(fEnabled: BOOL): HResult; stdcall;
  15711. function TransitionsEnabled(var pfEnabled: BOOL): HResult; stdcall;
  15712. function EnableEffects(fEnabled: BOOL): HResult; stdcall;
  15713. function EffectsEnabled(var pfEnabled: BOOL): HResult; stdcall;
  15714. function SetInterestRange(Start, Stop: TReferenceTime): HResult; stdcall;
  15715. function GetDuration(var pDuration: TReferenceTime): HResult; stdcall;
  15716. function GetDuration2(var pDuration: Double): HResult; stdcall;
  15717. function SetDefaultFPS(FPS: Double): HResult; stdcall;
  15718. function GetDefaultFPS(var pFPS: Double): HResult; stdcall;
  15719. function IsDirty(var pDirty: BOOL): HResult; stdcall;
  15720. function GetDirtyRange(var pStart, pStop: TReferenceTime): HResult; stdcall;
  15721. function GetCountOfType(Group: longint; var pVal, pValWithComps: longint;
  15722. majortype: integer): HResult; stdcall; // TIMELINE_MAJOR_TYPE
  15723. function ValidateSourceNames(ValidateFlags: longint; pOverride: IMediaLocator;
  15724. NotifyEventHandle: integer): HResult; stdcall;
  15725. function SetDefaultTransition(const pGuid: TGUID): HResult; stdcall;
  15726. function GetDefaultTransition(var pGuid: TGUID): HResult; stdcall;
  15727. function SetDefaultEffect(const pGuid: TGUID): HResult; stdcall;
  15728. function GetDefaultEffect(var pGuid: TGUID): HResult; stdcall;
  15729. function SetDefaultTransitionB(const pGuid: WideString): HResult; stdcall;
  15730. function GetDefaultTransitionB(out pGuid: WideString): HResult; stdcall;
  15731. function SetDefaultEffectB(const pGuid: WideString): HResult; stdcall;
  15732. function GetDefaultEffectB(out pGuid: WideString): HResult; stdcall;
  15733. end;
  15734. ////////////////////////////////////////////////////////////////
  15735. ////////////////////////////////////////////////////////////////
  15736. // XML STUFF --- XML STUFF --- XML STUFF --- XML STUFF --- XML
  15737. ////////////////////////////////////////////////////////////////
  15738. ////////////////////////////////////////////////////////////////
  15739. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  15740. // Xml2Dex - converts back and forth between XML and a dexter project
  15741. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  15742. {$HPPEMIT 'typedef System::DelphiInterface<IXml2Dex> _di_IXml2Dex;'}
  15743. {$EXTERNALSYM IXml2Dex}
  15744. IXml2Dex = interface(IDispatch)
  15745. ['{18C628ED-962A-11D2-8D08-00A0C9441E20}']
  15746. (*** IXml2Dex methods ***)
  15747. function CreateGraphFromFile(out ppGraph: IUnknown; pTimeline: IUnknown;
  15748. const Filename: WideString): HResult; stdcall;
  15749. function WriteGrfFile(pGraph: IUnknown; const Filename: WideString): HResult; stdcall;
  15750. function WriteXMLFile(pTimeline: IUnknown; const Filename: WideString): HResult; stdcall;
  15751. function ReadXMLFile(pTimeline: IUnknown; const XMLName: WideString): HResult; stdcall;
  15752. function Delete(pTimeline: IUnknown; dStart, dEnd: Double): HResult; stdcall;
  15753. function WriteXMLPart(pTimeline: IUnknown; dStart, dEnd: Double;
  15754. const Filename: WideString): HResult; stdcall;
  15755. function PasteXMLFile(pTimeline: IUnknown; dStart: Double; const Filename: WideString): HResult; stdcall;
  15756. function CopyXML(pTimeline: IUnknown; dStart, dEnd: Double): HResult; stdcall;
  15757. function PasteXML(pTimeline: IUnknown; dStart: Double): HResult; stdcall;
  15758. function Reset: HResult; stdcall;
  15759. function ReadXML(pTimeline: IUnknown; pxml: IUnknown): HResult; stdcall;
  15760. function WriteXML(pTimeline: IUnknown; var pbstrXML: WideString): HResult; stdcall;
  15761. end;
  15762. ////////////////////////////////////////////////////////////////
  15763. ////////////////////////////////////////////////////////////////
  15764. // USEFUL HELPER INTERFACES
  15765. ////////////////////////////////////////////////////////////////
  15766. ////////////////////////////////////////////////////////////////
  15767. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  15768. // IAMErrorLog - an interface that receives error information from
  15769. // a timeline or a render engine.
  15770. //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  15771. {$HPPEMIT 'typedef System::DelphiInterface<IAMErrorLog> _di_IAMErrorLog;'}
  15772. {$EXTERNALSYM IAMErrorLog}
  15773. IAMErrorLog = interface(IUnknown)
  15774. ['{E43E73A2-0EFA-11D3-9601-00A0C9441E20}']
  15775. (*** IAMErrorLog methods ***)
  15776. function LogError(Severity: longint; const pErrorString: WideString; ErrorCode: longint;
  15777. HResult: longint; var pExtraInfo: OleVariant): HResult; stdcall;
  15778. end;
  15779. {$HPPEMIT 'typedef System::DelphiInterface<IAMSetErrorLog> _di_IAMSetErrorLog;'}
  15780. {$EXTERNALSYM IAMSetErrorLog}
  15781. IAMSetErrorLog = interface(IUnknown)
  15782. ['{963566DA-BE21-4EAF-88E9-35704F8F52A1}']
  15783. (*** IAMSetErrorLog methods ***)
  15784. function get_ErrorLog(out pVal: IAMErrorLog): HResult; stdcall;
  15785. function put_ErrorLog(pVal: IAMErrorLog): HResult; stdcall;
  15786. end;
  15787. {$HPPEMIT 'typedef System::DelphiInterface<ISampleGrabberCB> _di_ISampleGrabberCB;'}
  15788. {$EXTERNALSYM ISampleGrabberCB}
  15789. ISampleGrabberCB = interface(IUnknown)
  15790. ['{0579154A-2B53-4994-B0D0-E773148EFF85}']
  15791. (*** ISampleGrabberCB methods ***)
  15792. function SampleCB(SampleTime: Double; pSample: IMediaSample): HResult; stdcall;
  15793. function BufferCB(SampleTime: Double; pBuffer: PByte; BufferLen: longint): HResult; stdcall;
  15794. end;
  15795. {$HPPEMIT 'typedef System::DelphiInterface<ISampleGrabber> _di_ISampleGrabber;'}
  15796. {$EXTERNALSYM ISampleGrabber}
  15797. ISampleGrabber = interface(IUnknown)
  15798. ['{6B652FFF-11FE-4FCE-92AD-0266B5D7C78F}']
  15799. (*** ISampleGrabber methods ***)
  15800. // set this to have the filter immediate stop after
  15801. // garnishing a sample
  15802. function SetOneShot(OneShot: BOOL): HResult; stdcall;
  15803. // set what media type we connect to. It can be partially
  15804. // specified by setting only the major type, OR the major and
  15805. // subtype, OR major, subtype, and the formattype.
  15806. function SetMediaType(var pType: TAMMediaType): HResult; stdcall;
  15807. // after something's connected to this filter, find out
  15808. // what it is
  15809. function GetConnectedMediaType(out pType: TAMMediaType): HResult; stdcall;
  15810. // call this to buffer incoming samples, so the next two methods will work
  15811. // If this is not called, the next two methods will return
  15812. // E_INVALIDARG
  15813. function SetBufferSamples(BufferThem: BOOL): HResult; stdcall;
  15814. // pass in NULL for pBuffer to get out the buffer size you need to
  15815. // allocate. This will NOT return a pointer to a compressed dib
  15816. // any longer! It will return the IMediaSample's GetPointer buffer.
  15817. function GetCurrentBuffer(var pBufferSize: longint; pBuffer: Pointer): HResult; stdcall;
  15818. // return the currently buffered sample
  15819. function GetCurrentSample(out ppSample: IMediaSample): HResult; stdcall;
  15820. // if this callback is set, then it will be called for
  15821. // every sample passing through the filter. Do not take a long time
  15822. // in the callback for smooth playback (obviously!)
  15823. function SetCallback(pCallback: ISampleGrabberCB; WhichMethodToCallback: longint): HResult; stdcall;
  15824. end;
  15825. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15826. // resize the input video to an output size, for uniformity within DES.
  15827. // DES will set the output media type and probably also put_Size. By setting
  15828. // the output media type, DES is stating the resizer must produce only that
  15829. // media type on the output pin, unless it is succeeded by a put_Size call.
  15830. // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  15831. {$HPPEMIT 'typedef System::DelphiInterface<IResize> _di_IResize;'}
  15832. {$EXTERNALSYM IResize}
  15833. IResize = interface(IUnknown)
  15834. ['{4ada63a0-72d5-11d2-952a-0060081840bc}']
  15835. (*** IResize methods ***)
  15836. function get_Size(out piHeight, piWidth: Integer; out pFlag: LongInt): HResult; stdcall;
  15837. function get_InputSize(out piHeight, piWidth: Integer): HResult; stdcall;
  15838. function put_Size(Height, Width: Integer; Flag: LongInt): HResult; stdcall;
  15839. function get_MediaType(out pmt: TAMMediaType): HResult; stdcall;
  15840. function put_MediaType(pmt: PAMMediaType): HResult; stdcall;
  15841. end;
  15842. const
  15843. E_NOTINTREE = HResult($80040400);
  15844. {$EXTERNALSYM E_NOTINTREE}
  15845. E_RENDER_ENGINE_IS_BROKEN = HResult($80040401);
  15846. {$EXTERNALSYM E_RENDER_ENGINE_IS_BROKEN}
  15847. E_MUST_INIT_RENDERER = HResult($80040402);
  15848. {$EXTERNALSYM E_MUST_INIT_RENDERER}
  15849. E_NOTDETERMINED = HResult($80040403);
  15850. {$EXTERNALSYM E_NOTDETERMINED}
  15851. E_NO_TIMELINE = HResult($80040404);
  15852. {$EXTERNALSYM E_NO_TIMELINE}
  15853. S_WARN_OUTPUTRESET = 40404;
  15854. {$EXTERNALSYM S_WARN_OUTPUTRESET}
  15855. // These codes are given to the app in IAMErrorLog to help identify what went wrong
  15856. // Filename doesn't exist, or DShow doesn't recognize the filetype
  15857. // EXTRA - filename
  15858. DEX_IDS_BAD_SOURCE_NAME = 1400;
  15859. {$EXTERNALSYM DEX_IDS_BAD_SOURCE_NAME}
  15860. // Filename doesn't exist or contains unknown data
  15861. // EXTRA - filename (maybe no codec?)
  15862. DEX_IDS_BAD_SOURCE_NAME2 = 1401;
  15863. {$EXTERNALSYM DEX_IDS_BAD_SOURCE_NAME2}
  15864. // filename was required, but wasn't given
  15865. DEX_IDS_MISSING_SOURCE_NAME = 1402;
  15866. {$EXTERNALSYM DEX_IDS_MISSING_SOURCE_NAME}
  15867. // cannot parse data provided by this source
  15868. // !!! what source?
  15869. DEX_IDS_UNKNOWN_SOURCE = 1403;
  15870. {$EXTERNALSYM DEX_IDS_UNKNOWN_SOURCE}
  15871. // unexpected error - some DShow component not installed correctly
  15872. DEX_IDS_INSTALL_PROBLEM = 1404;
  15873. {$EXTERNALSYM DEX_IDS_INSTALL_PROBLEM}
  15874. // Source filter does not accept filenames
  15875. // !!! What source?
  15876. DEX_IDS_NO_SOURCE_NAMES = 1405;
  15877. {$EXTERNALSYM DEX_IDS_NO_SOURCE_NAMES}
  15878. // The group's mediatype is not supported
  15879. // EXTRA - gives you an integer group number
  15880. DEX_IDS_BAD_MEDIATYPE = 1406;
  15881. {$EXTERNALSYM DEX_IDS_BAD_MEDIATYPE}
  15882. // Invalid stream number for a source
  15883. // EXTRA - gives the stream number !!! should identify which source!
  15884. DEX_IDS_STREAM_NUMBER = 1407;
  15885. {$EXTERNALSYM DEX_IDS_STREAM_NUMBER}
  15886. // You ran out of memory
  15887. DEX_IDS_OUTOFMEMORY = 1408;
  15888. {$EXTERNALSYM DEX_IDS_OUTOFMEMORY}
  15889. // One bitmap in a sequence was not the same type as the others
  15890. // EXTRA - gives the bitmap name
  15891. DEX_IDS_DIBSEQ_NOTALLSAME = 1409;
  15892. {$EXTERNALSYM DEX_IDS_DIBSEQ_NOTALLSAME}
  15893. // Clip's mediatimes are invalid, or DibSeq too short, or a previous error caused this
  15894. // !!! Needs to give the clip name
  15895. DEX_IDS_CLIPTOOSHORT = 1410;
  15896. {$EXTERNALSYM DEX_IDS_CLIPTOOSHORT}
  15897. // Clsid of FX/Transition is not a DirectX Transform
  15898. // EXTRA - gives the CLSID
  15899. DEX_IDS_INVALID_DXT = 1411;
  15900. {$EXTERNALSYM DEX_IDS_INVALID_DXT}
  15901. // Default FX/Transition Clsid is not a DirectX Transform"
  15902. // EXTRA - gives the CLSID
  15903. DEX_IDS_INVALID_DEFAULT_DXT = 1412;
  15904. {$EXTERNALSYM DEX_IDS_INVALID_DEFAULT_DXT}
  15905. // Your version of DX doesn't support 3D transforms"
  15906. // EXTRA - gives the CLSID of the 3D transform you tried to use
  15907. DEX_IDS_NO_3D = 1413;
  15908. {$EXTERNALSYM DEX_IDS_NO_3D}
  15909. // This DirectX Transform is not the right kind, or is broken
  15910. // EXTRA - gives the CLSID of the broken transform
  15911. DEX_IDS_BROKEN_DXT = 1414;
  15912. {$EXTERNALSYM DEX_IDS_BROKEN_DXT}
  15913. // No such property exists on an object
  15914. // EXTRA - gives the name of the property (if given as a string)
  15915. DEX_IDS_NO_SUCH_PROPERTY = 1415;
  15916. {$EXTERNALSYM DEX_IDS_NO_SUCH_PROPERTY}
  15917. // Illegal value for a property
  15918. // EXTRA - gives the VARIANT value that was illegal
  15919. DEX_IDS_ILLEGAL_PROPERTY_VAL = 1416;
  15920. {$EXTERNALSYM DEX_IDS_ILLEGAL_PROPERTY_VAL}
  15921. // Syntax error in XML file at line:
  15922. // EXTRA - gives I4 line number, if available
  15923. DEX_IDS_INVALID_XML = 1417;
  15924. {$EXTERNALSYM DEX_IDS_INVALID_XML}
  15925. // Can't find filter specified in XML by Category and Instance
  15926. // EXTRA - gives friendly name (instance)
  15927. DEX_IDS_CANT_FIND_FILTER = 1418;
  15928. {$EXTERNALSYM DEX_IDS_CANT_FIND_FILTER}
  15929. // Disk error writing XML file
  15930. DEX_IDS_DISK_WRITE_ERROR = 1419;
  15931. {$EXTERNALSYM DEX_IDS_DISK_WRITE_ERROR}
  15932. // Clsid not a valid DShow audio effect filter
  15933. // EXTRA - gives the CLSID
  15934. DEX_IDS_INVALID_AUDIO_FX = 1420;
  15935. {$EXTERNALSYM DEX_IDS_INVALID_AUDIO_FX}
  15936. // Cannot find compressor for smart recompression type
  15937. DEX_IDS_CANT_FIND_COMPRESSOR = 1421;
  15938. {$EXTERNALSYM DEX_IDS_CANT_FIND_COMPRESSOR}
  15939. // !!! Here go problems hooking up sources or finding codecs
  15940. // THE FOLLOWING SHOULD NEVER HAPPEN - please call me if they do
  15941. // Unexpected error in parsing the timeline
  15942. DEX_IDS_TIMELINE_PARSE = 1426;
  15943. {$EXTERNALSYM DEX_IDS_TIMELINE_PARSE}
  15944. // Unexpected error building the filtergraph
  15945. DEX_IDS_GRAPH_ERROR = 1427;
  15946. {$EXTERNALSYM DEX_IDS_GRAPH_ERROR}
  15947. // Unexpected error with the internal grid
  15948. DEX_IDS_GRID_ERROR = 1428;
  15949. {$EXTERNALSYM DEX_IDS_GRID_ERROR}
  15950. // Unexpected error getting an interface
  15951. DEX_IDS_INTERFACE_ERROR = 1429;
  15952. {$EXTERNALSYM DEX_IDS_INTERFACE_ERROR}
  15953. // these are the enumeration categories for effects
  15954. //
  15955. CLSID_VideoEffects1Category : TGUID = '{CC7BFB42-F175-11d1-A392-00E0291F3959}';
  15956. {$EXTERNALSYM CLSID_VideoEffects1Category}
  15957. CLSID_VideoEffects2Category : TGUID = '{CC7BFB43-F175-11d1-A392-00E0291F3959}';
  15958. {$EXTERNALSYM CLSID_VideoEffects2Category}
  15959. CLSID_AudioEffects1Category : TGUID = '{cc7bfb44-f175-11d1-a392-00e0291f3959}';
  15960. {$EXTERNALSYM CLSID_AudioEffects1Category}
  15961. CLSID_AudioEffects2Category : TGUID = '{cc7bfb45-f175-11d1-a392-00e0291f3959}';
  15962. {$EXTERNALSYM CLSID_AudioEffects2Category}
  15963. {**************************************************************************}
  15964. {* Module Name: mpeguids.h *}
  15965. {* This file was inadvertently left out of the DirectX by Microsoft *}
  15966. {* Universal ID's for the mpeg decoder property pages. *}
  15967. {* *}
  15968. {* Copyright (c) 1995 - 1997 Microsoft Corporation. All Rights Reserved.*}
  15969. {**************************************************************************}
  15970. IID_IMpegVideoDecoder : TGUID = '{EB1BB270-F71F-11CE-8E85-02608C9BABA2}';
  15971. CLSID_MpegAudioDecodePropertyPage : TGUID = '{CC785860-B2CA-11ce-8D2B-0000E202599C}';
  15972. CLSID_MpegVideoDecodePropertyPage : TGUID = '{E5B4EAA0-B2CA-11ce-8D2B-0000E202599C}';
  15973. CLSID_MMMpeg1VideoCodec : TGUID = '{eafd3a00-a2c7-11d0-b0ac-006097707a2c}';
  15974. VIDEO_DECODER_CLSID : TGUID = '{eafd3a00-a2c7-11d0-b0ac-006097707a2c}';
  15975. CLSID_MMMpeg1AudioCodec : TGUID = '{2cd28f20-a2c8-11d0-b0ac-006097707a2c}';
  15976. AUDIO_DECODER_CLSID : TGUID = '{2cd28f20-a2c8-11d0-b0ac-006097707a2c}';
  15977. type
  15978. // Structure to describe the caps of the mpeg video decoder.
  15979. MPEGVideoDecoderCaps = record
  15980. VideoMaxBitRate: DWORD
  15981. end;
  15982. TMPEGVideoDecoderCaps = MPEGVideoDecoderCaps;
  15983. // --------------------------------------------------------------------------------------
  15984. // Structure to hold the contents of an Mpeg 1 sequence header. //
  15985. // This structure come from mpgvideo.h in DXMedia SDK!! //
  15986. // --------------------------------------------------------------------------------------
  15987. SeqHdrInfo = record //
  15988. Width : LongInt; // Native Width in pixels //
  15989. Height : LongInt; // Native Height in pixels //
  15990. vbv : LongInt; // vbv //
  15991. PictureTime : TReferenceTime; // Time per picture in 100ns units //
  15992. TimePerFrame : LongInt; // Time per picture in MPEG units //
  15993. BitRate : LongInt; // Bits per second //
  15994. XPelsPerMeter : LongInt; // Pel aspect ratio //
  15995. YPelsPerMeter : LongInt; // Pel aspect ratio //
  15996. StartTimeCode : DWORD; // First GOP time code (or -1) //
  15997. ActualHeaderLen : LongInt; // Length of valid bytes in raw seq hdr //
  15998. RawHeader : array[0..139] of Byte; // The real sequence header //
  15999. end; //
  16000. TSeqHdrInfo = SeqHdrInfo;
  16001. // --------------------------------------------------------------------------------------
  16002. // IMpegVideoDecoder not documented...
  16003. IMpegVideoDecoder = interface(IUnknown)
  16004. ['{EB1BB270-F71F-11CE-8E85-02608C9BABA2}']
  16005. (*** IMpegVideoDecoder methods ***)
  16006. procedure get_CurrentDecoderOption(out pOptions: DWORD); stdcall;
  16007. procedure set_CurrentDecoderOption(Options: DWORD); stdcall;
  16008. procedure get_DefaultDecoderOption(out pOptions: DWORD); stdcall;
  16009. procedure set_DefaultDecoderOption(Options: DWORD); stdcall;
  16010. procedure get_QualityMsgProcessing(out pfIgnore: BOOL); stdcall;
  16011. procedure set_QualityMsgProcessing(fIgnore: BOOL); stdcall;
  16012. procedure get_GreyScaleOutput(out pfGrey: BOOL); stdcall;
  16013. procedure set_GreyScaleOutput(fGrey: BOOL); stdcall;
  16014. procedure get_SequenceHeader(out pSeqHdrInfo: TSeqHdrInfo); stdcall;
  16015. procedure get_OutputFormat(out pOutputFormat: DWORD); stdcall;
  16016. procedure get_FrameStatistics(out pIFramesDecoded, pPFramesDecoded, stdcall;
  16017. pBFramesDecoded, pIFramesSkipped, pPFramesSkipped, pBFramesSkipped: DWORD);
  16018. procedure ResetFrameStatistics; stdcall;
  16019. procedure get_DecoderPaletteInfo(lpdwFirstEntry, lpdwLastEntry: PDWORD); stdcall;
  16020. procedure get_DecoderPaletteEntries(dwStartEntry, dwNumEntries: DWORD;
  16021. lppe: PPALETTEENTRY); stdcall;
  16022. procedure get_EncryptionKey(out dwEncrptionKey: DWORD); stdcall;
  16023. procedure put_EncryptionKey(dwEncrptionKey: DWORD); stdcall;
  16024. procedure get_DecoderCaps(out pCaps: TMPEGVideoDecoderCaps); stdcall;
  16025. end;
  16026. //------------------------------------------------------------------------------
  16027. // File: DShowASF.h
  16028. //
  16029. // Copyright (c) 1992-2000, Microsoft Corporation. All rights reserved.
  16030. //------------------------------------------------------------------------------
  16031. const
  16032. IID_IConfigAsfWriter : TGUID = (D1:$45086030;D2:$F7E4;D3:$486a;D4:($B5,$04,$82,$6B,$B5,$79,$2A,$3B));
  16033. {$EXTERNALSYM IID_IConfigAsfWriter}
  16034. // IID_IWMProfile : TGUID = (D1:$96406bdb;D2:$2b2b;D3:$11d3;D4:($b3,$6b,$00,$c0,$4f,$61,$08,$ff));
  16035. type
  16036. // Interface to control the ASF writer
  16037. {$HPPEMIT 'typedef System::DelphiInterface<IConfigAsfWriter> _di_IConfigAsfWriter;'}
  16038. {$EXTERNALSYM IConfigAsfWriter}
  16039. IConfigAsfWriter = interface(IUnknown)
  16040. ['{45086030-F7E4-486a-B504-826BB5792A3B}']
  16041. (*** IConfigAsfWriter methods ***)
  16042. // The user is expected to enumerate profiles using the wmsdk IWMProfileManager
  16043. // method and then pass the desired profile index to the ASF Writer filter via this
  16044. // method. The filter will then try to configure itself for the selected profile.
  16045. //
  16046. // NOTE: These 2 XXXProfileId methods are now obsolete because they assume
  16047. // version 4.0 WMSDK profiles. To configure the filter for later profile
  16048. // versions using a profile index, use the XXXProfile methods which take
  16049. // the IWMProfile* directly.
  16050. function ConfigureFilterUsingProfileId(dwProfileId: DWORD): HResult; stdcall;
  16051. function GetCurrentProfileId(out pdwProfileId: DWORD): HResult; stdcall;
  16052. // configure using a pre-defined wmsdk profile guid
  16053. function ConfigureFilterUsingProfileGuid(const guidProfile: TGUID): HResult; stdcall;
  16054. function GetCurrentProfileGuid(out pProfileGuid: TGUID): HResult; stdcall;
  16055. // Use these methods when a custom profile setup is preferred
  16056. function ConfigureFilterUsingProfile(pProfile: IUnKnown): HResult; stdcall; // IWMProfile in Window Media Format SDK
  16057. function GetCurrentProfile(out ppProfile: IUnKnown): HResult; stdcall; // IWMProfile in Window Media Format SDK
  16058. // allow app to control whether or not to index file
  16059. function SetIndexMode(bIndexFile: BOOL): HResult; stdcall;
  16060. function GetIndexMode(out pbIndexFile: BOOL): HResult; stdcall;
  16061. end;
  16062. //------------------------------------------------------------------------------
  16063. // File: AMParse.h
  16064. //
  16065. // Desc: Interface to the parser to get current time. This is useful for
  16066. // multifile playback.
  16067. //
  16068. // Copyright (c) 1996 - 2000, Microsoft Corporation. All rights reserved.
  16069. //------------------------------------------------------------------------------
  16070. const
  16071. IID_IAMParse : TGUID = (D1:$c47a3420;D2:$005c;D3:$11d2;D4:($90,$38,$00,$a0,$c9,$69,$72,$98));
  16072. {$EXTERNALSYM IID_IAMParse}
  16073. type
  16074. // Parser interface - supported by MPEG-2 splitter filter
  16075. {$HPPEMIT 'typedef System::DelphiInterface<IAMParse> _di_IAMParse;'}
  16076. {$EXTERNALSYM IAMParse}
  16077. IAMParse = interface(IUnknown)
  16078. ['{c47a3420-005c-11d2-9038-00a0c9697298}']
  16079. (*** IAMParse methods ***)
  16080. function GetParseTime(out prtCurrent: TReferenceTime): HResult; stdcall;
  16081. function SetParseTime(rtCurrent: TReferenceTime): HResult; stdcall;
  16082. function Flush: HResult; stdcall;
  16083. end;
  16084. //------------------------------------------------------------------------------
  16085. // File: AudEvCod.h
  16086. //
  16087. // Desc: List of Audio device error event codes and the expected params.
  16088. //
  16089. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  16090. //------------------------------------------------------------------------------
  16091. const
  16092. EC_SND_DEVICE_ERROR_BASE = $0200;
  16093. {$EXTERNALSYM EC_SND_DEVICE_ERROR_BASE}
  16094. type
  16095. _tagSND_DEVICE_ERROR = (
  16096. {$IFNDEF COMPILER6_UP}
  16097. SNDDEV_ERROR_INVALID_0,
  16098. SNDDEV_ERROR_Open,
  16099. {$ELSE}
  16100. SNDDEV_ERROR_Open = 1,
  16101. {$ENDIF}
  16102. SNDDEV_ERROR_Close,
  16103. SNDDEV_ERROR_GetCaps,
  16104. SNDDEV_ERROR_PrepareHeader,
  16105. SNDDEV_ERROR_UnprepareHeader,
  16106. SNDDEV_ERROR_Reset,
  16107. SNDDEV_ERROR_Restart,
  16108. SNDDEV_ERROR_GetPosition,
  16109. SNDDEV_ERROR_Write,
  16110. SNDDEV_ERROR_Pause,
  16111. SNDDEV_ERROR_Stop,
  16112. SNDDEV_ERROR_Start,
  16113. SNDDEV_ERROR_AddBuffer,
  16114. SNDDEV_ERROR_Query
  16115. );
  16116. {$EXTERNALSYM _tagSND_DEVICE_ERROR}
  16117. SNDDEV_ERR = _tagSND_DEVICE_ERROR;
  16118. {$EXTERNALSYM SNDDEV_ERR}
  16119. TSndDevErr = SNDDEV_ERR;
  16120. // Sound device error event codes
  16121. // ==============================
  16122. //
  16123. // All audio device error events are always passed on to the application, and are
  16124. // never processed by the filter graph
  16125. const
  16126. EC_SNDDEV_IN_ERROR = EC_SND_DEVICE_ERROR_BASE + $00;
  16127. {$EXTERNALSYM EC_SNDDEV_IN_ERROR}
  16128. EC_SNDDEV_OUT_ERROR = EC_SND_DEVICE_ERROR_BASE + $01;
  16129. {$EXTERNALSYM EC_SNDDEV_OUT_ERROR}
  16130. // Parameters: ( DWORD, DWORD)
  16131. // lParam1 is an enum SND_DEVICE_ERROR which notifies the app how the device was
  16132. // being accessed when the failure occurred.
  16133. //
  16134. // lParam2 is the error returned from the sound device call.
  16135. //------------------------------------------------------------------------------
  16136. // File: ATSMedia.h
  16137. //
  16138. // Desc: Broadcast Driver Architecture Media Definitions for ATSC
  16139. //
  16140. // Copyright (c) 1996 - 2000, Microsoft Corporation. All rights reserved.
  16141. //------------------------------------------------------------------------------
  16142. //===========================================================================
  16143. //
  16144. // ATSC Network Type
  16145. //
  16146. //===========================================================================
  16147. const
  16148. BDANETWORKTYPE_ATSC : TGUID = '{71985F51-1CA1-11d3-9CC8-00C04F7971E0}';
  16149. {$EXTERNALSYM BDANETWORKTYPE_ATSC}
  16150. //------------------------------------------------------------------------------
  16151. // File: MediaErr.h
  16152. //
  16153. // Desc: Shell error codes
  16154. //
  16155. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  16156. //------------------------------------------------------------------------------
  16157. const
  16158. DMO_E_INVALIDSTREAMINDEX = HResult($80040201);
  16159. {$EXTERNALSYM DMO_E_INVALIDSTREAMINDEX}
  16160. DMO_E_INVALIDTYPE = HResult($80040202);
  16161. {$EXTERNALSYM DMO_E_INVALIDTYPE}
  16162. DMO_E_TYPE_NOT_SET = HResult($80040203);
  16163. {$EXTERNALSYM DMO_E_TYPE_NOT_SET}
  16164. DMO_E_NOTACCEPTING = HResult($80040204);
  16165. {$EXTERNALSYM DMO_E_NOTACCEPTING}
  16166. DMO_E_TYPE_NOT_ACCEPTED = HResult($80040205);
  16167. {$EXTERNALSYM DMO_E_TYPE_NOT_ACCEPTED}
  16168. DMO_E_NO_MORE_ITEMS = HResult($80040206);
  16169. {$EXTERNALSYM DMO_E_NO_MORE_ITEMS}
  16170. //------------------------------------------------------------------------------
  16171. // File: MedParam.h
  16172. // Desc: Definition of the IMediaParams and associated interfaces. These
  16173. // interfaces are designed to allow communication of curve-following
  16174. // behaviors for parameters of objects which require dynamic changes
  16175. // to their parameters at run time. All changes are specified by
  16176. // timestamp and curve type to ensure the parameters can be set
  16177. // at sufficient accuracy with predictable behavior on subsequent
  16178. // playback of the same curves.
  16179. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  16180. //------------------------------------------------------------------------------
  16181. const
  16182. IID_IMediaParamInfo : TGUID = '{6d6cbb60-a223-44aa-842f-a2f06750be6d}';
  16183. {$EXTERNALSYM IID_IMediaParamInfo}
  16184. IID_IMediaParams : TGUID = '{6d6cbb61-a223-44aa-842f-a2f06750be6e}';
  16185. {$EXTERNALSYM IID_IMediaParams}
  16186. GUID_TIME_REFERENCE : TGUID = (D1:$93ad712b;D2:$daa0;D3:$4ffe;D4:($bc,$81,$b0,$ce,$50,$f ,$cd,$d9));
  16187. {$EXTERNALSYM GUID_TIME_REFERENCE}
  16188. GUID_TIME_MUSIC : TGUID = (D1:$574c49d ;D2:$5b04;D3:$4b15;D4:($a5,$42,$ae,$28,$20,$30,$11,$7b));
  16189. {$EXTERNALSYM GUID_TIME_MUSIC}
  16190. GUID_TIME_SAMPLES : TGUID = (D1:$a8593d05;D2:$c43 ;D3:$4984;D4:($9a,$63,$97,$af,$9e,$2 ,$c4,$c0));
  16191. {$EXTERNALSYM GUID_TIME_SAMPLES}
  16192. type
  16193. MP_DATA = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Single;
  16194. {$EXTERNALSYM MP_DATA}
  16195. MPData = MP_DATA;
  16196. _MP_Type = (
  16197. MPT_INT,
  16198. MPT_FLOAT,
  16199. MPT_BOOL,
  16200. MPT_ENUM,
  16201. MPT_MAX
  16202. );
  16203. {$EXTERNALSYM _MP_Type}
  16204. MP_TYPE = _MP_Type;
  16205. {$EXTERNALSYM MP_TYPE}
  16206. TMPTYPE = MP_TYPE;
  16207. const
  16208. MPBOOL_TRUE = 1;
  16209. {$EXTERNALSYM MPBOOL_TRUE}
  16210. MPBOOL_FALSE = 0;
  16211. {$EXTERNALSYM MPBOOL_FALSE}
  16212. type
  16213. MP_CURVE_TYPE = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  16214. {$EXTERNALSYM MP_CURVE_TYPE}
  16215. MPCurveType = MP_CURVE_TYPE;
  16216. const
  16217. MP_CURVE_JUMP = $1;
  16218. {$EXTERNALSYM MP_CURVE_JUMP}
  16219. MP_CURVE_LINEAR = $2;
  16220. {$EXTERNALSYM MP_CURVE_LINEAR}
  16221. MP_CURVE_SQUARE = $4;
  16222. {$EXTERNALSYM MP_CURVE_SQUARE}
  16223. MP_CURVE_INVSQUARE = $8;
  16224. {$EXTERNALSYM MP_CURVE_INVSQUARE}
  16225. MP_CURVE_SINE = $10;
  16226. {$EXTERNALSYM MP_CURVE_SINE}
  16227. type
  16228. MP_CAPS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  16229. {$EXTERNALSYM MP_CAPS}
  16230. MPCaps = MP_CAPS;
  16231. const
  16232. MP_CAPS_CURVE_JUMP = MP_CURVE_JUMP;
  16233. {$EXTERNALSYM MP_CAPS_CURVE_JUMP}
  16234. MP_CAPS_CURVE_LINEAR = MP_CURVE_LINEAR;
  16235. {$EXTERNALSYM MP_CAPS_CURVE_LINEAR}
  16236. MP_CAPS_CURVE_SQUARE = MP_CURVE_SQUARE;
  16237. {$EXTERNALSYM MP_CAPS_CURVE_SQUARE}
  16238. MP_CAPS_CURVE_INVSQUARE = MP_CURVE_INVSQUARE;
  16239. {$EXTERNALSYM MP_CAPS_CURVE_INVSQUARE}
  16240. MP_CAPS_CURVE_SINE = MP_CURVE_SINE;
  16241. {$EXTERNALSYM MP_CAPS_CURVE_SINE}
  16242. type
  16243. _MP_PARAMINFO = record
  16244. mpType : TMPType;
  16245. mopCaps : MPCaps;
  16246. mpdMinValue : MPData;
  16247. mpdMaxValue : MPData;
  16248. mpdNeutralValue : MPData;
  16249. szUnitText : array[0..31] of WCHAR;
  16250. szLabel : array[0..31] of WCHAR;
  16251. end;
  16252. {$EXTERNALSYM _MP_PARAMINFO}
  16253. MP_PARAMINFO = _MP_PARAMINFO;
  16254. {$EXTERNALSYM MP_PARAMINFO}
  16255. TMPParamInfo = _MP_PARAMINFO;
  16256. const
  16257. DWORD_ALLPARAMS = -1;
  16258. {$EXTERNALSYM DWORD_ALLPARAMS}
  16259. type
  16260. MP_TIMEDATA = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  16261. {$EXTERNALSYM MP_TIMEDATA}
  16262. MPTimeData = MP_TIMEDATA;
  16263. MP_FLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD;
  16264. {$EXTERNALSYM MP_FLAGS}
  16265. MPFlags = MP_FLAGS;
  16266. const
  16267. MPF_ENVLP_STANDARD = $0;
  16268. {$EXTERNALSYM MPF_ENVLP_STANDARD}
  16269. MPF_ENVLP_BEGIN_CURRENTVAL = $1;
  16270. {$EXTERNALSYM MPF_ENVLP_BEGIN_CURRENTVAL}
  16271. MPF_ENVLP_BEGIN_NEUTRALVAL = $2;
  16272. {$EXTERNALSYM MPF_ENVLP_BEGIN_NEUTRALVAL}
  16273. type
  16274. _MP_ENVELOPE_SEGMENT = record
  16275. rtStart : TReferenceTime;
  16276. rtEnd : TReferenceTime;
  16277. valStart : MPData;
  16278. valEnd : MPData;
  16279. iCurve : MPCURVETYPE;
  16280. flags : MPFlags;
  16281. end;
  16282. {$EXTERNALSYM _MP_ENVELOPE_SEGMENT}
  16283. MP_ENVELOPE_SEGMENT = _MP_ENVELOPE_SEGMENT;
  16284. {$EXTERNALSYM MP_ENVELOPE_SEGMENT}
  16285. TMPEnvelopeSegment = _MP_ENVELOPE_SEGMENT;
  16286. const
  16287. MPF_PUNCHIN_REFTIME = $0;
  16288. {$EXTERNALSYM MPF_PUNCHIN_REFTIME}
  16289. MPF_PUNCHIN_NOW = $1;
  16290. {$EXTERNALSYM MPF_PUNCHIN_NOW}
  16291. MPF_PUNCHIN_STOPPED = $2;
  16292. {$EXTERNALSYM MPF_PUNCHIN_STOPPED}
  16293. type
  16294. {$HPPEMIT 'typedef System::DelphiInterface<IMediaParamInfo> _di_IMediaParamInfo;'}
  16295. {$EXTERNALSYM IMediaParamInfo}
  16296. IMediaParamInfo = interface(IUnknown)
  16297. ['{6d6cbb60-a223-44aa-842f-a2f06750be6d}']
  16298. (*** IMediaParamInfo methods ***)
  16299. function GetParamCount(out pdwParams: DWORD): HResult; stdcall;
  16300. function GetParamInfo(dwParamIndex: DWORD; out pInfo: TMPPARAMINFO): HResult; stdcall;
  16301. function GetParamText(dwParamIndex: DWORD; out ppwchText: PWideChar): HResult; stdcall;
  16302. function GetNumTimeFormats(out pdwNumTimeFormats: DWORD): HResult; stdcall;
  16303. function GetSupportedTimeFormat(dwFormatIndex: DWORD; out pguidTimeFormat: TGUID): HResult; stdcall;
  16304. function GetCurrentTimeFormat(out pguidTimeFormat: TGUID; out pTimeData: MPTimeData): HResult; stdcall;
  16305. end;
  16306. {$HPPEMIT 'typedef System::DelphiInterface<IMediaParams> _di_IMediaParams;'}
  16307. {$EXTERNALSYM IMediaParams}
  16308. IMediaParams = interface(IUnknown)
  16309. ['{6d6cbb61-a223-44aa-842f-a2f06750be6e}']
  16310. (*** IMediaParams methods ***)
  16311. function GetParam(dwParamIndex: DWORD; out pValue: MPData): HResult; stdcall;
  16312. function SetParam(dwParamIndex: DWORD; value: MPData): HResult; stdcall;
  16313. function AddEnvelope(dwParamIndex, cSegments: DWORD; var pEnvelopeSegments: TMPENVELOPESEGMENT): HResult; stdcall;
  16314. function FlushEnvelope(dwParamIndex: DWORD; refTimeStart, refTimeEnd: TReferenceTime): HResult; stdcall;
  16315. function SetTimeFormat(const guidTimeFormat: TGUID; mpTimeData: MPTimeData): HResult; stdcall;
  16316. end;
  16317. //------------------------------------------------------------------------------
  16318. // File: mediaobj.h
  16319. // Desc: Define the interfaces for DirectX Media Objects.
  16320. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  16321. //------------------------------------------------------------------------------
  16322. const
  16323. IID_IMediaBuffer : TGUID = '{59eff8b9-938c-4a26-82f2-95cb84cdc837}';
  16324. {$EXTERNALSYM IID_IMediaBuffer}
  16325. IID_IMediaObject : TGUID = '{d8ad0f58-5494-4102-97c5-ec798e59bcf4}';
  16326. {$EXTERNALSYM IID_IMediaObject}
  16327. IID_IEnumDMO : TGUID = '{2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f}';
  16328. {$EXTERNALSYM IID_IEnumDMO}
  16329. IID_IMediaObjectInPlace : TGUID = '{651b9ad0-0fc7-4aa9-9538-d89931010741}';
  16330. {$EXTERNALSYM IID_IMediaObjectInPlace}
  16331. IID_IDMOQualityControl : TGUID = '{65abea96-cf36-453f-af8a-705e98f16260}';
  16332. {$EXTERNALSYM IID_IDMOQualityControl}
  16333. IID_IDMOVideoOutputOptimizations : TGUID = '{be8f4f4e-5b16-4d29-b350-7f6b5d9298ac}';
  16334. {$EXTERNALSYM IID_IDMOVideoOutputOptimizations}
  16335. type
  16336. // DMO_MEDIA_TYPE structure
  16337. DMO_MEDIA_TYPE = AM_MEDIA_TYPE;
  16338. {$EXTERNALSYM DMO_MEDIA_TYPE}
  16339. PDMOMediaType = ^TDMOMediaType;
  16340. TDMOMediaType = DMO_MEDIA_TYPE;
  16341. const
  16342. // Per-buffer flags that apply to input buffers
  16343. DMO_INPUT_DATA_BUFFERF_SYNCPOINT = $1;
  16344. {$EXTERNALSYM DMO_INPUT_DATA_BUFFERF_SYNCPOINT}
  16345. DMO_INPUT_DATA_BUFFERF_TIME = $2;
  16346. {$EXTERNALSYM DMO_INPUT_DATA_BUFFERF_TIME}
  16347. DMO_INPUT_DATA_BUFFERF_TIMELENGTH = $4;
  16348. {$EXTERNALSYM DMO_INPUT_DATA_BUFFERF_TIMELENGTH}
  16349. // Per-buffer flags that apply to output buffers.
  16350. DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = $1;
  16351. {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT}
  16352. DMO_OUTPUT_DATA_BUFFERF_TIME = $2;
  16353. {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_TIME}
  16354. DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = $4;
  16355. {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH}
  16356. // This flag means the object could have generated more data for this
  16357. // output stream, even with no additional input from any input stream,
  16358. // but the output buffer did not have sufficient room.
  16359. DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = $1000000;
  16360. {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE}
  16361. // Flags returned by GetInputStatus()
  16362. // ACCEPT_DATA indicates that the input stream is ready to accept
  16363. // new data via ProcessInput().
  16364. DMO_INPUT_STATUSF_ACCEPT_DATA = $1;
  16365. {$EXTERNALSYM DMO_INPUT_STATUSF_ACCEPT_DATA}
  16366. // Flags returned by GetInputStreamInfo()
  16367. DMO_INPUT_STREAMF_WHOLE_SAMPLES = $1;
  16368. {$EXTERNALSYM DMO_INPUT_STREAMF_WHOLE_SAMPLES}
  16369. DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = $2;
  16370. {$EXTERNALSYM DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER}
  16371. DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = $4;
  16372. {$EXTERNALSYM DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE}
  16373. DMO_INPUT_STREAMF_HOLDS_BUFFERS = $8;
  16374. {$EXTERNALSYM DMO_INPUT_STREAMF_HOLDS_BUFFERS}
  16375. // Flags returned by GetOutputStreamInfo()
  16376. DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = $1;
  16377. {$EXTERNALSYM DMO_OUTPUT_STREAMF_WHOLE_SAMPLES}
  16378. DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = $2;
  16379. {$EXTERNALSYM DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER}
  16380. DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = $4;
  16381. {$EXTERNALSYM DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE}
  16382. DMO_OUTPUT_STREAMF_DISCARDABLE = $8;
  16383. {$EXTERNALSYM DMO_OUTPUT_STREAMF_DISCARDABLE}
  16384. DMO_OUTPUT_STREAMF_OPTIONAL = $10;
  16385. {$EXTERNALSYM DMO_OUTPUT_STREAMF_OPTIONAL}
  16386. // SetType flags
  16387. DMO_SET_TYPEF_TEST_ONLY = $1;
  16388. {$EXTERNALSYM DMO_SET_TYPEF_TEST_ONLY}
  16389. DMO_SET_TYPEF_CLEAR = $2;
  16390. {$EXTERNALSYM DMO_SET_TYPEF_CLEAR}
  16391. // Process Output Flags
  16392. DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = $1;
  16393. {$EXTERNALSYM DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER}
  16394. type
  16395. // Buffer wrapper interface
  16396. {$HPPEMIT 'typedef System::DelphiInterface<IMediaBuffer> _di_IMediaBuffer;'}
  16397. {$EXTERNALSYM IMediaBuffer}
  16398. IMediaBuffer = interface(IUnknown)
  16399. ['{59eff8b9-938c-4a26-82f2-95cb84cdc837}']
  16400. (*** IMediaBuffer methods ***)
  16401. function SetLength(cbLength: DWORD): HResult; stdcall;
  16402. function GetMaxLength(out pcbMaxLength: DWORD): HResult; stdcall;
  16403. function GetBufferAndLength(out ppBuffer: PByte; // not filled if NULL
  16404. out pcbLength: DWORD // not filled if NULL
  16405. ): HResult; stdcall;
  16406. end;
  16407. // Output buffer info structure: one of these must be passed in for each
  16408. // output stream with every ProcessOutput() call
  16409. // All [out] fields should be
  16410. // assumed undefined if ProcessOutput() failed
  16411. PDMOOutputDataBuffer = ^TDMOOutputDataBuffer;
  16412. _DMO_OUTPUT_DATA_BUFFER = record
  16413. pBuffer : IMediaBuffer; // [in] can be NULL
  16414. // ProcessOutput() must set any appropriate flags and zero out the rest.
  16415. dwStatus : DWORD; // [out] DMO_OUTPUT_DATA_BUFFERF_XXX (INCOMPLETE, etc.)
  16416. // Each of these is valid if the corresponding flag is set in dwStatus
  16417. rtTimestamp : TReferenceTime; // [out]
  16418. rtTimelength : TReferenceTime; // [out]
  16419. end;
  16420. {$EXTERNALSYM _DMO_OUTPUT_DATA_BUFFER}
  16421. DMO_OUTPUT_DATA_BUFFER = _DMO_OUTPUT_DATA_BUFFER;
  16422. {$EXTERNALSYM DMO_OUTPUT_DATA_BUFFER}
  16423. TDMOOutputDataBuffer = _DMO_OUTPUT_DATA_BUFFER;
  16424. PDMO_OUTPUT_DATA_BUFFER = ^_DMO_OUTPUT_DATA_BUFFER;
  16425. {$EXTERNALSYM PDMO_OUTPUT_DATA_BUFFER}
  16426. PDMOOutputDataBufferArray = ^TDMOOutputDataBufferArray;
  16427. TDMOOutputDataBufferArray = array [0..0] of TDMOOutputDataBuffer;
  16428. {$HPPEMIT 'typedef System::DelphiInterface<IMediaObject> _di_IMediaObject;'}
  16429. {$EXTERNALSYM IMediaObject}
  16430. IMediaObject = interface(IUnknown)
  16431. ['{d8ad0f58-5494-4102-97c5-ec798e59bcf4}']
  16432. (*** IMediaObject methods ***)
  16433. function GetStreamCount(out pcInputStreams, pcOutputStreams: DWORD): HResult; stdcall;
  16434. function GetInputStreamInfo(dwInputStreamIndex: DWORD; out pdwFlags: DWORD): HResult; stdcall;
  16435. function GetOutputStreamInfo(dwOutputStreamIndex: DWORD; out pdwFlags: DWORD): HResult; stdcall;
  16436. function GetInputType(dwInputStreamIndex, dwTypeIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  16437. function GetOutputType(dwOutputStreamIndex, dwTypeIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  16438. function SetInputType(dwInputStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult; stdcall;
  16439. function SetOutputType(dwOutputStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult; stdcall;
  16440. function GetInputCurrentType(dwInputStreamIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  16441. function GetOutputCurrentType(dwOutputStreamIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  16442. function GetInputSizeInfo(dwInputStreamIndex: DWORD; out pcbSize, pcbMaxLookahead, pcbAlignment: DWORD): HResult; stdcall;
  16443. function GetOutputSizeInfo(dwOutputStreamIndex: DWORD; out pcbSize, pcbAlignment: DWORD): HResult; stdcall;
  16444. function GetInputMaxLatency(dwInputStreamIndex: DWORD; out prtMaxLatency: TReferenceTime): HResult; stdcall;
  16445. function SetInputMaxLatency(dwInputStreamIndex: DWORD; rtMaxLatency: TReferenceTime): HResult; stdcall;
  16446. function Flush: HResult; stdcall;
  16447. function Discontinuity(dwInputStreamIndex: DWORD): HResult; stdcall;
  16448. function AllocateStreamingResources: HResult; stdcall;
  16449. function FreeStreamingResources: HResult; stdcall;
  16450. function GetInputStatus(dwInputStreamIndex: DWORD; out dwFlags: DWORD): HResult; stdcall;
  16451. function ProcessInput(dwInputStreamIndex: DWORD; pBuffer: IMediaBuffer; dwFlags: DWORD;
  16452. rtTimestamp, rtTimelength: TReferenceTime): HResult; stdcall;
  16453. function ProcessOutput(dwFlags, cOutputBufferCount: DWORD; var pOutputBuffers: TDMOOutputDataBufferArray;
  16454. out pdwStatus: DWORD): HResult; stdcall;
  16455. function Lock(bLock: longint): HResult; stdcall;
  16456. end;
  16457. {$HPPEMIT 'typedef System::DelphiInterface<IEnumDMO> _di_IEnumDMO;'}
  16458. {$EXTERNALSYM IEnumDMO}
  16459. IEnumDMO = interface(IUnknown)
  16460. ['{2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f}']
  16461. (*** IEnumDMO methods ***)
  16462. function Next(cItemsToFetch: DWORD; out pCLSID: TGUID; out Names: PWideChar;
  16463. pcItemsFetched: PDWORD): HResult; stdcall;
  16464. function Skip(cItemsToSkip: DWORD): HResult; stdcall;
  16465. function Reset: HResult; stdcall;
  16466. function Clone(out ppEnum: IEnumDMO): HResult; stdcall;
  16467. end;
  16468. const
  16469. DMO_INPLACE_NORMAL = $0;
  16470. {$EXTERNALSYM DMO_INPLACE_NORMAL}
  16471. DMO_INPLACE_ZERO = $1;
  16472. {$EXTERNALSYM DMO_INPLACE_ZERO}
  16473. type
  16474. {$HPPEMIT 'typedef System::DelphiInterface<IMediaObjectInPlace> _di_IMediaObjectInPlace;'}
  16475. {$EXTERNALSYM IMediaObjectInPlace}
  16476. IMediaObjectInPlace = interface(IUnknown)
  16477. ['{651b9ad0-0fc7-4aa9-9538-d89931010741}']
  16478. (*** IMediaObjectInPlace methods ***)
  16479. function Process(ulSize: ULONG; {in/out} pData: Pointer; refTimeStart: TReferenceTime;
  16480. dwFlags: DWORD): HResult; stdcall;
  16481. function Clone(out ppMediaObject: IMediaObjectInPlace): HResult; stdcall;
  16482. function GetLatency(out pLatencyTime: TReferenceTime): HResult; stdcall;
  16483. end;
  16484. const
  16485. DMO_QUALITY_STATUS_ENABLED = $1;
  16486. {$EXTERNALSYM DMO_QUALITY_STATUS_ENABLED}
  16487. type
  16488. {$HPPEMIT 'typedef System::DelphiInterface<IDMOQualityControl> _di_IDMOQualityControl;'}
  16489. {$EXTERNALSYM IDMOQualityControl}
  16490. IDMOQualityControl = interface(IUnknown)
  16491. ['{65abea96-cf36-453f-af8a-705e98f16260}']
  16492. (*** IDMOQualityControl methods ***)
  16493. function SetNow(rtNow: TReferenceTime): HResult; stdcall;
  16494. function SetStatus(dwFlags: DWORD): HResult; stdcall;
  16495. function GetStatus(out pdwFlags: DWORD): HResult; stdcall;
  16496. end;
  16497. const
  16498. DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = $1;
  16499. {$EXTERNALSYM DMO_VOSF_NEEDS_PREVIOUS_SAMPLE}
  16500. type
  16501. {$HPPEMIT 'typedef System::DelphiInterface<IDMOVideoOutputOptimizations> _di_IDMOVideoOutputOptimizations;'}
  16502. {$EXTERNALSYM IDMOVideoOutputOptimizations}
  16503. IDMOVideoOutputOptimizations = interface(IUnknown)
  16504. ['{be8f4f4e-5b16-4d29-b350-7f6b5d9298ac}']
  16505. (*** IDMOVideoOutputOptimizations methods ***)
  16506. function QueryOperationModePreferences(ulOutputStreamIndex: ULONG;
  16507. var pdwRequestedCapabilities: DWORD): HResult; stdcall;
  16508. function SetOperationMode(ulOutputStreamIndex: ULONG;
  16509. dwEnabledFeatures: DWORD): HResult; stdcall;
  16510. function GetCurrentOperationMode(ulOutputStreamIndex: ULONG;
  16511. var pdwEnabledFeatures: DWORD): HResult; stdcall;
  16512. function GetCurrentSampleRequirements(ulOutputStreamIndex: ULONG;
  16513. var pdwRequestedFeatures: DWORD): HResult; stdcall;
  16514. end;
  16515. (************************************************************************
  16516. * *
  16517. * dmodshow.h -- This module defines the DirectMusic core API's *
  16518. * *
  16519. * Copyright (c) 1998, Microsoft Corp. All rights reserved. *
  16520. * *
  16521. ************************************************************************)
  16522. const
  16523. IID_IDMOWrapperFilter : TGUID = '{52d6f586-9f0f-4824-8fc8-e32ca04930c2}';
  16524. {$EXTERNALSYM IID_IDMOWrapperFilter}
  16525. CLSID_DMOWrapperFilter : TGUID = '{94297043-bd82-4dfd-b0de-8177739c6d20}';
  16526. {$EXTERNALSYM CLSID_DMOWrapperFilter}
  16527. CLSID_DMOFilterCategory : TGUID = '{bcd5796c-bd52-4d30-ab76-70f975b89199}';
  16528. {$EXTERNALSYM CLSID_DMOFilterCategory}
  16529. type
  16530. {$HPPEMIT 'typedef System::DelphiInterface<IDMOWrapperFilter> _di_IDMOWrapperFilter;'}
  16531. {$EXTERNALSYM IDMOWrapperFilter}
  16532. IDMOWrapperFilter = interface(IUnknown)
  16533. ['{52d6f586-9f0f-4824-8fc8-e32ca04930c2}']
  16534. (*** IDMOWrapperFilter methods ***)
  16535. function Init(const clsidDMO, catDMO: TGUID): HResult; stdcall;
  16536. end;
  16537. //------------------------------------------------------------------------------
  16538. // File: DMOReg.h
  16539. //
  16540. // Desc:
  16541. //
  16542. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  16543. //------------------------------------------------------------------------------
  16544. const
  16545. DMOCATEGORY_AUDIO_DECODER : TGUID = '{57f2db8b-e6bb-4513-9d43-dcd2a6593125}';
  16546. {$EXTERNALSYM DMOCATEGORY_AUDIO_DECODER}
  16547. DMOCATEGORY_AUDIO_ENCODER : TGUID = '{33D9A761-90C8-11d0-BD43-00A0C911CE86}';
  16548. {$EXTERNALSYM DMOCATEGORY_AUDIO_ENCODER}
  16549. DMOCATEGORY_VIDEO_DECODER : TGUID = '{4a69b442-28be-4991-969c-b500adf5d8a8}';
  16550. {$EXTERNALSYM DMOCATEGORY_VIDEO_DECODER}
  16551. DMOCATEGORY_VIDEO_ENCODER : TGUID = '{33D9A760-90C8-11d0-BD43-00A0C911CE86}';
  16552. {$EXTERNALSYM DMOCATEGORY_VIDEO_ENCODER}
  16553. DMOCATEGORY_AUDIO_EFFECT : TGUID = '{f3602b3f-0592-48df-a4cd-674721e7ebeb}';
  16554. {$EXTERNALSYM DMOCATEGORY_AUDIO_EFFECT}
  16555. DMOCATEGORY_VIDEO_EFFECT : TGUID = '{d990ee14-776c-4723-be46-3da2f56f10b9}';
  16556. {$EXTERNALSYM DMOCATEGORY_VIDEO_EFFECT}
  16557. DMOCATEGORY_AUDIO_CAPTURE_EFFECT : TGUID = '{f665aaba-3e09-4920-aa5f-219811148f09}';
  16558. {$EXTERNALSYM DMOCATEGORY_AUDIO_CAPTURE_EFFECT}
  16559. // Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1}
  16560. // Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h
  16561. DMOCATEGORY_ACOUSTIC_ECHO_CANCEL : TGUID = '{BF963D80-C559-11D0-8A2B-00A0C9255AC1}';
  16562. {$EXTERNALSYM DMOCATEGORY_ACOUSTIC_ECHO_CANCEL}
  16563. // Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5}
  16564. // Matches KSNODETYPE_AUDIO_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h
  16565. DMOCATEGORY_AUDIO_NOISE_SUPPRESS : TGUID = '{E07F903F-62FD-4e60-8CDD-DEA7236665B5}';
  16566. {$EXTERNALSYM DMOCATEGORY_AUDIO_NOISE_SUPPRESS}
  16567. // Automatic Gain Control {E88C9BA0-C557-11D0-8A2B-00A0C9255AC1}
  16568. // Matches KSNODETYPE_AGC in ksmedia.h
  16569. DMOCATEGORY_AGC : TGUID = '{E88C9BA0-C557-11D0-8A2B-00A0C9255AC1}';
  16570. {$EXTERNALSYM DMOCATEGORY_AGC}
  16571. type
  16572. PDMOPartialMediaType = ^TDMOPartialMediaType;
  16573. _DMO_PARTIAL_MEDIATYPE = record
  16574. type_ : TGUID;
  16575. subtype : TGUID;
  16576. end;
  16577. {$EXTERNALSYM _DMO_PARTIAL_MEDIATYPE}
  16578. DMO_PARTIAL_MEDIATYPE = _DMO_PARTIAL_MEDIATYPE;
  16579. {$EXTERNALSYM DMO_PARTIAL_MEDIATYPE}
  16580. PDMO_PARTIAL_MEDIATYPE = ^DMO_PARTIAL_MEDIATYPE;
  16581. {$EXTERNALSYM PDMO_PARTIAL_MEDIATYPE}
  16582. TDMOPartialMediaType = _DMO_PARTIAL_MEDIATYPE;
  16583. const
  16584. DMO_REGISTERF_IS_KEYED = $00000001;
  16585. {$EXTERNALSYM DMO_REGISTERF_IS_KEYED}
  16586. DMO_ENUMF_INCLUDE_KEYED = $00000001;
  16587. {$EXTERNALSYM DMO_ENUMF_INCLUDE_KEYED}
  16588. type
  16589. TDMOName = array[0..79] of WCHAR;
  16590. function DMORegister(szName: PWideChar; const clsidDMO, guidCategory: TGUID; dwFlags: DWORD; // DMO_REGISTERF_XXX
  16591. // Register all mediatypes supported by the object. This carries no
  16592. // information about which combinations of input/output types would
  16593. // actually work.
  16594. cInTypes: DWORD; const pInTypes: PDMO_PARTIAL_MEDIATYPE; cOutTypes: DWORD;
  16595. const pOutTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  16596. {$EXTERNALSYM DMORegister}
  16597. function DMOUnregister(const clsidDMO,
  16598. guidCategory: TGUID// optional - GUID_NULL means unregister from all
  16599. ): HResult; stdcall;
  16600. {$EXTERNALSYM DMOUnregister}
  16601. function DMOEnum(
  16602. const guidCategory: TGUID; // GUID_NULL for "all"
  16603. dwFlags: DWORD; // DMO_ENUMF_XXX
  16604. //
  16605. // Enumerate only objects that support at least one of the specified input types
  16606. // and at least one of the specified output types. If no input types are specified,
  16607. // enumerate objects regardless of what input types they support. Same for
  16608. // output types.
  16609. //
  16610. cInTypes: DWORD;
  16611. pInTypes: PDMO_PARTIAL_MEDIATYPE; // can be NULL only of ulInTypes = 0
  16612. cOutTypes: DWORD;
  16613. pOutTypes: PDMO_PARTIAL_MEDIATYPE; // can be NULL only of ulOutTypes = 0
  16614. //
  16615. // Output parameter - this receives a pointer to the DMO CLSID enumerator
  16616. //
  16617. out ppEnum: IEnumDMO): HResult; stdcall;
  16618. {$EXTERNALSYM DMOEnum}
  16619. function DMOGetTypes(
  16620. const clsidDMO: TGUID;
  16621. ulInputTypesRequested: ULONG;
  16622. pulInputTypesSupplied: PULONG;
  16623. pInputTypes: PDMO_PARTIAL_MEDIATYPE;
  16624. ulOutputTypesRequested: ULONG;
  16625. pulOutputTypesSupplied: PULONG;
  16626. pOutputTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  16627. {$EXTERNALSYM DMOGetTypes}
  16628. function DMOGetName(const clsidDMO: TGUID; szName: TDMOName): HResult; stdcall;
  16629. {$EXTERNALSYM DMOGetName}
  16630. //------------------------------------------------------------------------------
  16631. // File: DMORt.h
  16632. //
  16633. // Desc: Miscellaneous runtime support for DirectShow Media Objects
  16634. //
  16635. // Copyright (c) 1999 - 2000, Microsoft Corporation. All rights reserved.
  16636. //------------------------------------------------------------------------------
  16637. // Mediatype helpers. MoInitMediaType() goes with MoFreeMediaType(),
  16638. // MoCreateMediaType() goes with MoDeleteMediaType() - don't mix !
  16639. // Takes a pointer to an already allocated DMO_MEDIA_TYPE structure, allocates
  16640. // a format block of cbFormat bytes, and sets appropriate members of
  16641. // DMO_MEDIA_TYPE to point to the newly allocated format block. Also
  16642. // initializes the IUnknown pointer inside DMO_MEDIA_TYPE to NULL.
  16643. //
  16644. // The format block allocated by MoInitMediaType must be freed by calling
  16645. // MoFreeMediaType().
  16646. function MoInitMediaType(pmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  16647. {$EXTERNALSYM MoInitMediaType}
  16648. // Frees the format block and releases any IUnknown, but does not free the
  16649. // DMO_MEDIA_TYPE structure itself. Input parameter must point to an
  16650. // DMO_MEDIA_TYPE structure previously initialized by MoInitMediaType().
  16651. function MoFreeMediaType(pmt: PDMOMediaType): HResult; stdcall;
  16652. {$EXTERNALSYM MoFreeMediaType}
  16653. // Copies the DMO_MEDIA_TYPE members. Also duplicates the format block and
  16654. // the IUnknown pointer. Both parameters must point to valid DMO_MEDIA_TYPE
  16655. // structures. Target structure must be later freed using MoFreeMediaType().
  16656. function MoCopyMediaType(out pmtDest: TDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  16657. {$EXTERNALSYM MoCopyMediaType}
  16658. // Allocates a new DMO_MEDIA_TYPE structure and initializes it just like
  16659. // MoInitMediaType. I.e., this function allocates both the format block
  16660. // and the DMO_MEDIA_TYPE structure itself. Pointer to DMO_MEDIA_TYPE is
  16661. // returned as *ppmt.
  16662. //
  16663. // DMO_MEDIA_TYPE structures allocated by MoCreateMediaType() must be freed
  16664. // by calling MoDeleteMediaType().
  16665. function MoCreateMediaType(out ppmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  16666. {$EXTERNALSYM MoCreateMediaType}
  16667. // Frees any format block, releases any IUnknown, and deletes the
  16668. // DMO_MEDIA_TYPE structure itself. The input parameter must point to an
  16669. // DMO_MEDIA_TYPE structure previously allocated by MoCreateMediaType().
  16670. function MoDeleteMediaType(pmt: PDMOMediaType): HResult; stdcall;
  16671. {$EXTERNALSYM MoDeleteMediaType}
  16672. // Allocates a new DMO_MEDIA_TYPE structure and copies pmtSrc into it like
  16673. // MoCopyMediaType. I.e., this function allocates a new DMO_MEDIA_TYPE struct
  16674. // as well as a new format block for the target mediatype. Trager mediatype
  16675. // must later be freed using MoDeleteMediaType().
  16676. function MoDuplicateMediaType(out ppmtDest: PDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  16677. {$EXTERNALSYM MoDuplicateMediaType}
  16678. {===============================================================================
  16679. *
  16680. * Copyright (C) Microsoft Corporation, 1996 - 1999
  16681. *
  16682. * Module Name: ks.h
  16683. * Abstract:
  16684. * Windows Driver Model/Connection and Streaming Architecture (WDM-CSA)
  16685. * core definitions.
  16686. *
  16687. * Note : All _NTDDK_ specific definitions have been removed from original file
  16688. * because never used in DX8SDK.
  16689. ===============================================================================}
  16690. const
  16691. //===========================================================================
  16692. IOCTL_KS_PROPERTY = DWORD(3080195);
  16693. {$EXTERNALSYM IOCTL_KS_PROPERTY}
  16694. IOCTL_KS_ENABLE_EVENT = DWORD(3080199);
  16695. {$EXTERNALSYM IOCTL_KS_ENABLE_EVENT}
  16696. IOCTL_KS_DISABLE_EVENT = DWORD(3080203);
  16697. {$EXTERNALSYM IOCTL_KS_DISABLE_EVENT}
  16698. IOCTL_KS_METHOD = DWORD(3080207);
  16699. {$EXTERNALSYM IOCTL_KS_METHOD}
  16700. IOCTL_KS_WRITE_STREAM = DWORD(3112979);
  16701. {$EXTERNALSYM IOCTL_KS_WRITE_STREAM}
  16702. IOCTL_KS_READ_STREAM = DWORD(3096599);
  16703. {$EXTERNALSYM IOCTL_KS_READ_STREAM}
  16704. IOCTL_KS_RESET_STATE = DWORD(3080219);
  16705. {$EXTERNALSYM IOCTL_KS_RESET_STATE}
  16706. //===========================================================================
  16707. type
  16708. KSRESET = (
  16709. KSRESET_BEGIN,
  16710. KSRESET_END
  16711. );
  16712. {$EXTERNALSYM KSRESET}
  16713. TKSReset = KSRESET;
  16714. KSSTATE = (
  16715. KSSTATE_STOP,
  16716. KSSTATE_ACQUIRE,
  16717. KSSTATE_PAUSE,
  16718. KSSTATE_RUN
  16719. );
  16720. {$EXTERNALSYM KSSTATE}
  16721. PKSSTATE = ^KSSTATE;
  16722. {$EXTERNALSYM PKSSTATE}
  16723. TKSState = KSSTATE;
  16724. const
  16725. KSPRIORITY_LOW = $00000001;
  16726. {$EXTERNALSYM KSPRIORITY_LOW}
  16727. KSPRIORITY_NORMAL = $40000000;
  16728. {$EXTERNALSYM KSPRIORITY_NORMAL}
  16729. KSPRIORITY_HIGH = $80000000;
  16730. {$EXTERNALSYM KSPRIORITY_HIGH}
  16731. KSPRIORITY_EXCLUSIVE = $FFFFFFFF;
  16732. {$EXTERNALSYM KSPRIORITY_EXCLUSIVE}
  16733. type
  16734. KSPRIORITY = record
  16735. PriorityClass : ULONG;
  16736. PrioritySubClass : ULONG;
  16737. end;
  16738. {$EXTERNALSYM KSPRIORITY}
  16739. PKSPRIORITY = ^KSPRIORITY;
  16740. {$EXTERNALSYM PKSPRIORITY}
  16741. TKSPriority = KSPRIORITY;
  16742. KSIDENTIFIER = record
  16743. case Integer of
  16744. 0: (
  16745. Set_ : TGUID;
  16746. Id : ULONG;
  16747. Flags : ULONG);
  16748. 1: (
  16749. Alignment : int64);
  16750. end;
  16751. {$EXTERNALSYM KSIDENTIFIER}
  16752. PKSIDENTIFIER = ^KSIDENTIFIER;
  16753. {$EXTERNALSYM PKSIDENTIFIER}
  16754. TKSIdentifier = KSIDENTIFIER;
  16755. KSPROPERTY = {$IFDEF TYPE_IDENTITY}type {$ENDIF} KSIDENTIFIER;
  16756. {$EXTERNALSYM KSPROPERTY}
  16757. PKSPROPERTY = ^KSPROPERTY;
  16758. {$EXTERNALSYM PKSPROPERTY}
  16759. KSMETHOD = PKSPROPERTY;
  16760. {$EXTERNALSYM KSMETHOD}
  16761. PKSMETHOD = ^KSMETHOD;
  16762. {$EXTERNALSYM PKSMETHOD}
  16763. KSEVENT = PKSMETHOD;
  16764. {$EXTERNALSYM KSEVENT}
  16765. PKSEVENT = ^KSEVENT;
  16766. {$EXTERNALSYM PKSEVENT}
  16767. const
  16768. KSMETHOD_TYPE_NONE = $00000000;
  16769. {$EXTERNALSYM KSMETHOD_TYPE_NONE}
  16770. KSMETHOD_TYPE_READ = $00000001;
  16771. {$EXTERNALSYM KSMETHOD_TYPE_READ}
  16772. KSMETHOD_TYPE_WRITE = $00000002;
  16773. {$EXTERNALSYM KSMETHOD_TYPE_WRITE}
  16774. KSMETHOD_TYPE_MODIFY = $00000003;
  16775. {$EXTERNALSYM KSMETHOD_TYPE_MODIFY}
  16776. KSMETHOD_TYPE_SOURCE = $00000004;
  16777. {$EXTERNALSYM KSMETHOD_TYPE_SOURCE}
  16778. KSMETHOD_TYPE_SEND = $00000001;
  16779. {$EXTERNALSYM KSMETHOD_TYPE_SEND}
  16780. KSMETHOD_TYPE_SETSUPPORT = $00000100;
  16781. {$EXTERNALSYM KSMETHOD_TYPE_SETSUPPORT}
  16782. KSMETHOD_TYPE_BASICSUPPORT = $00000200;
  16783. {$EXTERNALSYM KSMETHOD_TYPE_BASICSUPPORT}
  16784. KSMETHOD_TYPE_TOPOLOGY = $10000000;
  16785. {$EXTERNALSYM KSMETHOD_TYPE_TOPOLOGY}
  16786. KSPROPERTY_TYPE_GET = $00000001;
  16787. {$EXTERNALSYM KSPROPERTY_TYPE_GET}
  16788. KSPROPERTY_TYPE_SET = $00000002;
  16789. {$EXTERNALSYM KSPROPERTY_TYPE_SET}
  16790. KSPROPERTY_TYPE_SETSUPPORT = $00000100;
  16791. {$EXTERNALSYM KSPROPERTY_TYPE_SETSUPPORT}
  16792. KSPROPERTY_TYPE_BASICSUPPORT = $00000200;
  16793. {$EXTERNALSYM KSPROPERTY_TYPE_BASICSUPPORT}
  16794. KSPROPERTY_TYPE_RELATIONS = $00000400;
  16795. {$EXTERNALSYM KSPROPERTY_TYPE_RELATIONS}
  16796. KSPROPERTY_TYPE_SERIALIZESET = $00000800;
  16797. {$EXTERNALSYM KSPROPERTY_TYPE_SERIALIZESET}
  16798. KSPROPERTY_TYPE_UNSERIALIZESET = $00001000;
  16799. {$EXTERNALSYM KSPROPERTY_TYPE_UNSERIALIZESET}
  16800. KSPROPERTY_TYPE_SERIALIZERAW = $00002000;
  16801. {$EXTERNALSYM KSPROPERTY_TYPE_SERIALIZERAW}
  16802. KSPROPERTY_TYPE_UNSERIALIZERAW = $00004000;
  16803. {$EXTERNALSYM KSPROPERTY_TYPE_UNSERIALIZERAW}
  16804. KSPROPERTY_TYPE_SERIALIZESIZE = $00008000;
  16805. {$EXTERNALSYM KSPROPERTY_TYPE_SERIALIZESIZE}
  16806. KSPROPERTY_TYPE_DEFAULTVALUES = $00010000;
  16807. {$EXTERNALSYM KSPROPERTY_TYPE_DEFAULTVALUES}
  16808. KSPROPERTY_TYPE_TOPOLOGY = $10000000;
  16809. {$EXTERNALSYM KSPROPERTY_TYPE_TOPOLOGY}
  16810. type
  16811. PKSPNode = ^TKSPNode;
  16812. KSP_NODE = record
  16813. Property_ : KSPROPERTY;
  16814. NodeId : ULONG;
  16815. Reserved : ULONG;
  16816. end;
  16817. {$EXTERNALSYM KSP_NODE}
  16818. PKSP_NODE = ^KSP_NODE;
  16819. {$EXTERNALSYM PKSP_NODE}
  16820. TKSPNode = KSP_NODE;
  16821. PKSMNode = ^TKSMNode;
  16822. KSM_NODE = record
  16823. Method : KSMETHOD;
  16824. NodeId : ULONG;
  16825. Reserved : ULONG;
  16826. end;
  16827. {$EXTERNALSYM KSM_NODE}
  16828. PKSM_NODE = ^KSM_NODE;
  16829. {$EXTERNALSYM PKSM_NODE}
  16830. TKSMNode = KSM_NODE;
  16831. PKSENode = ^TKSENode;
  16832. KSE_NODE = record
  16833. Event : KSEVENT;
  16834. NodeId : ULONG;
  16835. Reserved : ULONG;
  16836. end;
  16837. {$EXTERNALSYM KSE_NODE}
  16838. PKSE_NODE = ^KSE_NODE;
  16839. {$EXTERNALSYM PKSE_NODE}
  16840. TKSENode = KSE_NODE;
  16841. const
  16842. KSPROPTYPESETID_General : TGUID = '{97E99BA0-BDEA-11CF-A5D6-28DB04C10000}';
  16843. {$EXTERNALSYM KSPROPTYPESETID_General}
  16844. type
  16845. PKSMultipleItem = ^TKSMultipleItem;
  16846. KSMULTIPLE_ITEM = record
  16847. Size : ULONG;
  16848. Count : ULONG;
  16849. end;
  16850. {$EXTERNALSYM KSMULTIPLE_ITEM}
  16851. PKSMULTIPLE_ITEM = ^KSMULTIPLE_ITEM;
  16852. {$EXTERNALSYM PKSMULTIPLE_ITEM}
  16853. TKSMultipleItem = KSMULTIPLE_ITEM;
  16854. PKSPropertyDescription = ^TKSPropertyDescription;
  16855. KSPROPERTY_DESCRIPTION = record
  16856. AccessFlags : ULONG;
  16857. DescriptionSize : ULONG;
  16858. PropTypeSet : TKSIDENTIFIER;
  16859. MembersListCount : ULONG;
  16860. Reserved : ULONG;
  16861. end;
  16862. {$EXTERNALSYM KSPROPERTY_DESCRIPTION}
  16863. PKSPROPERTY_DESCRIPTION = ^KSPROPERTY_DESCRIPTION;
  16864. {$EXTERNALSYM PKSPROPERTY_DESCRIPTION}
  16865. TKSPropertyDescription = KSPROPERTY_DESCRIPTION;
  16866. const
  16867. KSPROPERTY_MEMBER_RANGES = $00000001;
  16868. {$EXTERNALSYM KSPROPERTY_MEMBER_RANGES}
  16869. KSPROPERTY_MEMBER_STEPPEDRANGES = $00000002;
  16870. {$EXTERNALSYM KSPROPERTY_MEMBER_STEPPEDRANGES}
  16871. KSPROPERTY_MEMBER_VALUES = $00000003;
  16872. {$EXTERNALSYM KSPROPERTY_MEMBER_VALUES}
  16873. KSPROPERTY_MEMBER_FLAG_DEFAULT = $00000001;
  16874. {$EXTERNALSYM KSPROPERTY_MEMBER_FLAG_DEFAULT}
  16875. type
  16876. PKSPropertyMembersHeader = ^TKSPropertyMembersHeader;
  16877. KSPROPERTY_MEMBERSHEADER = record
  16878. MembersFlags : ULONG;
  16879. MembersSize : ULONG;
  16880. MembersCount : ULONG;
  16881. Flags : ULONG;
  16882. end;
  16883. {$EXTERNALSYM KSPROPERTY_MEMBERSHEADER}
  16884. PKSPROPERTY_MEMBERSHEADER = ^KSPROPERTY_MEMBERSHEADER;
  16885. {$EXTERNALSYM PKSPROPERTY_MEMBERSHEADER}
  16886. TKSPropertyMembersHeader = KSPROPERTY_MEMBERSHEADER;
  16887. PKSPropertyBoundsLong = ^TKSPropertyBoundsLong;
  16888. KSPROPERTY_BOUNDS_LONG = record
  16889. case Integer of
  16890. 0: (
  16891. SignedMinimum : Longint;
  16892. SignedMaximum : Longint);
  16893. 1: (
  16894. UnsignedMinimum : ULONG;
  16895. UnsignedMaximum : ULONG);
  16896. end;
  16897. {$EXTERNALSYM KSPROPERTY_BOUNDS_LONG}
  16898. PKSPROPERTY_BOUNDS_LONG = ^KSPROPERTY_BOUNDS_LONG;
  16899. {$EXTERNALSYM PKSPROPERTY_BOUNDS_LONG}
  16900. TKSPropertyBoundsLong = KSPROPERTY_BOUNDS_LONG;
  16901. PKSPropertyBoundsLongLong = ^TKSPropertyBoundsLongLong;
  16902. KSPROPERTY_BOUNDS_LONGLONG = record
  16903. case Integer of
  16904. 0: (
  16905. SignedMinimum : TLargeInteger;
  16906. SignedMaximum : TLargeInteger);
  16907. 1: (
  16908. UnsignedMinimum : TULargeInteger;
  16909. UnsignedMaximum : TULargeInteger);
  16910. end;
  16911. {$EXTERNALSYM KSPROPERTY_BOUNDS_LONGLONG}
  16912. PKSPROPERTY_BOUNDS_LONGLONG = ^KSPROPERTY_BOUNDS_LONGLONG;
  16913. {$EXTERNALSYM PKSPROPERTY_BOUNDS_LONGLONG}
  16914. TKSPropertyBoundsLongLong = KSPROPERTY_BOUNDS_LONGLONG;
  16915. PKSPropertySteppingLong = ^TKSPropertySteppingLong;
  16916. KSPROPERTY_STEPPING_LONG = record
  16917. SteppingDelta : ULONG;
  16918. Reserved : ULONG;
  16919. Bounds : TKSPropertyBoundsLong;
  16920. end;
  16921. {$EXTERNALSYM KSPROPERTY_STEPPING_LONG}
  16922. PKSPROPERTY_STEPPING_LONG = ^KSPROPERTY_STEPPING_LONG;
  16923. {$EXTERNALSYM PKSPROPERTY_STEPPING_LONG}
  16924. TKSPropertySteppingLong = KSPROPERTY_STEPPING_LONG;
  16925. PKSPropertySteppingLongLong = ^TKSPropertySteppingLongLong;
  16926. KSPROPERTY_STEPPING_LONGLONG = record
  16927. SteppingDelta : TULargeInteger;
  16928. Bounds : TKSPropertyBoundsLongLong;
  16929. end;
  16930. {$EXTERNALSYM KSPROPERTY_STEPPING_LONGLONG}
  16931. PKSPROPERTY_STEPPING_LONGLONG = KSPROPERTY_STEPPING_LONGLONG;
  16932. {$EXTERNALSYM PKSPROPERTY_STEPPING_LONGLONG}
  16933. TKSPropertySteppingLongLong = KSPROPERTY_STEPPING_LONGLONG;
  16934. //===========================================================================
  16935. PKSWORKER = pointer;
  16936. {$EXTERNALSYM PKSWORKER}
  16937. KSEVENTDATA = record
  16938. NotificationType : ULONG;
  16939. case integer of
  16940. 0: ( // EventHandle
  16941. Event : THandle;
  16942. Reserved : array[0..1] of ULONG);
  16943. 1: ( // SemaphoreHandle
  16944. Semaphore : THandle;
  16945. Reserved_ : ULONG;
  16946. Adjustment : Longint);
  16947. 2: ( // Alignment
  16948. Unused : Pointer;
  16949. Alignment : array[0..1] of Longint);
  16950. end;
  16951. {$EXTERNALSYM KSEVENTDATA}
  16952. PKSEVENTDATA = ^KSEVENTDATA;
  16953. {$EXTERNALSYM PKSEVENTDATA}
  16954. TKSEventData = KSEVENTDATA;
  16955. const
  16956. KSEVENTF_EVENT_HANDLE = $00000001;
  16957. {$EXTERNALSYM KSEVENTF_EVENT_HANDLE}
  16958. KSEVENTF_SEMAPHORE_HANDLE = $00000002;
  16959. {$EXTERNALSYM KSEVENTF_SEMAPHORE_HANDLE}
  16960. KSEVENT_TYPE_ENABLE = $00000001;
  16961. {$EXTERNALSYM KSEVENT_TYPE_ENABLE}
  16962. KSEVENT_TYPE_ONESHOT = $00000002;
  16963. {$EXTERNALSYM KSEVENT_TYPE_ONESHOT}
  16964. KSEVENT_TYPE_ENABLEBUFFERED = $00000004;
  16965. {$EXTERNALSYM KSEVENT_TYPE_ENABLEBUFFERED}
  16966. KSEVENT_TYPE_SETSUPPORT = $00000100;
  16967. {$EXTERNALSYM KSEVENT_TYPE_SETSUPPORT}
  16968. KSEVENT_TYPE_BASICSUPPORT = $00000200;
  16969. {$EXTERNALSYM KSEVENT_TYPE_BASICSUPPORT}
  16970. KSEVENT_TYPE_QUERYBUFFER = $00000400;
  16971. {$EXTERNALSYM KSEVENT_TYPE_QUERYBUFFER}
  16972. KSEVENT_TYPE_TOPOLOGY = $10000000;
  16973. {$EXTERNALSYM KSEVENT_TYPE_TOPOLOGY}
  16974. type
  16975. KSQUERYBUFFER = record
  16976. Event : KSEVENT;
  16977. EventData : PKSEVENTDATA;
  16978. Reserved : Pointer;
  16979. end;
  16980. {$EXTERNALSYM KSQUERYBUFFER}
  16981. PKSQUERYBUFFER = ^KSQUERYBUFFER;
  16982. {$EXTERNALSYM PKSQUERYBUFFER}
  16983. TKSQueryBuffer = KSQUERYBUFFER;
  16984. KSRELATIVEEVENT = record
  16985. Size : ULONG;
  16986. Flags : ULONG;
  16987. case integer of
  16988. 0: ( ObjectHandle : THandle;
  16989. Reserved : Pointer;
  16990. Event : KSEVENT;
  16991. EventData : TKSEVENTDATA);
  16992. 1: ( ObjectPointer : Pointer);
  16993. end;
  16994. {$EXTERNALSYM KSRELATIVEEVENT}
  16995. TKSRelativeEvent = KSRELATIVEEVENT;
  16996. const
  16997. KSRELATIVEEVENT_FLAG_HANDLE = $00000001;
  16998. {$EXTERNALSYM KSRELATIVEEVENT_FLAG_HANDLE}
  16999. KSRELATIVEEVENT_FLAG_POINTER = $00000002;
  17000. {$EXTERNALSYM KSRELATIVEEVENT_FLAG_POINTER}
  17001. //===========================================================================
  17002. type
  17003. PKSEventTimeMark = ^TKSEventTimeMark;
  17004. KSEVENT_TIME_MARK = record
  17005. EventData : TKSEVENTDATA;
  17006. MarkTime : int64;
  17007. end;
  17008. {$EXTERNALSYM KSEVENT_TIME_MARK}
  17009. PKSEVENT_TIME_MARK = ^KSEVENT_TIME_MARK;
  17010. {$EXTERNALSYM PKSEVENT_TIME_MARK}
  17011. TKSEventTimeMark = KSEVENT_TIME_MARK;
  17012. PKSEventTimeInterval = ^TKSEventTimeInterval;
  17013. KSEVENT_TIME_INTERVAL = record
  17014. EventData : TKSEVENTDATA;
  17015. TimeBase : int64;
  17016. Interval : int64;
  17017. end;
  17018. {$EXTERNALSYM KSEVENT_TIME_INTERVAL}
  17019. PKSEVENT_TIME_INTERVAL = ^KSEVENT_TIME_INTERVAL;
  17020. {$EXTERNALSYM PKSEVENT_TIME_INTERVAL}
  17021. TKSEventTimeInterval = KSEVENT_TIME_INTERVAL;
  17022. KSINTERVAL = record
  17023. TimeBase : int64;
  17024. Interval : int64;
  17025. end;
  17026. {$EXTERNALSYM KSINTERVAL}
  17027. PKSINTERVAL = ^KSINTERVAL;
  17028. {$EXTERNALSYM PKSINTERVAL}
  17029. TKSInterval = KSINTERVAL;
  17030. //===========================================================================
  17031. const
  17032. KSPROPSETID_General : TGUID = '{1464EDA5-6A8F-11D1-9AA7-00A0C9223196}';
  17033. {$EXTERNALSYM KSPROPSETID_General}
  17034. type
  17035. KSPROPERTY_GENERAL = (
  17036. {$EXTERNALSYM KSPROPERTY_GENERAL}
  17037. KSPROPERTY_GENERAL_COMPONENTID
  17038. );
  17039. TKSPropertyGeneral = KSPROPERTY_GENERAL;
  17040. KSCOMPONENTID = record
  17041. Manufacturer : TGUID;
  17042. Product : TGUID;
  17043. Component : TGUID;
  17044. Name : TGUID;
  17045. Version : ULONG;
  17046. Revision : ULONG;
  17047. end;
  17048. {$EXTERNALSYM KSCOMPONENTID}
  17049. PKSCOMPONENTID = ^KSCOMPONENTID;
  17050. {$EXTERNALSYM PKSCOMPONENTID}
  17051. TKSComponentID = KSCOMPONENTID;
  17052. const
  17053. KSMETHODSETID_StreamIo : TGUID = '{65D003CA-1523-11D2-B27A-00A0C9223196}';
  17054. {$EXTERNALSYM KSMETHODSETID_StreamIo}
  17055. type
  17056. KSMETHOD_STREAMIO = (
  17057. KSMETHOD_STREAMIO_READ,
  17058. KSMETHOD_STREAMIO_WRITE
  17059. );
  17060. {$EXTERNALSYM KSMETHOD_STREAMIO}
  17061. TKSMethodStreamIO = KSMETHOD_STREAMIO;
  17062. const
  17063. KSPROPSETID_MediaSeeking : TGUID = '{EE904F0C-D09B-11D0-ABE9-00A0C9223196}';
  17064. {$EXTERNALSYM KSPROPSETID_MediaSeeking}
  17065. type
  17066. KSPROPERTY_MEDIASEEKING = (
  17067. KSPROPERTY_MEDIASEEKING_CAPABILITIES,
  17068. KSPROPERTY_MEDIASEEKING_FORMATS,
  17069. KSPROPERTY_MEDIASEEKING_TIMEFORMAT,
  17070. KSPROPERTY_MEDIASEEKING_POSITION,
  17071. KSPROPERTY_MEDIASEEKING_STOPPOSITION,
  17072. KSPROPERTY_MEDIASEEKING_POSITIONS,
  17073. KSPROPERTY_MEDIASEEKING_DURATION,
  17074. KSPROPERTY_MEDIASEEKING_AVAILABLE,
  17075. KSPROPERTY_MEDIASEEKING_PREROLL,
  17076. KSPROPERTY_MEDIASEEKING_CONVERTTIMEFORMAT
  17077. );
  17078. {$EXTERNALSYM KSPROPERTY_MEDIASEEKING}
  17079. TKSPropertyMediaSeeking = KSPROPERTY_MEDIASEEKING;
  17080. KS_SEEKING_FLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  17081. {$EXTERNALSYM KS_SEEKING_FLAGS}
  17082. const
  17083. KS_SEEKING_NoPositioning = $0;
  17084. {$EXTERNALSYM KS_SEEKING_NoPositioning}
  17085. KS_SEEKING_AbsolutePositioning = $1;
  17086. {$EXTERNALSYM KS_SEEKING_AbsolutePositioning}
  17087. KS_SEEKING_RelativePositioning = $2;
  17088. {$EXTERNALSYM KS_SEEKING_RelativePositioning}
  17089. KS_SEEKING_IncrementalPositioning = $3;
  17090. {$EXTERNALSYM KS_SEEKING_IncrementalPositioning}
  17091. KS_SEEKING_PositioningBitsMask = $3;
  17092. {$EXTERNALSYM KS_SEEKING_PositioningBitsMask}
  17093. KS_SEEKING_SeekToKeyFrame = $4;
  17094. {$EXTERNALSYM KS_SEEKING_SeekToKeyFrame}
  17095. KS_SEEKING_ReturnTime = $8;
  17096. {$EXTERNALSYM KS_SEEKING_ReturnTime}
  17097. type
  17098. KS_SEEKING_CAPABILITIES = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  17099. {$EXTERNALSYM KS_SEEKING_CAPABILITIES}
  17100. const
  17101. KS_SEEKING_CanSeekAbsolute = $1;
  17102. {$EXTERNALSYM KS_SEEKING_CanSeekAbsolute}
  17103. KS_SEEKING_CanSeekForwards = $2;
  17104. {$EXTERNALSYM KS_SEEKING_CanSeekForwards}
  17105. KS_SEEKING_CanSeekBackwards = $4;
  17106. {$EXTERNALSYM KS_SEEKING_CanSeekBackwards}
  17107. KS_SEEKING_CanGetCurrentPos = $8;
  17108. {$EXTERNALSYM KS_SEEKING_CanGetCurrentPos}
  17109. KS_SEEKING_CanGetStopPos = $10;
  17110. {$EXTERNALSYM KS_SEEKING_CanGetStopPos}
  17111. KS_SEEKING_CanGetDuration = $20;
  17112. {$EXTERNALSYM KS_SEEKING_CanGetDuration}
  17113. KS_SEEKING_CanPlayBackwards = $40;
  17114. {$EXTERNALSYM KS_SEEKING_CanPlayBackwards}
  17115. type
  17116. PKSPropertyPositions = ^TKSPropertyPositions;
  17117. KSPROPERTY_POSITIONS = record
  17118. Current : int64;
  17119. Stop : int64;
  17120. CurrentFlags : KS_SEEKING_FLAGS;
  17121. StopFlags : KS_SEEKING_FLAGS;
  17122. end;
  17123. {$EXTERNALSYM KSPROPERTY_POSITIONS}
  17124. PKSPROPERTY_POSITIONS = ^KSPROPERTY_POSITIONS;
  17125. {$EXTERNALSYM PKSPROPERTY_POSITIONS}
  17126. TKSPropertyPositions = KSPROPERTY_POSITIONS;
  17127. PKSPropertyMediaAvailable = ^TKSPropertyMediaAvailable;
  17128. KSPROPERTY_MEDIAAVAILABLE = record
  17129. Earliest : int64;
  17130. Latest : int64;
  17131. end;
  17132. {$EXTERNALSYM KSPROPERTY_MEDIAAVAILABLE}
  17133. PKSPROPERTY_MEDIAAVAILABLE = ^KSPROPERTY_MEDIAAVAILABLE;
  17134. {$EXTERNALSYM PKSPROPERTY_MEDIAAVAILABLE}
  17135. TKSPropertyMediaAvailable = KSPROPERTY_MEDIAAVAILABLE;
  17136. PKSPTimeFormat = ^TKSPTimeFormat;
  17137. KSP_TIMEFORMAT = record
  17138. Property_ : KSPROPERTY;
  17139. SourceFormat : TGUID;
  17140. TargetFormat : TGUID;
  17141. Time : int64;
  17142. end;
  17143. {$EXTERNALSYM KSP_TIMEFORMAT}
  17144. PKSP_TIMEFORMAT = ^KSP_TIMEFORMAT;
  17145. {$EXTERNALSYM PKSP_TIMEFORMAT}
  17146. TKSPTimeFormat = KSP_TIMEFORMAT;
  17147. //===========================================================================
  17148. const
  17149. KSPROPSETID_Topology : TGUID = '{720D4AC0-7533-11D0-A5D6-28DB04C10000}';
  17150. {$EXTERNALSYM KSPROPSETID_Topology}
  17151. type
  17152. KSPROPERTY_TOPOLOGY = (
  17153. KSPROPERTY_TOPOLOGY_CATEGORIES,
  17154. KSPROPERTY_TOPOLOGY_NODES,
  17155. KSPROPERTY_TOPOLOGY_CONNECTIONS,
  17156. KSPROPERTY_TOPOLOGY_NAME
  17157. );
  17158. {$EXTERNALSYM KSPROPERTY_TOPOLOGY}
  17159. TKSPropertyTopology = KSPROPERTY_TOPOLOGY;
  17160. const
  17161. KSCATEGORY_BRIDGE : TGUID = '{085AFF00-62CE-11CF-A5D6-28DB04C10000}';
  17162. {$EXTERNALSYM KSCATEGORY_BRIDGE}
  17163. KSCATEGORY_CAPTURE : TGUID = '{65E8773D-8F56-11D0-A3B9-00A0C9223196}';
  17164. {$EXTERNALSYM KSCATEGORY_CAPTURE}
  17165. KSCATEGORY_RENDER : TGUID = '{65E8773E-8F56-11D0-A3B9-00A0C9223196}';
  17166. {$EXTERNALSYM KSCATEGORY_RENDER}
  17167. KSCATEGORY_MIXER : TGUID = '{AD809C00-7B88-11D0-A5D6-28DB04C10000}';
  17168. {$EXTERNALSYM KSCATEGORY_MIXER}
  17169. KSCATEGORY_SPLITTER : TGUID = '{0A4252A0-7E70-11D0-A5D6-28DB04C10000}';
  17170. {$EXTERNALSYM KSCATEGORY_SPLITTER}
  17171. KSCATEGORY_DATACOMPRESSOR : TGUID = '{1E84C900-7E70-11D0-A5D6-28DB04C10000}';
  17172. {$EXTERNALSYM KSCATEGORY_DATACOMPRESSOR}
  17173. KSCATEGORY_DATADECOMPRESSOR : TGUID = '{2721AE20-7E70-11D0-A5D6-28DB04C10000}';
  17174. {$EXTERNALSYM KSCATEGORY_DATADECOMPRESSOR}
  17175. KSCATEGORY_DATATRANSFORM : TGUID = '{2EB07EA0-7E70-11D0-A5D6-28DB04C10000}';
  17176. {$EXTERNALSYM KSCATEGORY_DATATRANSFORM}
  17177. KSCATEGORY_COMMUNICATIONSTRANSFORM : TGUID = '{CF1DDA2C-9743-11D0-A3EE-00A0C9223196}';
  17178. {$EXTERNALSYM KSCATEGORY_COMMUNICATIONSTRANSFORM}
  17179. KSCATEGORY_INTERFACETRANSFORM : TGUID = '{CF1DDA2D-9743-11D0-A3EE-00A0C9223196}';
  17180. {$EXTERNALSYM KSCATEGORY_INTERFACETRANSFORM}
  17181. KSCATEGORY_MEDIUMTRANSFORM : TGUID = '{CF1DDA2E-9743-11D0-A3EE-00A0C9223196}';
  17182. {$EXTERNALSYM KSCATEGORY_MEDIUMTRANSFORM}
  17183. KSCATEGORY_FILESYSTEM : TGUID = '{760FED5E-9357-11D0-A3CC-00A0C9223196}';
  17184. {$EXTERNALSYM KSCATEGORY_FILESYSTEM}
  17185. // KSNAME_Clock
  17186. KSCATEGORY_CLOCK : TGUID = '{53172480-4791-11D0-A5D6-28DB04C10000}';
  17187. {$EXTERNALSYM KSCATEGORY_CLOCK}
  17188. KSCATEGORY_PROXY : TGUID = '{97EBAACA-95BD-11D0-A3EA-00A0C9223196}';
  17189. {$EXTERNALSYM KSCATEGORY_PROXY}
  17190. KSCATEGORY_QUALITY : TGUID = '{97EBAACB-95BD-11D0-A3EA-00A0C9223196}';
  17191. {$EXTERNALSYM KSCATEGORY_QUALITY}
  17192. type
  17193. PKSTopologyConnection = ^TKSTopologyConnection;
  17194. KSTOPOLOGY_CONNECTION = record
  17195. FromNode : ULONG;
  17196. FromNodePin : ULONG;
  17197. ToNode : ULONG;
  17198. ToNodePin : ULONG;
  17199. end;
  17200. {$EXTERNALSYM KSTOPOLOGY_CONNECTION}
  17201. PKSTOPOLOGY_CONNECTION = ^KSTOPOLOGY_CONNECTION;
  17202. {$EXTERNALSYM PKSTOPOLOGY_CONNECTION}
  17203. TKSTopologyConnection = KSTOPOLOGY_CONNECTION;
  17204. KSTOPOLOGY = record
  17205. CategoriesCount : ULONG;
  17206. Categories : PGUID;
  17207. TopologyNodesCount : ULONG;
  17208. TopologyNodes : PGUID;
  17209. TopologyConnectionsCount : ULONG;
  17210. TopologyConnections : PKSTOPOLOGY_CONNECTION;
  17211. TopologyNodesNames : PGUID;
  17212. Reserved : ULONG;
  17213. end;
  17214. {$EXTERNALSYM KSTOPOLOGY}
  17215. PKSTOPOLOGY = ^KSTOPOLOGY;
  17216. {$EXTERNALSYM PKSTOPOLOGY}
  17217. TKSTopology = KSTOPOLOGY;
  17218. const
  17219. KSFILTER_NODE = ULONG(-1);
  17220. {$EXTERNALSYM KSFILTER_NODE}
  17221. KSALL_NODES = ULONG(-1);
  17222. {$EXTERNALSYM KSALL_NODES}
  17223. type
  17224. PKSNodeCreate = ^TKSNodeCreate;
  17225. KSNODE_CREATE = record
  17226. CreateFlags : ULONG;
  17227. Node : ULONG;
  17228. end;
  17229. {$EXTERNALSYM KSNODE_CREATE}
  17230. PKSNODE_CREATE = ^KSNODE_CREATE;
  17231. {$EXTERNALSYM PKSNODE_CREATE}
  17232. TKSNodeCreate = KSNODE_CREATE;
  17233. //===========================================================================
  17234. const
  17235. // TIME_FORMAT_NONE
  17236. KSTIME_FORMAT_NONE : TGUID = '{00000000-0000-0000-0000-000000000000}';
  17237. {$EXTERNALSYM KSTIME_FORMAT_NONE}
  17238. // TIME_FORMAT_FRAME
  17239. KSTIME_FORMAT_FRAME : TGUID = '{7b785570-8c82-11cf-bc0c-00aa00ac74f6}';
  17240. {$EXTERNALSYM KSTIME_FORMAT_FRAME}
  17241. // TIME_FORMAT_BYTE
  17242. KSTIME_FORMAT_BYTE : TGUID = '{7b785571-8c82-11cf-bc0c-00aa00ac74f6}';
  17243. {$EXTERNALSYM KSTIME_FORMAT_BYTE}
  17244. // TIME_FORMAT_SAMPLE
  17245. KSTIME_FORMAT_SAMPLE : TGUID = '{7b785572-8c82-11cf-bc0c-00aa00ac74f6}';
  17246. {$EXTERNALSYM KSTIME_FORMAT_SAMPLE}
  17247. // TIME_FORMAT_FIELD
  17248. KSTIME_FORMAT_FIELD : TGUID = '{7b785573-8c82-11cf-bc0c-00aa00ac74f6}';
  17249. {$EXTERNALSYM KSTIME_FORMAT_FIELD}
  17250. // TIME_FORMAT_MEDIA_TIME
  17251. KSTIME_FORMAT_MEDIA_TIME : TGUID = '{7b785574-8c82-11cf-bc0c-00aa00ac74f6}';
  17252. {$EXTERNALSYM KSTIME_FORMAT_MEDIA_TIME}
  17253. //===========================================================================
  17254. type
  17255. PKSPIN_INTERFACE = ^KSPIN_INTERFACE;
  17256. {$EXTERNALSYM PKSPIN_INTERFACE}
  17257. KSPIN_INTERFACE = KSIDENTIFIER;
  17258. {$EXTERNALSYM KSPIN_INTERFACE}
  17259. PKSPinInterface = PKSPIN_INTERFACE;
  17260. TKSPinInterface = KSPIN_INTERFACE;
  17261. const
  17262. KSINTERFACESETID_Standard : TGUID = '{1A8766A0-62CE-11CF-A5D6-28DB04C10000}';
  17263. {$EXTERNALSYM KSINTERFACESETID_Standard}
  17264. type
  17265. KSINTERFACE_STANDARD = (
  17266. KSINTERFACE_STANDARD_STREAMING,
  17267. KSINTERFACE_STANDARD_LOOPED_STREAMING,
  17268. KSINTERFACE_STANDARD_CONTROL
  17269. );
  17270. {$EXTERNALSYM KSINTERFACE_STANDARD}
  17271. TKSInterfaceStandard = KSINTERFACE_STANDARD;
  17272. const
  17273. KSINTERFACESETID_FileIo : TGUID = '{8C6F932C-E771-11D0-B8FF-00A0C9223196}';
  17274. {$EXTERNALSYM KSINTERFACESETID_FileIo}
  17275. type
  17276. KSINTERFACE_FILEIO = (
  17277. KSINTERFACE_FILEIO_STREAMING
  17278. );
  17279. {$EXTERNALSYM KSINTERFACE_FILEIO}
  17280. TKSInterfaceFileIO = KSINTERFACE_FILEIO;
  17281. //===========================================================================
  17282. const
  17283. KSMEDIUM_TYPE_ANYINSTANCE = 0;
  17284. {$EXTERNALSYM KSMEDIUM_TYPE_ANYINSTANCE}
  17285. KSMEDIUMSETID_Standard : TGUID = '{4747B320-62CE-11CF-A5D6-28DB04C10000}';
  17286. {$EXTERNALSYM KSMEDIUMSETID_Standard}
  17287. //For compatibility only
  17288. KSMEDIUM_STANDARD_DEVIO = KSMEDIUM_TYPE_ANYINSTANCE;
  17289. {$EXTERNALSYM KSMEDIUM_STANDARD_DEVIO}
  17290. //===========================================================================
  17291. KSPROPSETID_Pin : TGUID = '{8C134960-51AD-11CF-878A-94F801C10000}';
  17292. {$EXTERNALSYM KSPROPSETID_Pin}
  17293. type
  17294. KSPROPERTY_PIN = (
  17295. KSPROPERTY_PIN_CINSTANCES,
  17296. KSPROPERTY_PIN_CTYPES,
  17297. KSPROPERTY_PIN_DATAFLOW,
  17298. KSPROPERTY_PIN_DATARANGES,
  17299. KSPROPERTY_PIN_DATAINTERSECTION,
  17300. KSPROPERTY_PIN_INTERFACES,
  17301. KSPROPERTY_PIN_MEDIUMS,
  17302. KSPROPERTY_PIN_COMMUNICATION,
  17303. KSPROPERTY_PIN_GLOBALCINSTANCES,
  17304. KSPROPERTY_PIN_NECESSARYINSTANCES,
  17305. KSPROPERTY_PIN_PHYSICALCONNECTION,
  17306. KSPROPERTY_PIN_CATEGORY,
  17307. KSPROPERTY_PIN_NAME,
  17308. KSPROPERTY_PIN_CONSTRAINEDDATARANGES,
  17309. KSPROPERTY_PIN_PROPOSEDATAFORMAT
  17310. );
  17311. {$EXTERNALSYM KSPROPERTY_PIN}
  17312. TKSPropertyPin = KSPROPERTY_PIN;
  17313. PKSPPin = ^TKSPPin;
  17314. KSP_PIN = record
  17315. Property_ : KSPROPERTY;
  17316. PinId : ULONG;
  17317. Reserved : ULONG;
  17318. end;
  17319. {$EXTERNALSYM KSP_PIN}
  17320. PKSP_PIN = ^KSP_PIN;
  17321. {$EXTERNALSYM PKSP_PIN}
  17322. TKSPPin = KSP_PIN;
  17323. const
  17324. KSINSTANCE_INDETERMINATE = ULONG(-1);
  17325. {$EXTERNALSYM KSINSTANCE_INDETERMINATE}
  17326. type
  17327. PKSPinCInstance = ^TKSPinCInstance;
  17328. KSPIN_CINSTANCES = record
  17329. PossibleCount : ULONG;
  17330. CurrentCount : ULONG;
  17331. end;
  17332. {$EXTERNALSYM KSPIN_CINSTANCES}
  17333. PKSPIN_CINSTANCES = ^KSPIN_CINSTANCES;
  17334. {$EXTERNALSYM PKSPIN_CINSTANCES}
  17335. TKSPinCInstance = KSPIN_CINSTANCES;
  17336. PKSPinDataFlow = ^TKSPinDataFlow;
  17337. KSPIN_DATAFLOW = (
  17338. KSPIN_DATAFLOW_Invalid,
  17339. KSPIN_DATAFLOW_IN,
  17340. KSPIN_DATAFLOW_OUT
  17341. );
  17342. {$EXTERNALSYM KSPIN_DATAFLOW}
  17343. PKSPIN_DATAFLOW = ^KSPIN_DATAFLOW;
  17344. {$EXTERNALSYM PKSPIN_DATAFLOW}
  17345. TKSPinDataFlow = KSPIN_DATAFLOW;
  17346. const
  17347. KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION = 0;
  17348. {$EXTERNALSYM KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION}
  17349. KSDATAFORMAT_TEMPORAL_COMPRESSION = (1 shl KSDATAFORMAT_BIT_TEMPORAL_COMPRESSION);
  17350. {$EXTERNALSYM KSDATAFORMAT_TEMPORAL_COMPRESSION}
  17351. KSDATAFORMAT_BIT_ATTRIBUTES = 1;
  17352. {$EXTERNALSYM KSDATAFORMAT_BIT_ATTRIBUTES}
  17353. KSDATAFORMAT_ATTRIBUTES = (1 shl KSDATAFORMAT_BIT_ATTRIBUTES);
  17354. {$EXTERNALSYM KSDATAFORMAT_ATTRIBUTES}
  17355. KSDATARANGE_BIT_ATTRIBUTES = 1;
  17356. {$EXTERNALSYM KSDATARANGE_BIT_ATTRIBUTES}
  17357. KSDATARANGE_ATTRIBUTES = (1 shl KSDATARANGE_BIT_ATTRIBUTES);
  17358. {$EXTERNALSYM KSDATARANGE_ATTRIBUTES}
  17359. KSDATARANGE_BIT_REQUIRED_ATTRIBUTES = 2;
  17360. {$EXTERNALSYM KSDATARANGE_BIT_REQUIRED_ATTRIBUTES}
  17361. KSDATARANGE_REQUIRED_ATTRIBUTES = (1 shl KSDATARANGE_BIT_REQUIRED_ATTRIBUTES);
  17362. {$EXTERNALSYM KSDATARANGE_REQUIRED_ATTRIBUTES}
  17363. type
  17364. KSDATAFORMAT = record
  17365. case integer of
  17366. 0: (
  17367. FormatSize : ULONG;
  17368. Flags : ULONG;
  17369. SampleSize : ULONG;
  17370. Reserved : ULONG;
  17371. MajorFormat : TGUID;
  17372. SubFormat : TGUID;
  17373. Specifier : TGUID);
  17374. 1: (
  17375. Alignment : int64);
  17376. end;
  17377. {$EXTERNALSYM KSDATAFORMAT}
  17378. PKSDATAFORMAT = ^KSDATAFORMAT;
  17379. {$EXTERNALSYM PKSDATAFORMAT}
  17380. TKSDataFormat = KSDATAFORMAT;
  17381. PKSDATARANGE = ^KSDATARANGE;
  17382. {$EXTERNALSYM PKSDATARANGE}
  17383. KSDATARANGE = KSDATAFORMAT;
  17384. {$EXTERNALSYM KSDATARANGE}
  17385. TKSDataRange = KSDATARANGE;
  17386. const
  17387. KSATTRIBUTE_REQUIRED = $00000001;
  17388. {$EXTERNALSYM KSATTRIBUTE_REQUIRED}
  17389. type
  17390. KSATTRIBUTE = record
  17391. Size : ULONG;
  17392. Flags : ULONG;
  17393. Attribute : TGUID;
  17394. end;
  17395. {$EXTERNALSYM KSATTRIBUTE}
  17396. PKSATTRIBUTE = ^KSATTRIBUTE;
  17397. {$EXTERNALSYM PKSATTRIBUTE}
  17398. TKSAttribute = KSATTRIBUTE;
  17399. PKSPinCommunication = ^TKSPinCommunication;
  17400. KSPIN_COMMUNICATION = (
  17401. KSPIN_COMMUNICATION_NONE,
  17402. KSPIN_COMMUNICATION_SINK,
  17403. KSPIN_COMMUNICATION_SOURCE,
  17404. KSPIN_COMMUNICATION_BOTH,
  17405. KSPIN_COMMUNICATION_BRIDGE
  17406. );
  17407. {$EXTERNALSYM KSPIN_COMMUNICATION}
  17408. PKSPIN_COMMUNICATION = ^KSPIN_COMMUNICATION;
  17409. {$EXTERNALSYM PKSPIN_COMMUNICATION}
  17410. TKSPinCommunication = KSPIN_COMMUNICATION;
  17411. PKSPIN_MEDIUM = ^KSPIN_MEDIUM;
  17412. {$EXTERNALSYM PKSPIN_MEDIUM}
  17413. KSPIN_MEDIUM = KSIDENTIFIER;
  17414. {$EXTERNALSYM KSPIN_MEDIUM}
  17415. PKSPinMedium = PKSPIN_MEDIUM;
  17416. TKSPinMedium = KSPIN_MEDIUM;
  17417. PKSPinConnect = ^TKSPinConnect;
  17418. KSPIN_CONNECT = record
  17419. Interface_ : TKSPinInterface;
  17420. Medium : TKSPinMedium;
  17421. PinId : ULONG;
  17422. PinToHandle : THandle;
  17423. Priority : TKSPriority;
  17424. end;
  17425. {$EXTERNALSYM KSPIN_CONNECT}
  17426. PKSPIN_CONNECT = KSPIN_CONNECT;
  17427. {$EXTERNALSYM PKSPIN_CONNECT}
  17428. TKSPinConnect = KSPIN_CONNECT;
  17429. PKSPinPhysicalConnection = ^TKSPinPhysicalConnection;
  17430. KSPIN_PHYSICALCONNECTION = record
  17431. Size : ULONG;
  17432. Pin : ULONG;
  17433. SymbolicLinkName : array[0..0] of WCHAR;
  17434. end;
  17435. {$EXTERNALSYM KSPIN_PHYSICALCONNECTION}
  17436. PKSPIN_PHYSICALCONNECTION = KSPIN_PHYSICALCONNECTION;
  17437. {$EXTERNALSYM PKSPIN_PHYSICALCONNECTION}
  17438. TKSPinPhysicalConnection = KSPIN_PHYSICALCONNECTION;
  17439. const
  17440. KSNAME_Filter : TGUID = '{9b365890-165f-11d0-a195-0020afd156e4}';
  17441. {$EXTERNALSYM KSNAME_Filter}
  17442. KSSTRING_Filter = '{9B365890-165F-11D0-A195-0020AFD156E4}';
  17443. {$EXTERNALSYM KSSTRING_Filter}
  17444. KSNAME_Pin : TGUID = '{146F1A80-4791-11D0-A5D6-28DB04C10000}';
  17445. {$EXTERNALSYM KSNAME_Pin}
  17446. KSSTRING_Pin = '{146F1A80-4791-11D0-A5D6-28DB04C10000}';
  17447. {$EXTERNALSYM KSSTRING_Pin}
  17448. KSNAME_Clock : TGUID = '{53172480-4791-11D0-A5D6-28DB04C10000}';
  17449. {$EXTERNALSYM KSNAME_Clock}
  17450. KSSTRING_Clock = '{53172480-4791-11D0-A5D6-28DB04C10000}';
  17451. {$EXTERNALSYM KSSTRING_Clock}
  17452. KSNAME_Allocator : TGUID = '{642F5D00-4791-11D0-A5D6-28DB04C10000}';
  17453. {$EXTERNALSYM KSNAME_Allocator}
  17454. KSSTRING_Allocator = '{642F5D00-4791-11D0-A5D6-28DB04C10000}';
  17455. {$EXTERNALSYM KSSTRING_Allocator}
  17456. KSSTRING_AllocatorEx = '{091BB63B-603F-11D1-B067-00A0C9062802}';
  17457. {$EXTERNALSYM KSSTRING_AllocatorEx}
  17458. KSNAME_TopologyNode : TGUID = '{0621061A-EE75-11D0-B915-00A0C9223196}';
  17459. {$EXTERNALSYM KSNAME_TopologyNode}
  17460. KSSTRING_TopologyNode = '{0621061A-EE75-11D0-B915-00A0C9223196}';
  17461. {$EXTERNALSYM KSSTRING_TopologyNode}
  17462. //===========================================================================
  17463. // MEDIATYPE_NULL
  17464. const
  17465. KSDATAFORMAT_TYPE_WILDCARD : TGUID = '{00000000-0000-0000-0000-000000000000}';
  17466. {$EXTERNALSYM KSDATAFORMAT_TYPE_WILDCARD}
  17467. // MEDIASUBTYPE_NULL
  17468. KSDATAFORMAT_SUBTYPE_WILDCARD : TGUID = '{00000000-0000-0000-0000-000000000000}';
  17469. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_WILDCARD}
  17470. // MEDIATYPE_Stream
  17471. KSDATAFORMAT_TYPE_STREAM : TGUID = '{E436EB83-524F-11CE-9F53-0020AF0BA770}';
  17472. {$EXTERNALSYM KSDATAFORMAT_TYPE_STREAM}
  17473. // MEDIASUBTYPE_None
  17474. KSDATAFORMAT_SUBTYPE_NONE : TGUID = '{E436EB8E-524F-11CE-9F53-0020AF0BA770}';
  17475. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_NONE}
  17476. KSDATAFORMAT_SPECIFIER_WILDCARD : TGUID = '{00000000-0000-0000-0000-000000000000}';
  17477. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_WILDCARD}
  17478. KSDATAFORMAT_SPECIFIER_FILENAME : TGUID = '{AA797B40-E974-11CF-A5D6-28DB04C10000}';
  17479. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_FILENAME}
  17480. KSDATAFORMAT_SPECIFIER_FILEHANDLE: TGUID = '{65E8773C-8F56-11D0-A3B9-00A0C9223196}';
  17481. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_FILEHANDLE}
  17482. // FORMAT_None
  17483. KSDATAFORMAT_SPECIFIER_NONE : TGUID = '{0F6417D6-C318-11D0-A43F-00A0C9223196}';
  17484. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_NONE}
  17485. //===========================================================================
  17486. KSPROPSETID_Quality : TGUID = '{D16AD380-AC1A-11CF-A5D6-28DB04C10000}';
  17487. {$EXTERNALSYM KSPROPSETID_Quality}
  17488. type
  17489. KSPROPERTY_QUALITY = (
  17490. KSPROPERTY_QUALITY_REPORT,
  17491. KSPROPERTY_QUALITY_ERROR
  17492. );
  17493. {$EXTERNALSYM KSPROPERTY_QUALITY}
  17494. TKSPropertyQuality = KSPROPERTY_QUALITY;
  17495. //===========================================================================
  17496. const
  17497. KSPROPSETID_Connection : TGUID = '{1D58C920-AC9B-11CF-A5D6-28DB04C10000}';
  17498. {$EXTERNALSYM KSPROPSETID_Connection}
  17499. type
  17500. KSPROPERTY_CONNECTION = (
  17501. KSPROPERTY_CONNECTION_STATE,
  17502. KSPROPERTY_CONNECTION_PRIORITY,
  17503. KSPROPERTY_CONNECTION_DATAFORMAT,
  17504. KSPROPERTY_CONNECTION_ALLOCATORFRAMING,
  17505. KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT,
  17506. KSPROPERTY_CONNECTION_ACQUIREORDERING,
  17507. KSPROPERTY_CONNECTION_ALLOCATORFRAMING_EX,
  17508. KSPROPERTY_CONNECTION_STARTAT
  17509. );
  17510. {$EXTERNALSYM KSPROPERTY_CONNECTION}
  17511. TKSPropertyConnection = KSPROPERTY_CONNECTION;
  17512. //===========================================================================
  17513. //
  17514. // pins flags
  17515. //
  17516. const
  17517. KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER = $00000001;
  17518. {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_INPLACE_MODIFIER}
  17519. KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY = $00000002;
  17520. {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_SYSTEM_MEMORY}
  17521. KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY = $00000004;
  17522. {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_FRAME_INTEGRITY}
  17523. KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE = $00000008;
  17524. {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_MUST_ALLOCATE}
  17525. KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY = $80000000;
  17526. {$EXTERNALSYM KSALLOCATOR_REQUIREMENTF_PREFERENCES_ONLY}
  17527. KSALLOCATOR_OPTIONF_COMPATIBLE = $00000001;
  17528. {$EXTERNALSYM KSALLOCATOR_OPTIONF_COMPATIBLE}
  17529. KSALLOCATOR_OPTIONF_SYSTEM_MEMORY = $00000002;
  17530. {$EXTERNALSYM KSALLOCATOR_OPTIONF_SYSTEM_MEMORY}
  17531. KSALLOCATOR_OPTIONF_VALID = $00000003;
  17532. {$EXTERNALSYM KSALLOCATOR_OPTIONF_VALID}
  17533. //
  17534. // pins extended framing flags
  17535. //
  17536. KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT = $00000010;
  17537. {$EXTERNALSYM KSALLOCATOR_FLAG_PARTIAL_READ_SUPPORT}
  17538. KSALLOCATOR_FLAG_DEVICE_SPECIFIC = $00000020;
  17539. {$EXTERNALSYM KSALLOCATOR_FLAG_DEVICE_SPECIFIC}
  17540. KSALLOCATOR_FLAG_CAN_ALLOCATE = $00000040;
  17541. {$EXTERNALSYM KSALLOCATOR_FLAG_CAN_ALLOCATE}
  17542. KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO = $00000080;
  17543. {$EXTERNALSYM KSALLOCATOR_FLAG_INSIST_ON_FRAMESIZE_RATIO}
  17544. //
  17545. // allocator pipes flags
  17546. //
  17547. // there is at least one data modification in a pipe
  17548. KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY = $00000100;
  17549. {$EXTERNALSYM KSALLOCATOR_FLAG_NO_FRAME_INTEGRITY}
  17550. KSALLOCATOR_FLAG_MULTIPLE_OUTPUT = $00000200;
  17551. {$EXTERNALSYM KSALLOCATOR_FLAG_MULTIPLE_OUTPUT}
  17552. KSALLOCATOR_FLAG_CYCLE = $00000400;
  17553. {$EXTERNALSYM KSALLOCATOR_FLAG_CYCLE}
  17554. KSALLOCATOR_FLAG_ALLOCATOR_EXISTS = $00000800;
  17555. {$EXTERNALSYM KSALLOCATOR_FLAG_ALLOCATOR_EXISTS}
  17556. // there is no framing dependency between neighbouring pipes.
  17557. KSALLOCATOR_FLAG_INDEPENDENT_RANGES = $00001000;
  17558. {$EXTERNALSYM KSALLOCATOR_FLAG_INDEPENDENT_RANGES}
  17559. KSALLOCATOR_FLAG_ATTENTION_STEPPING = $00002000;
  17560. {$EXTERNALSYM KSALLOCATOR_FLAG_ATTENTION_STEPPING}
  17561. //
  17562. // old Framing structure
  17563. //
  17564. type
  17565. PKSAllocatorFraming = ^TKSAllocatorFraming;
  17566. KSALLOCATOR_FRAMING = record
  17567. case integer of
  17568. 0: (
  17569. OptionsFlags : ULONG); // allocator options (create)
  17570. 1: (
  17571. RequirementsFlags : ULONG; // allocation requirements (query)
  17572. PoolType : ULONG;
  17573. Frames : ULONG; // total number of allowable outstanding frames
  17574. FrameSize : ULONG; // total size of frame
  17575. FileAlignment : ULONG;
  17576. Reserved : ULONG);
  17577. end;
  17578. {$EXTERNALSYM KSALLOCATOR_FRAMING}
  17579. PKSALLOCATOR_FRAMING = ^KSALLOCATOR_FRAMING;
  17580. {$EXTERNALSYM PKSALLOCATOR_FRAMING}
  17581. TKSAllocatorFraming = KSALLOCATOR_FRAMING;
  17582. //
  17583. // new Framing structure, eventually will replace KSALLOCATOR_FRAMING.
  17584. //
  17585. PKSFramingRange = ^TKSFramingRange;
  17586. KS_FRAMING_RANGE = record
  17587. MinFrameSize : ULONG;
  17588. MaxFrameSize : ULONG;
  17589. Stepping : ULONG;
  17590. end;
  17591. {$EXTERNALSYM KS_FRAMING_RANGE}
  17592. PKS_FRAMING_RANGE = ^KS_FRAMING_RANGE;
  17593. {$EXTERNALSYM PKS_FRAMING_RANGE}
  17594. TKSFramingRange = KS_FRAMING_RANGE;
  17595. PKSFramingRangeWeighted = ^TKSFramingRangeWeighted;
  17596. KS_FRAMING_RANGE_WEIGHTED = record
  17597. Range : TKSFramingRange;
  17598. InPlaceWeight : ULONG;
  17599. NotInPlaceWeight : ULONG;
  17600. end;
  17601. {$EXTERNALSYM KS_FRAMING_RANGE_WEIGHTED}
  17602. PKS_FRAMING_RANGE_WEIGHTED = ^KS_FRAMING_RANGE_WEIGHTED;
  17603. {$EXTERNALSYM PKS_FRAMING_RANGE_WEIGHTED}
  17604. TKSFramingRangeWeighted = KS_FRAMING_RANGE_WEIGHTED;
  17605. PKSCompression = ^TKSCompression;
  17606. KS_COMPRESSION = record
  17607. RatioNumerator : ULONG; // compression/expansion ratio
  17608. RatioDenominator : ULONG;
  17609. RatioConstantMargin : ULONG;
  17610. end;
  17611. {$EXTERNALSYM KS_COMPRESSION}
  17612. PKS_COMPRESSION = ^KS_COMPRESSION;
  17613. {$EXTERNALSYM PKS_COMPRESSION}
  17614. TKSCompression = KS_COMPRESSION;
  17615. //
  17616. // Memory Types and Buses are repeated in each entry.
  17617. // Easiest to use but takes a little more memory than the varsize layout Pin\Memories\Buses\Ranges.
  17618. //
  17619. PKSFramingItem = ^TKSFramingItem;
  17620. KS_FRAMING_ITEM = record
  17621. MemoryType : TGUID;
  17622. BusType : TGUID;
  17623. MemoryFlags : ULONG;
  17624. BusFlags : ULONG;
  17625. Flags : ULONG;
  17626. Frames : ULONG; // total number of allowable outstanding frames
  17627. FileAlignment : ULONG;
  17628. MemoryTypeWeight : ULONG; // this memory type Weight pin-wide
  17629. PhysicalRange : TKSFramingRange;
  17630. FramingRange : TKSFramingRangeWeighted;
  17631. end;
  17632. {$EXTERNALSYM KS_FRAMING_ITEM}
  17633. PKS_FRAMING_ITEM = ^KS_FRAMING_ITEM;
  17634. {$EXTERNALSYM PKS_FRAMING_ITEM}
  17635. TKSFramingItem = KS_FRAMING_ITEM;
  17636. PKSAllocatorFramingEx = ^TKSAllocatorFramingEx;
  17637. KSALLOCATOR_FRAMING_EX = record
  17638. CountItems : ULONG; // count of FramingItem-s below.
  17639. PinFlags : ULONG;
  17640. OutputCompression : TKSCompression;
  17641. PinWeight : ULONG; // this pin framing's Weight graph-wide
  17642. FramingItem : array[0..0] of TKSFramingItem;
  17643. end;
  17644. {$EXTERNALSYM KSALLOCATOR_FRAMING_EX}
  17645. PKSALLOCATOR_FRAMING_EX = ^KSALLOCATOR_FRAMING_EX;
  17646. {$EXTERNALSYM PKSALLOCATOR_FRAMING_EX}
  17647. TKSAllocatorFramingEx = KSALLOCATOR_FRAMING_EX;
  17648. //
  17649. // define memory type GUIDs
  17650. //
  17651. const
  17652. KSMEMORY_TYPE_WILDCARD : TGUID = '{00000000-0000-0000-0000-000000000000}';
  17653. {$EXTERNALSYM KSMEMORY_TYPE_WILDCARD}
  17654. KSMEMORY_TYPE_DONT_CARE : TGUID = '{00000000-0000-0000-0000-000000000000}';
  17655. {$EXTERNALSYM KSMEMORY_TYPE_DONT_CARE}
  17656. KS_TYPE_DONT_CARE : TGUID = '{00000000-0000-0000-0000-000000000000}';
  17657. {$EXTERNALSYM KS_TYPE_DONT_CARE}
  17658. KSMEMORY_TYPE_SYSTEM : TGUID = '{091bb638-603f-11d1-b067-00a0c9062802}';
  17659. {$EXTERNALSYM KSMEMORY_TYPE_SYSTEM}
  17660. KSMEMORY_TYPE_USER : TGUID = '{8cb0fc28-7893-11d1-b069-00a0c9062802}';
  17661. {$EXTERNALSYM KSMEMORY_TYPE_USER}
  17662. KSMEMORY_TYPE_KERNEL_PAGED : TGUID = '{d833f8f8-7894-11d1-b069-00a0c9062802}';
  17663. {$EXTERNALSYM KSMEMORY_TYPE_KERNEL_PAGED}
  17664. KSMEMORY_TYPE_KERNEL_NONPAGED : TGUID = '{4a6d5fc4-7895-11d1-b069-00a0c9062802}';
  17665. {$EXTERNALSYM KSMEMORY_TYPE_KERNEL_NONPAGED}
  17666. // old KS clients did not specify the device memory type
  17667. KSMEMORY_TYPE_DEVICE_UNKNOWN : TGUID = '{091bb639-603f-11d1-b067-00a0c9062802}';
  17668. {$EXTERNALSYM KSMEMORY_TYPE_DEVICE_UNKNOWN}
  17669. //
  17670. // Helper framing macros.
  17671. //
  17672. {#define DECLARE_SIMPLE_FRAMING_EX(FramingExName, MemoryType, Flags, Frames, Alignment, MinFrameSize, MaxFrameSize) \
  17673. const KSALLOCATOR_FRAMING_EX FramingExName = \
  17674. {\
  17675. 1, \
  17676. 0, \
  17677. {\
  17678. 1, \
  17679. 1, \
  17680. 0 \
  17681. }//, \
  17682. // 0, \
  17683. {\
  17684. {\
  17685. MemoryType, \
  17686. STATIC_KS_TYPE_DONT_CARE, \
  17687. 0, \
  17688. 0, \
  17689. Flags, \
  17690. Frames, \
  17691. Alignment, \
  17692. 0, \
  17693. {\
  17694. 0, \
  17695. (ULONG)-1, \
  17696. 1 \
  17697. }//, \
  17698. {\
  17699. {\
  17700. MinFrameSize, \
  17701. MaxFrameSize, \
  17702. 1 \
  17703. }//, \
  17704. // 0, \
  17705. // 0 \
  17706. // }\
  17707. // }\
  17708. // }\
  17709. // }
  17710. {#define SetDefaultKsCompression(KsCompressionPointer) \
  17711. {\
  17712. KsCompressionPointer->RatioNumerator = 1;\
  17713. KsCompressionPointer->RatioDenominator = 1;\
  17714. KsCompressionPointer->RatioConstantMargin = 0;\
  17715. }
  17716. {#define SetDontCareKsFramingRange(KsFramingRangePointer) \
  17717. {\
  17718. KsFramingRangePointer->MinFrameSize = 0;\
  17719. KsFramingRangePointer->MaxFrameSize = (ULONG) -1;\
  17720. KsFramingRangePointer->Stepping = 1;\
  17721. }
  17722. {#define SetKsFramingRange(KsFramingRangePointer, P_MinFrameSize, P_MaxFrameSize) \
  17723. {\
  17724. KsFramingRangePointer->MinFrameSize = P_MinFrameSize;\
  17725. KsFramingRangePointer->MaxFrameSize = P_MaxFrameSize;\
  17726. KsFramingRangePointer->Stepping = 1;\
  17727. }
  17728. {#define SetKsFramingRangeWeighted(KsFramingRangeWeightedPointer, P_MinFrameSize, P_MaxFrameSize) \
  17729. {\
  17730. KS_FRAMING_RANGE *KsFramingRange = &KsFramingRangeWeightedPointer->Range;\
  17731. SetKsFramingRange(KsFramingRange, P_MinFrameSize, P_MaxFrameSize);\
  17732. KsFramingRangeWeightedPointer->InPlaceWeight = 0;\
  17733. KsFramingRangeWeightedPointer->NotInPlaceWeight = 0;\
  17734. }
  17735. {#define INITIALIZE_SIMPLE_FRAMING_EX(FramingExPointer, P_MemoryType, P_Flags, P_Frames, P_Alignment, P_MinFrameSize, P_MaxFrameSize) \
  17736. {\
  17737. KS_COMPRESSION *KsCompression = &FramingExPointer->OutputCompression;\
  17738. KS_FRAMING_RANGE *KsFramingRange = &FramingExPointer->FramingItem[0].PhysicalRange;\
  17739. KS_FRAMING_RANGE_WEIGHTED *KsFramingRangeWeighted = &FramingExPointer->FramingItem[0].FramingRange;\
  17740. FramingExPointer->CountItems = 1;\
  17741. FramingExPointer->PinFlags = 0;\
  17742. SetDefaultKsCompression(KsCompression);\
  17743. FramingExPointer->PinWeight = 0;\
  17744. FramingExPointer->FramingItem[0].MemoryType = P_MemoryType;\
  17745. FramingExPointer->FramingItem[0].BusType = KS_TYPE_DONT_CARE;\
  17746. FramingExPointer->FramingItem[0].MemoryFlags = 0;\
  17747. FramingExPointer->FramingItem[0].BusFlags = 0;\
  17748. FramingExPointer->FramingItem[0].Flags = P_Flags;\
  17749. FramingExPointer->FramingItem[0].Frames = P_Frames;\
  17750. FramingExPointer->FramingItem[0].FileAlignment = P_Alignment;\
  17751. FramingExPointer->FramingItem[0].MemoryTypeWeight = 0;\
  17752. SetDontCareKsFramingRange(KsFramingRange);\
  17753. SetKsFramingRangeWeighted(KsFramingRangeWeighted, P_MinFrameSize, P_MaxFrameSize);\
  17754. }
  17755. KSEVENTSETID_StreamAllocator : TGUID = '{75d95571-073c-11d0-a161-0020afd156e4}';
  17756. {$EXTERNALSYM KSEVENTSETID_StreamAllocator}
  17757. type
  17758. KSEVENT_STREAMALLOCATOR = (
  17759. KSEVENT_STREAMALLOCATOR_INTERNAL_FREEFRAME,
  17760. KSEVENT_STREAMALLOCATOR_FREEFRAME
  17761. );
  17762. {$EXTERNALSYM KSEVENT_STREAMALLOCATOR}
  17763. TKSEventStreamAllocator = KSEVENT_STREAMALLOCATOR;
  17764. const
  17765. KSMETHODSETID_StreamAllocator : TGUID = '{cf6e4341-ec87-11cf-a130-0020afd156e4}';
  17766. {$EXTERNALSYM KSMETHODSETID_StreamAllocator}
  17767. type
  17768. KSMETHOD_STREAMALLOCATOR = (
  17769. KSMETHOD_STREAMALLOCATOR_ALLOC,
  17770. KSMETHOD_STREAMALLOCATOR_FREE
  17771. );
  17772. {$EXTERNALSYM KSMETHOD_STREAMALLOCATOR}
  17773. TKSMethodStreamAllocation = KSMETHOD_STREAMALLOCATOR;
  17774. {#define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(Handler)\
  17775. DEFINE_KSMETHOD_ITEM(\
  17776. KSMETHOD_STREAMALLOCATOR_ALLOC,\
  17777. KSMETHOD_TYPE_WRITE,\
  17778. (Handler),\
  17779. sizeof(KSMETHOD),\
  17780. sizeof(PVOID),\
  17781. NULL)
  17782. #define DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(Handler)\
  17783. DEFINE_KSMETHOD_ITEM(\
  17784. KSMETHOD_STREAMALLOCATOR_FREE,\
  17785. KSMETHOD_TYPE_READ,\
  17786. (Handler),\
  17787. sizeof(KSMETHOD),\
  17788. sizeof(PVOID),\
  17789. NULL)
  17790. #define DEFINE_KSMETHOD_ALLOCATORSET(AllocatorSet, MethodAlloc, MethodFree)\
  17791. DEFINE_KSMETHOD_TABLE(AllocatorSet) {\
  17792. DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_ALLOC(MethodAlloc),\
  17793. DEFINE_KSMETHOD_ITEM_STREAMALLOCATOR_FREE(MethodFree)\
  17794. }
  17795. const
  17796. KSPROPSETID_StreamAllocator : TGUID = '{cf6e4342-ec87-11cf-a130-0020afd156e4}';
  17797. {$EXTERNALSYM KSPROPSETID_StreamAllocator}
  17798. type
  17799. PKSStreamAllocatorStatus = ^TKSStreamAllocatorStatus;
  17800. KSSTREAMALLOCATOR_STATUS = record
  17801. Framing : TKSAllocatorFraming;
  17802. AllocatedFrames : ULONG;
  17803. Reserved : ULONG;
  17804. end;
  17805. {$EXTERNALSYM KSSTREAMALLOCATOR_STATUS}
  17806. PKSSTREAMALLOCATOR_STATUS = ^KSSTREAMALLOCATOR_STATUS;
  17807. {$EXTERNALSYM PKSSTREAMALLOCATOR_STATUS}
  17808. TKSStreamAllocatorStatus = KSSTREAMALLOCATOR_STATUS;
  17809. PKSStreamAllocatorStatusEx = ^TKSStreamAllocatorStatusEx;
  17810. KSSTREAMALLOCATOR_STATUS_EX = record
  17811. Framing : TKSAllocatorFramingEx;
  17812. AllocatedFrames : ULONG;
  17813. Reserved : ULONG;
  17814. end;
  17815. {$EXTERNALSYM KSSTREAMALLOCATOR_STATUS_EX}
  17816. PKSSTREAMALLOCATOR_STATUS_EX = ^KSSTREAMALLOCATOR_STATUS_EX;
  17817. {$EXTERNALSYM PKSSTREAMALLOCATOR_STATUS_EX}
  17818. TKSStreamAllocatorStatusEx = KSSTREAMALLOCATOR_STATUS_EX;
  17819. const
  17820. KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT = $00000001;
  17821. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_SPLICEPOINT}
  17822. KSSTREAM_HEADER_OPTIONSF_PREROLL = $00000002;
  17823. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_PREROLL}
  17824. KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY = $00000004;
  17825. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_DATADISCONTINUITY}
  17826. KSSTREAM_HEADER_OPTIONSF_TYPECHANGED = $00000008;
  17827. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_TYPECHANGED}
  17828. KSSTREAM_HEADER_OPTIONSF_TIMEVALID = $00000010;
  17829. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_TIMEVALID}
  17830. KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY = $00000040;
  17831. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_TIMEDISCONTINUITY}
  17832. KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE = $00000080;
  17833. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_FLUSHONPAUSE}
  17834. KSSTREAM_HEADER_OPTIONSF_DURATIONVALID = $00000100;
  17835. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_DURATIONVALID}
  17836. KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM = $00000200;
  17837. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_ENDOFSTREAM}
  17838. KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA = $80000000;
  17839. {$EXTERNALSYM KSSTREAM_HEADER_OPTIONSF_LOOPEDDATA}
  17840. type
  17841. KSTIME = record
  17842. Time : int64;
  17843. Numerator : ULONG;
  17844. Denominator : ULONG;
  17845. end;
  17846. {$EXTERNALSYM KSTIME}
  17847. PKSTIME = ^KSTIME;
  17848. {$EXTERNALSYM PKSTIME}
  17849. TKSTime = KSTIME;
  17850. PKSStreamHeader = ^TKSStreamHeader;
  17851. KSSTREAM_HEADER = record
  17852. Size : ULONG;
  17853. TypeSpecificFlags : ULONG;
  17854. PresentationTime : TKSTIME;
  17855. Duration : int64;
  17856. FrameExtent : ULONG;
  17857. DataUsed : ULONG;
  17858. Data : Pointer;
  17859. OptionsFlags : ULONG;
  17860. //#if _WIN64
  17861. // Reserved : ULONG;
  17862. //#endif
  17863. end;
  17864. {$EXTERNALSYM KSSTREAM_HEADER}
  17865. PKSSTREAM_HEADER = ^KSSTREAM_HEADER;
  17866. {$EXTERNALSYM PKSSTREAM_HEADER}
  17867. TKSStreamHeader = KSSTREAM_HEADER;
  17868. const
  17869. KSPROPSETID_StreamInterface : TGUID = '{1fdd8ee1-9cd3-11d0-82aa-0000f822fe8a}';
  17870. {$EXTERNALSYM KSPROPSETID_StreamInterface}
  17871. type
  17872. KSPROPERTY_STREAMINTERFACE = (
  17873. KSPROPERTY_STREAMINTERFACE_HEADERSIZE
  17874. );
  17875. {$EXTERNALSYM KSPROPERTY_STREAMINTERFACE}
  17876. TKSPropertyStreamInterface = KSPROPERTY_STREAMINTERFACE;
  17877. {#define DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( GetHandler )\
  17878. DEFINE_KSPROPERTY_ITEM(\
  17879. KSPROPERTY_STREAMINTERFACE_HEADERSIZE,\
  17880. (GetHandler),\
  17881. sizeof(KSPROPERTY),\
  17882. sizeof(ULONG),\
  17883. NULL, NULL, 0, NULL, NULL, 0)
  17884. #define DEFINE_KSPROPERTY_STREAMINTERFACESET(StreamInterfaceSet,\
  17885. HeaderSizeHandler)\
  17886. DEFINE_KSPROPERTY_TABLE(StreamInterfaceSet) {\
  17887. DEFINE_KSPROPERTY_ITEM_STREAMINTERFACE_HEADERSIZE( HeaderSizeHandler )\
  17888. }
  17889. const
  17890. KSPROPSETID_Stream : TGUId = '{65aaba60-98ae-11cf-a10d-0020afd156e4}';
  17891. {$EXTERNALSYM KSPROPSETID_Stream}
  17892. type
  17893. KSPROPERTY_STREAM = (
  17894. KSPROPERTY_STREAM_ALLOCATOR,
  17895. KSPROPERTY_STREAM_QUALITY,
  17896. KSPROPERTY_STREAM_DEGRADATION,
  17897. KSPROPERTY_STREAM_MASTERCLOCK,
  17898. KSPROPERTY_STREAM_TIMEFORMAT,
  17899. KSPROPERTY_STREAM_PRESENTATIONTIME,
  17900. KSPROPERTY_STREAM_PRESENTATIONEXTENT,
  17901. KSPROPERTY_STREAM_FRAMETIME,
  17902. KSPROPERTY_STREAM_RATECAPABILITY,
  17903. KSPROPERTY_STREAM_RATE,
  17904. KSPROPERTY_STREAM_PIPE_ID
  17905. );
  17906. {$EXTERNALSYM KSPROPERTY_STREAM}
  17907. TKSPropertyStream = KSPROPERTY_STREAM;
  17908. {#define DEFINE_KSPROPERTY_ITEM_STREAM_ALLOCATOR(GetHandler, SetHandler)\
  17909. DEFINE_KSPROPERTY_ITEM(\
  17910. KSPROPERTY_STREAM_ALLOCATOR,\
  17911. (GetHandler),\
  17912. sizeof(KSPROPERTY),\
  17913. sizeof(HANDLE),\
  17914. (SetHandler),\
  17915. NULL, 0, NULL, NULL, 0)
  17916. #define DEFINE_KSPROPERTY_ITEM_STREAM_QUALITY(Handler)\
  17917. DEFINE_KSPROPERTY_ITEM(\
  17918. KSPROPERTY_STREAM_QUALITY,\
  17919. (Handler),\
  17920. sizeof(KSPROPERTY),\
  17921. sizeof(KSQUALITY_MANAGER),\
  17922. NULL, NULL, 0, NULL, NULL, 0)
  17923. #define DEFINE_KSPROPERTY_ITEM_STREAM_DEGRADATION(GetHandler, SetHandler)\
  17924. DEFINE_KSPROPERTY_ITEM(\
  17925. KSPROPERTY_STREAM_DEGRADATION,\
  17926. (GetHandler),\
  17927. sizeof(KSPROPERTY),\
  17928. 0,\
  17929. (SetHandler),\
  17930. NULL, 0, NULL, NULL, 0)
  17931. #define DEFINE_KSPROPERTY_ITEM_STREAM_MASTERCLOCK(GetHandler, SetHandler)\
  17932. DEFINE_KSPROPERTY_ITEM(\
  17933. KSPROPERTY_STREAM_MASTERCLOCK,\
  17934. (GetHandler),\
  17935. sizeof(KSPROPERTY),\
  17936. sizeof(HANDLE),\
  17937. (SetHandler),\
  17938. NULL, 0, NULL, NULL, 0)
  17939. #define DEFINE_KSPROPERTY_ITEM_STREAM_TIMEFORMAT(Handler)\
  17940. DEFINE_KSPROPERTY_ITEM(\
  17941. KSPROPERTY_STREAM_TIMEFORMAT,\
  17942. (Handler),\
  17943. sizeof(KSPROPERTY),\
  17944. sizeof(GUID),\
  17945. NULL, NULL, 0, NULL, NULL, 0)
  17946. #define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONTIME(GetHandler, SetHandler)\
  17947. DEFINE_KSPROPERTY_ITEM(\
  17948. KSPROPERTY_STREAM_PRESENTATIONTIME,\
  17949. (GetHandler),\
  17950. sizeof(KSPROPERTY),\
  17951. sizeof(KSTIME),\
  17952. (SetHandler),\
  17953. NULL, 0, NULL, NULL, 0)
  17954. #define DEFINE_KSPROPERTY_ITEM_STREAM_PRESENTATIONEXTENT(Handler)\
  17955. DEFINE_KSPROPERTY_ITEM(\
  17956. KSPROPERTY_STREAM_PRESENTATIONEXTENT,\
  17957. (Handler),\
  17958. sizeof(KSPROPERTY),\
  17959. sizeof(LONGLONG),\
  17960. NULL, NULL, 0, NULL, NULL, 0)
  17961. #define DEFINE_KSPROPERTY_ITEM_STREAM_FRAMETIME(Handler)\
  17962. DEFINE_KSPROPERTY_ITEM(\
  17963. KSPROPERTY_STREAM_FRAMETIME,\
  17964. (Handler),\
  17965. sizeof(KSPROPERTY),\
  17966. sizeof(KSFRAMETIME),\
  17967. NULL, NULL, 0, NULL, NULL, 0)
  17968. #define DEFINE_KSPROPERTY_ITEM_STREAM_RATECAPABILITY(Handler)\
  17969. DEFINE_KSPROPERTY_ITEM(\
  17970. KSPROPERTY_STREAM_RATECAPABILITY,\
  17971. (Handler),\
  17972. sizeof(KSRATE_CAPABILITY),\
  17973. sizeof(KSRATE),\
  17974. NULL, NULL, 0, NULL, NULL, 0)
  17975. #define DEFINE_KSPROPERTY_ITEM_STREAM_RATE(GetHandler, SetHandler)\
  17976. DEFINE_KSPROPERTY_ITEM(\
  17977. KSPROPERTY_STREAM_RATE,\
  17978. (GetHandler),\
  17979. sizeof(KSPROPERTY),\
  17980. sizeof(KSRATE),\
  17981. (SetHandler),\
  17982. NULL, 0, NULL, NULL, 0)
  17983. #define DEFINE_KSPROPERTY_ITEM_STREAM_PIPE_ID(GetHandler, SetHandler)\
  17984. DEFINE_KSPROPERTY_ITEM(\
  17985. KSPROPERTY_STREAM_PIPE_ID,\
  17986. (GetHandler),\
  17987. sizeof(KSPROPERTY),\
  17988. sizeof(HANDLE),\
  17989. (SetHandler),\
  17990. NULL, 0, NULL, NULL, 0) }
  17991. PKSQualityManager = ^TKSQualityManager;
  17992. KSQUALITY_MANAGER = record
  17993. QualityManager : THandle;
  17994. Context : Pointer;
  17995. end;
  17996. {$EXTERNALSYM KSQUALITY_MANAGER}
  17997. PKSQUALITY_MANAGER = ^KSQUALITY_MANAGER;
  17998. {$EXTERNALSYM PKSQUALITY_MANAGER}
  17999. TKSQualityManager = KSQUALITY_MANAGER;
  18000. KSFRAMETIME = record
  18001. Duration : int64;
  18002. FrameFlags : ULONG;
  18003. Reserved : ULONG;
  18004. end;
  18005. {$EXTERNALSYM KSFRAMETIME}
  18006. PKSFRAMETIME = ^KSFRAMETIME;
  18007. {$EXTERNALSYM PKSFRAMETIME}
  18008. TKSFrameTime = KSFRAMETIME;
  18009. const
  18010. KSFRAMETIME_VARIABLESIZE = $00000001;
  18011. {$EXTERNALSYM KSFRAMETIME_VARIABLESIZE}
  18012. type
  18013. KSRATE = record
  18014. {$EXTERNALSYM KSRATE}
  18015. PresentationStart : int64;
  18016. Duration : int64;
  18017. Interface_ : TKSPinInterface;
  18018. Rate : Longint;
  18019. Flags : ULONG;
  18020. end;
  18021. PKSRATE = ^KSRATE;
  18022. {$EXTERNALSYM PKSRATE}
  18023. TKSRate = KSRATE;
  18024. const
  18025. KSRATE_NOPRESENTATIONSTART = $00000001;
  18026. {$EXTERNALSYM KSRATE_NOPRESENTATIONSTART}
  18027. KSRATE_NOPRESENTATIONDURATION = $00000002;
  18028. {$EXTERNALSYM KSRATE_NOPRESENTATIONDURATION}
  18029. type
  18030. PKSRateCapability = ^TKSRateCapability;
  18031. KSRATE_CAPABILITY = record
  18032. Property_ : KSPROPERTY;
  18033. Rate : TKSRATE;
  18034. end;
  18035. {$EXTERNALSYM KSRATE_CAPABILITY}
  18036. PKSRATE_CAPABILITY = ^KSRATE_CAPABILITY;
  18037. {$EXTERNALSYM PKSRATE_CAPABILITY}
  18038. TKSRateCapability = KSRATE_CAPABILITY;
  18039. const
  18040. KSPROPSETID_Clock : TGUID = '{DF12A4C0-AC17-11CF-A5D6-28DB04C10000}';
  18041. {$EXTERNALSYM KSPROPSETID_Clock}
  18042. //
  18043. // Performs a x*y/z operation on 64 bit quantities by splitting the operation. The equation
  18044. // is simplified with respect to adding in the remainder for the upper 32 bits.
  18045. //
  18046. // (xh * 10000000 / Frequency) * 2^32 + ((((xh * 10000000) % Frequency) * 2^32 + (xl * 10000000)) / Frequency)
  18047. //
  18048. NANOSECONDS = 10000000;
  18049. {$EXTERNALSYM NANOSECONDS}
  18050. {#define KSCONVERT_PERFORMANCE_TIME(Frequency, PerformanceTime) \
  18051. ((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS / (Frequency)) << 32) + \
  18052. ((((((ULONGLONG)(ULONG)(PerformanceTime).HighPart * NANOSECONDS) % (Frequency)) << 32) + \
  18053. ((ULONGLONG)(PerformanceTime).LowPart * NANOSECONDS)) / (Frequency)))}
  18054. type
  18055. PKSClockCreate = ^TKSClockCreate;
  18056. KSCLOCK_CREATE = record
  18057. CreateFlags : ULONG;
  18058. end;
  18059. {$EXTERNALSYM KSCLOCK_CREATE}
  18060. PKSCLOCK_CREATE = ^KSCLOCK_CREATE;
  18061. {$EXTERNALSYM PKSCLOCK_CREATE}
  18062. TKSClockCreate = KSCLOCK_CREATE;
  18063. PKSCorrelatedTime = ^TKSCorrelatedTime;
  18064. KSCORRELATED_TIME = record
  18065. Time : int64;
  18066. SystemTime : int64;
  18067. end;
  18068. {$EXTERNALSYM KSCORRELATED_TIME}
  18069. PKSCORRELATED_TIME = ^KSCORRELATED_TIME;
  18070. {$EXTERNALSYM PKSCORRELATED_TIME}
  18071. TKSCorrelatedTime = KSCORRELATED_TIME;
  18072. KSRESOLUTION = record
  18073. Granularity : int64;
  18074. Error : int64;
  18075. end;
  18076. {$EXTERNALSYM KSRESOLUTION}
  18077. PKSRESOLUTION = ^KSRESOLUTION;
  18078. {$EXTERNALSYM PKSRESOLUTION}
  18079. TKSResolution = KSRESOLUTION;
  18080. KSPROPERTY_CLOCK = (
  18081. KSPROPERTY_CLOCK_TIME,
  18082. KSPROPERTY_CLOCK_PHYSICALTIME,
  18083. KSPROPERTY_CLOCK_CORRELATEDTIME,
  18084. KSPROPERTY_CLOCK_CORRELATEDPHYSICALTIME,
  18085. KSPROPERTY_CLOCK_RESOLUTION,
  18086. KSPROPERTY_CLOCK_STATE
  18087. );
  18088. {$EXTERNALSYM KSPROPERTY_CLOCK}
  18089. TKSPropertyClock = KSPROPERTY_CLOCK;
  18090. const
  18091. KSEVENTSETID_Clock : TGUID = '{364D8E20-62C7-11CF-A5D6-28DB04C10000}';
  18092. {$EXTERNALSYM KSEVENTSETID_Clock}
  18093. type
  18094. KSEVENT_CLOCK_POSITION = (
  18095. KSEVENT_CLOCK_INTERVAL_MARK,
  18096. KSEVENT_CLOCK_POSITION_MARK
  18097. );
  18098. {$EXTERNALSYM KSEVENT_CLOCK_POSITION}
  18099. TKSEventClockPosition = KSEVENT_CLOCK_POSITION;
  18100. const
  18101. KSEVENTSETID_Connection : TGUID = '{7f4bcbe0-9ea5-11cf-a5d6-28db04c10000}';
  18102. {$EXTERNALSYM KSEVENTSETID_Connection}
  18103. type
  18104. KSEVENT_CONNECTION = (
  18105. KSEVENT_CONNECTION_POSITIONUPDATE,
  18106. KSEVENT_CONNECTION_DATADISCONTINUITY,
  18107. KSEVENT_CONNECTION_TIMEDISCONTINUITY,
  18108. KSEVENT_CONNECTION_PRIORITY,
  18109. KSEVENT_CONNECTION_ENDOFSTREAM
  18110. );
  18111. {$EXTERNALSYM KSEVENT_CONNECTION}
  18112. TKSEventConnection = KSEVENT_CONNECTION;
  18113. KSQUALITY = record
  18114. Context : Pointer;
  18115. Proportion : ULONG;
  18116. DeltaTime : int64;
  18117. end;
  18118. {$EXTERNALSYM KSQUALITY}
  18119. PKSQUALITY = ^KSQUALITY;
  18120. {$EXTERNALSYM PKSQUALITY}
  18121. TKSQuality = KSQUALITY;
  18122. KSERROR = record
  18123. {$EXTERNALSYM KSERROR}
  18124. Context : Pointer;
  18125. Status : ULONG;
  18126. end;
  18127. PKSERROR = ^KSERROR;
  18128. {$EXTERNALSYM PKSERROR}
  18129. TKSError = KSERROR;
  18130. PKSDEGRADE = ^KSDEGRADE;
  18131. {$EXTERNALSYM PKSDEGRADE}
  18132. KSDEGRADE = KSIDENTIFIER;
  18133. {$EXTERNALSYM KSDEGRADE}
  18134. TKSDegrade = KSDEGRADE;
  18135. const
  18136. KSDEGRADESETID_Standard : TGUID = '{9F564180-704C-11D0-A5D6-28DB04C10000}';
  18137. {$EXTERNALSYM KSDEGRADESETID_Standard}
  18138. type
  18139. KSDEGRADE_STANDARD = (
  18140. KSDEGRADE_STANDARD_SAMPLE,
  18141. KSDEGRADE_STANDARD_QUALITY,
  18142. KSDEGRADE_STANDARD_COMPUTATION,
  18143. KSDEGRADE_STANDARD_SKIP
  18144. );
  18145. {$EXTERNALSYM KSDEGRADE_STANDARD}
  18146. TKSDegradeStandard = KSDEGRADE_STANDARD;
  18147. //#if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
  18148. //#include <pshpack1.h>
  18149. //#endif
  18150. KSPROPERTY_SERIALHDR = record
  18151. PropertySet : TGUID;
  18152. Count : ULONG;
  18153. end;
  18154. {$EXTERNALSYM KSPROPERTY_SERIALHDR}
  18155. PKSPROPERTY_SERIALHDR = ^KSPROPERTY_SERIALHDR;
  18156. {$EXTERNALSYM PKSPROPERTY_SERIALHDR}
  18157. TKSPropertySerialHDR = KSPROPERTY_SERIALHDR;
  18158. //#if !defined( PACK_PRAGMAS_NOT_SUPPORTED )
  18159. //#include <poppack.h>
  18160. //#endif
  18161. PKSPropertySerial = ^TKSPropertySerial;
  18162. KSPROPERTY_SERIAL = record
  18163. PropTypeSet : TKSIdentifier;
  18164. Id : ULONG;
  18165. PropertyLength : ULONG;
  18166. end;
  18167. {$EXTERNALSYM KSPROPERTY_SERIAL}
  18168. PKSPROPERTY_SERIAL = ^KSPROPERTY_SERIAL;
  18169. {$EXTERNALSYM PKSPROPERTY_SERIAL}
  18170. TKSPropertySerial = KSPROPERTY_SERIAL;
  18171. //===========================================================================
  18172. //
  18173. // exported prototypes
  18174. // From WinNT.h (H.GOURVEST)
  18175. // Define the access mask as a longword sized structure divided up as
  18176. // follows:
  18177. //
  18178. // 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1
  18179. // 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
  18180. // +---------------+---------------+-------------------------------+
  18181. // |G|G|G|G|Res'd|A| StandardRights| SpecificRights |
  18182. // |R|W|E|A| |S| | |
  18183. // +-+-------------+---------------+-------------------------------+
  18184. //
  18185. // typedef struct _ACCESS_MASK {
  18186. // WORD SpecificRights;
  18187. // BYTE StandardRights;
  18188. // BYTE AccessSystemAcl : 1;
  18189. // BYTE Reserved : 3;
  18190. // BYTE GenericAll : 1;
  18191. // BYTE GenericExecute : 1;
  18192. // BYTE GenericWrite : 1;
  18193. // BYTE GenericRead : 1;
  18194. // } ACCESS_MASK;
  18195. // typedef ACCESS_MASK *PACCESS_MASK;
  18196. //
  18197. // but to make life simple for programmer's we'll allow them to specify
  18198. // a desired access mask by simply OR'ing together mulitple single rights
  18199. // and treat an access mask as a DWORD. For example
  18200. //
  18201. // DesiredAccess = DELETE | READ_CONTROL
  18202. //
  18203. // So we'll declare ACCESS_MASK as DWORD
  18204. //
  18205. function KsCreateAllocator(ConnectionHandle: THandle;
  18206. AllocatorFraming: PKSAllocatorFraming;
  18207. out AllocatorHandle: PHandle): DWORD; stdcall;
  18208. {$EXTERNALSYM KsCreateAllocator}
  18209. function KsCreateClock(ConnectionHandle: THandle;
  18210. ClockCreate: PKSClockCreate;
  18211. out ClockHandle: PHandle): DWORD; stdcall;
  18212. {$EXTERNALSYM KsCreateClock}
  18213. function KsCreatePin(FilterHandle: THandle;
  18214. Connect: PKSPinConnect;
  18215. DesiredAccess: ACCESS_MASK ;
  18216. out ConnectionHandle: PHandle): DWORD; stdcall;
  18217. {$EXTERNALSYM KsCreatePin}
  18218. function KsCreateTopologyNode(ParentHandle: THandle;
  18219. NodeCreate: PKSNodeCreate;
  18220. DesiredAccess: ACCESS_MASK;
  18221. out NodeHandle: PHandle): DWORD; stdcall;
  18222. {$EXTERNALSYM KsCreateTopologyNode}
  18223. {===============================================================================
  18224. *
  18225. * Copyright (C) Microsoft Corporation, 1996 - 1999
  18226. * Module Name: ksproxy.h
  18227. * Abstract : Interface definitions for WDM-CSA proxy filters.
  18228. *
  18229. *==============================================================================}
  18230. const
  18231. IID_IKsObject : TGUID = (D1:$423c13a2;D2:$2070;D3:$11d0;D4:($9e,$f7,$00,$aa,$00,$a2,$16,$a1));
  18232. {$EXTERNALSYM IID_IKsObject}
  18233. STATIC_IID_IKsObject : TGUID = (D1:$423c13a2;D2:$2070;D3:$11d0;D4:($9e,$f7,$00,$aa,$00,$a2,$16,$a1));
  18234. {$EXTERNALSYM STATIC_IID_IKsObject}
  18235. IID_IKsPinEx : TGUID = (D1:$7bb38260;D2:$d19c;D3:$11d2;D4:($b3,$8a,$00,$a0,$c9,$5e,$c2,$2e));
  18236. {$EXTERNALSYM IID_IKsPinEx}
  18237. STATIC_IID_IKsPinEx : TGUID = (D1:$7bb38260;D2:$d19c;D3:$11d2;D4:($b3,$8a,$00,$a0,$c9,$5e,$c2,$2e));
  18238. {$EXTERNALSYM STATIC_IID_IKsPinEx}
  18239. IID_IKsPinPipe : TGUID = (D1:$e539cd90;D2:$a8b4;D3:$11d1;D4:($81,$89,$00,$a0,$c9,$06,$28,$02));
  18240. {$EXTERNALSYM IID_IKsPinPipe}
  18241. STATIC_IID_IKsPinPipe : TGUID = (D1:$e539cd90;D2:$a8b4;D3:$11d1;D4:($81,$89,$00,$a0,$c9,$06,$28,$02));
  18242. {$EXTERNALSYM STATIC_IID_IKsPinPipe}
  18243. IID_IKsDataTypeCompletion : TGUID = (D1:$827D1A0E;D2:$0F73;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  18244. {$EXTERNALSYM IID_IKsDataTypeCompletion}
  18245. STATIC_IID_IKsDataTypeCompletion : TGUID = (D1:$827D1A0E;D2:$0F73;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  18246. {$EXTERNALSYM STATIC_IID_IKsDataTypeCompletion}
  18247. IID_IKsClockPropertySet : TGUID = (D1:$5C5CBD84;D2:$E755;D3:$11D0;D4:($AC,$18,$00,$A0,$C9,$22,$31,$96));
  18248. {$EXTERNALSYM IID_IKsClockPropertySet}
  18249. STATIC_IID_IKsClockPropertySet : TGUID = (D1:$5C5CBD84;D2:$E755;D3:$11D0;D4:($AC,$18,$00,$A0,$C9,$22,$31,$96));
  18250. {$EXTERNALSYM STATIC_IID_IKsClockPropertySet}
  18251. IID_IKsAllocator : TGUID = (D1:$8da64899;D2:$c0d9;D3:$11d0;D4:($84,$13,$00,$00,$f8,$22,$fe,$8a));
  18252. {$EXTERNALSYM IID_IKsAllocator}
  18253. STATIC_IID_IKsAllocator : TGUID = (D1:$8da64899;D2:$c0d9;D3:$11d0;D4:($84,$13,$00,$00,$f8,$22,$fe,$8a));
  18254. {$EXTERNALSYM STATIC_IID_IKsAllocator}
  18255. IID_IKsAllocatorEx : TGUID = (D1:$091bb63a;D2:$603f;D3:$11d1;D4:($b0,$67,$00,$a0,$c9,$06,$28,$02));
  18256. {$EXTERNALSYM IID_IKsAllocatorEx}
  18257. STATIC_IID_IKsAllocatorEx : TGUID = (D1:$091bb63a;D2:$603f;D3:$11d1;D4:($b0,$67,$00,$a0,$c9,$06,$28,$02));
  18258. {$EXTERNALSYM STATIC_IID_IKsAllocatorEx}
  18259. IID_IKsTopology : TGUID = (D1:$28F54683;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  18260. {$EXTERNALSYM IID_IKsTopology}
  18261. STATIC_IID_IKsTopology : TGUID = (D1:$28F54683;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  18262. {$EXTERNALSYM STATIC_IID_IKsTopology}
  18263. IID_IKsAggregateControl : TGUID = (D1:$7F40EAC0;D2:$3947;D3:$11D2;D4:($87,$4E,$00,$A0,$C9,$22,$31,$96));
  18264. {$EXTERNALSYM IID_IKsAggregateControl}
  18265. STATIC_IID_IKsAggregateControl : TGUID = (D1:$7F40EAC0;D2:$3947;D3:$11D2;D4:($87,$4E,$00,$A0,$C9,$22,$31,$96));
  18266. {$EXTERNALSYM STATIC_IID_IKsAggregateControl}
  18267. CLSID_Proxy : TGUID = (D1:$17CCA71B;D2:$ECD7;D3:$11D0;D4:($B9,$08,$00,$A0,$C9,$22,$31,$96));
  18268. {$EXTERNALSYM CLSID_Proxy}
  18269. IID_IKsQualityForwarder : TGUID = '{97EBAACB-95BD-11D0-A3EA-00A0C9223196}';
  18270. {$EXTERNALSYM IID_IKsQualityForwarder}
  18271. STATIC_IID_IKsQualityForwarder : TGUID = '{97EBAACB-95BD-11D0-A3EA-00A0C9223196}';
  18272. {$EXTERNALSYM STATIC_IID_IKsQualityForwarder}
  18273. IID_IKsNotifyEvent : TGUID = '{412bd695-f84b-46c1-ac73-54196dbc8fa7}';
  18274. {$EXTERNALSYM IID_IKsNotifyEvent}
  18275. type
  18276. KSALLOCATORMODE = (
  18277. KsAllocatorMode_User,
  18278. KsAllocatorMode_Kernel
  18279. );
  18280. {$EXTERNALSYM KSALLOCATORMODE}
  18281. TKSAllocatorMode = KSALLOCATORMODE;
  18282. PFramingProp = ^TFramingProp;
  18283. FRAMING_PROP = (
  18284. FramingProp_Uninitialized,
  18285. FramingProp_None,
  18286. FramingProp_Old,
  18287. FramingProp_Ex
  18288. );
  18289. {$EXTERNALSYM FRAMING_PROP}
  18290. PFRAMING_PROP = ^FRAMING_PROP;
  18291. {$EXTERNALSYM PFRAMING_PROP}
  18292. TFramingProp = FRAMING_PROP;
  18293. FRAMING_CACHE_OPS = (
  18294. Framing_Cache_Update, // request to bypass cache when read/write
  18295. Framing_Cache_ReadLast,
  18296. Framing_Cache_ReadOrig,
  18297. Framing_Cache_Write
  18298. );
  18299. {$EXTERNALSYM FRAMING_CACHE_OPS}
  18300. TFramingCacheOps = FRAMING_CACHE_OPS;
  18301. OPTIMAL_WEIGHT_TOTALS = record
  18302. MinTotalNominator : int64;
  18303. MaxTotalNominator : int64;
  18304. TotalDenominator : int64;
  18305. end;
  18306. {$EXTERNALSYM OPTIMAL_WEIGHT_TOTALS}
  18307. TOptimalWeightTotals = OPTIMAL_WEIGHT_TOTALS;
  18308. //
  18309. // allocators strategy is defined by graph manager
  18310. //
  18311. const
  18312. AllocatorStrategy_DontCare = 0;
  18313. {$EXTERNALSYM AllocatorStrategy_DontCare}
  18314. //
  18315. // what to optimize
  18316. //
  18317. AllocatorStrategy_MinimizeNumberOfFrames = $00000001;
  18318. {$EXTERNALSYM AllocatorStrategy_MinimizeNumberOfFrames}
  18319. AllocatorStrategy_MinimizeFrameSize = $00000002;
  18320. {$EXTERNALSYM AllocatorStrategy_MinimizeFrameSize}
  18321. AllocatorStrategy_MinimizeNumberOfAllocators = $00000004;
  18322. {$EXTERNALSYM AllocatorStrategy_MinimizeNumberOfAllocators}
  18323. AllocatorStrategy_MaximizeSpeed = $00000008;
  18324. {$EXTERNALSYM AllocatorStrategy_MaximizeSpeed}
  18325. //
  18326. // factors (flags) defining the Pipes properties
  18327. //
  18328. PipeFactor_None = 0;
  18329. {$EXTERNALSYM PipeFactor_None}
  18330. PipeFactor_UserModeUpstream = $00000001;
  18331. {$EXTERNALSYM PipeFactor_UserModeUpstream}
  18332. PipeFactor_UserModeDownstream = $00000002;
  18333. {$EXTERNALSYM PipeFactor_UserModeDownstream}
  18334. PipeFactor_MemoryTypes = $00000004;
  18335. {$EXTERNALSYM PipeFactor_MemoryTypes}
  18336. PipeFactor_Flags = $00000008;
  18337. {$EXTERNALSYM PipeFactor_Flags}
  18338. PipeFactor_PhysicalRanges = $00000010;
  18339. {$EXTERNALSYM PipeFactor_PhysicalRanges}
  18340. PipeFactor_OptimalRanges = $00000020;
  18341. {$EXTERNALSYM PipeFactor_OptimalRanges}
  18342. PipeFactor_FixedCompression = $00000040;
  18343. {$EXTERNALSYM PipeFactor_FixedCompression}
  18344. PipeFactor_UnknownCompression = $00000080;
  18345. {$EXTERNALSYM PipeFactor_UnknownCompression}
  18346. PipeFactor_Buffers = $00000100;
  18347. {$EXTERNALSYM PipeFactor_Buffers}
  18348. PipeFactor_Align = $00000200;
  18349. {$EXTERNALSYM PipeFactor_Align}
  18350. PipeFactor_PhysicalEnd = $00000400;
  18351. {$EXTERNALSYM PipeFactor_PhysicalEnd}
  18352. PipeFactor_LogicalEnd = $00000800;
  18353. {$EXTERNALSYM PipeFactor_LogicalEnd}
  18354. type
  18355. PIPE_STATE = (
  18356. PipeState_DontCare,
  18357. PipeState_RangeNotFixed,
  18358. PipeState_RangeFixed,
  18359. PipeState_CompressionUnknown,
  18360. PipeState_Finalized
  18361. );
  18362. {$EXTERNALSYM PIPE_STATE}
  18363. TPipeState = PIPE_STATE;
  18364. //
  18365. // pipe dimensions relative to BeginPin.
  18366. //
  18367. PPipeDimensions = ^TPipeDimensions;
  18368. PIPE_DIMENSIONS = record
  18369. AllocatorPin : TKSCompression;
  18370. MaxExpansionPin : TKSCompression;
  18371. EndPin : TKSCompression;
  18372. end;
  18373. {$EXTERNALSYM PIPE_DIMENSIONS}
  18374. PPIPE_DIMENSIONS = ^PIPE_DIMENSIONS;
  18375. {$EXTERNALSYM PPIPE_DIMENSIONS}
  18376. TPipeDimensions = PIPE_DIMENSIONS;
  18377. PPipeAllocatorPlace = ^TPipeAllocatorPlace;
  18378. PIPE_ALLOCATOR_PLACE = (
  18379. Pipe_Allocator_None,
  18380. Pipe_Allocator_FirstPin,
  18381. Pipe_Allocator_LastPin,
  18382. Pipe_Allocator_MiddlePin
  18383. );
  18384. {$EXTERNALSYM PIPE_ALLOCATOR_PLACE}
  18385. PPIPE_ALLOCATOR_PLACE = ^PIPE_ALLOCATOR_PLACE;
  18386. {$EXTERNALSYM PPIPE_ALLOCATOR_PLACE}
  18387. TPipeAllocatorPlace = PIPE_ALLOCATOR_PLACE;
  18388. PKSLogicalMemoryType = ^TKSLogicalMemoryType;
  18389. KS_LogicalMemoryType = (
  18390. KS_MemoryTypeDontCare,
  18391. KS_MemoryTypeKernelPaged,
  18392. KS_MemoryTypeKernelNonPaged,
  18393. KS_MemoryTypeDeviceHostMapped,
  18394. KS_MemoryTypeDeviceSpecific,
  18395. KS_MemoryTypeUser,
  18396. KS_MemoryTypeAnyHost
  18397. );
  18398. {$EXTERNALSYM KS_LogicalMemoryType}
  18399. PKS_LogicalMemoryType = ^KS_LogicalMemoryType;
  18400. {$EXTERNALSYM PKS_LogicalMemoryType}
  18401. TKSLogicalMemoryType = KS_LogicalMemoryType;
  18402. PIPE_TERMINATION = record
  18403. Flags : ULONG;
  18404. OutsideFactors : ULONG;
  18405. Weigth : ULONG; // outside weight
  18406. PhysicalRange : TKSFramingRange;
  18407. OptimalRange : TKSFramingRangeWeighted;
  18408. Compression : TKSCompression; // relative to the connected pin on a neighboring filter.
  18409. end;
  18410. {$EXTERNALSYM PIPE_TERMINATION}
  18411. TPipeTermination = PIPE_TERMINATION;
  18412. IKsAllocatorEx = interface;
  18413. //
  18414. // extended allocator properties
  18415. //
  18416. PAllocatorPropertiesEx = ^TAllocatorPropertiesEx;
  18417. ALLOCATOR_PROPERTIES_EX = record
  18418. cBuffers : longint;
  18419. cbBuffer : longint;
  18420. cbAlign : longint;
  18421. cbPrefix : longint;
  18422. // new part
  18423. MemoryType : TGUID;
  18424. BusType : TGUID; // one of the buses this pipe is using
  18425. State : TPipeState;
  18426. Input : TPipeTermination;
  18427. Output : TPipeTermination;
  18428. Strategy : ULONG;
  18429. Flags : ULONG;
  18430. Weight : ULONG;
  18431. LogicalMemoryType : TKSLogicalMemoryType;
  18432. AllocatorPlace : TPipeAllocatorPlace;
  18433. Dimensions : TPipeDimensions;
  18434. PhysicalRange : TKSFramingRange; // on allocator pin
  18435. PrevSegment : IKsAllocatorEx; // doubly-linked list of KS allocators
  18436. CountNextSegments : ULONG; // possible multiple dependent pipes
  18437. NextSegments : IKsAllocatorEx;
  18438. InsideFactors : ULONG; // existing factors (different from "don't care")
  18439. NumberPins : ULONG;
  18440. end;
  18441. {$EXTERNALSYM ALLOCATOR_PROPERTIES_EX}
  18442. PALLOCATOR_PROPERTIES_EX =^ALLOCATOR_PROPERTIES_EX;
  18443. {$EXTERNALSYM PALLOCATOR_PROPERTIES_EX}
  18444. TAllocatorPropertiesEx = ALLOCATOR_PROPERTIES_EX;
  18445. {$HPPEMIT 'typedef System::DelphiInterface<IKsClockPropertySet> _di_IKsClockPropertySet;'}
  18446. {$EXTERNALSYM IKsClockPropertySet}
  18447. IKsClockPropertySet = interface(IUnknown)
  18448. ['{5C5CBD84-E755-11D0-AC18-00A0C9223196}']
  18449. (*** IKsClockPropertySet methods ***)
  18450. procedure KsGetTime(out Time: int64); stdcall;
  18451. procedure KsSetTime(Time: int64); stdcall;
  18452. procedure KsGetPhysicalTime(out Time: int64); stdcall;
  18453. procedure KsSetPhysicalTime(Time: int64); stdcall;
  18454. procedure KsGetCorrelatedTime(out CorrelatedTime: TKSCorrelatedTime); stdcall;
  18455. procedure KsSetCorrelatedTime(CorrelatedTime: TKSCorrelatedTime); stdcall;
  18456. procedure KsGetCorrelatedPhysicalTime(out CorrelatedTime: TKSCorrelatedTime); stdcall;
  18457. procedure KsSetCorrelatedPhysicalTime(CorrelatedTime: TKSCorrelatedTime); stdcall;
  18458. procedure KsGetResolution(out Resolution: TKSResolution); stdcall;
  18459. procedure KsGetState(out State: TKSState); stdcall;
  18460. end;
  18461. {$HPPEMIT 'typedef System::DelphiInterface<IKsAllocator> _di_IKsAllocator;'}
  18462. {$EXTERNALSYM IKsAllocator}
  18463. IKsAllocator = interface(IUnknown)
  18464. ['{8da64899-c0d9-11d0-8413-0000f822fe8a}']
  18465. (*** IKsAllocator methods ***)
  18466. function KsGetAllocatorHandle: THandle; stdcall;
  18467. function KsGetAllocatorMode: TKSALLOCATORMODE; stdcall;
  18468. procedure KsGetAllocatorStatus(AllocatorStatus: PKSSTREAMALLOCATOR_STATUS); stdcall;
  18469. procedure KsSetAllocatorMode(Mode: TKSALLOCATORMODE); stdcall;
  18470. end;
  18471. IKsPin = interface;
  18472. {$HPPEMIT 'typedef System::DelphiInterface<IKsAllocatorEx> _di_IKsAllocatorEx;'}
  18473. {$EXTERNALSYM IKsAllocatorEx}
  18474. IKsAllocatorEx = interface(IKsAllocator)
  18475. ['{091bb63a-603f-11d1-b067-00a0c9062802}']
  18476. (*** IKsAllocatorEx methods ***)
  18477. function KsGetProperties: TAllocatorPropertiesEx; stdcall;
  18478. procedure KsSetProperties(PROPERTIES: PALLOCATOR_PROPERTIES_EX); stdcall;
  18479. procedure KsSetAllocatorHandle(AllocatorHandle: THandle); stdcall;
  18480. function KsCreateAllocatorAndGetHandle(KsPin: IKsPin): THandle; stdcall;
  18481. end;
  18482. KSPEEKOPERATION = (
  18483. KsPeekOperation_PeekOnly,
  18484. KsPeekOperation_AddRef
  18485. );
  18486. {$EXTERNALSYM KSPEEKOPERATION}
  18487. TKSPeekOperation = KSPEEKOPERATION;
  18488. IKsInterfaceHandler = interface;
  18489. IKsDataTypeHandler = interface;
  18490. KSIOOPERATION = (
  18491. KsIoOperation_Write,
  18492. KsIoOperation_Read
  18493. );
  18494. {$EXTERNALSYM KSIOOPERATION}
  18495. TKSIOOperation = KSIOOPERATION;
  18496. PKSStreamSegment = ^TKSStreamSegment;
  18497. KSSTREAM_SEGMENT = record
  18498. KsInterfaceHandler : IKsInterfaceHandler;
  18499. KsDataTypeHandler : IKsDataTypeHandler;
  18500. IoOperation : TKSIOOPERATION;
  18501. CompletionEvent : THandle;
  18502. end;
  18503. {$EXTERNALSYM KSSTREAM_SEGMENT}
  18504. PKSSTREAM_SEGMENT = ^KSSTREAM_SEGMENT;
  18505. {$EXTERNALSYM PKSSTREAM_SEGMENT}
  18506. TKSStreamSegment = KSSTREAM_SEGMENT;
  18507. {$HPPEMIT 'typedef System::DelphiInterface<IKsPin> _di_IKsPin;'}
  18508. {$EXTERNALSYM IKsPin}
  18509. IKsPin = interface(IUnknown)
  18510. ['{b61178d1-a2d9-11cf-9e53-00aa00a216a1}']
  18511. (*** IKsPin methods ***)
  18512. // [pjh, 2003-07-14] fix wrong translation
  18513. function KsQueryMediums(out MediumList: PKSMULTIPLE_ITEM): HResult; stdcall;
  18514. function KsQueryInterfaces(InterfaceList: PKSMULTIPLE_ITEM): HResult; stdcall;
  18515. function KsCreateSinkPinHandle(Interface_: TKSPinInterface; Medium: TKSPinMedium): HResult; stdcall;
  18516. function KsGetCurrentCommunication(Communication: PKSPIN_COMMUNICATION;
  18517. Interface_: PKSPIN_INTERFACE; Medium: PKSPIN_MEDIUM): HResult; stdcall;
  18518. function KsPropagateAcquire: HResult; stdcall;
  18519. function KsDeliver(Sample: IMediaSample; Flags: ULONG): HResult; stdcall;
  18520. function KsMediaSamplesCompleted(StreamSegment: PKSSTREAM_SEGMENT): HResult; stdcall;
  18521. function KsPeekAllocator(Operation: TKSPEEKOPERATION): IMemAllocator; stdcall;
  18522. function KsReceiveAllocator(MemAllocator: IMemAllocator): HResult; stdcall;
  18523. function KsRenegotiateAllocator: HResult; stdcall;
  18524. function KsIncrementPendingIoCount: Longint; stdcall;
  18525. function KsDecrementPendingIoCount: Longint; stdcall;
  18526. function KsQualityNotify(Proportion: ULONG; TimeDelta: TReferenceTime): HResult; stdcall;
  18527. end;
  18528. {$HPPEMIT 'typedef System::DelphiInterface<IKsPinEx> _di_IKsPinEx;'}
  18529. {$EXTERNALSYM IKsPinEx}
  18530. IKsPinEx = interface(IKsPin)
  18531. ['{7bb38260-d19c-11d2-b38a-00a0c95ec22e}']
  18532. (*** IKsPinEx methods ***)
  18533. procedure KsNotifyError(Sample: IMediaSample; hr: HResult);
  18534. end;
  18535. {$HPPEMIT 'typedef System::DelphiInterface<IKsPinPipe> _di_IKsPinPipe;'}
  18536. {$EXTERNALSYM IKsPinPipe}
  18537. IKsPinPipe = interface(IUnknown)
  18538. ['{e539cd90-a8b4-11d1-8189-00a0c9062802}']
  18539. (*** IKsPinPipe methods ***)
  18540. procedure KsGetPinFramingCache(FramingEx: PKSALLOCATOR_FRAMING_EX;
  18541. FramingProp: PFRAMING_PROP; Option: TFramingCacheOps); stdcall;
  18542. procedure KsSetPinFramingCache(FramingEx: PKSALLOCATOR_FRAMING_EX;
  18543. FramingProp: PFRAMING_PROP; Option: TFramingCacheOps); stdcall;
  18544. function KsGetConnectedPin: IPin; stdcall;
  18545. function KsGetPipe(Operation: TKSPEEKOPERATION): IKsAllocatorEx; stdcall;
  18546. procedure KsSetPipe(KsAllocator: IKsAllocatorEx); stdcall;
  18547. function KsGetPipeAllocatorFlag: ULONG; stdcall;
  18548. procedure KsSetPipeAllocatorFlag(Flag: ULONG); stdcall;
  18549. function KsGetPinBusCache: TGUID; stdcall;
  18550. procedure KsSetPinBusCache(const Bus: TGUID); stdcall;
  18551. // very useful methods for tracing.
  18552. function KsGetPinName: PWideChar; stdcall;
  18553. function KsGetFilterName: PWideChar; stdcall;
  18554. end;
  18555. {$HPPEMIT 'typedef System::DelphiInterface<IKsPinFactory> _di_IKsPinFactory;'}
  18556. {$EXTERNALSYM IKsPinFactory}
  18557. IKsPinFactory = interface(IUnknown)
  18558. ['{CD5EBE6B-8B6E-11D1-8AE0-00A0C9223196}']
  18559. (*** IKsPinFactory methods ***)
  18560. procedure KsPinFactory(PinFactory: PULONG); stdcall;
  18561. end;
  18562. {$HPPEMIT 'typedef System::DelphiInterface<IKsDataTypeHandler> _di_IKsDataTypeHandler;'}
  18563. {$EXTERNALSYM IKsDataTypeHandler}
  18564. IKsDataTypeHandler = interface(IUnknown)
  18565. ['{5ffbaa02-49a3-11d0-9f36-00aa00a216a1}']
  18566. (*** IKsDataTypeHandler methods ***)
  18567. procedure KsCompleteIoOperation(Sample: IMediaSample; StreamHeader: Pointer;
  18568. IoOperation: TKSIOOPERATION; Cancelled: BOOL); stdcall;
  18569. procedure KsIsMediaTypeInRanges(DataRanges: Pointer); stdcall;
  18570. procedure KsPrepareIoOperation(Sample: IMediaSample; StreamHeader: Pointer;
  18571. IoOperation: TKSIOOPERATION); stdcall;
  18572. procedure KsQueryExtendedSize(var ExtendedSize: ULONG); stdcall;
  18573. procedure KsSetMediaType(const AmMediaType: TAMMediaType); stdcall;
  18574. end;
  18575. {$HPPEMIT 'typedef System::DelphiInterface<IKsDataTypeCompletion> _di_IKsDataTypeCompletion;'}
  18576. {$EXTERNALSYM IKsDataTypeCompletion}
  18577. IKsDataTypeCompletion = interface(IUnknown)
  18578. ['{827D1A0E-0F73-11D2-B27A-00A0C9223196}']
  18579. (*** IKsDataTypeCompletion methods ***)
  18580. procedure KsCompleteMediaType(FilterHandle: THandle; PinFactoryId: ULONG;
  18581. var AmMediaType: TAMMediaType); stdcall;
  18582. end;
  18583. {$HPPEMIT 'typedef System::DelphiInterface<IKsInterfaceHandler> _di_IKsInterfaceHandler;'}
  18584. {$EXTERNALSYM IKsInterfaceHandler}
  18585. IKsInterfaceHandler = interface(IUnknown)
  18586. ['{D3ABC7E0-9A61-11d0-A40D-00A0C9223196}']
  18587. (*** IKsInterfaceHandler methods ***)
  18588. procedure KsSetPin(KsPin: IKsPin); stdcall;
  18589. procedure KsProcessMediaSamples(KsDataTypeHandler: IKsDataTypeHandler;
  18590. SampleList: IMediaSample; SampleCount: PLongint;
  18591. IoOperation: TKSIOOPERATION; StreamSegment: PKSSTREAM_SEGMENT); stdcall;
  18592. procedure KsCompleteIo(StreamSegment: PKSSTREAM_SEGMENT); stdcall;
  18593. end;
  18594. //
  18595. // This structure definition is the common header required by the proxy to
  18596. // dispatch the stream segment to the interface handler. Interface handlers
  18597. // will create extended structures to include other information such as
  18598. // media samples, extended header size and so on.
  18599. {$HPPEMIT 'typedef System::DelphiInterface<IKsObject> _di_IKsObject;'}
  18600. {$EXTERNALSYM IKsObject}
  18601. IKsObject = interface(IUnknown)
  18602. ['{423c13a2-2070-11d0-9ef7-00aa00a216a1}']
  18603. (*** IKsObject methods ***)
  18604. function KsGetObjectHandle: THandle; stdcall;
  18605. end;
  18606. {$HPPEMIT 'typedef System::DelphiInterface<IKsQualityForwarder> _di_IKsQualityForwarder;'}
  18607. {$EXTERNALSYM IKsQualityForwarder}
  18608. IKsQualityForwarder = interface(IUnknown)
  18609. ['{97ebaacb-95bd-11d0-a3ea-00a0c9223196}']
  18610. (*** IKsQualityForwarder methods ***)
  18611. procedure KsFlushClient(Pin: IKsPin); stdcall;
  18612. end;
  18613. {$HPPEMIT 'typedef System::DelphiInterface<IKsNotifyEvent> _di_IKsNotifyEvent;'}
  18614. {$EXTERNALSYM IKsNotifyEvent}
  18615. IKsNotifyEvent = interface(IUnknown)
  18616. ['{412bd695-f84b-46c1-ac73-54196dbc8fa7}']
  18617. (*** IKsNotifyEvent methods ***)
  18618. procedure KsNotifyEvent(Event,lParam1, lParam2: ULONG); stdcall;
  18619. end;
  18620. function KsResolveRequiredAttributes(DataRange: PKSDATARANGE;
  18621. {OPTIONAL}Attributes: PKSMULTIPLE_ITEM): HResult; stdcall;
  18622. {$EXTERNALSYM KsResolveRequiredAttributes}
  18623. function KsOpenDefaultDevice(Category: TGUID; Access: ACCESS_MASK;
  18624. DeviceHandle: PHANDLE): HResult; stdcall;
  18625. {$EXTERNALSYM KsOpenDefaultDevice}
  18626. function KsSynchronousDeviceControl(Handle: THandle; IoControl: ULONG;
  18627. InBuffer: Pointer; InLength: ULONG; OutBuffer: Pointer;
  18628. OutLength: ULONG; BytesReturned: PULONG): HResult; stdcall;
  18629. {$EXTERNALSYM KsSynchronousDeviceControl}
  18630. function KsGetMultiplePinFactoryItems(FilterHandle: THandle; PinFactoryId: ULONG;
  18631. PropertyId: ULONG; Items: Pointer): HResult; stdcall;
  18632. {$EXTERNALSYM KsGetMultiplePinFactoryItems}
  18633. function KsGetMediaTypeCount(FilterHandle: THandle; PinFactoryId: ULONG;
  18634. out MediaTypeCount: ULONG): HResult; stdcall;
  18635. {$EXTERNALSYM KsGetMediaTypeCount}
  18636. function KsGetMediaType(Position: integer; out AmMediaType: TAMMediaType;
  18637. FilterHandle: THandle; PinFactoryId: ULONG): HResult; stdcall;
  18638. {$EXTERNALSYM KsGetMediaType}
  18639. type
  18640. {$HPPEMIT 'typedef System::DelphiInterface<IKsAggregateControl> _di_IKsAggregateControl;'}
  18641. {$EXTERNALSYM IKsAggregateControl}
  18642. IKsAggregateControl = interface(IUnknown)
  18643. ['{7F40EAC0-3947-11D2-874E-00A0C9223196}']
  18644. (*** IKsAggregateControl methods ***)
  18645. procedure KsAddAggregate(const AggregateClass: TGUID); stdcall;
  18646. procedure KsRemoveAggregate(const AggregateClass: TGUID); stdcall;
  18647. end;
  18648. {$HPPEMIT 'typedef System::DelphiInterface<IKsTopology> _di_IKsTopology;'}
  18649. {$EXTERNALSYM IKsTopology}
  18650. IKsTopology = interface(IUnknown)
  18651. ['{28F54683-06FD-11D2-B27A-00A0C9223196}']
  18652. (*** IKsTopology methods ***)
  18653. procedure CreateNodeInstance(NodeId: ULONG; Flags: ULONG; DesiredAccess: ACCESS_MASK;
  18654. {OPTIONAL}UnkOuter: IUnknown; const InterfaceId: TGUID; out Interface_); stdcall;
  18655. end;
  18656. {*****************************************************************************
  18657. * Copyright (C) Microsoft Corporation, 1996 - 2000 *
  18658. * *
  18659. * Module Name: ksmedia.h *
  18660. * *
  18661. * Abstract: WDM-CSA Multimedia Definitions. *
  18662. * *
  18663. *****************************************************************************}
  18664. PKSMultipleDataProp = ^TKSMultipleDataProp;
  18665. KSMULTIPLE_DATA_PROP = record
  18666. Property_ : KSPROPERTY;
  18667. MultipleItem : TKSMultipleItem;
  18668. end;
  18669. {$EXTERNALSYM KSMULTIPLE_DATA_PROP}
  18670. PKSMULTIPLE_DATA_PROP = ^KSMULTIPLE_DATA_PROP;
  18671. {$EXTERNALSYM PKSMULTIPLE_DATA_PROP}
  18672. TKSMultipleDataProp = KSMULTIPLE_DATA_PROP;
  18673. const
  18674. KSMEDIUMSETID_MidiBus : TGUID = '{05908040-3246-11D0-A5D6-28DB04C10000}';
  18675. {$EXTERNALSYM KSMEDIUMSETID_MidiBus}
  18676. KSMEDIUMSETID_VPBus : TGUID = '{A18C15EC-CE43-11D0-ABE7-00A0C9223196}';
  18677. {$EXTERNALSYM KSMEDIUMSETID_VPBus}
  18678. KSINTERFACESETID_Media : TGUID = '{3A13EB40-30A7-11D0-A5D6-28DB04C10000}';
  18679. {$EXTERNALSYM KSINTERFACESETID_Media}
  18680. type
  18681. KSINTERFACE_MEDIA = (
  18682. KSINTERFACE_MEDIA_MUSIC,
  18683. KSINTERFACE_MEDIA_WAVE_BUFFERED,
  18684. KSINTERFACE_MEDIA_WAVE_QUEUED
  18685. );
  18686. {$EXTERNALSYM KSINTERFACE_MEDIA}
  18687. TKSInterfaceMedia = KSINTERFACE_MEDIA;
  18688. // USB Terminals
  18689. //#define INIT_USB_TERMINAL(guid, id)\
  18690. {\
  18691. (guid)->Data1 = 0xDFF219E0 + (USHORT)(id);\
  18692. (guid)->Data2 = 0xF70F;\
  18693. (guid)->Data3 = 0x11D0;\
  18694. (guid)->Data4[0] = 0xb9;\
  18695. (guid)->Data4[1] = 0x17;\
  18696. (guid)->Data4[2] = 0x00;\
  18697. (guid)->Data4[3] = 0xa0;\
  18698. (guid)->Data4[4] = 0xc9;\
  18699. (guid)->Data4[5] = 0x22;\
  18700. (guid)->Data4[6] = 0x31;\
  18701. (guid)->Data4[7] = 0x96;\
  18702. }
  18703. {#define EXTRACT_USB_TERMINAL(guid)\
  18704. (USHORT)((guid)->Data1 - 0xDFF219E0)
  18705. #define DEFINE_USB_TERMINAL_GUID(id)\
  18706. 0xDFF219E0+(USHORT)(id), 0xF70F, 0x11D0, 0xB9, 0x17, 0x00, 0xA0, 0xC9, 0x22, 0x31, 0x96}
  18707. const
  18708. KSNODETYPE_MICROPHONE : TGUID = '{DFF21BE1-F70F-11D0-B917-00A0C9223196}';
  18709. {$EXTERNALSYM KSNODETYPE_MICROPHONE}
  18710. KSNODETYPE_DESKTOP_MICROPHONE : TGUID = '{DFF21BE2-F70F-11D0-B917-00A0C9223196}';
  18711. {$EXTERNALSYM KSNODETYPE_DESKTOP_MICROPHONE}
  18712. KSNODETYPE_PERSONAL_MICROPHONE : TGUID = '{DFF21BE3-F70F-11D0-B917-00A0C9223196}';
  18713. {$EXTERNALSYM KSNODETYPE_PERSONAL_MICROPHONE}
  18714. KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE : TGUID = '{DFF21BE4-F70F-11D0-B917-00A0C9223196}';
  18715. {$EXTERNALSYM KSNODETYPE_OMNI_DIRECTIONAL_MICROPHONE}
  18716. KSNODETYPE_MICROPHONE_ARRAY : TGUID = '{DFF21BE5-F70F-11D0-B917-00A0C9223196}';
  18717. {$EXTERNALSYM KSNODETYPE_MICROPHONE_ARRAY}
  18718. KSNODETYPE_PROCESSING_MICROPHONE_ARRAY : TGUID = '{DFF21BE6-F70F-11D0-B917-00A0C9223196}';
  18719. {$EXTERNALSYM KSNODETYPE_PROCESSING_MICROPHONE_ARRAY}
  18720. KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR : TGUID = '{830a44f2-a32d-476b-be97-42845673b35a}';
  18721. {$EXTERNALSYM KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR}
  18722. KSNODETYPE_SPEAKER : TGUID = '{DFF21CE1-F70F-11D0-B917-00A0C9223196}';
  18723. {$EXTERNALSYM KSNODETYPE_SPEAKER}
  18724. KSNODETYPE_HEADPHONES : TGUID = '{DFF21CE2-F70F-11D0-B917-00A0C9223196}';
  18725. {$EXTERNALSYM KSNODETYPE_HEADPHONES}
  18726. KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO : TGUID = '{DFF21CE3-F70F-11D0-B917-00A0C9223196}';
  18727. {$EXTERNALSYM KSNODETYPE_HEAD_MOUNTED_DISPLAY_AUDIO}
  18728. KSNODETYPE_DESKTOP_SPEAKER : TGUID = '{DFF21CE4-F70F-11D0-B917-00A0C9223196}';
  18729. {$EXTERNALSYM KSNODETYPE_DESKTOP_SPEAKER}
  18730. KSNODETYPE_ROOM_SPEAKER : TGUID = '{DFF21CE5-F70F-11D0-B917-00A0C9223196}';
  18731. {$EXTERNALSYM KSNODETYPE_ROOM_SPEAKER}
  18732. KSNODETYPE_COMMUNICATION_SPEAKER : TGUID = '{DFF21CE6-F70F-11D0-B917-00A0C9223196}';
  18733. {$EXTERNALSYM KSNODETYPE_COMMUNICATION_SPEAKER}
  18734. KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER : TGUID = '{DFF21CE7-F70F-11D0-B917-00A0C9223196}';
  18735. {$EXTERNALSYM KSNODETYPE_LOW_FREQUENCY_EFFECTS_SPEAKER}
  18736. KSNODETYPE_HANDSET : TGUID = '{DFF21DE1-F70F-11D0-B917-00A0C9223196}';
  18737. {$EXTERNALSYM KSNODETYPE_HANDSET}
  18738. KSNODETYPE_HEADSET : TGUID = '{DFF21DE2-F70F-11D0-B917-00A0C9223196}';
  18739. {$EXTERNALSYM KSNODETYPE_HEADSET}
  18740. KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION : TGUID = '{DFF21DE3-F70F-11D0-B917-00A0C9223196}';
  18741. {$EXTERNALSYM KSNODETYPE_SPEAKERPHONE_NO_ECHO_REDUCTION}
  18742. KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE : TGUID = '{DFF21DE4-F70F-11D0-B917-00A0C9223196}';
  18743. {$EXTERNALSYM KSNODETYPE_ECHO_SUPPRESSING_SPEAKERPHONE}
  18744. KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE : TGUID = '{DFF21DE5-F70F-11D0-B917-00A0C9223196}';
  18745. {$EXTERNALSYM KSNODETYPE_ECHO_CANCELING_SPEAKERPHONE}
  18746. KSNODETYPE_PHONE_LINE : TGUID = '{DFF21EE1-F70F-11D0-B917-00A0C9223196}';
  18747. {$EXTERNALSYM KSNODETYPE_PHONE_LINE}
  18748. KSNODETYPE_TELEPHONE : TGUID = '{DFF21EE2-F70F-11D0-B917-00A0C9223196}';
  18749. {$EXTERNALSYM KSNODETYPE_TELEPHONE}
  18750. KSNODETYPE_DOWN_LINE_PHONE : TGUID = '{DFF21EE3-F70F-11D0-B917-00A0C9223196}';
  18751. {$EXTERNALSYM KSNODETYPE_DOWN_LINE_PHONE}
  18752. KSNODETYPE_ANALOG_CONNECTOR : TGUID = '{DFF21FE1-F70F-11D0-B917-00A0C9223196}';
  18753. {$EXTERNALSYM KSNODETYPE_ANALOG_CONNECTOR}
  18754. KSNODETYPE_DIGITAL_AUDIO_INTERFACE : TGUID = '{DFF21FE2-F70F-11D0-B917-00A0C9223196}';
  18755. {$EXTERNALSYM KSNODETYPE_DIGITAL_AUDIO_INTERFACE}
  18756. KSNODETYPE_LINE_CONNECTOR : TGUID = '{DFF21FE3-F70F-11D0-B917-00A0C9223196}';
  18757. {$EXTERNALSYM KSNODETYPE_LINE_CONNECTOR}
  18758. KSNODETYPE_LEGACY_AUDIO_CONNECTOR : TGUID = '{DFF21FE4-F70F-11D0-B917-00A0C9223196}';
  18759. {$EXTERNALSYM KSNODETYPE_LEGACY_AUDIO_CONNECTOR}
  18760. KSNODETYPE_SPDIF_INTERFACE : TGUID = '{DFF21FE5-F70F-11D0-B917-00A0C9223196}';
  18761. {$EXTERNALSYM KSNODETYPE_SPDIF_INTERFACE}
  18762. KSNODETYPE_1394_DA_STREAM : TGUID = '{DFF21FE6-F70F-11D0-B917-00A0C9223196}';
  18763. {$EXTERNALSYM KSNODETYPE_1394_DA_STREAM}
  18764. KSNODETYPE_1394_DV_STREAM_SOUNDTRACK : TGUID = '{DFF21FE7-F70F-11D0-B917-00A0C9223196}';
  18765. {$EXTERNALSYM KSNODETYPE_1394_DV_STREAM_SOUNDTRACK}
  18766. KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE : TGUID = '{DFF220E1-F70F-11D0-B917-00A0C9223196}';
  18767. {$EXTERNALSYM KSNODETYPE_LEVEL_CALIBRATION_NOISE_SOURCE}
  18768. KSNODETYPE_EQUALIZATION_NOISE : TGUID = '{DFF220E2-F70F-11D0-B917-00A0C9223196}';
  18769. {$EXTERNALSYM KSNODETYPE_EQUALIZATION_NOISE}
  18770. KSNODETYPE_CD_PLAYER : TGUID = '{DFF220E3-F70F-11D0-B917-00A0C9223196}';
  18771. {$EXTERNALSYM KSNODETYPE_CD_PLAYER}
  18772. KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE : TGUID = '{DFF220E4-F70F-11D0-B917-00A0C9223196}';
  18773. {$EXTERNALSYM KSNODETYPE_DAT_IO_DIGITAL_AUDIO_TAPE}
  18774. KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE : TGUID = '{DFF220E5-F70F-11D0-B917-00A0C9223196}';
  18775. {$EXTERNALSYM KSNODETYPE_DCC_IO_DIGITAL_COMPACT_CASSETTE}
  18776. KSNODETYPE_MINIDISK : TGUID = '{DFF220E6-F70F-11D0-B917-00A0C9223196}';
  18777. {$EXTERNALSYM KSNODETYPE_MINIDISK}
  18778. KSNODETYPE_ANALOG_TAPE : TGUID = '{DFF220E7-F70F-11D0-B917-00A0C9223196}';
  18779. {$EXTERNALSYM KSNODETYPE_ANALOG_TAPE}
  18780. KSNODETYPE_PHONOGRAPH : TGUID = '{DFF220E8-F70F-11D0-B917-00A0C9223196}';
  18781. {$EXTERNALSYM KSNODETYPE_PHONOGRAPH}
  18782. KSNODETYPE_VCR_AUDIO : TGUID = '{DFF220E9-F70F-11D0-B917-00A0C9223196}';
  18783. {$EXTERNALSYM KSNODETYPE_VCR_AUDIO}
  18784. KSNODETYPE_VIDEO_DISC_AUDIO : TGUID = '{DFF220EA-F70F-11D0-B917-00A0C9223196}';
  18785. {$EXTERNALSYM KSNODETYPE_VIDEO_DISC_AUDIO}
  18786. KSNODETYPE_DVD_AUDIO : TGUID = '{DFF220EB-F70F-11D0-B917-00A0C9223196}';
  18787. {$EXTERNALSYM KSNODETYPE_DVD_AUDIO}
  18788. KSNODETYPE_TV_TUNER_AUDIO : TGUID = '{DFF220EC-F70F-11D0-B917-00A0C9223196}';
  18789. {$EXTERNALSYM KSNODETYPE_TV_TUNER_AUDIO}
  18790. KSNODETYPE_SATELLITE_RECEIVER_AUDIO : TGUID = '{DFF220ED-F70F-11D0-B917-00A0C9223196}';
  18791. {$EXTERNALSYM KSNODETYPE_SATELLITE_RECEIVER_AUDIO}
  18792. KSNODETYPE_CABLE_TUNER_AUDIO : TGUID = '{DFF220EE-F70F-11D0-B917-00A0C9223196}';
  18793. {$EXTERNALSYM KSNODETYPE_CABLE_TUNER_AUDIO}
  18794. KSNODETYPE_DSS_AUDIO : TGUID = '{DFF220EF-F70F-11D0-B917-00A0C9223196}';
  18795. {$EXTERNALSYM KSNODETYPE_DSS_AUDIO}
  18796. KSNODETYPE_RADIO_RECEIVER : TGUID = '{DFF220F0-F70F-11D0-B917-00A0C9223196}';
  18797. {$EXTERNALSYM KSNODETYPE_RADIO_RECEIVER}
  18798. KSNODETYPE_RADIO_TRANSMITTER : TGUID = '{DFF220F1-F70F-11D0-B917-00A0C9223196}';
  18799. {$EXTERNALSYM KSNODETYPE_RADIO_TRANSMITTER}
  18800. KSNODETYPE_MULTITRACK_RECORDER : TGUID = '{DFF220F2-F70F-11D0-B917-00A0C9223196}';
  18801. {$EXTERNALSYM KSNODETYPE_MULTITRACK_RECORDER}
  18802. KSNODETYPE_SYNTHESIZER : TGUID = '{DFF220F3-F70F-11D0-B917-00A0C9223196}';
  18803. {$EXTERNALSYM KSNODETYPE_SYNTHESIZER}
  18804. // Microsoft's WDMAUD virtual swsynth pin name guid
  18805. KSNODETYPE_SWSYNTH : TGUID = '{423274A0-8B81-11D1-A050-0000F8004788}';
  18806. {$EXTERNALSYM KSNODETYPE_SWSYNTH}
  18807. // Microsoft's SWMIDI midi pin and node name guid
  18808. KSNODETYPE_SWMIDI : TGUID = '{CB9BEFA0-A251-11D1-A050-0000F8004788}';
  18809. {$EXTERNALSYM KSNODETYPE_SWMIDI}
  18810. KSNODETYPE_DRM_DESCRAMBLE : TGUID = '{FFBB6E3F-CCFE-4D84-90D9-421418B03A8E}';
  18811. {$EXTERNALSYM KSNODETYPE_DRM_DESCRAMBLE}
  18812. // General categories
  18813. KSCATEGORY_AUDIO : TGUID = '{6994AD04-93EF-11D0-A3CC-00A0C9223196}';
  18814. {$EXTERNALSYM KSCATEGORY_AUDIO}
  18815. KSCATEGORY_VIDEO : TGUID = '{6994AD05-93EF-11D0-A3CC-00A0C9223196}';
  18816. {$EXTERNALSYM KSCATEGORY_VIDEO}
  18817. KSCATEGORY_TEXT : TGUID = '{6994AD06-93EF-11D0-A3CC-00A0C9223196}';
  18818. {$EXTERNALSYM KSCATEGORY_TEXT}
  18819. KSCATEGORY_NETWORK : TGUID = '{67C9CC3C-69C4-11D2-8759-00A0C9223196}';
  18820. {$EXTERNALSYM KSCATEGORY_NETWORK}
  18821. KSCATEGORY_TOPOLOGY : TGUID = '{DDA54A40-1E4C-11D1-A050-405705C10000}';
  18822. {$EXTERNALSYM KSCATEGORY_TOPOLOGY}
  18823. KSCATEGORY_VIRTUAL : TGUID = '{3503EAC4-1F26-11D1-8AB0-00A0C9223196}';
  18824. {$EXTERNALSYM KSCATEGORY_VIRTUAL}
  18825. KSCATEGORY_ACOUSTIC_ECHO_CANCEL : TGUID = '{BF963D80-C559-11D0-8A2B-00A0C9255AC1}';
  18826. {$EXTERNALSYM KSCATEGORY_ACOUSTIC_ECHO_CANCEL}
  18827. KSCATEGORY_SYSAUDIO : TGUID = '{A7C7A5B1-5AF3-11D1-9CED-00A024BF0407}';
  18828. {$EXTERNALSYM KSCATEGORY_SYSAUDIO}
  18829. KSCATEGORY_WDMAUD : TGUID = '{3E227E76-690D-11D2-8161-0000F8775BF1}';
  18830. {$EXTERNALSYM KSCATEGORY_WDMAUD}
  18831. KSCATEGORY_AUDIO_GFX : TGUID = '{9BAF9572-340C-11D3-ABDC-00A0C90AB16F}';
  18832. {$EXTERNALSYM KSCATEGORY_AUDIO_GFX}
  18833. KSCATEGORY_AUDIO_SPLITTER : TGUID = '{9EA331FA-B91B-45F8-9285-BD2BC77AFCDE}';
  18834. {$EXTERNALSYM KSCATEGORY_AUDIO_SPLITTER}
  18835. KSCATEGORY_SYNTHESIZER : TGUID = '{DFF220F3-F70F-11D0-B917-00A0C9223196}'; //KSNODETYPE_SYNTHESIZER
  18836. {$EXTERNALSYM KSCATEGORY_SYNTHESIZER}
  18837. KSCATEGORY_DRM_DESCRAMBLE : TGUID = '{FFBB6E3F-CCFE-4D84-90D9-421418B03A8E}'; //KSNODETYPE_DRM_DESCRAMBLE
  18838. {$EXTERNALSYM KSCATEGORY_DRM_DESCRAMBLE}
  18839. KSCATEGORY_AUDIO_DEVICE : TGUID = '{FBF6F530-07B9-11D2-A71E-0000F8004788}';
  18840. {$EXTERNALSYM KSCATEGORY_AUDIO_DEVICE}
  18841. KSCATEGORY_PREFERRED_WAVEOUT_DEVICE : TGUID = '{D6C5066E-72C1-11D2-9755-0000F8004788}';
  18842. {$EXTERNALSYM KSCATEGORY_PREFERRED_WAVEOUT_DEVICE}
  18843. KSCATEGORY_PREFERRED_WAVEIN_DEVICE : TGUID = '{D6C50671-72C1-11D2-9755-0000F8004788}';
  18844. {$EXTERNALSYM KSCATEGORY_PREFERRED_WAVEIN_DEVICE}
  18845. KSCATEGORY_PREFERRED_MIDIOUT_DEVICE : TGUID = '{D6C50674-72C1-11D2-9755-0000F8004788}';
  18846. {$EXTERNALSYM KSCATEGORY_PREFERRED_MIDIOUT_DEVICE}
  18847. // Special pin category for wdmaud
  18848. KSCATEGORY_WDMAUD_USE_PIN_NAME : TGUID = '{47A4FA20-A251-11D1-A050-0000F8004788}';
  18849. {$EXTERNALSYM KSCATEGORY_WDMAUD_USE_PIN_NAME}
  18850. // Escalante Platform Interface
  18851. KSCATEGORY_ESCALANTE_PLATFORM_DRIVER : TGUID = '{74f3aea8-9768-11d1-8e07-00a0c95ec22e}';
  18852. {$EXTERNALSYM KSCATEGORY_ESCALANTE_PLATFORM_DRIVER}
  18853. // -- major types ---
  18854. // 'vids' == MEDIATYPE_Video,
  18855. KSDATAFORMAT_TYPE_VIDEO : TGUID = '{73646976-0000-0010-8000-00aa00389b71}';
  18856. {$EXTERNALSYM KSDATAFORMAT_TYPE_VIDEO}
  18857. // 'auds' == MEDIATYPE_Audio
  18858. KSDATAFORMAT_TYPE_AUDIO : TGUID = '{73647561-0000-0010-8000-00aa00389b71}';
  18859. {$EXTERNALSYM KSDATAFORMAT_TYPE_AUDIO}
  18860. // 'txts' == MEDIATYPE_Text
  18861. KSDATAFORMAT_TYPE_TEXT : TGUID = '{73747874-0000-0010-8000-00aa00389b71}';
  18862. {$EXTERNALSYM KSDATAFORMAT_TYPE_TEXT}
  18863. {#if !defined( DEFINE_WAVEFORMATEX_GUID )
  18864. #define DEFINE_WAVEFORMATEX_GUID(x) (USHORT)(x), 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71
  18865. #endif}
  18866. KSDATAFORMAT_SUBTYPE_WAVEFORMATEX : TGUID = '{00000000-0000-0010-8000-00aa00389b71}';
  18867. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_WAVEFORMATEX}
  18868. //#define INIT_WAVEFORMATEX_GUID(Guid, x)\
  18869. {\
  18870. *(Guid) = KSDATAFORMAT_SUBTYPE_WAVEFORMATEX;\
  18871. (Guid)->Data1 = (USHORT)(x);\
  18872. }
  18873. {#define EXTRACT_WAVEFORMATEX_ID(Guid)\
  18874. (USHORT)((Guid)->Data1)
  18875. #define IS_VALID_WAVEFORMATEX_GUID(Guid)\
  18876. (!memcmp(((PUSHORT)&KSDATAFORMAT_SUBTYPE_WAVEFORMATEX) + 1, ((PUSHORT)(Guid)) + 1, sizeof(GUID) - sizeof(USHORT)))
  18877. #if !defined(INIT_MMREG_MID)}
  18878. //{d5a47fa7-6d98-11d1-a21a-00a0c9223196}
  18879. //#define INIT_MMREG_MID(guid, id)\
  18880. {\
  18881. (guid)->Data1 = 0xd5a47fa7 + (USHORT)(id);\
  18882. (guid)->Data2 = 0x6d98;\
  18883. (guid)->Data3 = 0x11d1;\
  18884. (guid)->Data4[0] = 0xa2;\
  18885. (guid)->Data4[1] = 0x1a;\
  18886. (guid)->Data4[2] = 0x00;\
  18887. (guid)->Data4[3] = 0xa0;\
  18888. (guid)->Data4[4] = 0xc9;\
  18889. (guid)->Data4[5] = 0x22;\
  18890. (guid)->Data4[6] = 0x31;\
  18891. (guid)->Data4[7] = 0x96;\
  18892. }
  18893. {#define EXTRACT_MMREG_MID(guid)\
  18894. (USHORT)((guid)->Data1 - 0xd5a47fa7)
  18895. #define DEFINE_MMREG_MID_GUID(id)\
  18896. 0xd5a47fa7+(USHORT)(id), 0x6d98, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96
  18897. #define IS_COMPATIBLE_MMREG_MID(guid)\
  18898. (((guid)->Data1 >= 0xd5a47fa7) &&\
  18899. ((guid)->Data1 < 0xd5a47fa7 + 0xffff) &&\
  18900. ((guid)->Data2 == 0x6d98) &&\
  18901. ((guid)->Data3 == 0x11d1) &&\
  18902. ((guid)->Data4[0] == 0xa2) &&\
  18903. ((guid)->Data4[1] == 0x1a) &&\
  18904. ((guid)->Data4[2] == 0x00) &&\
  18905. ((guid)->Data4[3] == 0xa0) &&\
  18906. ((guid)->Data4[4] == 0xc9) &&\
  18907. ((guid)->Data4[5] == 0x22) &&\
  18908. ((guid)->Data4[6] == 0x31) &&\
  18909. ((guid)->Data4[7] == 0x96))
  18910. #endif // !defined(INIT_MMREG_MID)
  18911. #if !defined(INIT_MMREG_PID)
  18912. //{e36dc2ac-6d9a-11d1-a21a-00a0c9223196}
  18913. //#define INIT_MMREG_PID(guid, id)\
  18914. {\
  18915. (guid)->Data1 = 0xe36dc2ac + (USHORT)(id);\
  18916. (guid)->Data2 = 0x6d9a;\
  18917. (guid)->Data3 = 0x11d1;\
  18918. (guid)->Data4[0] = 0xa2;\
  18919. (guid)->Data4[1] = 0x1a;\
  18920. (guid)->Data4[2] = 0x00;\
  18921. (guid)->Data4[3] = 0xa0;\
  18922. (guid)->Data4[4] = 0xc9;\
  18923. (guid)->Data4[5] = 0x22;\
  18924. (guid)->Data4[6] = 0x31;\
  18925. (guid)->Data4[7] = 0x96;\
  18926. }
  18927. {#define EXTRACT_MMREG_PID(guid)\
  18928. (USHORT)((guid)->Data1 - 0xe36dc2ac)
  18929. #define DEFINE_MMREG_PID_GUID(id)\
  18930. 0xe36dc2ac+(USHORT)(id), 0x6d9a, 0x11d1, 0xa2, 0x1a, 0x00, 0xa0, 0xc9, 0x22, 0x31, 0x96
  18931. #define IS_COMPATIBLE_MMREG_PID(guid)\
  18932. (((guid)->Data1 >= 0xe36dc2ac) &&\
  18933. ((guid)->Data1 < 0xe36dc2ac + 0xffff) &&\
  18934. ((guid)->Data2 == 0x6d9a) &&\
  18935. ((guid)->Data3 == 0x11d1) &&\
  18936. ((guid)->Data4[0] == 0xa2) &&\
  18937. ((guid)->Data4[1] == 0x1a) &&\
  18938. ((guid)->Data4[2] == 0x00) &&\
  18939. ((guid)->Data4[3] == 0xa0) &&\
  18940. ((guid)->Data4[4] == 0xc9) &&\
  18941. ((guid)->Data4[5] == 0x22) &&\
  18942. ((guid)->Data4[6] == 0x31) &&\
  18943. ((guid)->Data4[7] == 0x96))
  18944. #endif // !defined(INIT_MMREG_PID)}
  18945. KSDATAFORMAT_SUBTYPE_ANALOG : TGUID = '{6dba3190-67bd-11cf-a0f7-0020afd156e4}';
  18946. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ANALOG}
  18947. KSDATAFORMAT_SUBTYPE_PCM : TGUID = '{00000001-0000-0010-8000-00aa00389b71}';
  18948. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_PCM}
  18949. KSDATAFORMAT_SUBTYPE_IEEE_FLOAT : TGUID = '{00000003-0000-0010-8000-00aa00389b71}';
  18950. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_IEEE_FLOAT}
  18951. KSDATAFORMAT_SUBTYPE_DRM : TGUID = '{00000009-0000-0010-8000-00aa00389b71}';
  18952. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DRM}
  18953. KSDATAFORMAT_SUBTYPE_ALAW : TGUID = '{00000006-0000-0010-8000-00aa00389b71}';
  18954. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ALAW}
  18955. KSDATAFORMAT_SUBTYPE_MULAW : TGUID = '{00000007-0000-0010-8000-00aa00389b71}';
  18956. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MULAW}
  18957. KSDATAFORMAT_SUBTYPE_ADPCM : TGUID = '{00000002-0000-0010-8000-00aa00389b71}';
  18958. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ADPCM}
  18959. KSDATAFORMAT_SUBTYPE_MPEG : TGUID = '{00000050-0000-0010-8000-00aa00389b71}';
  18960. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG}
  18961. KSDATAFORMAT_SPECIFIER_VC_ID : TGUID = '{AD98D184-AAC3-11D0-A41C-00A0C9223196}';
  18962. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VC_ID}
  18963. KSDATAFORMAT_SPECIFIER_WAVEFORMATEX : TGUID = '{05589f81-c356-11ce-bf01-00aa0055595a}';
  18964. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_WAVEFORMATEX}
  18965. KSDATAFORMAT_SPECIFIER_DSOUND : TGUID = '{518590a2-a184-11d0-8522-00c04fd9baf3}';
  18966. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DSOUND}
  18967. type
  18968. PKSDataFormatWaveFormatEx = ^TKSDataFormatWaveFormatEx;
  18969. KSDATAFORMAT_WAVEFORMATEX = record
  18970. DataFormat : TKSDATAFORMAT;
  18971. WaveFormatEx : TWAVEFORMATEX;
  18972. end;
  18973. {$EXTERNALSYM KSDATAFORMAT_WAVEFORMATEX}
  18974. PKSDATAFORMAT_WAVEFORMATEX = ^KSDATAFORMAT_WAVEFORMATEX;
  18975. {$EXTERNALSYM PKSDATAFORMAT_WAVEFORMATEX}
  18976. TKSDataFormatWaveFormatEx = KSDATAFORMAT_WAVEFORMATEX;
  18977. //
  18978. // The WAVEFORMATEXTENSIBLE structure defines the format of waveform-audio data for formats having more than two channels.
  18979. // This structure is part of the Platform SDK and is not declared in Dsound.h. It is included here for convenience.
  18980. //
  18981. TWaveFormatExtensibleSamples = record
  18982. case byte of
  18983. 0: (wValidBitsPerSample : Word); // bits of precision
  18984. 1: (wSamplesPerBlock : Word); // valid if wBitsPerSample = 0
  18985. 2: (wReserved : Word); // If neither applies, set to zero.
  18986. end;
  18987. {$EXTERNALSYM TWaveFormatExtensibleSamples}
  18988. PWaveFormatExtensible = ^TWaveFormatExtensible;
  18989. WAVEFORMATEXTENSIBLE = record
  18990. Format: TWaveFormatEx;
  18991. Samples: TWaveFormatExtensibleSamples;
  18992. dwChannelMask : DWORD; // which channels are present in stream
  18993. SubFormat : TGUID;
  18994. end;
  18995. {$EXTERNALSYM WAVEFORMATEXTENSIBLE}
  18996. TWaveFormatExtensible = WAVEFORMATEXTENSIBLE;
  18997. const
  18998. WAVE_FORMAT_EXTENSIBLE = $FFFE;
  18999. {$EXTERNALSYM WAVE_FORMAT_EXTENSIBLE}
  19000. type
  19001. // DirectSound buffer description
  19002. PKSDSoundBufferDesc = ^TKSDSoundBufferDesc;
  19003. KSDSOUND_BUFFERDESC = record
  19004. Flags : ULONG;
  19005. Control : ULONG;
  19006. WaveFormatEx : TWAVEFORMATEX;
  19007. end;
  19008. {$EXTERNALSYM KSDSOUND_BUFFERDESC}
  19009. PKSDSOUND_BUFFERDESC = ^KSDSOUND_BUFFERDESC;
  19010. {$EXTERNALSYM PKSDSOUND_BUFFERDESC}
  19011. TKSDSoundBufferDesc = KSDSOUND_BUFFERDESC;
  19012. // DirectSound format
  19013. PKSDataFormatDSound = ^TKSDataFormatDSound;
  19014. KSDATAFORMAT_DSOUND = record
  19015. DataFormat :TKSDataFormat;
  19016. BufferDesc :TKSDSoundBufferDesc;
  19017. end;
  19018. {$EXTERNALSYM KSDATAFORMAT_DSOUND}
  19019. PKSDATAFORMAT_DSOUND = ^KSDATAFORMAT_DSOUND;
  19020. {$EXTERNALSYM PKSDATAFORMAT_DSOUND}
  19021. TKSDataFormatDSound = KSDATAFORMAT_DSOUND;
  19022. const
  19023. // DirectSound buffer flags
  19024. KSDSOUND_BUFFER_PRIMARY = $00000001;
  19025. {$EXTERNALSYM KSDSOUND_BUFFER_PRIMARY}
  19026. KSDSOUND_BUFFER_STATIC = $00000002;
  19027. {$EXTERNALSYM KSDSOUND_BUFFER_STATIC}
  19028. KSDSOUND_BUFFER_LOCHARDWARE = $00000004;
  19029. {$EXTERNALSYM KSDSOUND_BUFFER_LOCHARDWARE}
  19030. KSDSOUND_BUFFER_LOCSOFTWARE = $00000008;
  19031. {$EXTERNALSYM KSDSOUND_BUFFER_LOCSOFTWARE}
  19032. // DirectSound buffer control flags
  19033. KSDSOUND_BUFFER_CTRL_3D = $00000001;
  19034. {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_3D}
  19035. KSDSOUND_BUFFER_CTRL_FREQUENCY = $00000002;
  19036. {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_FREQUENCY}
  19037. KSDSOUND_BUFFER_CTRL_PAN = $00000004;
  19038. {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_PAN}
  19039. KSDSOUND_BUFFER_CTRL_VOLUME = $00000008;
  19040. {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_VOLUME}
  19041. KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY = $00000010;
  19042. {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_POSITIONNOTIFY}
  19043. KSDSOUND_BUFFER_CTRL_HRTF_3D = $40000000;
  19044. {$EXTERNALSYM KSDSOUND_BUFFER_CTRL_HRTF_3D}
  19045. type
  19046. PKSAudioPosition = ^TKSAudioPosition;
  19047. KSAUDIO_POSITION = record
  19048. PlayOffset :int64;
  19049. WriteOffset :int64;
  19050. end;
  19051. {$EXTERNALSYM KSAUDIO_POSITION}
  19052. PKSAUDIO_POSITION = ^KSAUDIO_POSITION;
  19053. {$EXTERNALSYM PKSAUDIO_POSITION}
  19054. TKSAudioPosition = KSAUDIO_POSITION;
  19055. // DirectSound3D FIR context
  19056. // PKSDS3DITDParams = ^TKSDS3DITDParams;
  19057. // KSDS3D_ITD_PARAMS = record
  19058. // Channel : longint;
  19059. // VolSmoothScale : single;
  19060. // TotalDryAttenuation : single;
  19061. // TotalWetAttenuation : single;
  19062. // SmoothFrequency : longint;
  19063. // Delay : longint;
  19064. // end;
  19065. // {$EXTERNALSYM KSDS3D_ITD_PARAMS}
  19066. // PKSDS3D_ITD_PARAMS = ^KSDS3D_ITD_PARAMS;
  19067. // {$EXTERNALSYM PKSDS3D_ITD_PARAMS}
  19068. // TKSDS3DITDParams = KSDS3D_ITD_PARAMS;
  19069. // PKSDS3DITDParamsMsg = ^TKSDS3DITDParamsMsg;
  19070. // KSDS3D_ITD_PARAMS_MSG = record
  19071. // Enabled :ULONG;
  19072. // LeftParams :TKSDS3DITDParams;
  19073. // RightParams :TKSDS3DITDParams;
  19074. // Reserved :ULONG;
  19075. // end;
  19076. // {$EXTERNALSYM KSDS3D_ITD_PARAMS_MSG}
  19077. // PKSDS3D_ITD_PARAMS_MSG = ^KSDS3D_ITD_PARAMS_MSG;
  19078. // {$EXTERNALSYM PKSDS3D_ITD_PARAMS_MSG}
  19079. // TKSDS3DITDParamsMsg = KSDS3D_ITD_PARAMS_MSG;
  19080. // DirectSound3D HRTF messages
  19081. // PKSDS3DHRTFParamsMsg = ^TKSDS3DHRTFParamsMsg;
  19082. // KSDS3D_HRTF_PARAMS_MSG = record
  19083. // Size :ULONG; // This is the size of the struct in bytes
  19084. // Enabled :ULONG;
  19085. // SwapChannels :BOOL;
  19086. // ZeroAzimuth :BOOL;
  19087. // CrossFadeOutput :BOOL;
  19088. // FilterSize :ULONG; // This is the additional size of the filter coeff in bytes
  19089. // end;
  19090. // {$EXTERNALSYM KSDS3D_HRTF_PARAMS_MSG}
  19091. // PKSDS3D_HRTF_PARAMS_MSG = ^KSDS3D_HRTF_PARAMS_MSG;
  19092. // {$EXTERNALSYM PKSDS3D_HRTF_PARAMS_MSG}
  19093. // TKSDS3DHRTFParamsMsg = KSDS3D_HRTF_PARAMS_MSG;
  19094. // HRTF filter quality levels
  19095. // KSDS3D_HRTF_FILTER_QUALITY = (
  19096. // FULL_FILTER,
  19097. // LIGHT_FILTER,
  19098. // KSDS3D_FILTER_QUALITY_COUNT
  19099. // );
  19100. // {$EXTERNALSYM KSDS3D_HRTF_FILTER_QUALITY}
  19101. // TKSDS3DHRTFFilterQuality = KSDS3D_HRTF_FILTER_QUALITY;
  19102. // PKSDS3DHRTFInitMsg = ^TKSDS3DHRTFInitMsg;
  19103. // KSDS3D_HRTF_INIT_MSG = record
  19104. // Size : ULONG; // This is the size of the struct in bytes
  19105. // Quality : TKSDS3DHRTFFilterQuality;
  19106. // SampleRate : single;
  19107. // MaxFilterSize : ULONG;
  19108. // FilterTransientMuteLength : ULONG;
  19109. // FilterOverlapBufferLength : ULONG;
  19110. // OutputOverlapBufferLength : ULONG;
  19111. // Reserved : ULONG;
  19112. // end;
  19113. // {$EXTERNALSYM KSDS3D_HRTF_INIT_MSG}
  19114. // PKSDS3D_HRTF_INIT_MSG = ^KSDS3D_HRTF_INIT_MSG;
  19115. // {$EXTERNALSYM PKSDS3D_HRTF_INIT_MSG}
  19116. // TKSDS3DHRTFInitMsg = KSDS3D_HRTF_INIT_MSG;
  19117. // Coefficient formats
  19118. // KSDS3D_HRTF_COEFF_FORMAT = (
  19119. // FLOAT_COEFF,
  19120. // SHORT_COEFF,
  19121. // KSDS3D_COEFF_COUNT
  19122. // );
  19123. // {$EXTERNALSYM KSDS3D_HRTF_COEFF_FORMAT}
  19124. // TKSDS3DHRTFCoeffFormat = KSDS3D_HRTF_COEFF_FORMAT;
  19125. //// Filter methods
  19126. // KSDS3D_HRTF_FILTER_METHOD = (
  19127. // DIRECT_FORM,
  19128. // CASCADE_FORM,
  19129. // KSDS3D_FILTER_METHOD_COUNT
  19130. // );
  19131. // {$EXTERNALSYM KSDS3D_HRTF_FILTER_METHOD}
  19132. // TKSDS3DHRTFFilterMethod = KSDS3D_HRTF_FILTER_METHOD;
  19133. // Filter methods
  19134. // KSDS3D_HRTF_FILTER_VERSION = (
  19135. // DS3D_HRTF_VERSION_1
  19136. // );
  19137. // {$EXTERNALSYM KSDS3D_HRTF_FILTER_VERSION}
  19138. // TKSDS3DHRTFFilterVersion = KSDS3D_HRTF_FILTER_VERSION;
  19139. // PKSDS3DHRTFFilterFormatMsg = ^TKSDS3DHRTFFilterFormatMsg;
  19140. // KSDS3D_HRTF_FILTER_FORMAT_MSG = record
  19141. // FilterMethod : TKSDS3DHRTFFilterMethod;
  19142. // CoeffFormat : TKSDS3DHRTFCoeffFormat;
  19143. // Version : TKSDS3DHRTFFilterVersion;
  19144. // Reserved : ULONG;
  19145. // end;
  19146. // {$EXTERNALSYM KSDS3D_HRTF_FILTER_FORMAT_MSG}
  19147. // PKSDS3D_HRTF_FILTER_FORMAT_MSG = ^KSDS3D_HRTF_FILTER_FORMAT_MSG;
  19148. // {$EXTERNALSYM PKSDS3D_HRTF_FILTER_FORMAT_MSG}
  19149. // TKSDS3DHRTFFilterFormatMsg = KSDS3D_HRTF_FILTER_FORMAT_MSG;
  19150. //===========================================================================
  19151. // DirectSound3D HAL
  19152. _DS3DVECTOR = record
  19153. case integer of
  19154. 0: (
  19155. x : single;
  19156. y : single;
  19157. z : single);
  19158. 1: (
  19159. dvX : single;
  19160. dvY : single;
  19161. dvZ : single);
  19162. end;
  19163. {$EXTERNALSYM _DS3DVECTOR}
  19164. DS3DVECTOR = _DS3DVECTOR;
  19165. {$EXTERNALSYM DS3DVECTOR}
  19166. PDS3DVECTOR = ^DS3DVECTOR;
  19167. {$EXTERNALSYM PDS3DVECTOR}
  19168. TDS3DVector = DS3DVECTOR;
  19169. //===========================================================================
  19170. //===========================================================================
  19171. // KSPROPSETID_DirectSound3DListener : {437B3414-D060-11d0-8583-00C04FD9BAF3}
  19172. const
  19173. KSPROPSETID_DirectSound3DListener : TGUID = '{437b3414-d060-11d0-8583-00c04fd9baf3}';
  19174. {$EXTERNALSYM KSPROPSETID_DirectSound3DListener}
  19175. type
  19176. KSPROPERTY_DIRECTSOUND3DLISTENER = (
  19177. KSPROPERTY_DIRECTSOUND3DLISTENER_ALL,
  19178. KSPROPERTY_DIRECTSOUND3DLISTENER_POSITION,
  19179. KSPROPERTY_DIRECTSOUND3DLISTENER_VELOCITY,
  19180. KSPROPERTY_DIRECTSOUND3DLISTENER_ORIENTATION,
  19181. KSPROPERTY_DIRECTSOUND3DLISTENER_DISTANCEFACTOR,
  19182. KSPROPERTY_DIRECTSOUND3DLISTENER_ROLLOFFFACTOR,
  19183. KSPROPERTY_DIRECTSOUND3DLISTENER_DOPPLERFACTOR,
  19184. KSPROPERTY_DIRECTSOUND3DLISTENER_BATCH,
  19185. KSPROPERTY_DIRECTSOUND3DLISTENER_ALLOCATION
  19186. );
  19187. {$EXTERNALSYM KSPROPERTY_DIRECTSOUND3DLISTENER}
  19188. TKSPropertyDirectSound3DListener = KSPROPERTY_DIRECTSOUND3DLISTENER;
  19189. PKSDS3DListenerAll = ^TKSDS3DListenerAll;
  19190. KSDS3D_LISTENER_ALL = record
  19191. Position : TDS3DVECTOR;
  19192. Velocity : TDS3DVECTOR;
  19193. OrientFront : TDS3DVECTOR;
  19194. OrientTop : TDS3DVECTOR;
  19195. DistanceFactor : single;
  19196. RolloffFactor : single;
  19197. DopplerFactor : single;
  19198. end;
  19199. {$EXTERNALSYM KSDS3D_LISTENER_ALL}
  19200. PKSDS3D_LISTENER_ALL = ^KSDS3D_LISTENER_ALL;
  19201. {$EXTERNALSYM PKSDS3D_LISTENER_ALL}
  19202. TKSDS3DListenerAll = KSDS3D_LISTENER_ALL;
  19203. KSDS3D_LISTENER_ORIENTATION = record
  19204. Front : TDS3DVECTOR;
  19205. Top : TDS3DVECTOR;
  19206. end;
  19207. {$EXTERNALSYM KSDS3D_LISTENER_ORIENTATION}
  19208. PKSDS3D_LISTENER_ORIENTATION = ^KSDS3D_LISTENER_ORIENTATION;
  19209. {$EXTERNALSYM PKSDS3D_LISTENER_ORIENTATION}
  19210. TKSDS3DListenerOrientation = KSDS3D_LISTENER_ORIENTATION;
  19211. //===========================================================================
  19212. //===========================================================================
  19213. // KSPROPSETID_DirectSound3DBuffer : {437B3411-D060-11d0-8583-00C04FD9BAF3}
  19214. const
  19215. KSPROPSETID_DirectSound3DBuffer : TGUID = '{437B3411-D060-11d0-8583-00C04FD9BAF3}';
  19216. {$EXTERNALSYM KSPROPSETID_DirectSound3DBuffer}
  19217. type
  19218. KSPROPERTY_DIRECTSOUND3DBUFFER = (
  19219. KSPROPERTY_DIRECTSOUND3DBUFFER_ALL,
  19220. KSPROPERTY_DIRECTSOUND3DBUFFER_POSITION,
  19221. KSPROPERTY_DIRECTSOUND3DBUFFER_VELOCITY,
  19222. KSPROPERTY_DIRECTSOUND3DBUFFER_CONEANGLES,
  19223. KSPROPERTY_DIRECTSOUND3DBUFFER_CONEORIENTATION,
  19224. KSPROPERTY_DIRECTSOUND3DBUFFER_CONEOUTSIDEVOLUME,
  19225. KSPROPERTY_DIRECTSOUND3DBUFFER_MINDISTANCE,
  19226. KSPROPERTY_DIRECTSOUND3DBUFFER_MAXDISTANCE,
  19227. KSPROPERTY_DIRECTSOUND3DBUFFER_MODE
  19228. );
  19229. {$EXTERNALSYM KSPROPERTY_DIRECTSOUND3DBUFFER}
  19230. TKSPropertyDirectSound3DBuffer = KSPROPERTY_DIRECTSOUND3DBUFFER;
  19231. KSDS3D_BUFFER_ALL = record
  19232. Position : TDS3DVECTOR;
  19233. Velocity : TDS3DVECTOR;
  19234. InsideConeAngle : ULONG;
  19235. OutsideConeAngle : ULONG;
  19236. ConeOrientation : TDS3DVECTOR;
  19237. ConeOutsideVolume : longint;
  19238. MinDistance : single;
  19239. MaxDistance : single;
  19240. Mode : ULONG;
  19241. end;
  19242. {$EXTERNALSYM KSDS3D_BUFFER_ALL}
  19243. PKSDS3D_BUFFER_ALL = ^KSDS3D_BUFFER_ALL;
  19244. {$EXTERNALSYM PKSDS3D_BUFFER_ALL}
  19245. TKSDS3DBufferAll = KSDS3D_BUFFER_ALL;
  19246. KSDS3D_BUFFER_CONE_ANGLES = record
  19247. InsideConeAngle : ULONG;
  19248. OutsideConeAngle : ULONG;
  19249. end;
  19250. {$EXTERNALSYM KSDS3D_BUFFER_CONE_ANGLES}
  19251. PKSDS3D_BUFFER_CONE_ANGLES = ^KSDS3D_BUFFER_CONE_ANGLES;
  19252. {$EXTERNALSYM PKSDS3D_BUFFER_CONE_ANGLES}
  19253. TKSDS3DBufferConeAngles = KSDS3D_BUFFER_CONE_ANGLES;
  19254. const
  19255. KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE = -1;
  19256. {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_HEADPHONE}
  19257. KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN = 5;
  19258. {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_MIN}
  19259. KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW = 10;
  19260. {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_NARROW}
  19261. KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE = 20;
  19262. {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_WIDE}
  19263. KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX = 180;
  19264. {$EXTERNALSYM KSAUDIO_STEREO_SPEAKER_GEOMETRY_MAX}
  19265. KSDSOUND_3D_MODE_NORMAL = $00000000;
  19266. {$EXTERNALSYM KSDSOUND_3D_MODE_NORMAL}
  19267. KSDSOUND_3D_MODE_HEADRELATIVE = $00000001;
  19268. {$EXTERNALSYM KSDSOUND_3D_MODE_HEADRELATIVE}
  19269. KSDSOUND_3D_MODE_DISABLE = $00000002;
  19270. {$EXTERNALSYM KSDSOUND_3D_MODE_DISABLE}
  19271. type
  19272. KSDATARANGE_AUDIO = record
  19273. DataRange : TKSDataRange;
  19274. MaximumChannels : ULONG;
  19275. MinimumBitsPerSample : ULONG;
  19276. MaximumBitsPerSample : ULONG;
  19277. MinimumSampleFrequency : ULONG;
  19278. MaximumSampleFrequency : ULONG;
  19279. end;
  19280. {$EXTERNALSYM KSDATARANGE_AUDIO}
  19281. PKSDATARANGE_AUDIO = ^KSDATARANGE_AUDIO;
  19282. {$EXTERNALSYM PKSDATARANGE_AUDIO}
  19283. TKSDataRangeAudio = KSDATARANGE_AUDIO;
  19284. //---------------------------------------------------------------------------
  19285. const
  19286. KSDATAFORMAT_SUBTYPE_RIFF : TGUID = '{4995DAEE-9EE6-11D0-A40E-00A0C9223196}';
  19287. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RIFF}
  19288. KSDATAFORMAT_SUBTYPE_RIFFWAVE : TGUID = '{e436eb8b-524f-11ce-9f53-0020af0ba770}';
  19289. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RIFFWAVE}
  19290. //===========================================================================
  19291. //===========================================================================
  19292. KSPROPSETID_Bibliographic : TGUID = '{07BA150E-E2B1-11D0-AC17-00A0C9223196}';
  19293. {$EXTERNALSYM KSPROPSETID_Bibliographic}
  19294. //Repeatable tags contain all entries within the property, each preceeded by length
  19295. type
  19296. KSPROPERTY_BIBLIOGRAPHIC = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  19297. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC}
  19298. const
  19299. KSPROPERTY_BIBLIOGRAPHIC_LEADER = 'RDL ';
  19300. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_LEADER}
  19301. KSPROPERTY_BIBLIOGRAPHIC_LCCN = '010 ';
  19302. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_LCCN}
  19303. KSPROPERTY_BIBLIOGRAPHIC_ISBN = '020 ';
  19304. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ISBN}
  19305. KSPROPERTY_BIBLIOGRAPHIC_ISSN = '220 ';
  19306. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ISSN}
  19307. KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE = '040 ';
  19308. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CATALOGINGSOURCE}
  19309. KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME = '001 ';
  19310. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINPERSONALNAME}
  19311. KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY = '011 ';
  19312. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINCORPORATEBODY}
  19313. KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME = '111 ';
  19314. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINMEETINGNAME}
  19315. KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE = '031 ';
  19316. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_MAINUNIFORMTITLE}
  19317. KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE = '042 ';
  19318. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_UNIFORMTITLE}
  19319. KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT = '542 ';
  19320. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_TITLESTATEMENT}
  19321. KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE = '642 ';
  19322. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_VARYINGFORMTITLE}
  19323. KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION = '062 ';
  19324. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_PUBLICATION}
  19325. KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION = '003 ';
  19326. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_PHYSICALDESCRIPTION}
  19327. KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE = '044 ';
  19328. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTITLE}
  19329. KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT = '094 ';
  19330. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENT}
  19331. KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE = '005 ';
  19332. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_GENERALNOTE}
  19333. KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE = '405 ';
  19334. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_BIBLIOGRAPHYNOTE}
  19335. KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE = '505 ';
  19336. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CONTENTSNOTE}
  19337. KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT = '805 ';
  19338. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CREATIONCREDIT}
  19339. KSPROPERTY_BIBLIOGRAPHIC_CITATION = '015 ';
  19340. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_CITATION}
  19341. KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT = '115 ';
  19342. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_PARTICIPANT}
  19343. KSPROPERTY_BIBLIOGRAPHIC_SUMMARY = '025 ';
  19344. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SUMMARY}
  19345. KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE = '125 ';
  19346. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_TARGETAUDIENCE}
  19347. KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE = '035 ';
  19348. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDFORMAVAILABLE}
  19349. KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS = '835 ';
  19350. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SYSTEMDETAILS}
  19351. KSPROPERTY_BIBLIOGRAPHIC_AWARDS = '685 ';
  19352. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_AWARDS}
  19353. KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME = '006 ';
  19354. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYPERSONALNAME}
  19355. KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM = '056 ';
  19356. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYTOPICALTERM}
  19357. KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC = '156 ';
  19358. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYGEOGRAPHIC}
  19359. KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE = '556 ';
  19360. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMGENRE}
  19361. KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM = '856 ';
  19362. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_INDEXTERMCURRICULUM}
  19363. KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE = '037 ';
  19364. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYUNIFORMTITLE}
  19365. KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED = '047 ';
  19366. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_ADDEDENTRYRELATED}
  19367. KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME = '008 ';
  19368. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTPERSONALNAME}
  19369. KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE = '038 ';
  19370. {$EXTERNALSYM KSPROPERTY_BIBLIOGRAPHIC_SERIESSTATEMENTUNIFORMTITLE}
  19371. KSPROPSETID_TopologyNode : TGUID = '{45FFAAA1-6E1B-11D0-BCF2-444553540000}';
  19372. {$EXTERNALSYM KSPROPSETID_TopologyNode}
  19373. type
  19374. KSPROPERTY_TOPOLOGYNODE = (
  19375. {$IFNDEF COMPILER6_UP}
  19376. KSPROPERTY_TOPOLOGYNODE_INVALID_0,
  19377. KSPROPERTY_TOPOLOGYNODE_ENABLE,
  19378. KSPROPERTY_TOPOLOGYNODE_RESET
  19379. {$ELSE}
  19380. KSPROPERTY_TOPOLOGYNODE_ENABLE = 1,
  19381. KSPROPERTY_TOPOLOGYNODE_RESET = 2
  19382. {$ENDIF}
  19383. );
  19384. {$EXTERNALSYM KSPROPERTY_TOPOLOGYNODE}
  19385. TKSPropertyTopologyNode = KSPROPERTY_TOPOLOGYNODE;
  19386. //===========================================================================
  19387. const
  19388. KSPROPSETID_DrmAudioStream : TGUID = '{2F2C8DDD-4198-4fac-BA29-61BB05B7DE06}';
  19389. {$EXTERNALSYM KSPROPSETID_DrmAudioStream}
  19390. type
  19391. KSPROPERTY_DRMAUDIOSTREAM = (
  19392. KSPROPERTY_DRMAUDIOSTREAM_CONTENTID,
  19393. KSPROPERTY_DRMAUDIOSTREAM_AUTHENTICATEFUNCTION
  19394. );
  19395. {$EXTERNALSYM KSPROPERTY_DRMAUDIOSTREAM}
  19396. TKSPRopertyDRMAudioStream = KSPROPERTY_DRMAUDIOSTREAM;
  19397. //===========================================================================
  19398. const
  19399. KSPROPSETID_Audio : TGUID = '{45FFAAA0-6E1B-11D0-BCF2-444553540000}';
  19400. {$EXTERNALSYM KSPROPSETID_Audio}
  19401. type
  19402. KSPROPERTY_AUDIO = (
  19403. {$IFNDEF COMPILER6_UP}
  19404. KSPROPERTY_AUDIO_INVALID_0,
  19405. KSPROPERTY_AUDIO_LATENCY,
  19406. {$ELSE}
  19407. KSPROPERTY_AUDIO_LATENCY = 1,
  19408. {$ENDIF}
  19409. KSPROPERTY_AUDIO_COPY_PROTECTION,
  19410. KSPROPERTY_AUDIO_CHANNEL_CONFIG,
  19411. KSPROPERTY_AUDIO_VOLUMELEVEL,
  19412. KSPROPERTY_AUDIO_POSITION,
  19413. KSPROPERTY_AUDIO_DYNAMIC_RANGE,
  19414. KSPROPERTY_AUDIO_QUALITY,
  19415. KSPROPERTY_AUDIO_SAMPLING_RATE,
  19416. KSPROPERTY_AUDIO_DYNAMIC_SAMPLING_RATE,
  19417. KSPROPERTY_AUDIO_MIX_LEVEL_TABLE,
  19418. KSPROPERTY_AUDIO_MIX_LEVEL_CAPS,
  19419. KSPROPERTY_AUDIO_MUX_SOURCE,
  19420. KSPROPERTY_AUDIO_MUTE,
  19421. KSPROPERTY_AUDIO_BASS,
  19422. KSPROPERTY_AUDIO_MID,
  19423. KSPROPERTY_AUDIO_TREBLE,
  19424. KSPROPERTY_AUDIO_BASS_BOOST,
  19425. KSPROPERTY_AUDIO_EQ_LEVEL,
  19426. KSPROPERTY_AUDIO_NUM_EQ_BANDS,
  19427. KSPROPERTY_AUDIO_EQ_BANDS,
  19428. KSPROPERTY_AUDIO_AGC,
  19429. KSPROPERTY_AUDIO_DELAY,
  19430. KSPROPERTY_AUDIO_LOUDNESS,
  19431. KSPROPERTY_AUDIO_WIDE_MODE,
  19432. KSPROPERTY_AUDIO_WIDENESS,
  19433. KSPROPERTY_AUDIO_REVERB_LEVEL,
  19434. KSPROPERTY_AUDIO_CHORUS_LEVEL,
  19435. KSPROPERTY_AUDIO_DEV_SPECIFIC,
  19436. KSPROPERTY_AUDIO_DEMUX_DEST,
  19437. KSPROPERTY_AUDIO_STEREO_ENHANCE,
  19438. KSPROPERTY_AUDIO_MANUFACTURE_GUID,
  19439. KSPROPERTY_AUDIO_PRODUCT_GUID,
  19440. KSPROPERTY_AUDIO_CPU_RESOURCES,
  19441. KSPROPERTY_AUDIO_STEREO_SPEAKER_GEOMETRY,
  19442. KSPROPERTY_AUDIO_SURROUND_ENCODE,
  19443. KSPROPERTY_AUDIO_3D_INTERFACE,
  19444. KSPROPERTY_AUDIO_PEAKMETER,
  19445. KSPROPERTY_AUDIO_ALGORITHM_INSTANCE
  19446. );
  19447. {$EXTERNALSYM KSPROPERTY_AUDIO}
  19448. TKSPropertyAudio = KSPROPERTY_AUDIO;
  19449. // Audio quality constants
  19450. const
  19451. KSAUDIO_QUALITY_WORST = $0;
  19452. {$EXTERNALSYM KSAUDIO_QUALITY_WORST}
  19453. KSAUDIO_QUALITY_PC = $1;
  19454. {$EXTERNALSYM KSAUDIO_QUALITY_PC}
  19455. KSAUDIO_QUALITY_BASIC = $2;
  19456. {$EXTERNALSYM KSAUDIO_QUALITY_BASIC}
  19457. KSAUDIO_QUALITY_ADVANCED = $3;
  19458. {$EXTERNALSYM KSAUDIO_QUALITY_ADVANCED}
  19459. // Audio CPU resource constants
  19460. KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU = $00000000;
  19461. {$EXTERNALSYM KSAUDIO_CPU_RESOURCES_NOT_HOST_CPU}
  19462. KSAUDIO_CPU_RESOURCES_HOST_CPU = $7FFFFFFF;
  19463. {$EXTERNALSYM KSAUDIO_CPU_RESOURCES_HOST_CPU}
  19464. type
  19465. PKSAudioCopyProtection = ^TKSAudioCopyProtection;
  19466. KSAUDIO_COPY_PROTECTION = record
  19467. fCopyrighted : BOOL;
  19468. fOriginal : BOOL;
  19469. end;
  19470. {$EXTERNALSYM KSAUDIO_COPY_PROTECTION}
  19471. PKSAUDIO_COPY_PROTECTION = ^KSAUDIO_COPY_PROTECTION;
  19472. {$EXTERNALSYM PKSAUDIO_COPY_PROTECTION}
  19473. TKSAudioCopyProtection = KSAUDIO_COPY_PROTECTION;
  19474. PKSAudioChannelConfig = ^TKSAudioChannelConfig;
  19475. KSAUDIO_CHANNEL_CONFIG = record
  19476. ActiveSpeakerPositions : Longint;
  19477. end;
  19478. {$EXTERNALSYM KSAUDIO_CHANNEL_CONFIG}
  19479. PKSAUDIO_CHANNEL_CONFIG = ^KSAUDIO_CHANNEL_CONFIG;
  19480. {$EXTERNALSYM PKSAUDIO_CHANNEL_CONFIG}
  19481. TKSAudioChannelConfig = KSAUDIO_CHANNEL_CONFIG;
  19482. // Speaker Positions:
  19483. const
  19484. SPEAKER_FRONT_LEFT = $1;
  19485. {$EXTERNALSYM SPEAKER_FRONT_LEFT}
  19486. SPEAKER_FRONT_RIGHT = $2;
  19487. {$EXTERNALSYM SPEAKER_FRONT_RIGHT}
  19488. SPEAKER_FRONT_CENTER = $4;
  19489. {$EXTERNALSYM SPEAKER_FRONT_CENTER}
  19490. SPEAKER_LOW_FREQUENCY = $8;
  19491. {$EXTERNALSYM SPEAKER_LOW_FREQUENCY}
  19492. SPEAKER_BACK_LEFT = $10;
  19493. {$EXTERNALSYM SPEAKER_BACK_LEFT}
  19494. SPEAKER_BACK_RIGHT = $20;
  19495. {$EXTERNALSYM SPEAKER_BACK_RIGHT}
  19496. SPEAKER_FRONT_LEFT_OF_CENTER = $40;
  19497. {$EXTERNALSYM SPEAKER_FRONT_LEFT_OF_CENTER}
  19498. SPEAKER_FRONT_RIGHT_OF_CENTER = $80;
  19499. {$EXTERNALSYM SPEAKER_FRONT_RIGHT_OF_CENTER}
  19500. SPEAKER_BACK_CENTER = $100;
  19501. {$EXTERNALSYM SPEAKER_BACK_CENTER}
  19502. SPEAKER_SIDE_LEFT = $200;
  19503. {$EXTERNALSYM SPEAKER_SIDE_LEFT}
  19504. SPEAKER_SIDE_RIGHT = $400;
  19505. {$EXTERNALSYM SPEAKER_SIDE_RIGHT}
  19506. SPEAKER_TOP_CENTER = $800;
  19507. {$EXTERNALSYM SPEAKER_TOP_CENTER}
  19508. SPEAKER_TOP_FRONT_LEFT = $1000;
  19509. {$EXTERNALSYM SPEAKER_TOP_FRONT_LEFT}
  19510. SPEAKER_TOP_FRONT_CENTER = $2000;
  19511. {$EXTERNALSYM SPEAKER_TOP_FRONT_CENTER}
  19512. SPEAKER_TOP_FRONT_RIGHT = $4000;
  19513. {$EXTERNALSYM SPEAKER_TOP_FRONT_RIGHT}
  19514. SPEAKER_TOP_BACK_LEFT = $8000;
  19515. {$EXTERNALSYM SPEAKER_TOP_BACK_LEFT}
  19516. SPEAKER_TOP_BACK_CENTER = $10000;
  19517. {$EXTERNALSYM SPEAKER_TOP_BACK_CENTER}
  19518. SPEAKER_TOP_BACK_RIGHT = $20000;
  19519. {$EXTERNALSYM SPEAKER_TOP_BACK_RIGHT}
  19520. // Bit mask locations reserved for future use
  19521. SPEAKER_RESERVED = $7FFC0000;
  19522. {$EXTERNALSYM SPEAKER_RESERVED}
  19523. // Used to specify that any possible permutation of speaker configurations
  19524. SPEAKER_ALL = $80000000;
  19525. {$EXTERNALSYM SPEAKER_ALL}
  19526. // DirectSound Speaker Config
  19527. KSAUDIO_SPEAKER_MONO = (SPEAKER_FRONT_CENTER);
  19528. {$EXTERNALSYM KSAUDIO_SPEAKER_MONO}
  19529. KSAUDIO_SPEAKER_STEREO = (SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT);
  19530. {$EXTERNALSYM KSAUDIO_SPEAKER_STEREO}
  19531. KSAUDIO_SPEAKER_QUAD = (SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  19532. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT);
  19533. {$EXTERNALSYM KSAUDIO_SPEAKER_QUAD}
  19534. KSAUDIO_SPEAKER_SURROUND = (SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  19535. SPEAKER_FRONT_CENTER or SPEAKER_BACK_CENTER);
  19536. {$EXTERNALSYM KSAUDIO_SPEAKER_SURROUND}
  19537. KSAUDIO_SPEAKER_5POINT1 = (SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  19538. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  19539. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT);
  19540. {$EXTERNALSYM KSAUDIO_SPEAKER_5POINT1}
  19541. KSAUDIO_SPEAKER_7POINT1 = (SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  19542. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  19543. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT or
  19544. SPEAKER_FRONT_LEFT_OF_CENTER or SPEAKER_FRONT_RIGHT_OF_CENTER);
  19545. {$EXTERNALSYM KSAUDIO_SPEAKER_7POINT1}
  19546. KSAUDIO_SPEAKER_5POINT1_SURROUND = (SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  19547. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  19548. SPEAKER_SIDE_LEFT or SPEAKER_SIDE_RIGHT);
  19549. {$EXTERNALSYM KSAUDIO_SPEAKER_5POINT1_SURROUND}
  19550. KSAUDIO_SPEAKER_7POINT1_SURROUND = (SPEAKER_FRONT_LEFT or SPEAKER_FRONT_RIGHT or
  19551. SPEAKER_FRONT_CENTER or SPEAKER_LOW_FREQUENCY or
  19552. SPEAKER_BACK_LEFT or SPEAKER_BACK_RIGHT or
  19553. SPEAKER_SIDE_LEFT or SPEAKER_SIDE_RIGHT);
  19554. {$EXTERNALSYM KSAUDIO_SPEAKER_7POINT1_SURROUND}
  19555. // The following are obsolete 5.1 and 7.1 settings (they lack side speakers). Note this means
  19556. // that the default 5.1 and 7.1 settings (KSAUDIO_SPEAKER_5POINT1 and KSAUDIO_SPEAKER_7POINT1 are
  19557. // similarly obsolete but are unchanged for compatibility reasons).
  19558. KSAUDIO_SPEAKER_5POINT1_BACK = KSAUDIO_SPEAKER_5POINT1;
  19559. {$EXTERNALSYM KSAUDIO_SPEAKER_5POINT1_BACK}
  19560. KSAUDIO_SPEAKER_7POINT1_WIDE = KSAUDIO_SPEAKER_7POINT1;
  19561. {$EXTERNALSYM KSAUDIO_SPEAKER_7POINT1_WIDE}
  19562. // DVD Speaker Positions
  19563. KSAUDIO_SPEAKER_GROUND_FRONT_LEFT = SPEAKER_FRONT_LEFT;
  19564. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_LEFT}
  19565. KSAUDIO_SPEAKER_GROUND_FRONT_CENTER = SPEAKER_FRONT_CENTER;
  19566. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_CENTER}
  19567. KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT = SPEAKER_FRONT_RIGHT;
  19568. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_FRONT_RIGHT}
  19569. KSAUDIO_SPEAKER_GROUND_REAR_LEFT = SPEAKER_BACK_LEFT;
  19570. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_REAR_LEFT}
  19571. KSAUDIO_SPEAKER_GROUND_REAR_RIGHT = SPEAKER_BACK_RIGHT;
  19572. {$EXTERNALSYM KSAUDIO_SPEAKER_GROUND_REAR_RIGHT}
  19573. KSAUDIO_SPEAKER_TOP_MIDDLE = SPEAKER_TOP_CENTER;
  19574. {$EXTERNALSYM KSAUDIO_SPEAKER_TOP_MIDDLE}
  19575. KSAUDIO_SPEAKER_SUPER_WOOFER = SPEAKER_LOW_FREQUENCY;
  19576. {$EXTERNALSYM KSAUDIO_SPEAKER_SUPER_WOOFER}
  19577. type
  19578. PKSAudioDynamicRange = ^TKSAudioDynamicRange;
  19579. KSAUDIO_DYNAMIC_RANGE = record
  19580. QuietCompression : ULONG;
  19581. LoudCompression : ULONG;
  19582. end;
  19583. {$EXTERNALSYM KSAUDIO_DYNAMIC_RANGE}
  19584. PKSAUDIO_DYNAMIC_RANGE = ^KSAUDIO_DYNAMIC_RANGE;
  19585. {$EXTERNALSYM PKSAUDIO_DYNAMIC_RANGE}
  19586. TKSAudioDynamicRange = KSAUDIO_DYNAMIC_RANGE;
  19587. PKSAudioMixLevel = ^TKSAudioMixLevel;
  19588. KSAUDIO_MIXLEVEL = record
  19589. Mute : BOOL;
  19590. Level : Longint;
  19591. end;
  19592. {$EXTERNALSYM KSAUDIO_MIXLEVEL}
  19593. PKSAUDIO_MIXLEVEL = ^KSAUDIO_MIXLEVEL;
  19594. {$EXTERNALSYM PKSAUDIO_MIXLEVEL}
  19595. TKSAudioMixLevel = KSAUDIO_MIXLEVEL;
  19596. PKSAudioMixCaps = ^TKSAudioMixCaps;
  19597. KSAUDIO_MIX_CAPS = record
  19598. Mute : BOOL;
  19599. Minimum : longint;
  19600. Maximum : longint;
  19601. Reset : longint;
  19602. end;
  19603. {$EXTERNALSYM KSAUDIO_MIX_CAPS}
  19604. PKSAUDIO_MIX_CAPS = ^KSAUDIO_MIX_CAPS;
  19605. {$EXTERNALSYM PKSAUDIO_MIX_CAPS}
  19606. TKSAudioMixCaps = KSAUDIO_MIX_CAPS;
  19607. PKSaudioMixcapTable = ^TKSaudioMixcapTable;
  19608. KSAUDIO_MIXCAP_TABLE = record
  19609. InputChannels : ULONG;
  19610. OutputChannels : ULONG;
  19611. Capabilities : array[0..0] of TKSAudioMixCaps;
  19612. end;
  19613. {$EXTERNALSYM KSAUDIO_MIXCAP_TABLE}
  19614. PKSAUDIO_MIXCAP_TABLE = ^KSAUDIO_MIXCAP_TABLE;
  19615. {$EXTERNALSYM PKSAUDIO_MIXCAP_TABLE}
  19616. TKSaudioMixcapTable = KSAUDIO_MIXCAP_TABLE;
  19617. SE_TECHNIQUE = (
  19618. SE_TECH_NONE,
  19619. SE_TECH_ANALOG_DEVICES_PHAT,
  19620. SE_TECH_CREATIVE,
  19621. SE_TECH_NATIONAL_SEMI,
  19622. SE_TECH_YAMAHA_YMERSION,
  19623. SE_TECH_BBE,
  19624. SE_TECH_CRYSTAL_SEMI,
  19625. SE_TECH_QSOUND_QXPANDER,
  19626. SE_TECH_SPATIALIZER,
  19627. SE_TECH_SRS,
  19628. SE_TECH_PLATFORM_TECH,
  19629. SE_TECH_AKM,
  19630. SE_TECH_AUREAL,
  19631. SE_TECH_AZTECH,
  19632. SE_TECH_BINAURA,
  19633. SE_TECH_ESS_TECH,
  19634. SE_TECH_HARMAN_VMAX,
  19635. SE_TECH_NVIDEA,
  19636. SE_TECH_PHILIPS_INCREDIBLE,
  19637. SE_TECH_TEXAS_INST,
  19638. SE_TECH_VLSI_TECH
  19639. );
  19640. {$EXTERNALSYM SE_TECHNIQUE}
  19641. TSETechnique = SE_TECHNIQUE;
  19642. PKSAudioStereoEnhance = ^TKSAudioStereoEnhance;
  19643. KSAUDIO_STEREO_ENHANCE = record
  19644. Technique : TSETechnique;
  19645. Center : ULONG;
  19646. Depth : ULONG;
  19647. Reserved : ULONG;
  19648. end;
  19649. {$EXTERNALSYM KSAUDIO_STEREO_ENHANCE}
  19650. PKSAUDIO_STEREO_ENHANCE = ^KSAUDIO_STEREO_ENHANCE;
  19651. {$EXTERNALSYM PKSAUDIO_STEREO_ENHANCE}
  19652. TKSAudioStereoEnhance = KSAUDIO_STEREO_ENHANCE;
  19653. //===========================================================================
  19654. // Topology Node Type GUIDs
  19655. const
  19656. KSNODETYPE_DAC : TGUID = '{507AE360-C554-11D0-8A2B-00A0C9255AC1}';
  19657. {$EXTERNALSYM KSNODETYPE_DAC}
  19658. KSNODETYPE_ADC : TGUID = '{4D837FE0-C555-11D0-8A2B-00A0C9255AC1}';
  19659. {$EXTERNALSYM KSNODETYPE_ADC}
  19660. KSNODETYPE_SRC : TGUID = '{9DB7B9E0-C555-11D0-8A2B-00A0C9255AC1}';
  19661. {$EXTERNALSYM KSNODETYPE_SRC}
  19662. KSNODETYPE_SUPERMIX : TGUID = '{E573ADC0-C555-11D0-8A2B-00A0C9255AC1}';
  19663. {$EXTERNALSYM KSNODETYPE_SUPERMIX}
  19664. KSNODETYPE_MUX : TGUID = '{2CEAF780-C556-11D0-8A2B-00A0C9255AC1}';
  19665. {$EXTERNALSYM KSNODETYPE_MUX}
  19666. KSNODETYPE_DEMUX : TGUID = '{C0EB67D4-E807-11D0-958A-00C04FB925D3}';
  19667. {$EXTERNALSYM KSNODETYPE_DEMUX}
  19668. KSNODETYPE_SUM : TGUID = '{DA441A60-C556-11D0-8A2B-00A0C9255AC1}';
  19669. {$EXTERNALSYM KSNODETYPE_SUM}
  19670. KSNODETYPE_MUTE : TGUID = '{02B223C0-C557-11D0-8A2B-00A0C9255AC1}';
  19671. {$EXTERNALSYM KSNODETYPE_MUTE}
  19672. KSNODETYPE_VOLUME : TGUID = '{3A5ACC00-C557-11D0-8A2B-00A0C9255AC1}';
  19673. {$EXTERNALSYM KSNODETYPE_VOLUME}
  19674. KSNODETYPE_TONE : TGUID = '{7607E580-C557-11D0-8A2B-00A0C9255AC1}';
  19675. {$EXTERNALSYM KSNODETYPE_TONE}
  19676. KSNODETYPE_EQUALIZER : TGUID = '{9D41B4A0-C557-11D0-8A2B-00A0C9255AC1}';
  19677. {$EXTERNALSYM KSNODETYPE_EQUALIZER}
  19678. KSNODETYPE_AGC : TGUID = '{E88C9BA0-C557-11D0-8A2B-00A0C9255AC1}';
  19679. {$EXTERNALSYM KSNODETYPE_AGC}
  19680. KSNODETYPE_NOISE_SUPPRESS : TGUID = '{E07F903F-62FD-4e60-8CDD-DEA7236665B5}';
  19681. {$EXTERNALSYM KSNODETYPE_NOISE_SUPPRESS}
  19682. KSNODETYPE_DELAY : TGUID = '{144981E0-C558-11D0-8A2B-00A0C9255AC1}';
  19683. {$EXTERNALSYM KSNODETYPE_DELAY}
  19684. KSNODETYPE_LOUDNESS : TGUID = '{41887440-C558-11D0-8A2B-00A0C9255AC1}';
  19685. {$EXTERNALSYM KSNODETYPE_LOUDNESS}
  19686. KSNODETYPE_PROLOGIC_DECODER : TGUID = '{831C2C80-C558-11D0-8A2B-00A0C9255AC1}';
  19687. {$EXTERNALSYM KSNODETYPE_PROLOGIC_DECODER}
  19688. KSNODETYPE_STEREO_WIDE : TGUID = '{A9E69800-C558-11D0-8A2B-00A0C9255AC1}';
  19689. {$EXTERNALSYM KSNODETYPE_STEREO_WIDE}
  19690. KSNODETYPE_STEREO_ENHANCE : TGUID = '{AF6878AC-E83F-11D0-958A-00C04FB925D3}';
  19691. {$EXTERNALSYM KSNODETYPE_STEREO_ENHANCE}
  19692. KSNODETYPE_REVERB : TGUID = '{EF0328E0-C558-11D0-8A2B-00A0C9255AC1}';
  19693. {$EXTERNALSYM KSNODETYPE_REVERB}
  19694. KSNODETYPE_CHORUS : TGUID = '{20173F20-C559-11D0-8A2B-00A0C9255AC1}';
  19695. {$EXTERNALSYM KSNODETYPE_CHORUS}
  19696. KSNODETYPE_3D_EFFECTS : TGUID = '{55515860-C559-11D0-8A2B-00A0C9255AC1}';
  19697. {$EXTERNALSYM KSNODETYPE_3D_EFFECTS}
  19698. KSNODETYPE_ACOUSTIC_ECHO_CANCEL : TGUID = '{BF963D80-C559-11D0-8A2B-00A0C9255AC1}'; //KSCATEGORY_ACOUSTIC_ECHO_CANCEL
  19699. {$EXTERNALSYM KSNODETYPE_ACOUSTIC_ECHO_CANCEL}
  19700. KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR : TGUID = '{830a44f2-a32d-476b-be97-42845673b35a}'; //KSCATEGORY_MICROPHONE_ARRAY_PROCESSOR
  19701. {$EXTERNALSYM KSNODETYPE_MICROPHONE_ARRAY_PROCESSOR}
  19702. KSNODETYPE_DEV_SPECIFIC : TGUID = '{941C7AC0-C559-11D0-8A2B-00A0C9255AC1}';
  19703. {$EXTERNALSYM KSNODETYPE_DEV_SPECIFIC}
  19704. KSNODETYPE_SURROUND_ENCODER : TGUID = '{8074C5B2-3C66-11D2-B45A-3078302C2030}';
  19705. {$EXTERNALSYM KSNODETYPE_SURROUND_ENCODER}
  19706. KSNODETYPE_PEAKMETER : TGUID = '{A085651E-5F0D-4b36-A869-D195D6AB4B9E}';
  19707. {$EXTERNALSYM KSNODETYPE_PEAKMETER}
  19708. //===========================================================================
  19709. // Topology Node Name GUIDs for common audio nodes
  19710. KSAUDFNAME_BASS : TGUID = '{185FEDE0-9905-11D1-95A9-00C04FB925D3}';
  19711. {$EXTERNALSYM KSAUDFNAME_BASS}
  19712. KSAUDFNAME_TREBLE : TGUID = '{185FEDE1-9905-11D1-95A9-00C04FB925D3}';
  19713. {$EXTERNALSYM KSAUDFNAME_TREBLE}
  19714. KSAUDFNAME_3D_STEREO : TGUID = '{185FEDE2-9905-11D1-95A9-00C04FB925D3}';
  19715. {$EXTERNALSYM KSAUDFNAME_3D_STEREO}
  19716. KSAUDFNAME_MASTER_VOLUME : TGUID = '{185FEDE3-9905-11D1-95A9-00C04FB925D3}';
  19717. {$EXTERNALSYM KSAUDFNAME_MASTER_VOLUME}
  19718. KSAUDFNAME_MASTER_MUTE : TGUID = '{185FEDE4-9905-11D1-95A9-00C04FB925D3}';
  19719. {$EXTERNALSYM KSAUDFNAME_MASTER_MUTE}
  19720. KSAUDFNAME_WAVE_VOLUME : TGUID = '{185FEDE5-9905-11D1-95A9-00C04FB925D3}';
  19721. {$EXTERNALSYM KSAUDFNAME_WAVE_VOLUME}
  19722. KSAUDFNAME_WAVE_MUTE : TGUID = '{185FEDE6-9905-11D1-95A9-00C04FB925D3}';
  19723. {$EXTERNALSYM KSAUDFNAME_WAVE_MUTE}
  19724. KSAUDFNAME_MIDI_VOLUME : TGUID = '{185FEDE7-9905-11D1-95A9-00C04FB925D3}';
  19725. {$EXTERNALSYM KSAUDFNAME_MIDI_VOLUME}
  19726. KSAUDFNAME_MIDI_MUTE : TGUID = '{185FEDE8-9905-11D1-95A9-00C04FB925D3}';
  19727. {$EXTERNALSYM KSAUDFNAME_MIDI_MUTE}
  19728. KSAUDFNAME_CD_VOLUME : TGUID = '{185FEDE9-9905-11D1-95A9-00C04FB925D3}';
  19729. {$EXTERNALSYM KSAUDFNAME_CD_VOLUME}
  19730. KSAUDFNAME_CD_MUTE : TGUID = '{185FEDEA-9905-11D1-95A9-00C04FB925D3}';
  19731. {$EXTERNALSYM KSAUDFNAME_CD_MUTE}
  19732. KSAUDFNAME_LINE_VOLUME : TGUID = '{185FEDEB-9905-11D1-95A9-00C04FB925D3}';
  19733. {$EXTERNALSYM KSAUDFNAME_LINE_VOLUME}
  19734. KSAUDFNAME_LINE_MUTE : TGUID = '{185FEDEC-9905-11D1-95A9-00C04FB925D3}';
  19735. {$EXTERNALSYM KSAUDFNAME_LINE_MUTE}
  19736. KSAUDFNAME_MIC_VOLUME : TGUID = '{185FEDED-9905-11D1-95A9-00C04FB925D3}';
  19737. {$EXTERNALSYM KSAUDFNAME_MIC_VOLUME}
  19738. KSAUDFNAME_MIC_MUTE : TGUID = '{185FEDEE-9905-11D1-95A9-00C04FB925D3}';
  19739. {$EXTERNALSYM KSAUDFNAME_MIC_MUTE}
  19740. KSAUDFNAME_RECORDING_SOURCE : TGUID = '{185FEDEF-9905-11D1-95A9-00C04FB925D3}';
  19741. {$EXTERNALSYM KSAUDFNAME_RECORDING_SOURCE}
  19742. KSAUDFNAME_PC_SPEAKER_VOLUME : TGUID = '{185FEDF0-9905-11D1-95A9-00C04FB925D3}';
  19743. {$EXTERNALSYM KSAUDFNAME_PC_SPEAKER_VOLUME}
  19744. KSAUDFNAME_PC_SPEAKER_MUTE : TGUID = '{185FEDF1-9905-11D1-95A9-00C04FB925D3}';
  19745. {$EXTERNALSYM KSAUDFNAME_PC_SPEAKER_MUTE}
  19746. KSAUDFNAME_MIDI_IN_VOLUME : TGUID = '{185FEDF2-9905-11D1-95A9-00C04FB925D3}';
  19747. {$EXTERNALSYM KSAUDFNAME_MIDI_IN_VOLUME}
  19748. KSAUDFNAME_CD_IN_VOLUME : TGUID = '{185FEDF3-9905-11D1-95A9-00C04FB925D3}';
  19749. {$EXTERNALSYM KSAUDFNAME_CD_IN_VOLUME}
  19750. KSAUDFNAME_LINE_IN_VOLUME : TGUID = '{185FEDF4-9905-11D1-95A9-00C04FB925D3}';
  19751. {$EXTERNALSYM KSAUDFNAME_LINE_IN_VOLUME}
  19752. KSAUDFNAME_MIC_IN_VOLUME : TGUID = '{185FEDF5-9905-11D1-95A9-00C04FB925D3}';
  19753. {$EXTERNALSYM KSAUDFNAME_MIC_IN_VOLUME}
  19754. KSAUDFNAME_WAVE_IN_VOLUME : TGUID = '{185FEDF6-9905-11D1-95A9-00C04FB925D3}';
  19755. {$EXTERNALSYM KSAUDFNAME_WAVE_IN_VOLUME}
  19756. KSAUDFNAME_VOLUME_CONTROL : TGUID = '{185FEDF7-9905-11D1-95A9-00C04FB925D3}';
  19757. {$EXTERNALSYM KSAUDFNAME_VOLUME_CONTROL}
  19758. KSAUDFNAME_MIDI : TGUID = '{185FEDF8-9905-11D1-95A9-00C04FB925D3}';
  19759. {$EXTERNALSYM KSAUDFNAME_MIDI}
  19760. KSAUDFNAME_LINE_IN : TGUID = '{185FEDF9-9905-11D1-95A9-00C04FB925D3}';
  19761. {$EXTERNALSYM KSAUDFNAME_LINE_IN}
  19762. KSAUDFNAME_RECORDING_CONTROL : TGUID = '{185FEDFA-9905-11D1-95A9-00C04FB925D3}';
  19763. {$EXTERNALSYM KSAUDFNAME_RECORDING_CONTROL}
  19764. KSAUDFNAME_CD_AUDIO : TGUID = '{185FEDFB-9905-11D1-95A9-00C04FB925D3}';
  19765. {$EXTERNALSYM KSAUDFNAME_CD_AUDIO}
  19766. KSAUDFNAME_AUX_VOLUME : TGUID = '{185FEDFC-9905-11D1-95A9-00C04FB925D3}';
  19767. {$EXTERNALSYM KSAUDFNAME_AUX_VOLUME}
  19768. KSAUDFNAME_AUX_MUTE : TGUID = '{185FEDFD-9905-11D1-95A9-00C04FB925D3}';
  19769. {$EXTERNALSYM KSAUDFNAME_AUX_MUTE}
  19770. KSAUDFNAME_AUX : TGUID = '{185FEDFE-9905-11D1-95A9-00C04FB925D3}';
  19771. {$EXTERNALSYM KSAUDFNAME_AUX}
  19772. KSAUDFNAME_PC_SPEAKER : TGUID = '{185FEDFF-9905-11D1-95A9-00C04FB925D3}';
  19773. {$EXTERNALSYM KSAUDFNAME_PC_SPEAKER}
  19774. KSAUDFNAME_WAVE_OUT_MIX : TGUID = '{185FEE00-9905-11D1-95A9-00C04FB925D3}';
  19775. {$EXTERNALSYM KSAUDFNAME_WAVE_OUT_MIX}
  19776. KSAUDFNAME_MONO_OUT : TGUID = '{F9B41DC3-96E2-11d2-AC4C-00C04F8EFB68}';
  19777. {$EXTERNALSYM KSAUDFNAME_MONO_OUT}
  19778. KSAUDFNAME_STEREO_MIX : TGUID = '{00DFF077-96E3-11d2-AC4C-00C04F8EFB68}';
  19779. {$EXTERNALSYM KSAUDFNAME_STEREO_MIX}
  19780. KSAUDFNAME_MONO_MIX : TGUID = '{00DFF078-96E3-11d2-AC4C-00C04F8EFB68}';
  19781. {$EXTERNALSYM KSAUDFNAME_MONO_MIX}
  19782. KSAUDFNAME_MONO_OUT_VOLUME : TGUID = '{1AD247EB-96E3-11d2-AC4C-00C04F8EFB68}';
  19783. {$EXTERNALSYM KSAUDFNAME_MONO_OUT_VOLUME}
  19784. KSAUDFNAME_MONO_OUT_MUTE : TGUID = '{1AD247EC-96E3-11d2-AC4C-00C04F8EFB68}';
  19785. {$EXTERNALSYM KSAUDFNAME_MONO_OUT_MUTE}
  19786. KSAUDFNAME_STEREO_MIX_VOLUME : TGUID = '{1AD247ED-96E3-11d2-AC4C-00C04F8EFB68}';
  19787. {$EXTERNALSYM KSAUDFNAME_STEREO_MIX_VOLUME}
  19788. KSAUDFNAME_STEREO_MIX_MUTE : TGUID = '{22B0EAFD-96E3-11d2-AC4C-00C04F8EFB68}';
  19789. {$EXTERNALSYM KSAUDFNAME_STEREO_MIX_MUTE}
  19790. KSAUDFNAME_MONO_MIX_VOLUME : TGUID = '{22B0EAFE-96E3-11d2-AC4C-00C04F8EFB68}';
  19791. {$EXTERNALSYM KSAUDFNAME_MONO_MIX_VOLUME}
  19792. KSAUDFNAME_MONO_MIX_MUTE : TGUID = '{2BC31D69-96E3-11d2-AC4C-00C04F8EFB68}';
  19793. {$EXTERNALSYM KSAUDFNAME_MONO_MIX_MUTE}
  19794. KSAUDFNAME_MICROPHONE_BOOST : TGUID = '{2BC31D6A-96E3-11d2-AC4C-00C04F8EFB68}';
  19795. {$EXTERNALSYM KSAUDFNAME_MICROPHONE_BOOST}
  19796. KSAUDFNAME_ALTERNATE_MICROPHONE : TGUID = '{2BC31D6B-96E3-11d2-AC4C-00C04F8EFB68}';
  19797. {$EXTERNALSYM KSAUDFNAME_ALTERNATE_MICROPHONE}
  19798. KSAUDFNAME_3D_DEPTH : TGUID = '{63FF5747-991F-11d2-AC4D-00C04F8EFB68}';
  19799. {$EXTERNALSYM KSAUDFNAME_3D_DEPTH}
  19800. KSAUDFNAME_3D_CENTER : TGUID = '{9F0670B4-991F-11d2-AC4D-00C04F8EFB68}';
  19801. {$EXTERNALSYM KSAUDFNAME_3D_CENTER}
  19802. KSAUDFNAME_VIDEO_VOLUME : TGUID = '{9B46E708-992A-11d2-AC4D-00C04F8EFB68}';
  19803. {$EXTERNALSYM KSAUDFNAME_VIDEO_VOLUME}
  19804. KSAUDFNAME_VIDEO_MUTE : TGUID = '{9B46E709-992A-11d2-AC4D-00C04F8EFB68}';
  19805. {$EXTERNALSYM KSAUDFNAME_VIDEO_MUTE}
  19806. KSAUDFNAME_VIDEO : TGUID = '{915DAEC4-A434-11d2-AC52-00C04F8EFB68}';
  19807. {$EXTERNALSYM KSAUDFNAME_VIDEO}
  19808. KSAUDFNAME_PEAKMETER : TGUID = '{57E24340-FC5B-4612-A562-72B11A29DFAE}';
  19809. {$EXTERNALSYM KSAUDFNAME_PEAKMETER}
  19810. // Internal topology node pin definitions
  19811. KSNODEPIN_STANDARD_IN = 1;
  19812. {$EXTERNALSYM KSNODEPIN_STANDARD_IN}
  19813. KSNODEPIN_STANDARD_OUT = 0;
  19814. {$EXTERNALSYM KSNODEPIN_STANDARD_OUT}
  19815. KSNODEPIN_SUM_MUX_IN = 1; // can be >= 1
  19816. {$EXTERNALSYM KSNODEPIN_SUM_MUX_IN}
  19817. KSNODEPIN_SUM_MUX_OUT = 0;
  19818. {$EXTERNALSYM KSNODEPIN_SUM_MUX_OUT}
  19819. KSNODEPIN_DEMUX_IN = 0;
  19820. {$EXTERNALSYM KSNODEPIN_DEMUX_IN}
  19821. KSNODEPIN_DEMUX_OUT = 1; // can be >= 1
  19822. {$EXTERNALSYM KSNODEPIN_DEMUX_OUT}
  19823. KSNODEPIN_AEC_RENDER_IN = 1;
  19824. {$EXTERNALSYM KSNODEPIN_AEC_RENDER_IN}
  19825. KSNODEPIN_AEC_RENDER_OUT = 0;
  19826. {$EXTERNALSYM KSNODEPIN_AEC_RENDER_OUT}
  19827. KSNODEPIN_AEC_CAPTURE_IN = 2;
  19828. {$EXTERNALSYM KSNODEPIN_AEC_CAPTURE_IN}
  19829. KSNODEPIN_AEC_CAPTURE_OUT = 3;
  19830. {$EXTERNALSYM KSNODEPIN_AEC_CAPTURE_OUT}
  19831. //===========================================================================
  19832. //===========================================================================
  19833. KSMETHODSETID_Wavetable : TGUID = '{DCEF31EB-D907-11D0-9583-00C04FB925D3}';
  19834. {$EXTERNALSYM KSMETHODSETID_Wavetable}
  19835. type
  19836. KSMETHOD_WAVETABLE = (
  19837. KSMETHOD_WAVETABLE_WAVE_ALLOC,
  19838. KSMETHOD_WAVETABLE_WAVE_FREE,
  19839. KSMETHOD_WAVETABLE_WAVE_FIND,
  19840. KSMETHOD_WAVETABLE_WAVE_WRITE
  19841. );
  19842. {$EXTERNALSYM KSMETHOD_WAVETABLE}
  19843. TKSMethodWavetable = KSMETHOD_WAVETABLE;
  19844. PKSWaveTableWaveDesc = ^TKSWaveTableWaveDesc;
  19845. KSWAVETABLE_WAVE_DESC = record
  19846. Identifier : TKSIdentifier; // wave identifier
  19847. Size : ULONG; // wave size
  19848. Looped : BOOL; // wave looped flag
  19849. LoopPoint : ULONG; // wave loop point
  19850. InROM : BOOL; // wave InROM flag
  19851. Format : TKSDataFormat; // wave format
  19852. end;
  19853. {$EXTERNALSYM KSWAVETABLE_WAVE_DESC}
  19854. PKSWAVETABLE_WAVE_DESC = ^KSWAVETABLE_WAVE_DESC;
  19855. {$EXTERNALSYM PKSWAVETABLE_WAVE_DESC}
  19856. TKSWaveTableWaveDesc = KSWAVETABLE_WAVE_DESC;
  19857. //===========================================================================
  19858. //===========================================================================
  19859. //
  19860. // Property sets and items
  19861. //
  19862. //===========================================================================
  19863. //===========================================================================
  19864. const
  19865. KSPROPSETID_Itd3d : TGUID = '{6429f090-9fd9-11d0-a75b-00a0c90365e3}';
  19866. {$EXTERNALSYM KSPROPSETID_Itd3d}
  19867. //type
  19868. // KSPROPERTY_ITD3D = (
  19869. // KSPROPERTY_ITD3D_PARAMS
  19870. // );
  19871. // {$EXTERNALSYM KSPROPERTY_ITD3D}
  19872. // TKSPropertyITD3D = KSPROPERTY_ITD3D;
  19873. //===========================================================================
  19874. //===========================================================================
  19875. const
  19876. KSPROPSETID_Hrtf3d: TGUID = '{b66decb0-a083-11d0-851e-00c04fd9baf3}';
  19877. {$EXTERNALSYM KSPROPSETID_Hrtf3d}
  19878. //type
  19879. // KSPROPERTY_HRTF3D = (
  19880. // KSPROPERTY_HRTF3D_PARAMS,
  19881. // KSPROPERTY_HRTF3D_INITIALIZE,
  19882. // KSPROPERTY_HRTF3D_FILTER_FORMAT
  19883. // );
  19884. // {$EXTERNALSYM KSPROPERTY_HRTF3D}
  19885. // TKSPropertyHRTF3D = KSPROPERTY_HRTF3D;
  19886. //===========================================================================
  19887. //===========================================================================
  19888. const
  19889. KSPROPSETID_Wave_Queued : TGUID = '{16a15b10-16f0-11d0-a195-0020afd156e4}';
  19890. {$EXTERNALSYM KSPROPSETID_Wave_Queued}
  19891. KSPROPERTY_WAVE_QUEUED_POSITION = $00000001;
  19892. {$EXTERNALSYM KSPROPERTY_WAVE_QUEUED_POSITION}
  19893. KSMETHODSETID_Wave_Queued : TGUID = '{7432c160-8827-11cf-a102-0020afd156e4}';
  19894. {$EXTERNALSYM KSMETHODSETID_Wave_Queued}
  19895. KSMETHOD_WAVE_QUEUED_BREAKLOOP = $00000001;
  19896. {$EXTERNALSYM KSMETHOD_WAVE_QUEUED_BREAKLOOP}
  19897. KSPROPSETID_Wave : TGUID = '{924e54b0-630f-11cf-ada7-08003e30494a}';
  19898. {$EXTERNALSYM KSPROPSETID_Wave}
  19899. type
  19900. KSPROPERTY_WAVE = (
  19901. KSPROPERTY_WAVE_COMPATIBLE_CAPABILITIES,
  19902. KSPROPERTY_WAVE_INPUT_CAPABILITIES,
  19903. KSPROPERTY_WAVE_OUTPUT_CAPABILITIES,
  19904. KSPROPERTY_WAVE_BUFFER,
  19905. KSPROPERTY_WAVE_FREQUENCY,
  19906. KSPROPERTY_WAVE_VOLUME,
  19907. KSPROPERTY_WAVE_PAN
  19908. );
  19909. {$EXTERNALSYM KSPROPERTY_WAVE}
  19910. TKSPropertyWave = KSPROPERTY_WAVE;
  19911. PKSWaveCompatCaps = ^TKSWaveCompatCaps;
  19912. KSWAVE_COMPATCAPS = record
  19913. ulDeviceType : ULONG;
  19914. end;
  19915. {$EXTERNALSYM KSWAVE_COMPATCAPS}
  19916. PKSWAVE_COMPATCAPS = ^KSWAVE_COMPATCAPS;
  19917. {$EXTERNALSYM PKSWAVE_COMPATCAPS}
  19918. TKSWaveCompatCaps = KSWAVE_COMPATCAPS;
  19919. const
  19920. KSWAVE_COMPATCAPS_INPUT = $00000000;
  19921. {$EXTERNALSYM KSWAVE_COMPATCAPS_INPUT}
  19922. KSWAVE_COMPATCAPS_OUTPUT = $00000001;
  19923. {$EXTERNALSYM KSWAVE_COMPATCAPS_OUTPUT}
  19924. type
  19925. PKSWaveInputCapabilities = ^TKSWaveInputCapabilities;
  19926. KSWAVE_INPUT_CAPABILITIES = record
  19927. MaximumChannelsPerConnection : ULONG;
  19928. MinimumBitsPerSample : ULONG;
  19929. MaximumBitsPerSample : ULONG;
  19930. MinimumSampleFrequency : ULONG;
  19931. MaximumSampleFrequency : ULONG;
  19932. TotalConnections : ULONG;
  19933. ActiveConnections : ULONG;
  19934. end;
  19935. {$EXTERNALSYM KSWAVE_INPUT_CAPABILITIES}
  19936. PKSWAVE_INPUT_CAPABILITIES = ^KSWAVE_INPUT_CAPABILITIES;
  19937. {$EXTERNALSYM PKSWAVE_INPUT_CAPABILITIES}
  19938. TKSWaveInputCapabilities = KSWAVE_INPUT_CAPABILITIES;
  19939. PKSWaveOutputCapabilities = ^TKSWaveOutputCapabilities;
  19940. KSWAVE_OUTPUT_CAPABILITIES = record
  19941. MaximumChannelsPerConnection : ULONG;
  19942. MinimumBitsPerSample : ULONG;
  19943. MaximumBitsPerSample : ULONG;
  19944. MinimumSampleFrequency : ULONG;
  19945. MaximumSampleFrequency : ULONG;
  19946. TotalConnections : ULONG;
  19947. StaticConnections : ULONG;
  19948. StreamingConnections : ULONG;
  19949. ActiveConnections : ULONG;
  19950. ActiveStaticConnections : ULONG;
  19951. ActiveStreamingConnections : ULONG;
  19952. Total3DConnections : ULONG;
  19953. Static3DConnections : ULONG;
  19954. Streaming3DConnections : ULONG;
  19955. Active3DConnections : ULONG;
  19956. ActiveStatic3DConnections : ULONG;
  19957. ActiveStreaming3DConnections : ULONG;
  19958. TotalSampleMemory : ULONG;
  19959. FreeSampleMemory : ULONG;
  19960. LargestFreeContiguousSampleMemory : ULONG;
  19961. end;
  19962. {$EXTERNALSYM KSWAVE_OUTPUT_CAPABILITIES}
  19963. PKSWAVE_OUTPUT_CAPABILITIES = ^KSWAVE_OUTPUT_CAPABILITIES;
  19964. {$EXTERNALSYM PKSWAVE_OUTPUT_CAPABILITIES}
  19965. TKSWaveOutputCapabilities = KSWAVE_OUTPUT_CAPABILITIES;
  19966. PKSWaveVolume = ^TKSWaveVolume;
  19967. KSWAVE_VOLUME = record
  19968. LeftAttenuation : longint;
  19969. RightAttenuation : longint;
  19970. end;
  19971. {$EXTERNALSYM KSWAVE_VOLUME}
  19972. PKSWAVE_VOLUME = ^KSWAVE_VOLUME;
  19973. {$EXTERNALSYM PKSWAVE_VOLUME}
  19974. TKSWaveVolume = KSWAVE_VOLUME;
  19975. const
  19976. KSWAVE_BUFFER_ATTRIBUTEF_LOOPING = $00000001;
  19977. {$EXTERNALSYM KSWAVE_BUFFER_ATTRIBUTEF_LOOPING}
  19978. KSWAVE_BUFFER_ATTRIBUTEF_STATIC = $00000002;
  19979. {$EXTERNALSYM KSWAVE_BUFFER_ATTRIBUTEF_STATIC}
  19980. type
  19981. PKSWaveBuffer = ^TKSWaveBuffer;
  19982. KSWAVE_BUFFER = record
  19983. Attributes : ULONG;
  19984. BufferSize : ULONG;
  19985. BufferAddress : Pointer;
  19986. end;
  19987. {$EXTERNALSYM KSWAVE_BUFFER}
  19988. PKSWAVE_BUFFER = ^KSWAVE_BUFFER;
  19989. {$EXTERNALSYM PKSWAVE_BUFFER}
  19990. TKSWaveBuffer = KSWAVE_BUFFER;
  19991. //===========================================================================
  19992. //===========================================================================
  19993. const
  19994. KSMUSIC_TECHNOLOGY_PORT : TGUID = '{86C92E60-62E8-11CF-A5D6-28DB04C10000}';
  19995. {$EXTERNALSYM KSMUSIC_TECHNOLOGY_PORT}
  19996. KSMUSIC_TECHNOLOGY_SQSYNTH : TGUID = '{0ECF4380-62E9-11CF-A5D6-28DB04C10000}';
  19997. {$EXTERNALSYM KSMUSIC_TECHNOLOGY_SQSYNTH}
  19998. KSMUSIC_TECHNOLOGY_FMSYNTH : TGUID = '{252C5C80-62E9-11CF-A5D6-28DB04C10000}';
  19999. {$EXTERNALSYM KSMUSIC_TECHNOLOGY_FMSYNTH}
  20000. KSMUSIC_TECHNOLOGY_WAVETABLE : TGUID = '{394EC7C0-62E9-11CF-A5D6-28DB04C10000}';
  20001. {$EXTERNALSYM KSMUSIC_TECHNOLOGY_WAVETABLE}
  20002. KSMUSIC_TECHNOLOGY_SWSYNTH : TGUID = '{37407736-3620-11D1-85D3-0000F8754380}';
  20003. {$EXTERNALSYM KSMUSIC_TECHNOLOGY_SWSYNTH}
  20004. KSPROPSETID_WaveTable : TGUID = '{8539E660-62E9-11CF-A5D6-28DB04C10000}';
  20005. {$EXTERNALSYM KSPROPSETID_WaveTable}
  20006. type
  20007. KSPROPERTY_WAVETABLE = (
  20008. KSPROPERTY_WAVETABLE_LOAD_SAMPLE,
  20009. KSPROPERTY_WAVETABLE_UNLOAD_SAMPLE,
  20010. KSPROPERTY_WAVETABLE_MEMORY,
  20011. KSPROPERTY_WAVETABLE_VERSION
  20012. );
  20013. {$EXTERNALSYM KSPROPERTY_WAVETABLE}
  20014. TKSPropertyWaveTable = KSPROPERTY_WAVETABLE;
  20015. PKSDataRangeMusic = ^TKSDataRangeMusic;
  20016. KSDATARANGE_MUSIC = record
  20017. DataRange : TKSDataRange;
  20018. Technology : TGUID;
  20019. Channels : ULONG;
  20020. Notes : ULONG;
  20021. ChannelMask : ULONG;
  20022. end;
  20023. {$EXTERNALSYM KSDATARANGE_MUSIC}
  20024. PKSDATARANGE_MUSIC = ^KSDATARANGE_MUSIC;
  20025. {$EXTERNALSYM PKSDATARANGE_MUSIC}
  20026. TKSDataRangeMusic = KSDATARANGE_MUSIC;
  20027. //===========================================================================
  20028. const
  20029. KSEVENTSETID_Cyclic : TGUID = '{142C1AC0-072A-11D0-A5D6-28DB04C10000}';
  20030. {$EXTERNALSYM KSEVENTSETID_Cyclic}
  20031. type
  20032. KSEVENT_CYCLIC_TIME = (
  20033. KSEVENT_CYCLIC_TIME_INTERVAL
  20034. );
  20035. {$EXTERNALSYM KSEVENT_CYCLIC_TIME}
  20036. TKSEventCyclicTime = KSEVENT_CYCLIC_TIME;
  20037. const
  20038. KSPROPSETID_Cyclic: TGUID = '{3FFEAEA0-2BEE-11CF-A5D6-28DB04C10000}';
  20039. {$EXTERNALSYM KSPROPSETID_Cyclic}
  20040. type
  20041. KSPROPERTY_CYCLIC = (
  20042. KSPROPERTY_CYCLIC_POSITION
  20043. );
  20044. {$EXTERNALSYM KSPROPERTY_CYCLIC}
  20045. TKSPropertyCyclic = KSPROPERTY_CYCLIC;
  20046. //===========================================================================
  20047. const
  20048. KSEVENTSETID_AudioControlChange: TGUID = '{E85E9698-FA2F-11D1-95BD-00C04FB925D3}';
  20049. {$EXTERNALSYM KSEVENTSETID_AudioControlChange}
  20050. type
  20051. KSEVENT_AUDIO_CONTROL_CHANGE = (
  20052. KSEVENT_CONTROL_CHANGE
  20053. );
  20054. {$EXTERNALSYM KSEVENT_AUDIO_CONTROL_CHANGE}
  20055. TKSEventAudioControlChange = KSEVENT_AUDIO_CONTROL_CHANGE;
  20056. //===========================================================================
  20057. const
  20058. KSEVENTSETID_LoopedStreaming : TGUID = '{4682B940-C6EF-11D0-96D8-00AA0051E51D}';
  20059. {$EXTERNALSYM KSEVENTSETID_LoopedStreaming}
  20060. type
  20061. KSEVENT_LOOPEDSTREAMING = (
  20062. KSEVENT_LOOPEDSTREAMING_POSITION
  20063. );
  20064. {$EXTERNALSYM KSEVENT_LOOPEDSTREAMING}
  20065. TKSEventLoopedStreaming = KSEVENT_LOOPEDSTREAMING;
  20066. PLoopedStreamingPositionEventData = ^TLoopedStreamingPositionEventData;
  20067. LOOPEDSTREAMING_POSITION_EVENT_DATA = record
  20068. KsEventData : TKSEVENTDATA;
  20069. Position : int64;
  20070. end;
  20071. {$EXTERNALSYM LOOPEDSTREAMING_POSITION_EVENT_DATA}
  20072. PLOOPEDSTREAMING_POSITION_EVENT_DATA = ^LOOPEDSTREAMING_POSITION_EVENT_DATA;
  20073. {$EXTERNALSYM PLOOPEDSTREAMING_POSITION_EVENT_DATA}
  20074. TLoopedStreamingPositionEventData = LOOPEDSTREAMING_POSITION_EVENT_DATA;
  20075. const
  20076. KSEVENTSETID_Sysaudio : TGUID = '{04800320-4491-11D1-A050-405705C10000}';
  20077. {$EXTERNALSYM KSEVENTSETID_Sysaudio}
  20078. type
  20079. KSEVENT_SYSAUDIO = (
  20080. KSEVENT_SYSAUDIO_ADDREMOVE_DEVICE,
  20081. KSEVENT_SYSAUDIO_CHANGE_DEVICE
  20082. );
  20083. {$EXTERNALSYM KSEVENT_SYSAUDIO}
  20084. TKSEventSysAudio = KSEVENT_SYSAUDIO;
  20085. const
  20086. KSPROPSETID_Sysaudio : TGUID = '{CBE3FAA0-CC75-11D0-B465-00001A1818E6}';
  20087. {$EXTERNALSYM KSPROPSETID_Sysaudio}
  20088. type
  20089. KSPROPERTY_SYSAUDIO = (
  20090. KSPROPERTY_SYSAUDIO_DEVICE_Invalid,
  20091. KSPROPERTY_SYSAUDIO_DEVICE_COUNT,
  20092. KSPROPERTY_SYSAUDIO_DEVICE_FRIENDLY_NAME,
  20093. KSPROPERTY_SYSAUDIO_DEVICE_INSTANCE,
  20094. KSPROPERTY_SYSAUDIO_DEVICE_INTERFACE_NAME,
  20095. KSPROPERTY_SYSAUDIO_SELECT_GRAPH,
  20096. KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE,
  20097. KSPROPERTY_SYSAUDIO_DEVICE_DEFAULT,
  20098. KSPROPERTY_SYSAUDIO_ALWAYS_CREATE_VIRTUAL_SOURCE,
  20099. KSPROPERTY_SYSAUDIO_ADDREMOVE_LOCK,
  20100. KSPROPERTY_SYSAUDIO_ADDREMOVE_UNLOCK,
  20101. KSPROPERTY_SYSAUDIO_RENDER_PIN_INSTANCES,
  20102. KSPROPERTY_SYSAUDIO_RENDER_CONNECTION_INDEX,
  20103. KSPROPERTY_SYSAUDIO_CREATE_VIRTUAL_SOURCE_ONLY,
  20104. KSPROPERTY_SYSAUDIO_INSTANCE_INFO,
  20105. KSPROPERTY_SYSAUDIO_PREFERRED_DEVICE,
  20106. KSPROPERTY_SYSAUDIO_COMPONENT_ID,
  20107. KSPROPERTY_SYSAUDIO_ADDREMOVE_GFX
  20108. );
  20109. {$EXTERNALSYM KSPROPERTY_SYSAUDIO}
  20110. TKSPropertySysAudio = KSPROPERTY_SYSAUDIO;
  20111. PSysAudioCreateVirtualSource = ^TSysAudioCreateVirtualSource;
  20112. SYSAUDIO_CREATE_VIRTUAL_SOURCE = record
  20113. Property_ : KSPROPERTY;
  20114. PinCategory : TGUID;
  20115. PinName : TGUID;
  20116. end;
  20117. {$EXTERNALSYM SYSAUDIO_CREATE_VIRTUAL_SOURCE}
  20118. PSYSAUDIO_CREATE_VIRTUAL_SOURCE = ^SYSAUDIO_CREATE_VIRTUAL_SOURCE;
  20119. {$EXTERNALSYM PSYSAUDIO_CREATE_VIRTUAL_SOURCE}
  20120. TSysAudioCreateVirtualSource = SYSAUDIO_CREATE_VIRTUAL_SOURCE;
  20121. PSysAudioSelectGraph = ^TSysAudioSelectGraph;
  20122. SYSAUDIO_SELECT_GRAPH = record
  20123. Property_ : KSPROPERTY;
  20124. PinId : ULONG;
  20125. NodeId : ULONG;
  20126. Flags : ULONG;
  20127. Reserved : ULONG;
  20128. end;
  20129. {$EXTERNALSYM SYSAUDIO_SELECT_GRAPH}
  20130. PSYSAUDIO_SELECT_GRAPH = ^SYSAUDIO_SELECT_GRAPH;
  20131. {$EXTERNALSYM PSYSAUDIO_SELECT_GRAPH}
  20132. TSysAudioSelectGraph = SYSAUDIO_SELECT_GRAPH;
  20133. PSysAudioInstanceInfo = ^TSysAudioInstanceInfo;
  20134. SYSAUDIO_INSTANCE_INFO = record
  20135. Property_ : KSPROPERTY;
  20136. Flags : ULONG;
  20137. DeviceNumber : ULONG;
  20138. end;
  20139. {$EXTERNALSYM SYSAUDIO_INSTANCE_INFO}
  20140. PSYSAUDIO_INSTANCE_INFO = ^SYSAUDIO_INSTANCE_INFO;
  20141. {$EXTERNALSYM PSYSAUDIO_INSTANCE_INFO}
  20142. TSysAudioInstanceInfo = SYSAUDIO_INSTANCE_INFO;
  20143. const
  20144. SYSAUDIO_FLAGS_DONT_COMBINE_PINS = $00000001;
  20145. {$EXTERNALSYM SYSAUDIO_FLAGS_DONT_COMBINE_PINS}
  20146. type
  20147. SYSAUDIO_PREFERRED_DEVICE = record
  20148. Property_ : KSPROPERTY;
  20149. Flags : ULONG;
  20150. Index : ULONG; // KSPROPERTY_SYSAUDIO_DEFAULT_TYPE
  20151. end;
  20152. {$EXTERNALSYM SYSAUDIO_PREFERRED_DEVICE}
  20153. PSYSAUDIO_PREFERRED_DEVICE = ^SYSAUDIO_PREFERRED_DEVICE;
  20154. {$EXTERNALSYM PSYSAUDIO_PREFERRED_DEVICE}
  20155. TSysAudioPreferredDevice = SYSAUDIO_PREFERRED_DEVICE;
  20156. const
  20157. SYSAUDIO_FLAGS_CLEAR_PREFERRED = $00000002;
  20158. {$EXTERNALSYM SYSAUDIO_FLAGS_CLEAR_PREFERRED}
  20159. type
  20160. KSPROPERTY_SYSAUDIO_DEFAULT_TYPE = ( // preferred device index
  20161. KSPROPERTY_SYSAUDIO_NORMAL_DEFAULT,
  20162. KSPROPERTY_SYSAUDIO_PLAYBACK_DEFAULT,
  20163. KSPROPERTY_SYSAUDIO_RECORD_DEFAULT,
  20164. KSPROPERTY_SYSAUDIO_MIDI_DEFAULT,
  20165. KSPROPERTY_SYSAUDIO_MIXER_DEFAULT
  20166. );
  20167. {$EXTERNALSYM KSPROPERTY_SYSAUDIO_DEFAULT_TYPE}
  20168. TKSPropertySysAudioDefaultType = KSPROPERTY_SYSAUDIO_DEFAULT_TYPE;
  20169. const
  20170. KSPROPSETID_Sysaudio_Pin : TGUID = '{A3A53220-C6E4-11D0-B465-00001A1818E6}';
  20171. {$EXTERNALSYM KSPROPSETID_Sysaudio_Pin}
  20172. type
  20173. KSPROPERTY_SYSAUDIO_PIN = (
  20174. KSPROPERTY_SYSAUDIO_TOPOLOGY_CONNECTION_INDEX,
  20175. KSPROPERTY_SYSAUDIO_ATTACH_VIRTUAL_SOURCE,
  20176. KSPROPERTY_SYSAUDIO_PIN_VOLUME_NODE
  20177. );
  20178. {$EXTERNALSYM KSPROPERTY_SYSAUDIO_PIN}
  20179. TKSPropertySysAudioPin = KSPROPERTY_SYSAUDIO_PIN;
  20180. PSysAudioAttachVirtualSource = ^TSysAudioAttachVirtualSource;
  20181. SYSAUDIO_ATTACH_VIRTUAL_SOURCE = record
  20182. Property_ : KSPROPERTY;
  20183. MixerPinId : ULONG;
  20184. Reserved : ULONG;
  20185. end;
  20186. {$EXTERNALSYM SYSAUDIO_ATTACH_VIRTUAL_SOURCE}
  20187. PSYSAUDIO_ATTACH_VIRTUAL_SOURCE = ^SYSAUDIO_ATTACH_VIRTUAL_SOURCE;
  20188. {$EXTERNALSYM PSYSAUDIO_ATTACH_VIRTUAL_SOURCE}
  20189. TSysAudioAttachVirtualSource = SYSAUDIO_ATTACH_VIRTUAL_SOURCE;
  20190. KSNODEPROPERTY = record
  20191. Property_ : KSPROPERTY;
  20192. NodeId : ULONG;
  20193. Reserved : ULONG;
  20194. end;
  20195. {$EXTERNALSYM KSNODEPROPERTY}
  20196. PKSNODEPROPERTY = ^KSNODEPROPERTY;
  20197. {$EXTERNALSYM PKSNODEPROPERTY}
  20198. TKSNodeProperty = KSNODEPROPERTY;
  20199. PKSNodePropertyAudioChannel = ^TKSNodePropertyAudioChannel;
  20200. KSNODEPROPERTY_AUDIO_CHANNEL = record
  20201. NodeProperty : TKSNODEPROPERTY;
  20202. Channel : Longint; // value to get or set
  20203. Reserved : ULONG;
  20204. end;
  20205. {$EXTERNALSYM KSNODEPROPERTY_AUDIO_CHANNEL}
  20206. PKSNODEPROPERTY_AUDIO_CHANNEL = ^KSNODEPROPERTY_AUDIO_CHANNEL;
  20207. {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_CHANNEL}
  20208. TKSNodePropertyAudioChannel = KSNODEPROPERTY_AUDIO_CHANNEL;
  20209. PKSNodePropertyAudioDevSpecific = ^TKSNodePropertyAudioDevSpecific;
  20210. KSNODEPROPERTY_AUDIO_DEV_SPECIFIC = record
  20211. NodeProperty :TKSNODEPROPERTY;
  20212. DevSpecificId :ULONG;
  20213. DeviceInfo :ULONG;
  20214. Length :ULONG;
  20215. end;
  20216. {$EXTERNALSYM KSNODEPROPERTY_AUDIO_DEV_SPECIFIC}
  20217. PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC = ^KSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
  20218. {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_DEV_SPECIFIC}
  20219. TKSNodePropertyAudioDevSpecific = KSNODEPROPERTY_AUDIO_DEV_SPECIFIC;
  20220. PKSNodePropertyAudio3DListenerp = ^TKSNodePropertyAudio3DListener;
  20221. KSNODEPROPERTY_AUDIO_3D_LISTENER = record
  20222. NodeProperty : TKSNODEPROPERTY;
  20223. ListenerId : pointer;
  20224. Reserved : ULONG;
  20225. end;
  20226. {$EXTERNALSYM KSNODEPROPERTY_AUDIO_3D_LISTENER}
  20227. PKSNODEPROPERTY_AUDIO_3D_LISTENER = ^KSNODEPROPERTY_AUDIO_3D_LISTENER;
  20228. {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_3D_LISTENER}
  20229. TKSNodePropertyAudio3DListener = KSNODEPROPERTY_AUDIO_3D_LISTENER;
  20230. PKSNodePropertyAudioProperty = ^TKSNodePropertyAudioProperty;
  20231. KSNODEPROPERTY_AUDIO_PROPERTY = record
  20232. NodeProperty : TKSNODEPROPERTY;
  20233. AppContext : Pointer;
  20234. Length : ULONG;
  20235. Reserved : ULONG;
  20236. end;
  20237. {$EXTERNALSYM KSNODEPROPERTY_AUDIO_PROPERTY}
  20238. PKSNODEPROPERTY_AUDIO_PROPERTY = ^KSNODEPROPERTY_AUDIO_PROPERTY;
  20239. {$EXTERNALSYM PKSNODEPROPERTY_AUDIO_PROPERTY}
  20240. TKSNodePropertyAudioProperty = KSNODEPROPERTY_AUDIO_PROPERTY;
  20241. //===========================================================================
  20242. const
  20243. KSPROPSETID_Linear : TGUID = '{5A2FFE80-16B9-11D0-A5D6-28DB04C10000}';
  20244. {$EXTERNALSYM KSPROPSETID_Linear}
  20245. type
  20246. KSPROPERTY_LINEAR = (
  20247. KSPROPERTY_LINEAR_POSITION
  20248. );
  20249. {$EXTERNALSYM KSPROPERTY_LINEAR}
  20250. TKSPropertyLinear = KSPROPERTY_LINEAR;
  20251. //===========================================================================
  20252. //
  20253. // Midi definitions
  20254. //
  20255. //
  20256. // Formats
  20257. //
  20258. const
  20259. KSDATAFORMAT_TYPE_MUSIC : TGUID = '{E725D360-62CC-11CF-A5D6-28DB04C10000}';
  20260. {$EXTERNALSYM KSDATAFORMAT_TYPE_MUSIC}
  20261. // 'mids' == MEDIATYPE_Midi
  20262. KSDATAFORMAT_TYPE_MIDI : TGUID = '{7364696D-0000-0010-8000-00aa00389b71}';
  20263. {$EXTERNALSYM KSDATAFORMAT_TYPE_MIDI}
  20264. KSDATAFORMAT_SUBTYPE_MIDI : TGUID = '{1D262760-E957-11CF-A5D6-28DB04C10000}';
  20265. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MIDI}
  20266. KSDATAFORMAT_SUBTYPE_MIDI_BUS : TGUID = '{2CA15FA0-6CFE-11CF-A5D6-28DB04C10000}';
  20267. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MIDI_BUS}
  20268. KSDATAFORMAT_SUBTYPE_RIFFMIDI : TGUID = '{4995DAF0-9EE6-11D0-A40E-00A0C9223196}';
  20269. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RIFFMIDI}
  20270. //
  20271. // KSDATAFORMAT_SUBTYPE_DIRECTMUSIC
  20272. // see DMusicKS.h
  20273. //
  20274. // WARNING! This structure MUST be dword aligned
  20275. // regardless of the number of data bytes.
  20276. type
  20277. KSMUSICFORMAT = record
  20278. TimeDeltaMs : ULONG ; // Delta Milliseconds from the previous midiformat
  20279. // in the packet. The first midiformat in the packet
  20280. // is a delta from the PTS in the KSSTREAM_HEADER.
  20281. ByteCount : ULONG ; // Number of bytes of data that follow this struct.
  20282. end;
  20283. {$EXTERNALSYM KSMUSICFORMAT}
  20284. PKSMUSICFORMAT = ^KSMUSICFORMAT;
  20285. {$EXTERNALSYM PKSMUSICFORMAT}
  20286. TKSMusicFormat = KSMUSICFORMAT;
  20287. //
  20288. // This entire set of MPEG Standard/Dialect Guids are obsolete. Do not use them.
  20289. //
  20290. //====================================================================================================
  20291. //====================================================================================================
  20292. // The following official MPEG Formats, Subtypes and Specifiers are listed as required or optional
  20293. // These official MPEG GUIDs are the preferred method of supporting MPEG/AC-3 media types in new code.
  20294. // Older MPEG GUIDs should also be supported for compatibilty, but these new modes are still required.
  20295. //====================================================================================================
  20296. //====================================================================================================
  20297. {
  20298. This is a summary of what media types/specifiers will be required for all DVD+DSS+DVB+DTV MPEG decoders.
  20299. These media types are what the decoder driver must accept, hardware support for all of these media types
  20300. may or may not actually be provided by the decoder natively. These media types are intended to define
  20301. the "officially" supported MPEG/AC-3 media types that all WHQL certified decoders must implement. This
  20302. specifically includes driver and/or hardware support for all the required standards and dialects.
  20303. All MPEG video decoders must support all of the MPEG video modes shown as [required] below.
  20304. All MPEG audio decoders must support all of the MPEG audio modes shown as [required] below.
  20305. All AC-3 audio decoders must support all of the AC-3 audio modes shown as [required] below.
  20306. The line items shown as [optional] need not be implemented, but are possible formats that might be implemented.
  20307. Note that the input/output pin formats are defined by 2 or 3 GUIDs: TYPE, SUBTYPE, and maybe SPECIFIER.
  20308. The specifiers are included if the data format is a "dialect" that needs to be differentiated during decoding.
  20309. The decoder MUST be prepared to deal with ALL requests for _required_ "Standard" formats OR _required_ "Dialects".
  20310. STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM [required]
  20311. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO [required]
  20312. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO [optional]
  20313. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO [required]
  20314. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO [optional]
  20315. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required]
  20316. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required]
  20317. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required]
  20318. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [optional]
  20319. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required]
  20320. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional]
  20321. STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET [required]
  20322. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO [optional]
  20323. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO [optional]
  20324. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO [optional]
  20325. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO [optional]
  20326. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required]
  20327. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required]
  20328. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required]
  20329. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [required]
  20330. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required]
  20331. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional]
  20332. STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER [required]
  20333. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO [required]
  20334. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO [required]
  20335. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO [required]
  20336. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO [optional]
  20337. STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO [required]
  20338. STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO [optional]
  20339. Note that the SPECIFIER GUIDs normally identify particular versions of MPEG such as DSS and DVD.
  20340. This approach was taken to minimize the number of DSS/DVB/DVD/DTV etc. media SUBTYPES.
  20341. These specifiers are currently required to disambiguate MPEG syntax _parsing_ by the decoder
  20342. using alternate parsing routines or downloadable firmware or hardware decode settings.
  20343. In the future these specifiers will be extended to cover new KS MPEG flavors such as DVB and DTV.
  20344. Thus, the optional specifiers will be subject to clarification and/or definition as they are needed.
  20345. Important note: Per the ITU MPEG specs, MPEG 2 media may contain pure MPEG 1 syntax and
  20346. any "MPEG 2" PES packets may actually contain MPEG 1 payloads and MPEG 1 syntax. Some MPEG
  20347. broadcasts can revert from MPEG2 to MPEG1 format data at their discretion, without warning.
  20348. CAUTION: Decoders MUST attempt to process MPEG data AS SOON AS POSSIBLE after reception.
  20349. In particular, elementary MPEG or MPEG PES packet streams should not be aggregated into DVD
  20350. "pack headers" internally before submission to the codec hardware if AT ALL POSSIBLE. The
  20351. reason is that mpeg data may need to be processed immediately but there may be no additional
  20352. MPEG data forthcoming to fill up the PES packet OR DVD "pack" in a timely fashion. This is
  20353. particularly true of MPEG dialects that utilize "repeat field signally" to reuse the last
  20354. decoded MPEG video field.
  20355. }
  20356. /////////////////////////////////////////////////////////////////////////
  20357. // The major data type GUIDs that define the data packet encapsulation //
  20358. /////////////////////////////////////////////////////////////////////////
  20359. const
  20360. // STATIC_KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM
  20361. KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM : TGUID = '{36523B11-8EE5-11d1-8CA3-0060B057664A}';
  20362. {$EXTERNALSYM KSDATAFORMAT_TYPE_STANDARD_ELEMENTARY_STREAM}
  20363. // STATIC_KSDATAFORMAT_TYPE_STANDARD_PES_PACKET
  20364. KSDATAFORMAT_TYPE_STANDARD_PES_PACKET : TGUID = '{36523B12-8EE5-11d1-8CA3-0060B057664A}';
  20365. {$EXTERNALSYM KSDATAFORMAT_TYPE_STANDARD_PES_PACKET}
  20366. // STATIC_KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER
  20367. KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER : TGUID = '{36523B13-8EE5-11d1-8CA3-0060B057664A}';
  20368. {$EXTERNALSYM KSDATAFORMAT_TYPE_STANDARD_PACK_HEADER}
  20369. ///////////////////////////////////////////////////////////////////////////////
  20370. // The minor data subtype GUIDs that define the exact class of the data type.//
  20371. ///////////////////////////////////////////////////////////////////////////////
  20372. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO
  20373. KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO : TGUID = '{36523B21-8EE5-11d1-8CA3-0060B057664A}';
  20374. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_VIDEO}
  20375. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO
  20376. KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO : TGUID = '{36523B22-8EE5-11d1-8CA3-0060B057664A}';
  20377. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG1_AUDIO}
  20378. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO
  20379. KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO : TGUID = '{36523B23-8EE5-11d1-8CA3-0060B057664A}';
  20380. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_VIDEO}
  20381. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO
  20382. KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO : TGUID = '{36523B24-8EE5-11d1-8CA3-0060B057664A}';
  20383. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_MPEG2_AUDIO}
  20384. // STATIC_KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO
  20385. KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO : TGUID = '{36523B25-8EE5-11d1-8CA3-0060B057664A}';
  20386. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_STANDARD_AC3_AUDIO}
  20387. ///////////////////////////////////////////////////////////////////////////////
  20388. // The low-level specifier GUIDs that define the flavor of the data subtype. //
  20389. // Some SUBTYPES, notably MPEG2_VIDEO, MPEG2_AUDIO have different dialects. //
  20390. // These specifiers are intended to be accompanied by a specifier structure. //
  20391. ///////////////////////////////////////////////////////////////////////////////
  20392. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO
  20393. KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO : TGUID = '{36523B31-8EE5-11d1-8CA3-0060B057664A}';
  20394. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_VIDEO}
  20395. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO
  20396. KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO : TGUID = '{36523B32-8EE5-11d1-8CA3-0060B057664A}';
  20397. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG1_AUDIO}
  20398. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO Associated with KS_MPEGVIDEOINFO2 defined later
  20399. KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO : TGUID = '{36523B33-8EE5-11d1-8CA3-0060B057664A}';
  20400. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_VIDEO}
  20401. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO Associated with KS_MPEGAUDIOINFO defined later
  20402. KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO : TGUID = '{36523B34-8EE5-11d1-8CA3-0060B057664A}';
  20403. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_MPEG2_AUDIO}
  20404. // STATIC_KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO
  20405. KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO : TGUID = '{36523B35-8EE5-11d1-8CA3-0060B057664A}';
  20406. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_DIALECT_AC3_AUDIO}
  20407. //====================================================================================================
  20408. //====================================================================================================
  20409. // *** COMPATIBILITY WARNING ***
  20410. // The *following* older DSS, MPEG, DVD & AC-3 GUID definitions are retained for backward compability.
  20411. // These MPEG GUIDs should also be supported for compatibilty, but the above newer modes are still required.
  20412. //====================================================================================================
  20413. //====================================================================================================
  20414. //
  20415. // DSS definitions
  20416. //
  20417. KSDATAFORMAT_SUBTYPE_DSS_VIDEO : TGUID = '{a0af4f81-e163-11d0-bad9-00609744111a}';
  20418. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DSS_VIDEO}
  20419. KSDATAFORMAT_SUBTYPE_DSS_AUDIO : TGUID = '{a0af4f82-e163-11d0-bad9-00609744111a}';
  20420. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DSS_AUDIO}
  20421. //
  20422. // End of obsolete MPEG definitions.
  20423. //
  20424. //
  20425. // mpeg 1 definitions
  20426. //
  20427. KSDATAFORMAT_SUBTYPE_MPEG1Packet : TGUID = '{e436eb80-524f-11ce-9F53-0020af0ba770}';
  20428. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG1Packet}
  20429. KSDATAFORMAT_SUBTYPE_MPEG1Payload : TGUID = '{e436eb81-524f-11ce-9F53-0020af0ba770}';
  20430. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG1Payload}
  20431. // MEDIASUBTYPE_MPEG1Video
  20432. KSDATAFORMAT_SUBTYPE_MPEG1Video : TGUID = '{e436eb86-524f-11ce-9f53-0020af0ba770}';
  20433. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG1Video}
  20434. //FORMAT_MPEGVideo
  20435. KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO : TGUID = '{05589f82-c356-11ce-bf01-00aa0055595a}';
  20436. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_MPEG1_VIDEO}
  20437. //
  20438. // mpeg 2 definitions
  20439. //
  20440. KSDATAFORMAT_TYPE_MPEG2_PES : TGUID = '{e06d8020-db46-11cf-b4d1-00805f6cbbea}';
  20441. {$EXTERNALSYM KSDATAFORMAT_TYPE_MPEG2_PES}
  20442. KSDATAFORMAT_TYPE_MPEG2_PROGRAM : TGUID = '{e06d8022-db46-11cf-b4d1-00805f6cbbea}';
  20443. {$EXTERNALSYM KSDATAFORMAT_TYPE_MPEG2_PROGRAM}
  20444. KSDATAFORMAT_TYPE_MPEG2_TRANSPORT : TGUID = '{e06d8023-db46-11cf-b4d1-00805f6cbbea}';
  20445. {$EXTERNALSYM KSDATAFORMAT_TYPE_MPEG2_TRANSPORT}
  20446. KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO : TGUID = '{e06d8026-db46-11cf-b4d1-00805f6cbbea}';
  20447. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG2_VIDEO}
  20448. // use MPEGVIDEOINFO2 (defined below) with KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO
  20449. KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO : TGUID = '{e06d80e3-db46-11cf-b4d1-00805f6cbbea}';
  20450. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_MPEG2_VIDEO}
  20451. //
  20452. // Mpeg2 video properties
  20453. //
  20454. KSPROPSETID_Mpeg2Vid : TGUID = '{C8E11B60-0CC9-11D0-BD69-003505C103A9}';
  20455. {$EXTERNALSYM KSPROPSETID_Mpeg2Vid}
  20456. type
  20457. KSPROPERTY_MPEG2VID = (
  20458. KSPROPERTY_MPEG2VID_MODES, // available output modes of decoder
  20459. KSPROPERTY_MPEG2VID_CUR_MODE, // current mode of the decoder
  20460. KSPROPERTY_MPEG2VID_4_3_RECT, // output coordinates for 4:3 source
  20461. KSPROPERTY_MPEG2VID_16_9_RECT, // output coordinates for 16:9 source
  20462. KSPROPERTY_MPEG2VID_16_9_PANSCAN // pan and scan vectors
  20463. );
  20464. {$EXTERNALSYM KSPROPERTY_MPEG2VID}
  20465. TKSPropertyMPEG2Vid = KSPROPERTY_MPEG2VID;
  20466. //
  20467. // bit field definitions for MPEG2 VIDEO mode
  20468. //
  20469. const
  20470. KSMPEGVIDMODE_PANSCAN = $0001;
  20471. {$EXTERNALSYM KSMPEGVIDMODE_PANSCAN}
  20472. KSMPEGVIDMODE_LTRBOX = $0002;
  20473. {$EXTERNALSYM KSMPEGVIDMODE_LTRBOX}
  20474. KSMPEGVIDMODE_SCALE = $0004;
  20475. {$EXTERNALSYM KSMPEGVIDMODE_SCALE}
  20476. //
  20477. // rectangle definitions for the 4/3 and 16/9 cropping properties of
  20478. // the MPEG2Video decoder
  20479. //
  20480. type
  20481. PKSMPEGVidRect = ^TKSMPEGVidRect;
  20482. _KSMPEGVID_RECT = record
  20483. StartX : ULONG;
  20484. StartY : ULONG;
  20485. EndX : ULONG;
  20486. EndY : ULONG;
  20487. end;
  20488. {$EXTERNALSYM _KSMPEGVID_RECT}
  20489. KSMPEGVID_RECT = _KSMPEGVID_RECT;
  20490. {$EXTERNALSYM KSMPEGVID_RECT}
  20491. PKSMPEGVID_RECT = ^KSMPEGVID_RECT;
  20492. {$EXTERNALSYM PKSMPEGVID_RECT}
  20493. TKSMPEGVidRect = _KSMPEGVID_RECT;
  20494. //
  20495. // Params for pan / scan
  20496. //
  20497. //
  20498. // MPEG2 Audio definition
  20499. //
  20500. const
  20501. KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO : TGUID = '{e06d802b-db46-11cf-b4d1-00805f6cbbea}';
  20502. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_MPEG2_AUDIO}
  20503. KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO : TGUID = '{e06d80e5-db46-11cf-b4d1-00805f6cbbea}';
  20504. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_MPEG2_AUDIO}
  20505. //
  20506. // DVD LPCM Audio definition
  20507. //
  20508. KSDATAFORMAT_SUBTYPE_LPCM_AUDIO : TGUID = '{e06d8032-db46-11cf-b4d1-00805f6cbbea}';
  20509. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_LPCM_AUDIO}
  20510. KSDATAFORMAT_SPECIFIER_LPCM_AUDIO : TGUID = '{e06d80e6-db46-11cf-b4d1-00805f6cbbea}';
  20511. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_LPCM_AUDIO}
  20512. //
  20513. // AC-3 definition
  20514. //
  20515. KSDATAFORMAT_SUBTYPE_AC3_AUDIO : TGUID = '{e06d802c-db46-11cf-b4d1-00805f6cbbea}';
  20516. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_AC3_AUDIO}
  20517. KSDATAFORMAT_SPECIFIER_AC3_AUDIO : TGUID = '{e06d80e4-db46-11cf-b4d1-00805f6cbbea}';
  20518. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_AC3_AUDIO}
  20519. KSPROPSETID_AC3 : TGUID = '{BFABE720-6E1F-11D0-BCF2-444553540000}';
  20520. {$EXTERNALSYM KSPROPSETID_AC3}
  20521. type
  20522. KSPROPERTY_AC3 = (
  20523. KSPROPERTY_AC3_Invalid,
  20524. KSPROPERTY_AC3_ERROR_CONCEALMENT,
  20525. KSPROPERTY_AC3_ALTERNATE_AUDIO,
  20526. KSPROPERTY_AC3_DOWNMIX,
  20527. KSPROPERTY_AC3_BIT_STREAM_MODE,
  20528. KSPROPERTY_AC3_DIALOGUE_LEVEL,
  20529. KSPROPERTY_AC3_LANGUAGE_CODE,
  20530. KSPROPERTY_AC3_ROOM_TYPE
  20531. );
  20532. {$EXTERNALSYM KSPROPERTY_AC3}
  20533. TKSPropertyAC3 = KSPROPERTY_AC3;
  20534. PKSAC3ErrorConcealment = ^TKSAC3ErrorConcealment;
  20535. KSAC3_ERROR_CONCEALMENT = record
  20536. fRepeatPreviousBlock : BOOL;
  20537. fErrorInCurrentBlock : BOOL;
  20538. end;
  20539. {$EXTERNALSYM KSAC3_ERROR_CONCEALMENT}
  20540. PKSAC3_ERROR_CONCEALMENT = ^KSAC3_ERROR_CONCEALMENT;
  20541. {$EXTERNALSYM PKSAC3_ERROR_CONCEALMENT}
  20542. TKSAC3ErrorConcealment = KSAC3_ERROR_CONCEALMENT;
  20543. PKSAC3AlternateAudio = ^TKSAC3AlternateAudio;
  20544. KSAC3_ALTERNATE_AUDIO = record
  20545. fStereo : BOOL;
  20546. DualMode : ULONG;
  20547. end;
  20548. {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO}
  20549. PKSAC3_ALTERNATE_AUDIO = ^KSAC3_ALTERNATE_AUDIO;
  20550. {$EXTERNALSYM PKSAC3_ALTERNATE_AUDIO}
  20551. TKSAC3AlternateAudio = KSAC3_ALTERNATE_AUDIO;
  20552. const
  20553. KSAC3_ALTERNATE_AUDIO_1 = 1;
  20554. {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO_1}
  20555. KSAC3_ALTERNATE_AUDIO_2 = 2;
  20556. {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO_2}
  20557. KSAC3_ALTERNATE_AUDIO_BOTH = 3;
  20558. {$EXTERNALSYM KSAC3_ALTERNATE_AUDIO_BOTH}
  20559. type
  20560. PKSAC3DownMix = ^TKSAC3DownMix;
  20561. KSAC3_DOWNMIX = record
  20562. fDownMix : BOOL;
  20563. fDolbySurround : BOOL;
  20564. end;
  20565. {$EXTERNALSYM KSAC3_DOWNMIX}
  20566. PKSAC3_DOWNMIX = ^KSAC3_DOWNMIX;
  20567. {$EXTERNALSYM PKSAC3_DOWNMIX}
  20568. TKSAC3DownMix = KSAC3_DOWNMIX;
  20569. PKSAC3BitStreamMode = ^TKSAC3BitStreamMode;
  20570. KSAC3_BIT_STREAM_MODE = record
  20571. BitStreamMode : Longint;
  20572. end;
  20573. {$EXTERNALSYM KSAC3_BIT_STREAM_MODE}
  20574. PKSAC3_BIT_STREAM_MODE = ^KSAC3_BIT_STREAM_MODE;
  20575. {$EXTERNALSYM PKSAC3_BIT_STREAM_MODE}
  20576. TKSAC3BitStreamMode = KSAC3_BIT_STREAM_MODE;
  20577. const
  20578. KSAC3_SERVICE_MAIN_AUDIO = 0;
  20579. {$EXTERNALSYM KSAC3_SERVICE_MAIN_AUDIO}
  20580. KSAC3_SERVICE_NO_DIALOG = 1;
  20581. {$EXTERNALSYM KSAC3_SERVICE_NO_DIALOG}
  20582. KSAC3_SERVICE_VISUALLY_IMPAIRED = 2;
  20583. {$EXTERNALSYM KSAC3_SERVICE_VISUALLY_IMPAIRED}
  20584. KSAC3_SERVICE_HEARING_IMPAIRED = 3;
  20585. {$EXTERNALSYM KSAC3_SERVICE_HEARING_IMPAIRED}
  20586. KSAC3_SERVICE_DIALOG_ONLY = 4;
  20587. {$EXTERNALSYM KSAC3_SERVICE_DIALOG_ONLY}
  20588. KSAC3_SERVICE_COMMENTARY = 5;
  20589. {$EXTERNALSYM KSAC3_SERVICE_COMMENTARY}
  20590. KSAC3_SERVICE_EMERGENCY_FLASH = 6;
  20591. {$EXTERNALSYM KSAC3_SERVICE_EMERGENCY_FLASH}
  20592. KSAC3_SERVICE_VOICE_OVER = 7;
  20593. {$EXTERNALSYM KSAC3_SERVICE_VOICE_OVER}
  20594. type
  20595. PKSAC3DialogueLevel = ^TKSAC3DialogueLevel;
  20596. KSAC3_DIALOGUE_LEVEL = record
  20597. DialogueLevel : ULONG;
  20598. end;
  20599. {$EXTERNALSYM KSAC3_DIALOGUE_LEVEL}
  20600. PKSAC3_DIALOGUE_LEVEL = ^KSAC3_DIALOGUE_LEVEL;
  20601. {$EXTERNALSYM PKSAC3_DIALOGUE_LEVEL}
  20602. TKSAC3DialogueLevel = KSAC3_DIALOGUE_LEVEL;
  20603. PKSAC3RoomType = ^TKSAC3RoomType;
  20604. KSAC3_ROOM_TYPE = record
  20605. fLargeRoom : BOOL;
  20606. end;
  20607. {$EXTERNALSYM KSAC3_ROOM_TYPE}
  20608. PKSAC3_ROOM_TYPE = ^KSAC3_ROOM_TYPE;
  20609. {$EXTERNALSYM PKSAC3_ROOM_TYPE}
  20610. TKSAC3RoomType = KSAC3_ROOM_TYPE;
  20611. //
  20612. // DTS and SDDS definitions (media subtype GUIDs)
  20613. //
  20614. const
  20615. KSDATAFORMAT_SUBTYPE_DTS_AUDIO : TGUID = '{e06d8033-db46-11cf-b4d1-00805f6cbbea}';
  20616. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DTS_AUDIO}
  20617. KSDATAFORMAT_SUBTYPE_SDDS_AUDIO : TGUID = '{e06d8034-db46-11cf-b4d1-00805f6cbbea}';
  20618. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_SDDS_AUDIO}
  20619. //
  20620. // audio decoder output properties
  20621. //
  20622. KSPROPSETID_AudioDecoderOut : TGUID = '{6ca6e020-43bd-11d0-bd6a-003505c103a9}';
  20623. {$EXTERNALSYM KSPROPSETID_AudioDecoderOut}
  20624. type
  20625. KSPROPERTY_AUDDECOUT = (
  20626. KSPROPERTY_AUDDECOUT_MODES, // available output modes of decoder
  20627. KSPROPERTY_AUDDECOUT_CUR_MODE // current mode of the decoder
  20628. );
  20629. {$EXTERNALSYM KSPROPERTY_AUDDECOUT}
  20630. TKSPropertyAuddecout = KSPROPERTY_AUDDECOUT;
  20631. const
  20632. KSAUDDECOUTMODE_STEREO_ANALOG = $0001;
  20633. {$EXTERNALSYM KSAUDDECOUTMODE_STEREO_ANALOG}
  20634. KSAUDDECOUTMODE_PCM_51 = $0002;
  20635. {$EXTERNALSYM KSAUDDECOUTMODE_PCM_51}
  20636. KSAUDDECOUTMODE_SPDIFF = $0004;
  20637. {$EXTERNALSYM KSAUDDECOUTMODE_SPDIFF}
  20638. //
  20639. // subpicture definition
  20640. //
  20641. KSDATAFORMAT_SUBTYPE_SUBPICTURE : TGUID = '{e06d802d-db46-11cf-b4d1-00805f6cbbea}';
  20642. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_SUBPICTURE}
  20643. KSPROPSETID_DvdSubPic : TGUID = '{ac390460-43af-11d0-bd6a-003505c103a9}';
  20644. {$EXTERNALSYM KSPROPSETID_DvdSubPic}
  20645. type
  20646. KSPROPERTY_DVDSUBPIC = (
  20647. KSPROPERTY_DVDSUBPIC_PALETTE,
  20648. KSPROPERTY_DVDSUBPIC_HLI,
  20649. KSPROPERTY_DVDSUBPIC_COMPOSIT_ON // TRUE for subpicture is displayed
  20650. );
  20651. {$EXTERNALSYM KSPROPERTY_DVDSUBPIC}
  20652. TKSPropertyDVDSubPic = KSPROPERTY_DVDSUBPIC;
  20653. PKSDVDYCrCb = ^TKSDVDYCrCb;
  20654. _KS_DVD_YCrCb = record
  20655. Reserved : byte;
  20656. Y : byte;
  20657. Cr : byte;
  20658. Cb : byte;
  20659. end;
  20660. {$EXTERNALSYM _KS_DVD_YCrCb}
  20661. KS_DVD_YCrCb = _KS_DVD_YCrCb;
  20662. {$EXTERNALSYM KS_DVD_YCrCb}
  20663. PKS_DVD_YCrCb = ^KS_DVD_YCrCb;
  20664. {$EXTERNALSYM PKS_DVD_YCrCb}
  20665. TKSDVDYCrCb = _KS_DVD_YCrCb;
  20666. // The KS_DVD_YUV structure is now superseded by KS_DVD_YCrCb above and is
  20667. // here for backward compatibility only
  20668. PKSDVDYUV = ^TKSDVDYUV;
  20669. _KS_DVD_YUV = record
  20670. Reserved : byte;
  20671. Y : byte;
  20672. V : byte;
  20673. U : byte;
  20674. end;
  20675. {$EXTERNALSYM _KS_DVD_YUV}
  20676. KS_DVD_YUV = _KS_DVD_YUV;
  20677. {$EXTERNALSYM KS_DVD_YUV}
  20678. PKS_DVD_YUV = ^KS_DVD_YUV;
  20679. {$EXTERNALSYM PKS_DVD_YUV}
  20680. TKSDVDYUV = _KS_DVD_YUV;
  20681. PKSPropertySPPAL = ^TKSPropertySPPAL;
  20682. _KSPROPERTY_SPPAL = record
  20683. sppal : array[0..15] of TKSDVDYUV;
  20684. end;
  20685. {$EXTERNALSYM _KSPROPERTY_SPPAL}
  20686. KSPROPERTY_SPPAL = _KSPROPERTY_SPPAL;
  20687. {$EXTERNALSYM KSPROPERTY_SPPAL}
  20688. PKSPROPERTY_SPPAL = ^KSPROPERTY_SPPAL;
  20689. {$EXTERNALSYM PKSPROPERTY_SPPAL}
  20690. TKSPropertySPPAL = _KSPROPERTY_SPPAL;
  20691. PKSColCon = ^TKSColCon;
  20692. _KS_COLCON = record
  20693. emph1col : byte; //:4;
  20694. emph2col : byte; //:4;
  20695. backcol : byte; //:4;
  20696. patcol : byte; //:4;
  20697. emph1con : byte; //:4;
  20698. emph2con : byte; //:4;
  20699. backcon : byte; //:4;
  20700. patcon : byte; //:4;
  20701. end;
  20702. {$EXTERNALSYM _KS_COLCON}
  20703. KS_COLCON = _KS_COLCON;
  20704. {$EXTERNALSYM KS_COLCON}
  20705. PKS_COLCON = ^KS_COLCON;
  20706. {$EXTERNALSYM PKS_COLCON}
  20707. TKSColCon = _KS_COLCON;
  20708. PKSPropertySPHLI = ^TKSPropertySPHLI;
  20709. _KSPROPERTY_SPHLI = record
  20710. HLISS : WORD;
  20711. Reserved : WORD;
  20712. StartPTM : ULONG; // start presentation time in x/90000
  20713. EndPTM : ULONG; // end PTM in x/90000
  20714. StartX : WORD;
  20715. StartY : WORD;
  20716. StopX : WORD;
  20717. StopY : WORD;
  20718. ColCon : TKSColCon; // color contrast description (4 bytes as given in HLI)
  20719. end;
  20720. {$EXTERNALSYM _KSPROPERTY_SPHLI}
  20721. KSPROPERTY_SPHLI = _KSPROPERTY_SPHLI;
  20722. {$EXTERNALSYM KSPROPERTY_SPHLI}
  20723. PKSPROPERTY_SPHLI = ^KSPROPERTY_SPHLI;
  20724. {$EXTERNALSYM PKSPROPERTY_SPHLI}
  20725. TKSPropertySPHLI = _KSPROPERTY_SPHLI;
  20726. PKSPROPERTY_COMPOSIT_ON = ^KSPROPERTY_COMPOSIT_ON;
  20727. {$EXTERNALSYM PKSPROPERTY_COMPOSIT_ON}
  20728. KSPROPERTY_COMPOSIT_ON = {$IFDEF TYPE_IDENTITY}type {$ENDIF} BOOL;
  20729. {$EXTERNALSYM KSPROPERTY_COMPOSIT_ON}
  20730. const
  20731. KSPROPSETID_CopyProt : TGUID = '{0E8A0A40-6AEF-11D0-9ED0-00A024CA19B3}';
  20732. {$EXTERNALSYM KSPROPSETID_CopyProt}
  20733. type
  20734. KSPROPERTY_COPYPROT = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  20735. {$EXTERNALSYM KSPROPERTY_COPYPROT}
  20736. const
  20737. KSPROPERTY_DVDCOPY_CHLG_KEY = $01;
  20738. {$EXTERNALSYM KSPROPERTY_DVDCOPY_CHLG_KEY}
  20739. KSPROPERTY_DVDCOPY_DVD_KEY1 = $02;
  20740. {$EXTERNALSYM KSPROPERTY_DVDCOPY_DVD_KEY1}
  20741. KSPROPERTY_DVDCOPY_DEC_KEY2 = $03;
  20742. {$EXTERNALSYM KSPROPERTY_DVDCOPY_DEC_KEY2}
  20743. KSPROPERTY_DVDCOPY_TITLE_KEY = $04;
  20744. {$EXTERNALSYM KSPROPERTY_DVDCOPY_TITLE_KEY}
  20745. KSPROPERTY_COPY_MACROVISION = $05;
  20746. {$EXTERNALSYM KSPROPERTY_COPY_MACROVISION}
  20747. KSPROPERTY_DVDCOPY_REGION = $06;
  20748. {$EXTERNALSYM KSPROPERTY_DVDCOPY_REGION}
  20749. KSPROPERTY_DVDCOPY_SET_COPY_STATE = $07;
  20750. {$EXTERNALSYM KSPROPERTY_DVDCOPY_SET_COPY_STATE}
  20751. KSPROPERTY_DVDCOPY_DISC_KEY = $80;
  20752. {$EXTERNALSYM KSPROPERTY_DVDCOPY_DISC_KEY}
  20753. type
  20754. PKSDVDCopyCHLGKey = ^TKSDVDCopyCHLGKey;
  20755. _KS_DVDCOPY_CHLGKEY = record
  20756. ChlgKey : array[0..9] of BYTE;
  20757. Reserved : array[0..1] of BYTE;
  20758. end;
  20759. {$EXTERNALSYM _KS_DVDCOPY_CHLGKEY}
  20760. KS_DVDCOPY_CHLGKEY = _KS_DVDCOPY_CHLGKEY;
  20761. {$EXTERNALSYM KS_DVDCOPY_CHLGKEY}
  20762. PKS_DVDCOPY_CHLGKEY = ^KS_DVDCOPY_CHLGKEY;
  20763. {$EXTERNALSYM PKS_DVDCOPY_CHLGKEY}
  20764. TKSDVDCopyCHLGKey = _KS_DVDCOPY_CHLGKEY;
  20765. PKSDVDCopyBusKey = ^TKSDVDCopyBusKey;
  20766. _KS_DVDCOPY_BUSKEY = record
  20767. BusKey : array[0..4] of BYTE;
  20768. Reserved : array[0..0] of BYTE;
  20769. end;
  20770. {$EXTERNALSYM _KS_DVDCOPY_BUSKEY}
  20771. KS_DVDCOPY_BUSKEY = _KS_DVDCOPY_BUSKEY;
  20772. {$EXTERNALSYM KS_DVDCOPY_BUSKEY}
  20773. PKS_DVDCOPY_BUSKEY = ^KS_DVDCOPY_BUSKEY;
  20774. {$EXTERNALSYM PKS_DVDCOPY_BUSKEY}
  20775. TKSDVDCopyBusKey = _KS_DVDCOPY_BUSKEY;
  20776. PKSDVDCopyDiscKey = ^TKSDVDCopyDiscKey;
  20777. _KS_DVDCOPY_DISCKEY = record
  20778. DiscKey : array[0..2047] of BYTE;
  20779. end;
  20780. {$EXTERNALSYM _KS_DVDCOPY_DISCKEY}
  20781. KS_DVDCOPY_DISCKEY = _KS_DVDCOPY_DISCKEY;
  20782. {$EXTERNALSYM KS_DVDCOPY_DISCKEY}
  20783. PKS_DVDCOPY_DISCKEY = ^KS_DVDCOPY_DISCKEY;
  20784. {$EXTERNALSYM PKS_DVDCOPY_DISCKEY}
  20785. TKSDVDCopyDiscKey = _KS_DVDCOPY_DISCKEY;
  20786. PKSDVDCopyRegion = ^TKSDVDCopyRegion;
  20787. _KS_DVDCOPY_REGION = record
  20788. Reserved : UCHAR;
  20789. RegionData : UCHAR;
  20790. Reserved2 : array[0..1] of UCHAR;
  20791. end;
  20792. {$EXTERNALSYM _KS_DVDCOPY_REGION}
  20793. KS_DVDCOPY_REGION = _KS_DVDCOPY_REGION;
  20794. {$EXTERNALSYM KS_DVDCOPY_REGION}
  20795. PKS_DVDCOPY_REGION = ^KS_DVDCOPY_REGION;
  20796. {$EXTERNALSYM PKS_DVDCOPY_REGION}
  20797. TKSDVDCopyRegion = _KS_DVDCOPY_REGION;
  20798. PKSDVDCopyTitleKey = ^TKSDVDCopyTitleKey;
  20799. _KS_DVDCOPY_TITLEKEY = record
  20800. KeyFlags : ULONG;
  20801. ReservedNT : array[0..1] of ULONG;
  20802. TitleKey : array[0..5] of UCHAR;
  20803. Reserved : array[0..1] of UCHAR;
  20804. end;
  20805. {$EXTERNALSYM _KS_DVDCOPY_TITLEKEY}
  20806. KS_DVDCOPY_TITLEKEY = _KS_DVDCOPY_TITLEKEY;
  20807. {$EXTERNALSYM KS_DVDCOPY_TITLEKEY}
  20808. PKS_DVDCOPY_TITLEKEY = ^KS_DVDCOPY_TITLEKEY;
  20809. {$EXTERNALSYM PKS_DVDCOPY_TITLEKEY}
  20810. TKSDVDCopyTitleKey = _KS_DVDCOPY_TITLEKEY;
  20811. PKSCopyMacrovision = ^TKSCopyMacrovision;
  20812. _KS_COPY_MACROVISION = record
  20813. MACROVISIONLevel : ULONG;
  20814. end;
  20815. {$EXTERNALSYM _KS_COPY_MACROVISION}
  20816. KS_COPY_MACROVISION = _KS_COPY_MACROVISION;
  20817. {$EXTERNALSYM KS_COPY_MACROVISION}
  20818. PKS_COPY_MACROVISION = ^KS_COPY_MACROVISION;
  20819. {$EXTERNALSYM PKS_COPY_MACROVISION}
  20820. TKSCopyMacrovision = _KS_COPY_MACROVISION;
  20821. PKSDVDCopySetCopyState = ^TKSDVDCopySetCopyState;
  20822. _KS_DVDCOPY_SET_COPY_STATE = record
  20823. DVDCopyState : ULONG;
  20824. end;
  20825. {$EXTERNALSYM _KS_DVDCOPY_SET_COPY_STATE}
  20826. KS_DVDCOPY_SET_COPY_STATE = _KS_DVDCOPY_SET_COPY_STATE;
  20827. {$EXTERNALSYM KS_DVDCOPY_SET_COPY_STATE}
  20828. PKS_DVDCOPY_SET_COPY_STATE = ^KS_DVDCOPY_SET_COPY_STATE;
  20829. {$EXTERNALSYM PKS_DVDCOPY_SET_COPY_STATE}
  20830. TKSDVDCopySetCopyState = _KS_DVDCOPY_SET_COPY_STATE;
  20831. KS_DVDCOPYSTATE = (
  20832. KS_DVDCOPYSTATE_INITIALIZE, // indicates we are starting a full
  20833. // copy protection sequence.
  20834. KS_DVDCOPYSTATE_INITIALIZE_TITLE, // indicates we are starting a title
  20835. // key copy protection sequence
  20836. KS_DVDCOPYSTATE_AUTHENTICATION_NOT_REQUIRED,
  20837. KS_DVDCOPYSTATE_AUTHENTICATION_REQUIRED,
  20838. KS_DVDCOPYSTATE_DONE
  20839. );
  20840. {$EXTERNALSYM KS_DVDCOPYSTATE}
  20841. TKSDVDCopyState = KS_DVDCOPYSTATE;
  20842. PKSCopyMacrovisionLevel = ^TKSCopyMacrovisionLevel;
  20843. KS_COPY_MACROVISION_LEVEL = (
  20844. KS_MACROVISION_DISABLED,
  20845. KS_MACROVISION_LEVEL1,
  20846. KS_MACROVISION_LEVEL2,
  20847. KS_MACROVISION_LEVEL3
  20848. );
  20849. {$EXTERNALSYM KS_COPY_MACROVISION_LEVEL}
  20850. PKS_COPY_MACROVISION_LEVEL = ^KS_COPY_MACROVISION_LEVEL;
  20851. {$EXTERNALSYM PKS_COPY_MACROVISION_LEVEL}
  20852. TKSCopyMacrovisionLevel = KS_COPY_MACROVISION_LEVEL;
  20853. //
  20854. // CGMS Copy Protection Flags
  20855. //
  20856. const
  20857. KS_DVD_CGMS_RESERVED_MASK = $00000078;
  20858. {$EXTERNALSYM KS_DVD_CGMS_RESERVED_MASK}
  20859. KS_DVD_CGMS_COPY_PROTECT_MASK = $00000018;
  20860. {$EXTERNALSYM KS_DVD_CGMS_COPY_PROTECT_MASK}
  20861. KS_DVD_CGMS_COPY_PERMITTED = $00000000;
  20862. {$EXTERNALSYM KS_DVD_CGMS_COPY_PERMITTED}
  20863. KS_DVD_CGMS_COPY_ONCE = $00000010;
  20864. {$EXTERNALSYM KS_DVD_CGMS_COPY_ONCE}
  20865. KS_DVD_CGMS_NO_COPY = $00000018;
  20866. {$EXTERNALSYM KS_DVD_CGMS_NO_COPY}
  20867. KS_DVD_COPYRIGHT_MASK = $00000040;
  20868. {$EXTERNALSYM KS_DVD_COPYRIGHT_MASK}
  20869. KS_DVD_NOT_COPYRIGHTED = $00000000;
  20870. {$EXTERNALSYM KS_DVD_NOT_COPYRIGHTED}
  20871. KS_DVD_COPYRIGHTED = $00000040;
  20872. {$EXTERNALSYM KS_DVD_COPYRIGHTED}
  20873. KS_DVD_SECTOR_PROTECT_MASK = $00000020;
  20874. {$EXTERNALSYM KS_DVD_SECTOR_PROTECT_MASK}
  20875. KS_DVD_SECTOR_NOT_PROTECTED = $00000000;
  20876. {$EXTERNALSYM KS_DVD_SECTOR_NOT_PROTECTED}
  20877. KS_DVD_SECTOR_PROTECTED = $00000020;
  20878. {$EXTERNALSYM KS_DVD_SECTOR_PROTECTED}
  20879. //===========================================================================
  20880. // The following MUST match the structures in WinGDI.h and AMVideo.h
  20881. //===========================================================================
  20882. KSCATEGORY_TVTUNER : TGUID = '{a799a800-a46d-11d0-a18c-00a02401dcd4}';
  20883. {$EXTERNALSYM KSCATEGORY_TVTUNER}
  20884. KSCATEGORY_CROSSBAR : TGUID = '{a799a801-a46d-11d0-a18c-00a02401dcd4}';
  20885. {$EXTERNALSYM KSCATEGORY_CROSSBAR}
  20886. KSCATEGORY_TVAUDIO : TGUID = '{a799a802-a46d-11d0-a18c-00a02401dcd4}';
  20887. {$EXTERNALSYM KSCATEGORY_TVAUDIO}
  20888. KSCATEGORY_VPMUX : TGUID = '{a799a803-a46d-11d0-a18c-00a02401dcd4}';
  20889. {$EXTERNALSYM KSCATEGORY_VPMUX}
  20890. KSCATEGORY_VBICODEC : TGUID = '{07dad660-22f1-11d1-a9f4-00c04fbbde8f}';
  20891. {$EXTERNALSYM KSCATEGORY_VBICODEC}
  20892. // SUBTYPE_VPVideo
  20893. KSDATAFORMAT_SUBTYPE_VPVideo : TGUID = '{5a9b6a40-1a22-11d1-bad9-00609744111a}';
  20894. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_VPVideo}
  20895. // SUBTYPE_VPVBI
  20896. KSDATAFORMAT_SUBTYPE_VPVBI : TGUID = '{5a9b6a41-1a22-11d1-bad9-00609744111a}';
  20897. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_VPVBI}
  20898. // FORMAT_VideoInfo
  20899. KSDATAFORMAT_SPECIFIER_VIDEOINFO : TGUID = '{05589f80-c356-11ce-bf01-00aa0055595a}';
  20900. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VIDEOINFO}
  20901. // FORMAT_VideoInfo2
  20902. KSDATAFORMAT_SPECIFIER_VIDEOINFO2 : TGUID = '{f72a76A0-eb0a-11d0-ace4-0000c0cc16ba}';
  20903. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VIDEOINFO2}
  20904. // MEDIATYPE_AnalogVideo
  20905. KSDATAFORMAT_TYPE_ANALOGVIDEO : TGUID = '{0482dde1-7817-11cf-8a03-00aa006ecb65}';
  20906. {$EXTERNALSYM KSDATAFORMAT_TYPE_ANALOGVIDEO}
  20907. // FORMAT_AnalogVideo
  20908. KSDATAFORMAT_SPECIFIER_ANALOGVIDEO : TGUID = '{0482dde0-7817-11cf-8a03-00aa006ecb65}';
  20909. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_ANALOGVIDEO}
  20910. // FORMAT_VBI
  20911. KSDATAFORMAT_SPECIFIER_VBI : TGUID = '{f72a76e0-eb0a-11d0-ace4-0000c0cc16ba}';
  20912. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_VBI}
  20913. // MEDIATYPE_VBI
  20914. KSDATAFORMAT_TYPE_VBI : TGUID = '{f72a76e1-eb0a-11d0-ace4-0000c0cc16ba}';
  20915. {$EXTERNALSYM KSDATAFORMAT_TYPE_VBI}
  20916. // SUBTYPE_RAW8
  20917. KSDATAFORMAT_SUBTYPE_RAW8 : TGUID = '{ca20d9a0-3e3e-11d1-9bf9-00c04fbbdebf}';
  20918. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_RAW8}
  20919. // MEDIASUBTYPE_CC
  20920. KSDATAFORMAT_SUBTYPE_CC : TGUID = '{33214CC1-011F-11D2-B4B1-00A0D102CFBE}';
  20921. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_CC}
  20922. // MEDIASUBTYPE_NABTS
  20923. KSDATAFORMAT_SUBTYPE_NABTS : TGUID = '{f72a76e2-eb0a-11d0-ace4-0000c0cc16ba}';
  20924. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_NABTS}
  20925. // MEDIASUBTYPE_TELETEXT
  20926. KSDATAFORMAT_SUBTYPE_TELETEXT : TGUID = '{f72a76e3-eb0a-11d0-ace4-0000c0cc16ba}';
  20927. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_TELETEXT}
  20928. // constants for the biCompression field
  20929. KS_BI_RGB = 0;
  20930. {$EXTERNALSYM KS_BI_RGB}
  20931. KS_BI_RLE8 = 1;
  20932. {$EXTERNALSYM KS_BI_RLE8}
  20933. KS_BI_RLE4 = 2;
  20934. {$EXTERNALSYM KS_BI_RLE4}
  20935. KS_BI_BITFIELDS = 3;
  20936. {$EXTERNALSYM KS_BI_BITFIELDS}
  20937. type
  20938. PKSRGBQuad = ^TKSRGBQuad;
  20939. tagKS_RGBQUAD = record // rgbq
  20940. rgbBlue : BYTE;
  20941. rgbGreen : BYTE;
  20942. rgbRed : BYTE;
  20943. rgbReserved : BYTE;
  20944. end;
  20945. {$EXTERNALSYM tagKS_RGBQUAD}
  20946. KS_RGBQUAD = tagKS_RGBQUAD;
  20947. {$EXTERNALSYM KS_RGBQUAD}
  20948. PKS_RGBQUAD = ^KS_RGBQUAD;
  20949. {$EXTERNALSYM PKS_RGBQUAD}
  20950. TKSRGBQuad = tagKS_RGBQUAD;
  20951. // constants for palettes
  20952. const
  20953. KS_iPALETTE_COLORS = 256; // Maximum colours in palette
  20954. {$EXTERNALSYM KS_iPALETTE_COLORS}
  20955. KS_iEGA_COLORS = 16; // Number colours in EGA palette
  20956. {$EXTERNALSYM KS_iEGA_COLORS}
  20957. KS_iMASK_COLORS = 3; // Maximum three components
  20958. {$EXTERNALSYM KS_iMASK_COLORS}
  20959. KS_iTRUECOLOR = 16; // Minimum true colour device
  20960. {$EXTERNALSYM KS_iTRUECOLOR}
  20961. KS_iRED = 0; // Index position for RED mask
  20962. {$EXTERNALSYM KS_iRED}
  20963. KS_iGREEN = 1; // Index position for GREEN mask
  20964. {$EXTERNALSYM KS_iGREEN}
  20965. KS_iBLUE = 2; // Index position for BLUE mask
  20966. {$EXTERNALSYM KS_iBLUE}
  20967. KS_iPALETTE = 8; // Maximum colour depth using a palette
  20968. {$EXTERNALSYM KS_iPALETTE}
  20969. KS_iMAXBITS = 8; // Maximum bits per colour component
  20970. {$EXTERNALSYM KS_iMAXBITS}
  20971. KS_SIZE_EGA_PALETTE = (KS_iEGA_COLORS * sizeof(TKSRGBQUAD));
  20972. {$EXTERNALSYM KS_SIZE_EGA_PALETTE}
  20973. KS_SIZE_PALETTE = (KS_iPALETTE_COLORS * sizeof(TKSRGBQUAD));
  20974. {$EXTERNALSYM KS_SIZE_PALETTE}
  20975. type
  20976. PKSBitmapInfoHeader = ^TKSBitmapInfoHeader;
  20977. tagKS_BITMAPINFOHEADER = record
  20978. biSize : DWORD;
  20979. biWidth : longint;
  20980. biHeight : longint;
  20981. biPlanes : WORD;
  20982. biBitCount : WORD;
  20983. biCompression : DWORD;
  20984. biSizeImage : DWORD;
  20985. biXPelsPerMeter : longint;
  20986. biYPelsPerMeter : longint;
  20987. biClrUsed : DWORD;
  20988. biClrImportant : DWORD;
  20989. end;
  20990. {$EXTERNALSYM tagKS_BITMAPINFOHEADER}
  20991. KS_BITMAPINFOHEADER = tagKS_BITMAPINFOHEADER;
  20992. {$EXTERNALSYM KS_BITMAPINFOHEADER}
  20993. PKS_BITMAPINFOHEADER = ^KS_BITMAPINFOHEADER;
  20994. {$EXTERNALSYM PKS_BITMAPINFOHEADER}
  20995. TKSBitmapInfoHeader = tagKS_BITMAPINFOHEADER;
  20996. // Used for true colour images that also have a palette
  20997. PKSTrueColorInfo = ^TKSTrueColorInfo;
  20998. tag_KS_TRUECOLORINFO = record
  20999. dwBitMasks : array[0..KS_iMASK_COLORS-1] of DWORD;
  21000. bmiColors : array[0..KS_iPALETTE_COLORS-1] of TKSRGBQUAD;
  21001. end;
  21002. {$EXTERNALSYM tag_KS_TRUECOLORINFO}
  21003. KS_TRUECOLORINFO = tag_KS_TRUECOLORINFO;
  21004. {$EXTERNALSYM KS_TRUECOLORINFO}
  21005. PKS_TRUECOLORINFO = ^KS_TRUECOLORINFO;
  21006. {$EXTERNALSYM PKS_TRUECOLORINFO}
  21007. TKSTrueColorInfo = tag_KS_TRUECOLORINFO;
  21008. // KS_WIDTHBYTES(bits) ((DWORD)(((bits)+31) & (~31)) / 8)
  21009. // KS_DIBWIDTHBYTES(bi) (DWORD)KS_WIDTHBYTES((DWORD)(bi).biWidth * (DWORD)(bi).biBitCount)
  21010. // KS__DIBSIZE(bi) (KS_DIBWIDTHBYTES(bi) * (DWORD)(bi).biHeight)
  21011. // KS_DIBSIZE(bi) ((bi).biHeight < 0 ? (-1)*(KS__DIBSIZE(bi)) : KS__DIBSIZE(bi))
  21012. // typedef REFERENCE_TIME: int64;
  21013. // The BITMAPINFOHEADER contains all the details about the video stream such
  21014. // as the actual image dimensions and their pixel depth. A source filter may
  21015. // also request that the sink take only a section of the video by providing a
  21016. // clipping rectangle in rcSource. In the worst case where the sink filter
  21017. // forgets to check this on connection it will simply render the whole thing
  21018. // which isn't a disaster. Ideally a sink filter will check the rcSource and
  21019. // if it doesn't support image extraction and the rectangle is not empty then
  21020. // it will reject the connection. A filter should use SetRectEmpty to reset a
  21021. // rectangle to all zeroes (and IsRectEmpty to later check the rectangle).
  21022. // The rcTarget specifies the destination rectangle for the video, for most
  21023. // source filters they will set this to all zeroes, a downstream filter may
  21024. // request that the video be placed in a particular area of the buffers it
  21025. // supplies in which case it will call QueryAccept with a non empty target
  21026. PKSVideoInfoHeader = ^TKSVideoInfoHeader;
  21027. tagKS_VIDEOINFOHEADER = record
  21028. rcSource : TRECT; // The bit we really want to use
  21029. rcTarget : TRECT; // Where the video should go
  21030. dwBitRate : DWORD; // Approximate bit data rate
  21031. dwBitErrorRate : DWORD; // Bit error rate for this stream
  21032. AvgTimePerFrame : TReferenceTime; // Average time per frame (100ns units)
  21033. bmiHeader : TKSBitmapInfoHeader;
  21034. end;
  21035. {$EXTERNALSYM tagKS_VIDEOINFOHEADER}
  21036. KS_VIDEOINFOHEADER = tagKS_VIDEOINFOHEADER;
  21037. {$EXTERNALSYM KS_VIDEOINFOHEADER}
  21038. PKS_VIDEOINFOHEADER = ^KS_VIDEOINFOHEADER;
  21039. {$EXTERNALSYM PKS_VIDEOINFOHEADER}
  21040. TKSVideoInfoHeader = tagKS_VIDEOINFOHEADER;
  21041. // !!! WARNING !!!
  21042. // DO NOT use the following structure unless you are sure that the BITMAPINFOHEADER
  21043. // has a normal biSize == sizeof(BITMAPINFOHEADER) !
  21044. // !!! WARNING !!!
  21045. PKSVideoInfo = ^TKSVideoInfo;
  21046. tagKS_VIDEOINFO = record
  21047. rcSource : TRECT; // The bit we really want to use
  21048. rcTarget : TRECT; // Where the video should go
  21049. dwBitRate : DWORD; // Approximate bit data rate
  21050. dwBitErrorRate : DWORD; // Bit error rate for this stream
  21051. AvgTimePerFrame : TReferenceTime; // Average time per frame (100ns units)
  21052. bmiHeader : TKSBitmapInfoHeader;
  21053. case integer of
  21054. 0: (bmiColors : array[0..KS_iPALETTE_COLORS-1] of TKSRGBQUAD); // Colour palette
  21055. 1: (dwBitMasks : array[0..KS_iMASK_COLORS-1] of DWORD); // True colour masks
  21056. 2: (TrueColorInfo : TKSTrueColorInfo); // Both of the above
  21057. end;
  21058. {$EXTERNALSYM tagKS_VIDEOINFO}
  21059. KS_VIDEOINFO = tagKS_VIDEOINFO;
  21060. {$EXTERNALSYM KS_VIDEOINFO}
  21061. PKS_VIDEOINFO = ^KS_VIDEOINFO;
  21062. {$EXTERNALSYM PKS_VIDEOINFO}
  21063. TKSVideoInfo = tagKS_VIDEOINFO;
  21064. const
  21065. KS_SIZE_MASKS = (KS_iMASK_COLORS * sizeof(DWORD));
  21066. {$EXTERNALSYM KS_SIZE_MASKS}
  21067. // KS_SIZE_PREHEADER = (FIELD_OFFSET(KS_VIDEOINFOHEADER,bmiHeader))
  21068. // For normal size
  21069. // #define KS_SIZE_VIDEOHEADER (sizeof(KS_BITMAPINFOHEADER) + KS_SIZE_PREHEADER)
  21070. // !!! for abnormal biSizes
  21071. //#define KS_SIZE_VIDEOHEADER(pbmi) ((pbmi)->bmiHeader.biSize + KS_SIZE_PREHEADER)
  21072. // VBI
  21073. // Used for NABTS, CC, Intercast,
  21074. type
  21075. PKSVBIInfoHeader = ^TKSVBIInfoHeader;
  21076. tagKS_VBIINFOHEADER = record
  21077. StartLine : ULONG; // inclusive
  21078. EndLine : ULONG; // inclusive
  21079. SamplingFrequency : ULONG; // Hz.
  21080. MinLineStartTime : ULONG; // microSec * 100 from HSync LE
  21081. MaxLineStartTime : ULONG; // microSec * 100 from HSync LE
  21082. ActualLineStartTime : ULONG; // microSec * 100 from HSync LE
  21083. ActualLineEndTime : ULONG; // microSec * 100 from HSync LE
  21084. VideoStandard : ULONG; // KS_AnalogVideoStandard*
  21085. SamplesPerLine : ULONG;
  21086. StrideInBytes : ULONG; // May be > SamplesPerLine
  21087. BufferSize : ULONG; // Bytes
  21088. end;
  21089. {$EXTERNALSYM tagKS_VBIINFOHEADER}
  21090. KS_VBIINFOHEADER = tagKS_VBIINFOHEADER;
  21091. {$EXTERNALSYM KS_VBIINFOHEADER}
  21092. PKS_VBIINFOHEADER = ^KS_VBIINFOHEADER;
  21093. {$EXTERNALSYM PKS_VBIINFOHEADER}
  21094. TKSVBIInfoHeader = tagKS_VBIINFOHEADER;
  21095. // VBI Sampling Rates
  21096. const
  21097. KS_VBIDATARATE_NABTS = 5727272;
  21098. {$EXTERNALSYM KS_VBIDATARATE_NABTS}
  21099. KS_VBIDATARATE_CC = 503493; // ~= 1/1.986125e-6
  21100. {$EXTERNALSYM KS_VBIDATARATE_CC}
  21101. KS_VBISAMPLINGRATE_4X_NABTS = longint(4*KS_VBIDATARATE_NABTS);
  21102. {$EXTERNALSYM KS_VBISAMPLINGRATE_4X_NABTS}
  21103. KS_VBISAMPLINGRATE_47X_NABTS = longint(27000000);
  21104. {$EXTERNALSYM KS_VBISAMPLINGRATE_47X_NABTS}
  21105. KS_VBISAMPLINGRATE_5X_NABTS = longint(5*KS_VBIDATARATE_NABTS);
  21106. {$EXTERNALSYM KS_VBISAMPLINGRATE_5X_NABTS}
  21107. KS_47NABTS_SCALER = KS_VBISAMPLINGRATE_47X_NABTS/KS_VBIDATARATE_NABTS;
  21108. {$EXTERNALSYM KS_47NABTS_SCALER}
  21109. // Analog video variant - Use this when the format is FORMAT_AnalogVideo
  21110. //
  21111. // rcSource defines the portion of the active video signal to use
  21112. // rcTarget defines the destination rectangle
  21113. // both of the above are relative to the dwActiveWidth and dwActiveHeight fields
  21114. // dwActiveWidth is currently set to 720 for all formats (but could change for HDTV)
  21115. // dwActiveHeight is 483 for NTSC and 575 for PAL/SECAM (but could change for HDTV)
  21116. type
  21117. PKSAnalogVideoInfo = ^TKSAnalogVideoInfo;
  21118. tagKS_AnalogVideoInfo = record
  21119. rcSource : TRECT; // Width max is 720, height varies w/ TransmissionStd
  21120. rcTarget : TRECT; // Where the video should go
  21121. dwActiveWidth : DWORD; // Always 720 (CCIR-601 active samples per line)
  21122. dwActiveHeight : DWORD; // 483 for NTSC, 575 for PAL/SECAM
  21123. AvgTimePerFrame : TReferenceTime; // Normal ActiveMovie units (100 nS)
  21124. end;
  21125. {$EXTERNALSYM tagKS_AnalogVideoInfo}
  21126. KS_AnalogVideoInfo = tagKS_AnalogVideoInfo;
  21127. {$EXTERNALSYM KS_ANALOGVIDEOINFO}
  21128. PKS_ANALOGVIDEOINFO = ^KS_ANALOGVIDEOINFO;
  21129. {$EXTERNALSYM PKS_ANALOGVIDEOINFO}
  21130. TKSAnalogVideoInfo = tagKS_AnalogVideoInfo;
  21131. //===========================================================================
  21132. // Data packet passed on Analog video stream channel change
  21133. //===========================================================================
  21134. const
  21135. KS_TVTUNER_CHANGE_BEGIN_TUNE = $0001; // Starting a tuning operation
  21136. {$EXTERNALSYM KS_TVTUNER_CHANGE_BEGIN_TUNE}
  21137. KS_TVTUNER_CHANGE_END_TUNE = $0002; // Ending a tuning operation
  21138. {$EXTERNALSYM KS_TVTUNER_CHANGE_END_TUNE}
  21139. type
  21140. PKSTVTunerChangeInfo = ^TKSTVTunerChangeInfo;
  21141. tagKS_TVTUNER_CHANGE_INFO = record
  21142. dwFlags : DWORD; // KS_TVTUNER_CHANGE_*
  21143. dwCountryCode : DWORD;
  21144. dwAnalogVideoStandard : DWORD; // KS_AnalogVideoStandard
  21145. dwChannel : DWORD;
  21146. end;
  21147. {$EXTERNALSYM tagKS_TVTUNER_CHANGE_INFO}
  21148. KS_TVTUNER_CHANGE_INFO = tagKS_TVTUNER_CHANGE_INFO;
  21149. {$EXTERNALSYM KS_TVTUNER_CHANGE_INFO}
  21150. PKS_TVTUNER_CHANGE_INFO = ^KS_TVTUNER_CHANGE_INFO;
  21151. {$EXTERNALSYM PKS_TVTUNER_CHANGE_INFO}
  21152. TKSTVTunerChangeInfo = tagKS_TVTUNER_CHANGE_INFO;
  21153. //===========================================================================
  21154. // Video format blocks
  21155. //===========================================================================
  21156. KS_MPEG2Level = (
  21157. KS_MPEG2Level_Low,
  21158. KS_MPEG2Level_Main,
  21159. KS_MPEG2Level_High1440,
  21160. KS_MPEG2Level_High
  21161. );
  21162. {$EXTERNALSYM KS_MPEG2Level}
  21163. TKSMPEG2Level = KS_MPEG2Level;
  21164. KS_MPEG2Profile = (
  21165. KS_MPEG2Profile_Simple,
  21166. KS_MPEG2Profile_Main,
  21167. KS_MPEG2Profile_SNRScalable,
  21168. KS_MPEG2Profile_SpatiallyScalable,
  21169. KS_MPEG2Profile_High
  21170. );
  21171. {$EXTERNALSYM KS_MPEG2Profile}
  21172. TKSMPEG2Profile = KS_MPEG2Profile;
  21173. const
  21174. KS_INTERLACE_IsInterlaced = $00000001; // if 0, other interlace bits are irrelevent
  21175. {$EXTERNALSYM KS_INTERLACE_IsInterlaced}
  21176. KS_INTERLACE_1FieldPerSample = $00000002; // else 2 fields per media sample
  21177. {$EXTERNALSYM KS_INTERLACE_1FieldPerSample}
  21178. KS_INTERLACE_Field1First = $00000004; // else Field 2 is first; top field in PAL is field 1, top field in NTSC is field 2?
  21179. {$EXTERNALSYM KS_INTERLACE_Field1First}
  21180. KS_INTERLACE_UNUSED = $00000008; //
  21181. {$EXTERNALSYM KS_INTERLACE_UNUSED}
  21182. KS_INTERLACE_FieldPatternMask = $00000030; // use this mask with AMINTERLACE_FieldPat*
  21183. {$EXTERNALSYM KS_INTERLACE_FieldPatternMask}
  21184. KS_INTERLACE_FieldPatField1Only = $00000000; // Data never contains a Field2
  21185. {$EXTERNALSYM KS_INTERLACE_FieldPatField1Only}
  21186. KS_INTERLACE_FieldPatField2Only = $00000010; // Data never contains a Field1
  21187. {$EXTERNALSYM KS_INTERLACE_FieldPatField2Only}
  21188. KS_INTERLACE_FieldPatBothRegular = $00000020; // There will be a Field2 for every Field1 (required for Weave?)
  21189. {$EXTERNALSYM KS_INTERLACE_FieldPatBothRegular}
  21190. KS_INTERLACE_FieldPatBothIrregular = $00000030; // Random pattern of Field1s and Field2s
  21191. {$EXTERNALSYM KS_INTERLACE_FieldPatBothIrregular}
  21192. KS_INTERLACE_DisplayModeMask = $000000c0;
  21193. {$EXTERNALSYM KS_INTERLACE_DisplayModeMask}
  21194. KS_INTERLACE_DisplayModeBobOnly = $00000000;
  21195. {$EXTERNALSYM KS_INTERLACE_DisplayModeBobOnly}
  21196. KS_INTERLACE_DisplayModeWeaveOnly = $00000040;
  21197. {$EXTERNALSYM KS_INTERLACE_DisplayModeWeaveOnly}
  21198. KS_INTERLACE_DisplayModeBobOrWeave = $00000080;
  21199. {$EXTERNALSYM KS_INTERLACE_DisplayModeBobOrWeave}
  21200. KS_MPEG2_DoPanScan = $00000001; //if set, the MPEG-2 video decoder should crop output image
  21201. {$EXTERNALSYM KS_MPEG2_DoPanScan} // based on pan-scan vectors in picture_display_extension
  21202. // and change the picture aspect ratio accordingly.
  21203. KS_MPEG2_DVDLine21Field1 = $00000002; //if set, the MPEG-2 decoder must be able to produce an output
  21204. {$EXTERNALSYM KS_MPEG2_DVDLine21Field1} // pin for DVD style closed caption data found in GOP layer of field 1
  21205. KS_MPEG2_DVDLine21Field2 = $00000004; //if set, the MPEG-2 decoder must be able to produce an output
  21206. {$EXTERNALSYM KS_MPEG2_DVDLine21Field2} // pin for DVD style closed caption data found in GOP layer of field 2
  21207. KS_MPEG2_SourceIsLetterboxed = $00000008; //if set, indicates that black bars have been encoded in the top
  21208. {$EXTERNALSYM KS_MPEG2_SourceIsLetterboxed} // and bottom of the video.
  21209. KS_MPEG2_FilmCameraMode = $00000010; //if set, indicates "film mode" used for 625/50 content. If cleared,
  21210. {$EXTERNALSYM KS_MPEG2_FilmCameraMode} // indicates that "camera mode" was used.
  21211. KS_MPEG2_LetterboxAnalogOut = $00000020; //if set and this stream is sent to an analog output, it should
  21212. {$EXTERNALSYM KS_MPEG2_LetterboxAnalogOut}
  21213. // be letterboxed. Streams sent to VGA should be letterboxed only by renderers.
  21214. KS_MPEG2_DSS_UserData = $00000040; //if set, the MPEG-2 decoder must process DSS style user data
  21215. {$EXTERNALSYM KS_MPEG2_DSS_UserData}
  21216. KS_MPEG2_DVB_UserData = $00000080; //if set, the MPEG-2 decoder must process DVB style user data
  21217. {$EXTERNALSYM KS_MPEG2_DVB_UserData}
  21218. KS_MPEG2_27MhzTimebase = $00000100; //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz
  21219. {$EXTERNALSYM KS_MPEG2_27MhzTimebase}
  21220. type
  21221. PKSVideoInfoHeader2 = ^TKSVideoInfoHeader2;
  21222. tagKS_VIDEOINFOHEADER2 = record
  21223. rcSource : TRECT;
  21224. rcTarget : TRECT;
  21225. dwBitRate : DWORD;
  21226. dwBitErrorRate : DWORD;
  21227. AvgTimePerFrame : TReferenceTime;
  21228. dwInterlaceFlags : DWORD; // use AMINTERLACE_* defines. Reject connection if undefined bits are not 0
  21229. dwCopyProtectFlags : DWORD; // use AMCOPYPROTECT_* defines. Reject connection if undefined bits are not 0
  21230. dwPictAspectRatioX : DWORD; // X dimension of picture aspect ratio, e.g. 16 for 16x9 display
  21231. dwPictAspectRatioY : DWORD; // Y dimension of picture aspect ratio, e.g. 9 for 16x9 display
  21232. dwReserved1 : DWORD; // must be 0; reject connection otherwise
  21233. dwReserved2 : DWORD; // must be 0; reject connection otherwise
  21234. bmiHeader : TKSBitmapInfoHeader;
  21235. end;
  21236. {$EXTERNALSYM tagKS_VIDEOINFOHEADER2}
  21237. KS_VIDEOINFOHEADER2 = tagKS_VIDEOINFOHEADER2;
  21238. {$EXTERNALSYM KS_VIDEOINFOHEADER2}
  21239. PKS_VIDEOINFOHEADER2 = ^KS_VIDEOINFOHEADER2;
  21240. {$EXTERNALSYM PKS_VIDEOINFOHEADER2}
  21241. TKSVideoInfoHeader2 = tagKS_VIDEOINFOHEADER2;
  21242. PKSMPEG1VideoInfo = ^TKSMPEG1VideoInfo;
  21243. tagKS_MPEG1VIDEOINFO = record
  21244. hdr : TKSVideoInfoHeader ; // Compatible with VIDEOINFO
  21245. dwStartTimeCode : DWORD ; // 25-bit Group of pictures time code at start of data
  21246. cbSequenceHeader : DWORD ; // Length in bytes of bSequenceHeader
  21247. bSequenceHeader : array[0..0] of BYTE; // Sequence header including quantization matrices if any
  21248. end;
  21249. {$EXTERNALSYM tagKS_MPEG1VIDEOINFO}
  21250. KS_MPEG1VIDEOINFO = tagKS_MPEG1VIDEOINFO;
  21251. {$EXTERNALSYM KS_MPEG1VIDEOINFO}
  21252. PKS_MPEG1VIDEOINFO = ^KS_MPEG1VIDEOINFO;
  21253. {$EXTERNALSYM PKS_MPEG1VIDEOINFO}
  21254. TKSMPEG1VideoInfo = tagKS_MPEG1VIDEOINFO;
  21255. const
  21256. KS_MAX_SIZE_MPEG1_SEQUENCE_INFO = 140;
  21257. {$EXTERNALSYM KS_MAX_SIZE_MPEG1_SEQUENCE_INFO}
  21258. // KS_SIZE_MPEG1VIDEOINFO(pv) (FIELD_OFFSET(KS_MPEG1VIDEOINFO, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  21259. // KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  21260. type
  21261. PKSMPEGVideoInfo2 = ^TKSMPEGVideoInfo2;
  21262. tagKS_MPEGVIDEOINFO2 = record
  21263. hdr : TKSVideoInfoHeader2;
  21264. dwStartTimeCode : DWORD; // ?? not used for DVD ??
  21265. cbSequenceHeader : DWORD; // is 0 for DVD (no sequence header)
  21266. dwProfile : DWORD; // use enum MPEG2Profile
  21267. dwLevel : DWORD; // use enum MPEG2Level
  21268. dwFlags : DWORD; // use AMMPEG2_* defines. Reject connection if undefined bits are not 0
  21269. bSequenceHeader : array[0..0] of DWORD; // DWORD instead of Byte for alignment purposes
  21270. // For MPEG-2, if a sequence_header is included, the sequence_extension
  21271. // should also be included
  21272. end;
  21273. {$EXTERNALSYM tagKS_MPEGVIDEOINFO2}
  21274. KS_MPEGVIDEOINFO2 = tagKS_MPEGVIDEOINFO2;
  21275. {$EXTERNALSYM KS_MPEGVIDEOINFO2}
  21276. PKS_MPEGVIDEOINFO2 = ^KS_MPEGVIDEOINFO2;
  21277. {$EXTERNALSYM PKS_MPEGVIDEOINFO2}
  21278. TKSMPEGVideoInfo2 = tagKS_MPEGVIDEOINFO2;
  21279. const
  21280. // KS_SIZE_MPEGVIDEOINFO2(pv) (FIELD_OFFSET(KS_MPEGVIDEOINFO2, bSequenceHeader[0]) + (pv)->cbSequenceHeader)
  21281. // KS_MPEG1_SEQUENCE_INFO(pv) ((const BYTE *)(pv)->bSequenceHeader)
  21282. //===========================================================================
  21283. // Audio format blocks
  21284. //===========================================================================
  21285. //if set, the PTS,DTS timestamps advance at 27MHz rather than 90KHz
  21286. KS_MPEGAUDIOINFO_27MhzTimebase = $00000001;
  21287. {$EXTERNALSYM KS_MPEGAUDIOINFO_27MhzTimebase}
  21288. type
  21289. PKSMPEGAudioInfo = ^TKSMPEGAudioInfo;
  21290. tagKS_MPEAUDIOINFO = record
  21291. dwFlags : DWORD; // use KS_MPEGAUDIOINFO_* defines. Reject connection if undefined bits are not 0
  21292. dwReserved1 : DWORD; // must be 0; reject connection otherwise
  21293. dwReserved2 : DWORD; // must be 0; reject connection otherwise
  21294. dwReserved3 : DWORD; // must be 0; reject connection otherwise
  21295. end;
  21296. {$EXTERNALSYM tagKS_MPEAUDIOINFO}
  21297. KS_MPEGAUDIOINFO = tagKS_MPEAUDIOINFO;
  21298. {$EXTERNALSYM KS_MPEGAUDIOINFO}
  21299. PKS_MPEGAUDIOINFO = ^KS_MPEGAUDIOINFO;
  21300. {$EXTERNALSYM PKS_MPEGAUDIOINFO}
  21301. TKSMPEGAudioInfo = tagKS_MPEAUDIOINFO;
  21302. //===========================================================================
  21303. // Video DATAFORMATs
  21304. //===========================================================================
  21305. PKSDataFormatVideoInfoHeader = ^TKSDataFormatVideoInfoHeader;
  21306. tagKS_DATAFORMAT_VIDEOINFOHEADER = record
  21307. DataFormat : TKSDataFormat;
  21308. VideoInfoHeader : TKSVideoInfoHeader;
  21309. end;
  21310. {$EXTERNALSYM tagKS_DATAFORMAT_VIDEOINFOHEADER}
  21311. KS_DATAFORMAT_VIDEOINFOHEADER = tagKS_DATAFORMAT_VIDEOINFOHEADER;
  21312. {$EXTERNALSYM KS_DATAFORMAT_VIDEOINFOHEADER}
  21313. PKS_DATAFORMAT_VIDEOINFOHEADER = ^KS_DATAFORMAT_VIDEOINFOHEADER;
  21314. {$EXTERNALSYM PKS_DATAFORMAT_VIDEOINFOHEADER}
  21315. TKSDataFormatVideoInfoHeader = tagKS_DATAFORMAT_VIDEOINFOHEADER;
  21316. PKSDataFormatVideoInfoHeader2 = ^TKSDataFormatVideoInfoHeader2;
  21317. tagKS_DATAFORMAT_VIDEOINFOHEADER2 = record
  21318. DataFormat : TKSDataFormat;
  21319. VideoInfoHeader2 : TKSVideoInfoHeader2;
  21320. end;
  21321. {$EXTERNALSYM tagKS_DATAFORMAT_VIDEOINFOHEADER2}
  21322. KS_DATAFORMAT_VIDEOINFOHEADER2 = tagKS_DATAFORMAT_VIDEOINFOHEADER2;
  21323. {$EXTERNALSYM KS_DATAFORMAT_VIDEOINFOHEADER2}
  21324. PKS_DATAFORMAT_VIDEOINFOHEADER2 = ^KS_DATAFORMAT_VIDEOINFOHEADER2;
  21325. {$EXTERNALSYM PKS_DATAFORMAT_VIDEOINFOHEADER2}
  21326. TKSDataFormatVideoInfoHeader2 = tagKS_DATAFORMAT_VIDEOINFOHEADER2;
  21327. PKSDataFormatVideoinfoPalette = ^TKSDataFormatVideoinfoPalette;
  21328. tagKS_DATAFORMAT_VIDEOINFO_PALETTE = record
  21329. DataFormat : TKSDataFormat;
  21330. VideoInfo : TKSVideoInfo;
  21331. end;
  21332. {$EXTERNALSYM tagKS_DATAFORMAT_VIDEOINFO_PALETTE}
  21333. KS_DATAFORMAT_VIDEOINFO_PALETTE = tagKS_DATAFORMAT_VIDEOINFO_PALETTE;
  21334. {$EXTERNALSYM KS_DATAFORMAT_VIDEOINFO_PALETTE}
  21335. PKS_DATAFORMAT_VIDEOINFO_PALETTE = ^KS_DATAFORMAT_VIDEOINFO_PALETTE;
  21336. {$EXTERNALSYM PKS_DATAFORMAT_VIDEOINFO_PALETTE}
  21337. TKSDataFormatVideoinfoPalette = tagKS_DATAFORMAT_VIDEOINFO_PALETTE;
  21338. PKSDataFormatVBIInfoHeader = ^TKSDataFormatVBIInfoHeader;
  21339. tagKS_DATAFORMAT_VBIINFOHEADER = record
  21340. DataFormat : TKSDATAFORMAT;
  21341. VBIInfoHeader : TKSVBIInfoHeader;
  21342. end;
  21343. {$EXTERNALSYM tagKS_DATAFORMAT_VBIINFOHEADER}
  21344. KS_DATAFORMAT_VBIINFOHEADER = tagKS_DATAFORMAT_VBIINFOHEADER;
  21345. {$EXTERNALSYM KS_DATAFORMAT_VBIINFOHEADER}
  21346. PKS_DATAFORMAT_VBIINFOHEADER = ^KS_DATAFORMAT_VBIINFOHEADER;
  21347. {$EXTERNALSYM PKS_DATAFORMAT_VBIINFOHEADER}
  21348. TKSDataFormatVBIInfoHeader = tagKS_DATAFORMAT_VBIINFOHEADER;
  21349. PKSVideoStreamConfigCaps = ^TKSVideoStreamConfigCaps;
  21350. _KS_VIDEO_STREAM_CONFIG_CAPS = record
  21351. guid : TGUID; // will be MEDIATYPE_Video
  21352. VideoStandard : ULONG; // logical OR of all AnalogVideoStandards
  21353. // supported
  21354. InputSize : TSIZE; // the inherent size of the incoming signal
  21355. // (every pixel unique)
  21356. MinCroppingSize : TSIZE; // smallest rcSrc cropping rect allowed
  21357. MaxCroppingSize : TSIZE; // largest rcSrc cropping rect allowed
  21358. CropGranularityX : integer; // granularity of cropping size
  21359. CropGranularityY : integer;
  21360. CropAlignX : integer; // alignment of cropping rect
  21361. CropAlignY : integer;
  21362. MinOutputSize : TSIZE; // smallest bitmap stream can produce
  21363. MaxOutputSize : TSIZE; // largest bitmap stream can produce
  21364. OutputGranularityX : integer; // granularity of output bitmap size
  21365. OutputGranularityY : integer;
  21366. StretchTapsX : integer; // 0, no stretch, 1 pix dup, 2 interp, ...
  21367. StretchTapsY : integer; // Describes quality of hardware scaler
  21368. ShrinkTapsX : integer; //
  21369. ShrinkTapsY : integer; //
  21370. MinFrameInterval : int64; // 100 nS units
  21371. MaxFrameInterval : int64;
  21372. MinBitsPerSecond : longint;
  21373. MaxBitsPerSecond : longint;
  21374. end;
  21375. {$EXTERNALSYM _KS_VIDEO_STREAM_CONFIG_CAPS}
  21376. KS_VIDEO_STREAM_CONFIG_CAPS = _KS_VIDEO_STREAM_CONFIG_CAPS;
  21377. {$EXTERNALSYM KS_VIDEO_STREAM_CONFIG_CAPS}
  21378. PKS_VIDEO_STREAM_CONFIG_CAPS = ^KS_VIDEO_STREAM_CONFIG_CAPS;
  21379. {$EXTERNALSYM PKS_VIDEO_STREAM_CONFIG_CAPS}
  21380. TKSVideoStreamConfigCaps = _KS_VIDEO_STREAM_CONFIG_CAPS;
  21381. //===========================================================================
  21382. // Video DATARANGEs
  21383. //===========================================================================
  21384. PKSDataRangeVideo = ^TKSDataRangeVideo;
  21385. tagKS_DATARANGE_VIDEO = record
  21386. DataRange : TKSDataRange;
  21387. bFixedSizeSamples : BOOL; // all samples same size?
  21388. bTemporalCompression : BOOL; // all I frames?
  21389. StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  21390. MemoryAllocationFlags : DWORD; // KS_VIDEO_ALLOC_*
  21391. ConfigCaps : TKSVideoStreamConfigCaps;
  21392. VideoInfoHeader : TKSVideoInfoHeader; // default format
  21393. end;
  21394. {$EXTERNALSYM tagKS_DATARANGE_VIDEO}
  21395. KS_DATARANGE_VIDEO = tagKS_DATARANGE_VIDEO;
  21396. {$EXTERNALSYM KS_DATARANGE_VIDEO}
  21397. PKS_DATARANGE_VIDEO = ^KS_DATARANGE_VIDEO;
  21398. {$EXTERNALSYM PKS_DATARANGE_VIDEO}
  21399. TKSDataRangeVideo = tagKS_DATARANGE_VIDEO;
  21400. PKSDataRangeVideo2 = ^TKSDataRangeVideo2;
  21401. tagKS_DATARANGE_VIDEO2 = record
  21402. DataRange : TKSDataRange;
  21403. bFixedSizeSamples : BOOL; // all samples same size?
  21404. bTemporalCompression : BOOL; // all I frames?
  21405. StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  21406. MemoryAllocationFlags : DWORD; // KS_VIDEO_ALLOC_*
  21407. ConfigCaps : TKSVideoStreamConfigCaps;
  21408. VideoInfoHeader : TKSVideoInfoHeader2; // default format
  21409. end;
  21410. {$EXTERNALSYM tagKS_DATARANGE_VIDEO2}
  21411. KS_DATARANGE_VIDEO2 = tagKS_DATARANGE_VIDEO2;
  21412. {$EXTERNALSYM KS_DATARANGE_VIDEO2}
  21413. PKS_DATARANGE_VIDEO2 = ^KS_DATARANGE_VIDEO2;
  21414. {$EXTERNALSYM PKS_DATARANGE_VIDEO2}
  21415. TKSDataRangeVideo2 = tagKS_DATARANGE_VIDEO2;
  21416. PKSDataRangeMPEG1Video = ^TKSDataRangeMPEG1Video;
  21417. tagKS_DATARANGE_MPEG1_VIDEO = record
  21418. DataRange : TKSDataRange ;
  21419. bFixedSizeSamples : BOOL ; // all samples same size?
  21420. bTemporalCompression : BOOL ; // all I frames?
  21421. StreamDescriptionFlags : DWORD ; // KS_VIDEO_DESC_*
  21422. MemoryAllocationFlags : DWORD ; // KS_VIDEO_ALLOC_*
  21423. ConfigCaps : TKSVideoStreamConfigCaps ;
  21424. VideoInfoHeader : TKSMPEG1VideoInfo ; // default format
  21425. end;
  21426. {$EXTERNALSYM tagKS_DATARANGE_MPEG1_VIDEO}
  21427. KS_DATARANGE_MPEG1_VIDEO = tagKS_DATARANGE_MPEG1_VIDEO;
  21428. {$EXTERNALSYM KS_DATARANGE_MPEG1_VIDEO}
  21429. PKS_DATARANGE_MPEG1_VIDEO = ^KS_DATARANGE_MPEG1_VIDEO;
  21430. {$EXTERNALSYM PKS_DATARANGE_MPEG1_VIDEO}
  21431. TKSDataRangeMPEG1Video = tagKS_DATARANGE_MPEG1_VIDEO;
  21432. PKSDataRangeMPEG2Video = ^TKSDataRangeMPEG2Video;
  21433. tagKS_DATARANGE_MPEG2_VIDEO = record
  21434. DataRange : TKSDataRange;
  21435. bFixedSizeSamples : BOOL; // all samples same size?
  21436. bTemporalCompression : BOOL; // all I frames?
  21437. StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  21438. MemoryAllocationFlags : DWORD; // KS_VIDEO_ALLOC_*
  21439. ConfigCaps : TKSVideoStreamConfigCaps;
  21440. VideoInfoHeader : TKSMPEGVideoInfo2; // default format
  21441. end;
  21442. {$EXTERNALSYM tagKS_DATARANGE_MPEG2_VIDEO}
  21443. KS_DATARANGE_MPEG2_VIDEO = tagKS_DATARANGE_MPEG2_VIDEO;
  21444. {$EXTERNALSYM KS_DATARANGE_MPEG2_VIDEO}
  21445. PKS_DATARANGE_MPEG2_VIDEO = ^KS_DATARANGE_MPEG2_VIDEO;
  21446. {$EXTERNALSYM PKS_DATARANGE_MPEG2_VIDEO}
  21447. TKSDataRangeMPEG2Video = tagKS_DATARANGE_MPEG2_VIDEO;
  21448. PKSDataRangeVideoPalette = ^TKSDataRangeVideoPalette;
  21449. tagKS_DATARANGE_VIDEO_PALETTE = record
  21450. DataRange : TKSDataRange;
  21451. bFixedSizeSamples : BOOL; // all samples same size?
  21452. bTemporalCompression : BOOL; // all I frames?
  21453. StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  21454. MemoryAllocationFlags : DWORD; // KS_VIDEO_ALLOC_*
  21455. ConfigCaps : TKSVideoStreamConfigCaps;
  21456. VideoInfo : TKSVideoInfo; // default format
  21457. end;
  21458. {$EXTERNALSYM tagKS_DATARANGE_VIDEO_PALETTE}
  21459. KS_DATARANGE_VIDEO_PALETTE = tagKS_DATARANGE_VIDEO_PALETTE;
  21460. {$EXTERNALSYM KS_DATARANGE_VIDEO_PALETTE}
  21461. PKS_DATARANGE_VIDEO_PALETTE = ^KS_DATARANGE_VIDEO_PALETTE;
  21462. {$EXTERNALSYM PKS_DATARANGE_VIDEO_PALETTE}
  21463. TKSDataRangeVideoPalette = tagKS_DATARANGE_VIDEO_PALETTE;
  21464. PKSDataRangeVideoVBI = ^TKSDataRangeVideoVBI;
  21465. tagKS_DATARANGE_VIDEO_VBI = record
  21466. DataRange : TKSDataRange;
  21467. bFixedSizeSamples : BOOL; // all samples same size?
  21468. bTemporalCompression : BOOL; // all I frames?
  21469. StreamDescriptionFlags : DWORD; // KS_VIDEO_DESC_*
  21470. MemoryAllocationFlags : DWORD; // KS_VIDEO_ALLOC_*
  21471. ConfigCaps : TKSVideoStreamConfigCaps;
  21472. VBIInfoHeader : TKSVBIInfoHeader; // default format
  21473. end;
  21474. {$EXTERNALSYM tagKS_DATARANGE_VIDEO_VBI}
  21475. KS_DATARANGE_VIDEO_VBI = tagKS_DATARANGE_VIDEO_VBI;
  21476. {$EXTERNALSYM KS_DATARANGE_VIDEO_VBI}
  21477. PKS_DATARANGE_VIDEO_VBI = ^KS_DATARANGE_VIDEO_VBI;
  21478. {$EXTERNALSYM PKS_DATARANGE_VIDEO_VBI}
  21479. TKSDataRangeVideoVBI = tagKS_DATARANGE_VIDEO_VBI;
  21480. PKSDataRangeAnalogVideo = ^TKSDataRangeAnalogVideo;
  21481. tagKS_DATARANGE_ANALOGVIDEO = record
  21482. DataRange : TKSDataRange;
  21483. AnalogVideoInfo : TKSAnalogVideoInfo;
  21484. end;
  21485. {$EXTERNALSYM tagKS_DATARANGE_ANALOGVIDEO}
  21486. KS_DATARANGE_ANALOGVIDEO = tagKS_DATARANGE_ANALOGVIDEO;
  21487. {$EXTERNALSYM KS_DATARANGE_ANALOGVIDEO}
  21488. PKS_DATARANGE_ANALOGVIDEO = ^KS_DATARANGE_ANALOGVIDEO;
  21489. {$EXTERNALSYM PKS_DATARANGE_ANALOGVIDEO}
  21490. TKSDataRangeAnalogVideo = tagKS_DATARANGE_ANALOGVIDEO;
  21491. //===========================================================================
  21492. // StreamDescriptionFlags
  21493. //
  21494. // These define the "purpose" of each video stream
  21495. //===========================================================================
  21496. const
  21497. KS_VIDEOSTREAM_PREVIEW = $0001; // Preview stream
  21498. {$EXTERNALSYM KS_VIDEOSTREAM_PREVIEW}
  21499. KS_VIDEOSTREAM_CAPTURE = $0002; // Capture stream
  21500. {$EXTERNALSYM KS_VIDEOSTREAM_CAPTURE}
  21501. KS_VIDEOSTREAM_VBI = $0010; // Field1 VBI
  21502. {$EXTERNALSYM KS_VIDEOSTREAM_VBI}
  21503. KS_VIDEOSTREAM_NABTS = $0020; // Field1 NABTS
  21504. {$EXTERNALSYM KS_VIDEOSTREAM_NABTS}
  21505. KS_VIDEOSTREAM_CC = $0100; // Closed Captioning
  21506. {$EXTERNALSYM KS_VIDEOSTREAM_CC}
  21507. KS_VIDEOSTREAM_EDS = $0200; // Extended Data Services
  21508. {$EXTERNALSYM KS_VIDEOSTREAM_EDS}
  21509. KS_VIDEOSTREAM_TELETEXT = $0400; // Field1 Teletext only
  21510. {$EXTERNALSYM KS_VIDEOSTREAM_TELETEXT}
  21511. KS_VIDEOSTREAM_STILL = $1000; // Still image input
  21512. {$EXTERNALSYM KS_VIDEOSTREAM_STILL}
  21513. KS_VIDEOSTREAM_IS_VPE = $8000; // Is a VPE based stream?
  21514. {$EXTERNALSYM KS_VIDEOSTREAM_IS_VPE}
  21515. // MemoryAllocationFlags
  21516. KS_VIDEO_ALLOC_VPE_SYSTEM = $0001; // VPE surface in system memory
  21517. {$EXTERNALSYM KS_VIDEO_ALLOC_VPE_SYSTEM}
  21518. KS_VIDEO_ALLOC_VPE_DISPLAY = $0002; // VPE surface in display memory
  21519. {$EXTERNALSYM KS_VIDEO_ALLOC_VPE_DISPLAY}
  21520. KS_VIDEO_ALLOC_VPE_AGP = $0004; // VPE surface in AGP memory
  21521. {$EXTERNALSYM KS_VIDEO_ALLOC_VPE_AGP}
  21522. //////////////////////////////////////////////////////////////
  21523. // Capture driver VBI property sets
  21524. //////////////////////////////////////////////////////////////
  21525. // {F162C607-7B35-496f-AD7F-2DCA3B46B718}
  21526. KSPROPSETID_VBICAP_PROPERTIES : TGUID = '{F162C607-7B35-496f-AD7F-2DCA3B46B718}';
  21527. {$EXTERNALSYM KSPROPSETID_VBICAP_PROPERTIES}
  21528. type
  21529. KSPROPERTY_VBICAP = (
  21530. {$IFNDEF COMPILER6_UP}
  21531. KSPROPERTY_VBICAP_PROPERTIES_INVALID_0,
  21532. KSPROPERTY_VBICAP_PROPERTIES_PROTECTION
  21533. {$ELSE}
  21534. KSPROPERTY_VBICAP_PROPERTIES_PROTECTION = 1
  21535. {$ENDIF}
  21536. );
  21537. {$EXTERNALSYM KSPROPERTY_VBICAP}
  21538. TKSPropertyVBICap = KSPROPERTY_VBICAP;
  21539. PVBICapPropertiesProtectionS = ^TVBICapPropertiesProtectionS;
  21540. _VBICAP_PROPERTIES_PROTECTION_S = record
  21541. Property_ : KSPROPERTY;
  21542. StreamIndex : ULONG; // Index of stream
  21543. Status : ULONG;
  21544. end;
  21545. {$EXTERNALSYM _VBICAP_PROPERTIES_PROTECTION_S}
  21546. VBICAP_PROPERTIES_PROTECTION_S = _VBICAP_PROPERTIES_PROTECTION_S;
  21547. {$EXTERNALSYM VBICAP_PROPERTIES_PROTECTION_S}
  21548. PVBICAP_PROPERTIES_PROTECTION_S = ^VBICAP_PROPERTIES_PROTECTION_S;
  21549. {$EXTERNALSYM PVBICAP_PROPERTIES_PROTECTION_S}
  21550. TVBICapPropertiesProtectionS = _VBICAP_PROPERTIES_PROTECTION_S;
  21551. const
  21552. KS_VBICAP_PROTECTION_MV_PRESENT = $0001;
  21553. {$EXTERNALSYM KS_VBICAP_PROTECTION_MV_PRESENT}
  21554. KS_VBICAP_PROTECTION_MV_HARDWARE = $0002;
  21555. {$EXTERNALSYM KS_VBICAP_PROTECTION_MV_HARDWARE}
  21556. KS_VBICAP_PROTECTION_MV_DETECTED = $0004;
  21557. {$EXTERNALSYM KS_VBICAP_PROTECTION_MV_DETECTED}
  21558. //***************************************************************************/
  21559. //* VBI Related GUIDs, structs and properties for codecs(generic, cc, nabts)*/
  21560. //***************************************************************************/
  21561. ///////////////////////////////////////////////////////////////////////////////////////
  21562. // IP/NABTS Protocol Reserved Group IDs - Overall Range 0x800-0x8FF [Decimal 2048-2079]
  21563. // Intervening values(0-F) are used if there are multiple providers at a particular tier
  21564. ///////////////////////////////////////////////////////////////////////////////////////
  21565. // Used by individual content creators in show footage/data
  21566. KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE = $800;
  21567. {$EXTERNALSYM KS_NABTS_GROUPID_ORIGINAL_CONTENT_BASE}
  21568. KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE = $810;
  21569. {$EXTERNALSYM KS_NABTS_GROUPID_ORIGINAL_CONTENT_ADVERTISER_BASE}
  21570. // Used by production company in finished show data
  21571. KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE = $820;
  21572. {$EXTERNALSYM KS_NABTS_GROUPID_PRODUCTION_COMPANY_CONTENT_BASE}
  21573. KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE = $830;
  21574. {$EXTERNALSYM KS_NABTS_GROUPID_PRODUCTION_COMPANY_ADVERTISER_BASE}
  21575. // Used by broadcast syndicates in syndicated show data
  21576. KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE = $840;
  21577. {$EXTERNALSYM KS_NABTS_GROUPID_SYNDICATED_SHOW_CONTENT_BASE}
  21578. KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE = $850;
  21579. {$EXTERNALSYM KS_NABTS_GROUPID_SYNDICATED_SHOW_ADVERTISER_BASE}
  21580. // Used by tv networks in network television data
  21581. KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE = $860;
  21582. {$EXTERNALSYM KS_NABTS_GROUPID_NETWORK_WIDE_CONTENT_BASE}
  21583. KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE = $870;
  21584. {$EXTERNALSYM KS_NABTS_GROUPID_NETWORK_WIDE_ADVERTISER_BASE}
  21585. // Used by telvision stations in local programming data
  21586. KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE = $880;
  21587. {$EXTERNALSYM KS_NABTS_GROUPID_TELEVISION_STATION_CONTENT_BASE}
  21588. KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE = $890;
  21589. {$EXTERNALSYM KS_NABTS_GROUPID_TELEVISION_STATION_ADVERTISER_BASE}
  21590. // Used by cable system in cable head-end originated data
  21591. KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE = $8A0;
  21592. {$EXTERNALSYM KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_CONTENT_BASE}
  21593. KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE = $8B0;
  21594. {$EXTERNALSYM KS_NABTS_GROUPID_LOCAL_CABLE_SYSTEM_ADVERTISER_BASE}
  21595. // The values between 0x8C0 - 0x8EF are reserved for future expansion
  21596. // Used by Microsoft for Testing purposes (0x8F0 - 0x8FF)
  21597. KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE = $8F0;
  21598. {$EXTERNALSYM KS_NABTS_GROUPID_MICROSOFT_RESERVED_TEST_DATA_BASE}
  21599. //////////////////////////////////////////////////////////////
  21600. // Stream Format FEC-corrected NABTS bundles
  21601. //////////////////////////////////////////////////////////////
  21602. KSDATAFORMAT_TYPE_NABTS : TGUID = '{E757BCA0-39AC-11d1-A9F5-00C04FBBDE8F}';
  21603. {$EXTERNALSYM KSDATAFORMAT_TYPE_NABTS}
  21604. KSDATAFORMAT_SUBTYPE_NABTS_FEC : TGUID = '{E757BCA1-39AC-11d1-A9F5-00C04FBBDE8F}';
  21605. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_NABTS_FEC}
  21606. //////////////////////////////////////////////////////////////
  21607. // NABTS Bundle data structure definition
  21608. //////////////////////////////////////////////////////////////
  21609. MAX_NABTS_VBI_LINES_PER_FIELD = 11;
  21610. {$EXTERNALSYM MAX_NABTS_VBI_LINES_PER_FIELD}
  21611. NABTS_LINES_PER_BUNDLE = 16;
  21612. {$EXTERNALSYM NABTS_LINES_PER_BUNDLE}
  21613. NABTS_PAYLOAD_PER_LINE = 28;
  21614. {$EXTERNALSYM NABTS_PAYLOAD_PER_LINE}
  21615. NABTS_BYTES_PER_LINE = 36;
  21616. {$EXTERNALSYM NABTS_BYTES_PER_LINE}
  21617. type
  21618. PNABTSFecBuffer = ^TNABTSFecBuffer;
  21619. _NABTSFEC_BUFFER = record
  21620. dataSize : ULONG;
  21621. groupID : word;
  21622. Reserved : word;
  21623. data : array[0..(NABTS_LINES_PER_BUNDLE * NABTS_PAYLOAD_PER_LINE)-1] of UCHAR;
  21624. end;
  21625. {$EXTERNALSYM _NABTSFEC_BUFFER}
  21626. NABTSFEC_BUFFER = _NABTSFEC_BUFFER;
  21627. {$EXTERNALSYM NABTSFEC_BUFFER}
  21628. PNABTSFEC_BUFFER = ^NABTSFEC_BUFFER;
  21629. {$EXTERNALSYM PNABTSFEC_BUFFER}
  21630. TNABTSFecBuffer = _NABTSFEC_BUFFER;
  21631. //////////////////////////////////////////////////////////////
  21632. // vbi codec filtering pin properties
  21633. //////////////////////////////////////////////////////////////
  21634. const
  21635. KSPROPSETID_VBICodecFiltering : TGUID = '{cafeb0ca-8715-11d0-bd6a-0035c0edbabe}';
  21636. {$EXTERNALSYM KSPROPSETID_VBICodecFiltering}
  21637. type
  21638. KSPROPERTY_VBICODECFILTERING = (
  21639. {$IFNDEF COMPILER6_UP}
  21640. KSPROPERTY_VBICODECFILTERING_INVALID_0,
  21641. KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY,
  21642. {$ELSE}
  21643. KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY = 1,
  21644. {$ENDIF}
  21645. KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY,
  21646. KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY,
  21647. KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY,
  21648. KSPROPERTY_VBICODECFILTERING_STATISTICS
  21649. );
  21650. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING}
  21651. TKSPropertyVBICodecFiltering = KSPROPERTY_VBICODECFILTERING;
  21652. PVBICodecFilteringScanlines = ^TVBICodecFilteringScanlines;
  21653. _VBICODECFILTERING_SCANLINES = record
  21654. DwordBitArray : array[0..31] of DWORD; // An array of scanline bits 0..1024(32*32)
  21655. end;
  21656. {$EXTERNALSYM _VBICODECFILTERING_SCANLINES}
  21657. VBICODECFILTERING_SCANLINES = _VBICODECFILTERING_SCANLINES;
  21658. {$EXTERNALSYM VBICODECFILTERING_SCANLINES}
  21659. PVBICODECFILTERING_SCANLINES = ^VBICODECFILTERING_SCANLINES;
  21660. {$EXTERNALSYM PVBICODECFILTERING_SCANLINES}
  21661. TVBICodecFilteringScanlines = _VBICODECFILTERING_SCANLINES;
  21662. PVBICodecFilteringNABTSSubStreams = ^TVBICodecFilteringNABTSSubStreams;
  21663. _VBICODECFILTERING_NABTS_SUBSTREAMS = record
  21664. SubstreamMask : array[0..127] of DWORD; // An array of 4096 bits (one for each NABTS GroupID)
  21665. end;
  21666. {$EXTERNALSYM _VBICODECFILTERING_NABTS_SUBSTREAMS}
  21667. VBICODECFILTERING_NABTS_SUBSTREAMS = _VBICODECFILTERING_NABTS_SUBSTREAMS;
  21668. {$EXTERNALSYM VBICODECFILTERING_NABTS_SUBSTREAMS}
  21669. PVBICODECFILTERING_NABTS_SUBSTREAMS = ^VBICODECFILTERING_NABTS_SUBSTREAMS;
  21670. {$EXTERNALSYM PVBICODECFILTERING_NABTS_SUBSTREAMS}
  21671. TVBICodecFilteringNABTSSubStreams = _VBICODECFILTERING_NABTS_SUBSTREAMS;
  21672. PVBICodecFilteringCCSubStreams = ^TVBICodecFilteringCCSubStreams;
  21673. _VBICODECFILTERING_CC_SUBSTREAMS = record
  21674. SubstreamMask : DWORD; // An array of 32 bits (see KS_CC_SUBSTREAM *)
  21675. end;
  21676. {$EXTERNALSYM _VBICODECFILTERING_CC_SUBSTREAMS}
  21677. VBICODECFILTERING_CC_SUBSTREAMS = _VBICODECFILTERING_CC_SUBSTREAMS;
  21678. {$EXTERNALSYM VBICODECFILTERING_CC_SUBSTREAMS}
  21679. PVBICODECFILTERING_CC_SUBSTREAMS = ^VBICODECFILTERING_CC_SUBSTREAMS;
  21680. {$EXTERNALSYM PVBICODECFILTERING_CC_SUBSTREAMS}
  21681. TVBICodecFilteringCCSubStreams = _VBICODECFILTERING_CC_SUBSTREAMS;
  21682. const
  21683. KS_CC_SUBSTREAM_ODD = $0001;
  21684. {$EXTERNALSYM KS_CC_SUBSTREAM_ODD}
  21685. KS_CC_SUBSTREAM_EVEN = $0002;
  21686. {$EXTERNALSYM KS_CC_SUBSTREAM_EVEN}
  21687. KS_CC_SUBSTREAM_SERVICE_MASK_DC1 = $00F0; // DataChannel1: CC1,CC3,T1,T3
  21688. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_MASK_DC1}
  21689. KS_CC_SUBSTREAM_SERVICE_CC1 = $0010;
  21690. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC1}
  21691. KS_CC_SUBSTREAM_SERVICE_CC3 = $0020;
  21692. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC3}
  21693. KS_CC_SUBSTREAM_SERVICE_T1 = $0040;
  21694. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T1}
  21695. KS_CC_SUBSTREAM_SERVICE_T3 = $0080;
  21696. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T3}
  21697. KS_CC_SUBSTREAM_SERVICE_MASK_DC2 = $0F00; // DataChannel2: CC2,CC4,T2,T4
  21698. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_MASK_DC2}
  21699. KS_CC_SUBSTREAM_SERVICE_CC2 = $0100;
  21700. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC2}
  21701. KS_CC_SUBSTREAM_SERVICE_CC4 = $0200;
  21702. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_CC4}
  21703. KS_CC_SUBSTREAM_SERVICE_T2 = $0400;
  21704. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T2}
  21705. KS_CC_SUBSTREAM_SERVICE_T4 = $0800;
  21706. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_T4}
  21707. KS_CC_SUBSTREAM_SERVICE_XDS = $1000;
  21708. {$EXTERNALSYM KS_CC_SUBSTREAM_SERVICE_XDS}
  21709. ///////////////////////////////////////////////////////////////////
  21710. // Hardware decoded CC stream format
  21711. ///////////////////////////////////////////////////////////////////
  21712. CC_MAX_HW_DECODE_LINES = 12;
  21713. {$EXTERNALSYM CC_MAX_HW_DECODE_LINES}
  21714. type
  21715. PCCBytePair = ^TCCBytePair;
  21716. _CC_BYTE_PAIR = record
  21717. Decoded : array[0..1] of BYTE;
  21718. Reserved : word;
  21719. end;
  21720. {$EXTERNALSYM _CC_BYTE_PAIR}
  21721. CC_BYTE_PAIR = _CC_BYTE_PAIR;
  21722. {$EXTERNALSYM CC_BYTE_PAIR}
  21723. PCC_BYTE_PAIR = ^CC_BYTE_PAIR;
  21724. {$EXTERNALSYM PCC_BYTE_PAIR}
  21725. TCCBytePair = _CC_BYTE_PAIR;
  21726. PCCHWField = ^TCCHWField;
  21727. _CC_HW_FIELD = record
  21728. ScanlinesRequested : TVBICodecFilteringScanlines;
  21729. fieldFlags : ULONG; // KS_VBI_FLAG_FIELD1,2
  21730. PictureNumber : int64;
  21731. Lines : array[0..CC_MAX_HW_DECODE_LINES-1] of TCCBytePair;
  21732. end;
  21733. {$EXTERNALSYM _CC_HW_FIELD}
  21734. CC_HW_FIELD = _CC_HW_FIELD;
  21735. {$EXTERNALSYM CC_HW_FIELD}
  21736. PCC_HW_FIELD = ^CC_HW_FIELD;
  21737. {$EXTERNALSYM PCC_HW_FIELD}
  21738. TCCHWField = _CC_HW_FIELD;
  21739. ///////////////////////////////////////////////////////////////////
  21740. // Raw NABTS stream format (TYPE_NABTS, SUBTYPE_NABTS)
  21741. ///////////////////////////////////////////////////////////////////
  21742. // These low-level structures are byte packed( -Zp1 )
  21743. PNABTSBufferLine = ^TNABTSBufferLine;
  21744. _NABTS_BUFFER_LINE = record
  21745. Confidence : BYTE;
  21746. Bytes : array[0..NABTS_BYTES_PER_LINE-1] of BYTE;
  21747. end;
  21748. {$EXTERNALSYM _NABTS_BUFFER_LINE}
  21749. NABTS_BUFFER_LINE = _NABTS_BUFFER_LINE;
  21750. {$EXTERNALSYM NABTS_BUFFER_LINE}
  21751. PNABTS_BUFFER_LINE = ^NABTS_BUFFER_LINE;
  21752. {$EXTERNALSYM PNABTS_BUFFER_LINE}
  21753. TNABTSBufferLine = _NABTS_BUFFER_LINE;
  21754. const
  21755. NABTS_BUFFER_PICTURENUMBER_SUPPORT = 1;
  21756. {$EXTERNALSYM NABTS_BUFFER_PICTURENUMBER_SUPPORT}
  21757. type
  21758. PNABTSBuffer = ^TNABTSBuffer;
  21759. _NABTS_BUFFER = record
  21760. ScanlinesRequested : TVBICodecFilteringScanlines;
  21761. PictureNumber : int64;
  21762. NabtsLines : array[0..MAX_NABTS_VBI_LINES_PER_FIELD-1] of TNABTSBufferLine;
  21763. end;
  21764. {$EXTERNALSYM _NABTS_BUFFER}
  21765. NABTS_BUFFER = _NABTS_BUFFER;
  21766. {$EXTERNALSYM NABTS_BUFFER}
  21767. PNABTS_BUFFER = ^NABTS_BUFFER;
  21768. {$EXTERNALSYM PNABTS_BUFFER}
  21769. TNABTSBuffer = _NABTS_BUFFER;
  21770. //////////////////////////////////////////////////////////////
  21771. // WST Codec Teletext Media Sample Format
  21772. //////////////////////////////////////////////////////////////
  21773. const
  21774. WST_TVTUNER_CHANGE_BEGIN_TUNE = $1000; // Starting a tuning operation
  21775. {$EXTERNALSYM WST_TVTUNER_CHANGE_BEGIN_TUNE}
  21776. WST_TVTUNER_CHANGE_END_TUNE = $2000; // Ending a tuning operation
  21777. {$EXTERNALSYM WST_TVTUNER_CHANGE_END_TUNE}
  21778. MAX_WST_VBI_LINES_PER_FIELD = 17;
  21779. {$EXTERNALSYM MAX_WST_VBI_LINES_PER_FIELD}
  21780. WST_BYTES_PER_LINE = 42;
  21781. {$EXTERNALSYM WST_BYTES_PER_LINE}
  21782. type
  21783. PWSTBufferLine = ^TWSTBufferLine;
  21784. _WST_BUFFER_LINE = record
  21785. Confidence: BYTE;
  21786. Bytes : array[0..WST_BYTES_PER_LINE-1] of BYTE;
  21787. end;
  21788. {$EXTERNALSYM _WST_BUFFER_LINE}
  21789. WST_BUFFER_LINE = _WST_BUFFER_LINE;
  21790. {$EXTERNALSYM WST_BUFFER_LINE}
  21791. PWST_BUFFER_LINE = ^WST_BUFFER_LINE;
  21792. {$EXTERNALSYM PWST_BUFFER_LINE}
  21793. TWSTBufferLine = _WST_BUFFER_LINE;
  21794. PWSTBuffer = ^TWSTBuffer;
  21795. _WST_BUFFER = record
  21796. ScanlinesRequested: TVBICodecFilteringScanlines;
  21797. WstLines: array[0..MAX_WST_VBI_LINES_PER_FIELD-1] of TWSTBufferLine;
  21798. end;
  21799. {$EXTERNALSYM _WST_BUFFER}
  21800. WST_BUFFER = _WST_BUFFER;
  21801. {$EXTERNALSYM WST_BUFFER}
  21802. PWST_BUFFER = ^WST_BUFFER;
  21803. {$EXTERNALSYM PWST_BUFFER}
  21804. TWSTBuffer = _WST_BUFFER;
  21805. //
  21806. // Common codec statistics
  21807. //
  21808. PVBICodecFilteringStatisticsCommon = ^TVBICodecFilteringStatisticsCommon;
  21809. _VBICODECFILTERING_STATISTICS_COMMON = record
  21810. InputSRBsProcessed : DWORD; // upstream SRBs received
  21811. OutputSRBsProcessed : DWORD; // downstream SRBs sent
  21812. SRBsIgnored : DWORD; // SRBs ignored due to no requests
  21813. InputSRBsMissing : DWORD; // SRBs dropped upstream
  21814. OutputSRBsMissing : DWORD; // Output dropped because no SRB pending
  21815. OutputFailures : DWORD; // dropped because of other failure
  21816. InternalErrors : DWORD; // could not process due to int. failure
  21817. ExternalErrors : DWORD; // could not process due to ext. failure
  21818. InputDiscontinuities : DWORD; // discontinuities received
  21819. DSPFailures : DWORD; // DSP confidence failure
  21820. TvTunerChanges : DWORD; // number of received KS_TVTUNER_CHANGE_BEGIN_TUNE and KS_TVTUNER_CHANGE_END_TUNE pairs.
  21821. VBIHeaderChanges : DWORD; // number of received KS_VBI_FLAG_VBIINFOHEADER_CHANGE
  21822. LineConfidenceAvg : DWORD; // Average of all DSP confidence results
  21823. BytesOutput : DWORD; // Bytes sent downstream
  21824. end;
  21825. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_COMMON}
  21826. VBICODECFILTERING_STATISTICS_COMMON = _VBICODECFILTERING_STATISTICS_COMMON;
  21827. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_COMMON}
  21828. PVBICODECFILTERING_STATISTICS_COMMON = ^VBICODECFILTERING_STATISTICS_COMMON;
  21829. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_COMMON}
  21830. TVBICodecFilteringStatisticsCommon = _VBICODECFILTERING_STATISTICS_COMMON;
  21831. PVBICodecFilteringStatisticsCommonPin = ^TVBICodecFilteringStatisticsCommonPin;
  21832. _VBICODECFILTERING_STATISTICS_COMMON_PIN = record
  21833. SRBsProcessed : DWORD; // SRBs sent/received
  21834. SRBsIgnored : DWORD; // SRBs ignored due to filtering
  21835. SRBsMissing : DWORD; // SRBs not sent/received
  21836. InternalErrors : DWORD; // could not send/receive due to int. failure
  21837. ExternalErrors : DWORD; // could not send/receive due to ext. failure
  21838. Discontinuities : DWORD; // discontinuities received/sent
  21839. LineConfidenceAvg : DWORD; // Average of all DSP confidence results for this pin
  21840. BytesOutput : DWORD; // Bytes sent downstream
  21841. end;
  21842. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_COMMON_PIN}
  21843. VBICODECFILTERING_STATISTICS_COMMON_PIN = _VBICODECFILTERING_STATISTICS_COMMON_PIN;
  21844. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_COMMON_PIN}
  21845. PVBICODECFILTERING_STATISTICS_COMMON_PIN = ^VBICODECFILTERING_STATISTICS_COMMON_PIN;
  21846. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_COMMON_PIN}
  21847. TVBICodecFilteringStatisticsCommonPin = _VBICODECFILTERING_STATISTICS_COMMON_PIN;
  21848. //
  21849. // Codec-specific statistics - NABTS
  21850. //
  21851. PVBICodecFilteringStatisticsNABTS = ^TVBICodecFilteringStatisticsNABTS;
  21852. _VBICODECFILTERING_STATISTICS_NABTS = record
  21853. Common : TVBICodecFilteringStatisticsCommon ; // Generic VBI statistics
  21854. FECBundleBadLines : DWORD; // Un-FEC-correctable lines
  21855. FECQueueOverflows : DWORD; // Number of times FEC queue overflowed
  21856. FECCorrectedLines : DWORD; // Lines CSUM corrected by FEC
  21857. FECUncorrectableLines : DWORD; // FEC input lines not CSUM correctable
  21858. BundlesProcessed : DWORD; // Bundles received from FEC
  21859. BundlesSent2IP : DWORD; // Bundles sent to IP driver
  21860. FilteredLines : DWORD; // Lines processed and then dropped
  21861. // because no one was interested
  21862. end;
  21863. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_NABTS}
  21864. VBICODECFILTERING_STATISTICS_NABTS = _VBICODECFILTERING_STATISTICS_NABTS;
  21865. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_NABTS}
  21866. PVBICODECFILTERING_STATISTICS_NABTS = ^VBICODECFILTERING_STATISTICS_NABTS;
  21867. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_NABTS}
  21868. TVBICodecFilteringStatisticsNABTS = _VBICODECFILTERING_STATISTICS_NABTS;
  21869. PVBICodecFilteringStatisticsNABTSPin = ^TVBICodecFilteringStatisticsNABTSPin;
  21870. _VBICODECFILTERING_STATISTICS_NABTS_PIN = record
  21871. Common : TVBICodecFilteringStatisticsCommonPin; // Generic VBI pin statistics
  21872. end;
  21873. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_NABTS_PIN}
  21874. VBICODECFILTERING_STATISTICS_NABTS_PIN = _VBICODECFILTERING_STATISTICS_NABTS_PIN;
  21875. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_NABTS_PIN}
  21876. PVBICODECFILTERING_STATISTICS_NABTS_PIN = ^VBICODECFILTERING_STATISTICS_NABTS_PIN;
  21877. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_NABTS_PIN}
  21878. TVBICodecFilteringStatisticsNABTSPin = _VBICODECFILTERING_STATISTICS_NABTS_PIN;
  21879. //
  21880. // Codec-specific statistics - Closed Caption
  21881. //
  21882. PVBICodecFilteringStatisticsCC = ^TVBICodecFilteringStatisticsCC;
  21883. _VBICODECFILTERING_STATISTICS_CC = record
  21884. Common : TVBICodecFilteringStatisticsCommon; // Generic VBI statistics
  21885. end;
  21886. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_CC}
  21887. VBICODECFILTERING_STATISTICS_CC = _VBICODECFILTERING_STATISTICS_CC;
  21888. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_CC}
  21889. PVBICODECFILTERING_STATISTICS_CC = ^VBICODECFILTERING_STATISTICS_CC;
  21890. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_CC}
  21891. TVBICodecFilteringStatisticsCC = _VBICODECFILTERING_STATISTICS_CC;
  21892. PVBICodecFilteringStatisticsCCPin = ^TVBICodecFilteringStatisticsCCPin;
  21893. _VBICODECFILTERING_STATISTICS_CC_PIN = record
  21894. Common : TVBICodecFilteringStatisticsCommonPin; // Generic VBI pin statistics
  21895. end;
  21896. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_CC_PIN}
  21897. VBICODECFILTERING_STATISTICS_CC_PIN = _VBICODECFILTERING_STATISTICS_CC_PIN;
  21898. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_CC_PIN}
  21899. PVBICODECFILTERING_STATISTICS_CC_PIN = ^VBICODECFILTERING_STATISTICS_CC_PIN;
  21900. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_CC_PIN}
  21901. TVBICodecFilteringStatisticsCCPin = _VBICODECFILTERING_STATISTICS_CC_PIN;
  21902. //
  21903. // Codec-specific statistics - Closed Caption
  21904. //
  21905. PVBICodecFilteringStatisticsTeletext = ^TVBICodecFilteringStatisticsTeletext;
  21906. _VBICODECFILTERING_STATISTICS_TELETEXT = record
  21907. Common: TVBICodecFilteringStatisticsCommon ; // Generic VBI statistics
  21908. end;
  21909. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_TELETEXT}
  21910. VBICODECFILTERING_STATISTICS_TELETEXT = _VBICODECFILTERING_STATISTICS_TELETEXT;
  21911. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_TELETEXT}
  21912. PVBICODECFILTERING_STATISTICS_TELETEXT = ^VBICODECFILTERING_STATISTICS_TELETEXT;
  21913. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_TELETEXT}
  21914. TVBICodecFilteringStatisticsTeletext = _VBICODECFILTERING_STATISTICS_TELETEXT;
  21915. PVBICodecFilteringStatisticsTeletextPin = ^TVBICodecFilteringStatisticsTeletextPin;
  21916. _VBICODECFILTERING_STATISTICS_TELETEXT_PIN = record
  21917. Common: TVBICodecFilteringStatisticsCommonPin ;// Generic VBI pin statistics
  21918. end;
  21919. {$EXTERNALSYM _VBICODECFILTERING_STATISTICS_TELETEXT_PIN}
  21920. VBICODECFILTERING_STATISTICS_TELETEXT_PIN = _VBICODECFILTERING_STATISTICS_TELETEXT_PIN;
  21921. {$EXTERNALSYM VBICODECFILTERING_STATISTICS_TELETEXT_PIN}
  21922. PVBICODECFILTERING_STATISTICS_TELETEXT_PIN = ^VBICODECFILTERING_STATISTICS_TELETEXT_PIN;
  21923. {$EXTERNALSYM PVBICODECFILTERING_STATISTICS_TELETEXT_PIN}
  21924. TVBICodecFilteringStatisticsTeletextPin = _VBICODECFILTERING_STATISTICS_TELETEXT_PIN;
  21925. ////////////////////////////////////////////////////////////////////////////
  21926. // VBI codec property structures(based on KSPROPERTY_VBICODECFILTERING enum)
  21927. ////////////////////////////////////////////////////////////////////////////
  21928. // *** Most codecs support this property
  21929. // KSPROPERTY_VBICODECFILTERING_SCANLINES_REQUESTED_BIT_ARRAY
  21930. // KSPROPERTY_VBICODECFILTERING_SCANLINES_DISCOVERED_BIT_ARRAY,
  21931. PKSPropertyVBICodecFilteringScanlinesS = ^TKSPropertyVBICodecFilteringScanlinesS;
  21932. KSPROPERTY_VBICODECFILTERING_SCANLINES_S = record
  21933. Property_ : KSPROPERTY;
  21934. Scanlines : TVBICodecFilteringScanlines;
  21935. end;
  21936. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_SCANLINES_S}
  21937. PKSPROPERTY_VBICODECFILTERING_SCANLINES_S = ^KSPROPERTY_VBICODECFILTERING_SCANLINES_S;
  21938. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_SCANLINES_S}
  21939. TKSPropertyVBICodecFilteringScanlinesS = KSPROPERTY_VBICODECFILTERING_SCANLINES_S;
  21940. // *** NABTS codecs support this property
  21941. // KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY,
  21942. // KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY,
  21943. PKSPropertyVBICodecFilteringNABTSSubstreamsS = ^TKSPropertyVBICodecFilteringNABTSSubstreamsS;
  21944. KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S = record
  21945. Property_ : KSPROPERTY;
  21946. Substreams : TVBICodecFilteringNABTSSubStreams;
  21947. end;
  21948. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S}
  21949. PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S = ^KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S;
  21950. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S}
  21951. TKSPropertyVBICodecFilteringNABTSSubstreamsS = KSPROPERTY_VBICODECFILTERING_NABTS_SUBSTREAMS_S;
  21952. // *** Closed captioning codecs support this property
  21953. // KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_REQUESTED_BIT_ARRAY,
  21954. // KSPROPERTY_VBICODECFILTERING_SUBSTREAMS_DISCOVERED_BIT_ARRAY,
  21955. PKSPropertyVBICodecFilteringCCSubstreamsS = ^TKSPropertyVBICodecFilteringCCSubstreamsS;
  21956. KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S = record
  21957. Property_ : KSPROPERTY;
  21958. Substreams : TVBICodecFilteringCCSubStreams;
  21959. end;
  21960. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S}
  21961. PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S = ^KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S;
  21962. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S}
  21963. TKSPropertyVBICodecFilteringCCSubstreamsS = KSPROPERTY_VBICODECFILTERING_CC_SUBSTREAMS_S;
  21964. // *** Most codecs support these versions of the global and pin properties
  21965. // KSPROPERTY_VBICODECFILTERING_STATISTICS
  21966. PKSPropertyVBICodecFilteringStatisticsCommonS = ^TKSPropertyVBICodecFilteringStatisticsCommonS;
  21967. KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S = record
  21968. Property_ : KSPROPERTY;
  21969. Statistics : TVBICodecFilteringStatisticsCommon;
  21970. end;
  21971. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S}
  21972. PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S;
  21973. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S}
  21974. TKSPropertyVBICodecFilteringStatisticsCommonS = KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_S;
  21975. PKSPropertyVBICodecFilteringStatisticsCommonPinS = ^TKSPropertyVBICodecFilteringStatisticsCommonPinS;
  21976. KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S = record
  21977. Property_ : KSPROPERTY;
  21978. Statistics : TVBICodecFilteringStatisticsCommonPin;
  21979. end;
  21980. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S}
  21981. PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S;
  21982. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S}
  21983. TKSPropertyVBICodecFilteringStatisticsCommonPinS = KSPROPERTY_VBICODECFILTERING_STATISTICS_COMMON_PIN_S;
  21984. // *** NABTS codecs support this version of the global and pin properties
  21985. // KSPROPERTY_VBICODECFILTERING_STATISTICS
  21986. PKSPropertyVBICodecFilteringStatisticsNABTSS = ^TKSPropertyVBICodecFilteringStatisticsNABTSS;
  21987. KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S = record
  21988. Property_ : KSPROPERTY;
  21989. Statistics : TVBICodecFilteringStatisticsNABTS;
  21990. end;
  21991. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S}
  21992. PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S;
  21993. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S}
  21994. TKSPropertyVBICodecFilteringStatisticsNABTSS = KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_S;
  21995. PKSPropertyVBICodecFilteringStatisticsNABTSPinS = ^TKSPropertyVBICodecFilteringStatisticsNABTSPinS;
  21996. KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S = record
  21997. Property_ : KSPROPERTY;
  21998. Statistics : TVBICodecFilteringStatisticsNABTSPin;
  21999. end;
  22000. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S}
  22001. PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S;
  22002. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S}
  22003. TKSPropertyVBICodecFilteringStatisticsNABTSPinS = KSPROPERTY_VBICODECFILTERING_STATISTICS_NABTS_PIN_S;
  22004. // *** Closed captioning codecs support this version of the global and pin properties
  22005. // KSPROPERTY_VBICODECFILTERING_STATISTICS
  22006. PKSPropertyVBICodecFilteringStatisticsCCS = ^TKSPropertyVBICodecFilteringStatisticsCCS;
  22007. KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S = record
  22008. Property_ : KSPROPERTY;
  22009. Statistics : TVBICodecFilteringStatisticsCC;
  22010. end;
  22011. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S}
  22012. PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S;
  22013. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S}
  22014. TKSPropertyVBICodecFilteringStatisticsCCS = KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S;
  22015. PKSPropertyVBICodecFilteringStatisticsCCPinS = ^TKSPropertyVBICodecFilteringStatisticsCCPinS;
  22016. KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S = record
  22017. Property_ : KSPROPERTY;
  22018. Statistics : TVBICodecFilteringStatisticsCCPin;
  22019. end;
  22020. {$EXTERNALSYM KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S}
  22021. PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S = ^KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S;
  22022. {$EXTERNALSYM PKSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S}
  22023. TKSPropertyVBICodecFilteringStatisticsCCPinS = KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_PIN_S;
  22024. // Standard Pin Names for the video capture filter
  22025. //===========================================================================
  22026. const
  22027. PINNAME_VIDEO_CAPTURE : TGUID = '{FB6C4281-0353-11d1-905F-0000C0CC16BA}';
  22028. {$EXTERNALSYM PINNAME_VIDEO_CAPTURE}
  22029. PINNAME_VIDEO_CC_CAPTURE : TGUID = '{1AAD8061-012D-11d2-B4B1-00A0D102CFBE}';
  22030. {$EXTERNALSYM PINNAME_VIDEO_CC_CAPTURE}
  22031. PINNAME_VIDEO_NABTS_CAPTURE : TGUID = '{29703660-498A-11d2-B4B1-00A0D102CFBE}';
  22032. {$EXTERNALSYM PINNAME_VIDEO_NABTS_CAPTURE}
  22033. PINNAME_VIDEO_PREVIEW : TGUID = '{FB6C4282-0353-11d1-905F-0000C0CC16BA}';
  22034. {$EXTERNALSYM PINNAME_VIDEO_PREVIEW}
  22035. PINNAME_VIDEO_ANALOGVIDEOIN : TGUID = '{FB6C4283-0353-11d1-905F-0000C0CC16BA}';
  22036. {$EXTERNALSYM PINNAME_VIDEO_ANALOGVIDEOIN}
  22037. PINNAME_VIDEO_VBI : TGUID = '{FB6C4284-0353-11d1-905F-0000C0CC16BA}';
  22038. {$EXTERNALSYM PINNAME_VIDEO_VBI}
  22039. PINNAME_VIDEO_VIDEOPORT : TGUID = '{FB6C4285-0353-11d1-905F-0000C0CC16BA}';
  22040. {$EXTERNALSYM PINNAME_VIDEO_VIDEOPORT}
  22041. PINNAME_VIDEO_NABTS : TGUID = '{FB6C4286-0353-11d1-905F-0000C0CC16BA}';
  22042. {$EXTERNALSYM PINNAME_VIDEO_NABTS}
  22043. PINNAME_VIDEO_EDS : TGUID = '{FB6C4287-0353-11d1-905F-0000C0CC16BA}';
  22044. {$EXTERNALSYM PINNAME_VIDEO_EDS}
  22045. PINNAME_VIDEO_TELETEXT : TGUID = '{FB6C4288-0353-11d1-905F-0000C0CC16BA}';
  22046. {$EXTERNALSYM PINNAME_VIDEO_TELETEXT}
  22047. PINNAME_VIDEO_CC : TGUID = '{FB6C4289-0353-11d1-905F-0000C0CC16BA}';
  22048. {$EXTERNALSYM PINNAME_VIDEO_CC}
  22049. PINNAME_VIDEO_STILL : TGUID = '{FB6C428A-0353-11d1-905F-0000C0CC16BA}';
  22050. {$EXTERNALSYM PINNAME_VIDEO_STILL}
  22051. PINNAME_VIDEO_TIMECODE : TGUID = '{FB6C428B-0353-11d1-905F-0000C0CC16BA}';
  22052. {$EXTERNALSYM PINNAME_VIDEO_TIMECODE}
  22053. PINNAME_VIDEO_VIDEOPORT_VBI : TGUID = '{FB6C428C-0353-11d1-905F-0000C0CC16BA}';
  22054. {$EXTERNALSYM PINNAME_VIDEO_VIDEOPORT_VBI}
  22055. //===========================================================================
  22056. // KSSTREAM_HEADER extensions for digital video
  22057. //===========================================================================
  22058. KS_VIDEO_FLAG_FRAME = $0000; // Frame or Field (default is frame)
  22059. {$EXTERNALSYM KS_VIDEO_FLAG_FRAME}
  22060. KS_VIDEO_FLAG_FIELD1 = $0001;
  22061. {$EXTERNALSYM KS_VIDEO_FLAG_FIELD1}
  22062. KS_VIDEO_FLAG_FIELD2 = $0002;
  22063. {$EXTERNALSYM KS_VIDEO_FLAG_FIELD2}
  22064. KS_VIDEO_FLAG_I_FRAME = $0000; // I, B, or P (default is I)
  22065. {$EXTERNALSYM KS_VIDEO_FLAG_I_FRAME}
  22066. KS_VIDEO_FLAG_P_FRAME = $0010;
  22067. {$EXTERNALSYM KS_VIDEO_FLAG_P_FRAME}
  22068. KS_VIDEO_FLAG_B_FRAME = $0020;
  22069. {$EXTERNALSYM KS_VIDEO_FLAG_B_FRAME}
  22070. type
  22071. PKSFrameInfo = ^TKSFrameInfo;
  22072. tagKS_FRAME_INFO = record
  22073. ExtendedHeaderSize : ULONG; // Size of this extended header
  22074. dwFrameFlags : DWORD; // Field1, Field2, or Frame
  22075. PictureNumber : int64;
  22076. DropCount : int64;
  22077. // The following are only set when using OverlayMixer
  22078. hDirectDraw : THandle; // user mode DDraw handle
  22079. hSurfaceHandle : THandle; // user mode surface handle
  22080. DirectDrawRect : TRECT; // portion of surface locked
  22081. // Reserved fields, never reference these
  22082. Reserved1 : DWORD;
  22083. Reserved2 : DWORD;
  22084. Reserved3 : DWORD;
  22085. Reserved4 : DWORD;
  22086. end;
  22087. {$EXTERNALSYM tagKS_FRAME_INFO}
  22088. KS_FRAME_INFO = tagKS_FRAME_INFO;
  22089. {$EXTERNALSYM KS_FRAME_INFO}
  22090. PKS_FRAME_INFO = ^KS_FRAME_INFO;
  22091. {$EXTERNALSYM PKS_FRAME_INFO}
  22092. TKSFrameInfo = tagKS_FRAME_INFO;
  22093. //===========================================================================
  22094. // KSSTREAM_HEADER extensions for VBI
  22095. //===========================================================================
  22096. const
  22097. KS_VBI_FLAG_FIELD1 = $0001;
  22098. {$EXTERNALSYM KS_VBI_FLAG_FIELD1}
  22099. KS_VBI_FLAG_FIELD2 = $0002;
  22100. {$EXTERNALSYM KS_VBI_FLAG_FIELD2}
  22101. KS_VBI_FLAG_MV_PRESENT = $0100;
  22102. {$EXTERNALSYM KS_VBI_FLAG_MV_PRESENT}
  22103. KS_VBI_FLAG_MV_HARDWARE = $0200;
  22104. {$EXTERNALSYM KS_VBI_FLAG_MV_HARDWARE}
  22105. KS_VBI_FLAG_MV_DETECTED = $0400;
  22106. {$EXTERNALSYM KS_VBI_FLAG_MV_DETECTED}
  22107. KS_VBI_FLAG_TVTUNER_CHANGE = $0010; // TvTunerChangeInfo is valid
  22108. {$EXTERNALSYM KS_VBI_FLAG_TVTUNER_CHANGE}
  22109. KS_VBI_FLAG_VBIINFOHEADER_CHANGE = $0020; // VBIInfoHeader is valid
  22110. {$EXTERNALSYM KS_VBI_FLAG_VBIINFOHEADER_CHANGE}
  22111. type
  22112. PKSVBIFrameInfo = ^TKSVBIFrameInfo;
  22113. tagKS_VBI_FRAME_INFO = record
  22114. ExtendedHeaderSize : ULONG; // Size of this extended header
  22115. dwFrameFlags : DWORD; // Field1, Field2, or Frame; & etc
  22116. PictureNumber : int64; // Test only?
  22117. DropCount : int64; // Test only?
  22118. dwSamplingFrequency : DWORD;
  22119. TvTunerChangeInfo : TKSTVTunerChangeInfo;
  22120. VBIInfoHeader : TKSVBIInfoHeader;
  22121. end;
  22122. {$EXTERNALSYM tagKS_VBI_FRAME_INFO}
  22123. KS_VBI_FRAME_INFO = tagKS_VBI_FRAME_INFO;
  22124. {$EXTERNALSYM KS_VBI_FRAME_INFO}
  22125. PKS_VBI_FRAME_INFO = ^KS_VBI_FRAME_INFO;
  22126. {$EXTERNALSYM PKS_VBI_FRAME_INFO}
  22127. TKSVBIFrameInfo = tagKS_VBI_FRAME_INFO;
  22128. //===========================================================================
  22129. // Analog video formats, used with:
  22130. // Analog Video Decoders
  22131. // TVTuners
  22132. // Analog Video Encoders
  22133. //
  22134. // XXX_STANDARDS_SUPPORTED returns a bitmask
  22135. //===========================================================================
  22136. const
  22137. KS_AnalogVideo_None = $00000000; // This is a digital sensor
  22138. {$EXTERNALSYM KS_AnalogVideo_None}
  22139. KS_AnalogVideo_NTSC_M = $00000001; // 75 IRE Setup
  22140. {$EXTERNALSYM KS_AnalogVideo_NTSC_M}
  22141. KS_AnalogVideo_NTSC_M_J = $00000002; // Japan, 0 IRE Setup
  22142. {$EXTERNALSYM KS_AnalogVideo_NTSC_M_J}
  22143. KS_AnalogVideo_NTSC_433 = $00000004;
  22144. {$EXTERNALSYM KS_AnalogVideo_NTSC_433}
  22145. KS_AnalogVideo_PAL_B = $00000010;
  22146. {$EXTERNALSYM KS_AnalogVideo_PAL_B}
  22147. KS_AnalogVideo_PAL_D = $00000020;
  22148. {$EXTERNALSYM KS_AnalogVideo_PAL_D}
  22149. KS_AnalogVideo_PAL_G = $00000040;
  22150. {$EXTERNALSYM KS_AnalogVideo_PAL_G}
  22151. KS_AnalogVideo_PAL_H = $00000080;
  22152. {$EXTERNALSYM KS_AnalogVideo_PAL_H}
  22153. KS_AnalogVideo_PAL_I = $00000100;
  22154. {$EXTERNALSYM KS_AnalogVideo_PAL_I}
  22155. KS_AnalogVideo_PAL_M = $00000200;
  22156. {$EXTERNALSYM KS_AnalogVideo_PAL_M}
  22157. KS_AnalogVideo_PAL_N = $00000400;
  22158. {$EXTERNALSYM KS_AnalogVideo_PAL_N}
  22159. KS_AnalogVideo_PAL_60 = $00000800;
  22160. {$EXTERNALSYM KS_AnalogVideo_PAL_60}
  22161. KS_AnalogVideo_SECAM_B = $00001000;
  22162. {$EXTERNALSYM KS_AnalogVideo_SECAM_B}
  22163. KS_AnalogVideo_SECAM_D = $00002000;
  22164. {$EXTERNALSYM KS_AnalogVideo_SECAM_D}
  22165. KS_AnalogVideo_SECAM_G = $00004000;
  22166. {$EXTERNALSYM KS_AnalogVideo_SECAM_G}
  22167. KS_AnalogVideo_SECAM_H = $00008000;
  22168. {$EXTERNALSYM KS_AnalogVideo_SECAM_H}
  22169. KS_AnalogVideo_SECAM_K = $00010000;
  22170. {$EXTERNALSYM KS_AnalogVideo_SECAM_K}
  22171. KS_AnalogVideo_SECAM_K1 = $00020000;
  22172. {$EXTERNALSYM KS_AnalogVideo_SECAM_K1}
  22173. KS_AnalogVideo_SECAM_L = $00040000;
  22174. {$EXTERNALSYM KS_AnalogVideo_SECAM_L}
  22175. KS_AnalogVideo_SECAM_L1 = $00080000;
  22176. {$EXTERNALSYM KS_AnalogVideo_SECAM_L1}
  22177. KS_AnalogVideo_PAL_N_COMBO = $00100000;
  22178. {$EXTERNALSYM KS_AnalogVideo_PAL_N_COMBO}
  22179. KS_AnalogVideo_NTSC_Mask = $00000007;
  22180. {$EXTERNALSYM KS_AnalogVideo_NTSC_Mask}
  22181. KS_AnalogVideo_PAL_Mask = $00100FF0;
  22182. {$EXTERNALSYM KS_AnalogVideo_PAL_Mask}
  22183. KS_AnalogVideo_SECAM_Mask = $000FF000;
  22184. {$EXTERNALSYM KS_AnalogVideo_SECAM_Mask}
  22185. //===========================================================================
  22186. // Property set definitions
  22187. // The comments show whether a given property is:
  22188. // R : READ only
  22189. // w : WRITE only
  22190. // RW : READ / WRITE
  22191. // O : Optional (return E_UNSUPPORTED if you don't handle this)
  22192. //===========================================================================
  22193. PROPSETID_ALLOCATOR_CONTROL : TGUID = '{53171960-148E-11d2-9979-0000C0CC16BA}';
  22194. {$EXTERNALSYM PROPSETID_ALLOCATOR_CONTROL}
  22195. type
  22196. KSPROPERTY_ALLOCATOR_CONTROL = (
  22197. KSPROPERTY_ALLOCATOR_CONTROL_HONOR_COUNT, // R O (will allocate exactly this number of buffers)
  22198. KSPROPERTY_ALLOCATOR_CONTROL_SURFACE_SIZE // R O (return 2 DWORDs specifying surface size)
  22199. );
  22200. {$EXTERNALSYM KSPROPERTY_ALLOCATOR_CONTROL}
  22201. TKSPropertyAllocatorControl = KSPROPERTY_ALLOCATOR_CONTROL;
  22202. //===========================================================================
  22203. const
  22204. PROPSETID_VIDCAP_VIDEOPROCAMP : TGUID = '{C6E13360-30AC-11d0-A18C-00A0C9118956}';
  22205. {$EXTERNALSYM PROPSETID_VIDCAP_VIDEOPROCAMP}
  22206. type
  22207. KSPROPERTY_VIDCAP_VIDEOPROCAMP = (
  22208. KSPROPERTY_VIDEOPROCAMP_BRIGHTNESS, // RW O
  22209. KSPROPERTY_VIDEOPROCAMP_CONTRAST, // RW O
  22210. KSPROPERTY_VIDEOPROCAMP_HUE, // RW O
  22211. KSPROPERTY_VIDEOPROCAMP_SATURATION, // RW O
  22212. KSPROPERTY_VIDEOPROCAMP_SHARPNESS, // RW O
  22213. KSPROPERTY_VIDEOPROCAMP_GAMMA, // RW O
  22214. KSPROPERTY_VIDEOPROCAMP_COLORENABLE, // RW O
  22215. KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE, // RW O
  22216. KSPROPERTY_VIDEOPROCAMP_BACKLIGHT_COMPENSATION, // RW O
  22217. KSPROPERTY_VIDEOPROCAMP_GAIN, // RW O
  22218. KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER, // RW O
  22219. KSPROPERTY_VIDEOPROCAMP_DIGITAL_MULTIPLIER_LIMIT,// RW O
  22220. KSPROPERTY_VIDEOPROCAMP_WHITEBALANCE_COMPONENT, // RW O
  22221. KSPROPERTY_VIDEOPROCAMP_POWERLINE_FREQUENCY // RW O
  22222. );
  22223. {$EXTERNALSYM KSPROPERTY_VIDCAP_VIDEOPROCAMP}
  22224. TKSPropertyVidcapVideoProcAmp = KSPROPERTY_VIDCAP_VIDEOPROCAMP;
  22225. PKSPropertyVideoProcAmpS = ^TKSPropertyVideoProcAmpS;
  22226. KSPROPERTY_VIDEOPROCAMP_S = record
  22227. Property_ : KSPROPERTY;
  22228. Value : longint; // Value to set or get
  22229. Flags : ULONG; // KSPROPERTY_VIDEOPROCAMP_FLAGS_*
  22230. Capabilities : ULONG; // KSPROPERTY_VIDEOPROCAMP_FLAGS_*
  22231. end;
  22232. {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_S}
  22233. PKSPROPERTY_VIDEOPROCAMP_S = ^KSPROPERTY_VIDEOPROCAMP_S;
  22234. {$EXTERNALSYM PKSPROPERTY_VIDEOPROCAMP_S}
  22235. TKSPropertyVideoProcAmpS = KSPROPERTY_VIDEOPROCAMP_S;
  22236. PKSPropertyVideoProcAmpNodeS = ^TKSPropertyVideoProcAmpNodeS;
  22237. KSPROPERTY_VIDEOPROCAMP_NODE_S = packed record
  22238. NodeProperty: KSP_NODE;
  22239. Value: Integer; // Value to set or get
  22240. Flags: ULONG; // KSPROPERTY_VIDEOPROCAMP_FLAGS_*
  22241. Capabilities: ULONG; // KSPROPERTY_VIDEOPROCAMP_FLAGS_*
  22242. end;
  22243. {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_NODE_S}
  22244. PKSPROPERTY_VIDEOPROCAMP_NODE_S = ^KSPROPERTY_VIDEOPROCAMP_NODE_S;
  22245. {$EXTERNALSYM PKSPROPERTY_VIDEOPROCAMP_NODE_S}
  22246. TKSPropertyVideoProcAmpNodeS = KSPROPERTY_VIDEOPROCAMP_NODE_S;
  22247. PKSPropertyVideoProcAmpS2 = ^TKSPropertyVideoProcAmpS2;
  22248. KSPROPERTY_VIDEOPROCAMP_S2 = packed record
  22249. Property_: KSPROPERTY;
  22250. Value1: Integer;
  22251. Flags: ULONG;
  22252. Capabilities: ULONG;
  22253. Value2: Integer;
  22254. end;
  22255. {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_S2}
  22256. PKSPROPERTY_VIDEOPROCAMP_S2 = ^KSPROPERTY_VIDEOPROCAMP_S2;
  22257. {$EXTERNALSYM PKSPROPERTY_VIDEOPROCAMP_S2}
  22258. TKSPropertyVideoProcAmpS2 = KSPROPERTY_VIDEOPROCAMP_S2;
  22259. PKSPropertyVideoProcAmpNodeS2 = ^TKSPropertyVideoProcAmpNodeS2;
  22260. KSPROPERTY_VIDEOPROCAMP_NODE_S2 = packed record
  22261. NodeProperty: KSP_NODE;
  22262. Value1: Integer;
  22263. Flags: ULONG;
  22264. Capabilities: ULONG;
  22265. Value2: Integer;
  22266. end;
  22267. {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_NODE_S2}
  22268. PKSPROPERTY_VIDEOPROCAMP_NODE_S2 = ^KSPROPERTY_VIDEOPROCAMP_NODE_S2;
  22269. {$EXTERNALSYM PKSPROPERTY_VIDEOPROCAMP_NODE_S2}
  22270. TKSPropertyVideoProcAmpNodeS2 = KSPROPERTY_VIDEOPROCAMP_NODE_S2;
  22271. const
  22272. KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO = $0001;
  22273. {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_FLAGS_AUTO}
  22274. KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL = $0002;
  22275. {$EXTERNALSYM KSPROPERTY_VIDEOPROCAMP_FLAGS_MANUAL}
  22276. //===========================================================================
  22277. PROPSETID_VIDCAP_SELECTOR : TGUID = '{1ABDAECA-68B6-4F83-9371-B413907C7B9F}';
  22278. {$EXTERNALSYM PROPSETID_VIDCAP_SELECTOR}
  22279. type
  22280. PKSPropertyVidCapSelector = ^TKSPropertyVidCapSelector;
  22281. KSPROPERTY_VIDCAP_SELECTOR = (
  22282. KSPROPERTY_SELECTOR_SOURCE_NODE_ID, // RW
  22283. KSPROPERTY_SELECTOR_NUM_SOURCES // R
  22284. );
  22285. {$EXTERNALSYM KSPROPERTY_VIDCAP_SELECTOR}
  22286. PKSPROPERTY_VIDCAP_SELECTOR = ^KSPROPERTY_VIDCAP_SELECTOR;
  22287. {$EXTERNALSYM PKSPROPERTY_VIDCAP_SELECTOR}
  22288. TKSPropertyVidCapSelector = KSPROPERTY_VIDCAP_SELECTOR;
  22289. PKSPropertySelectorS = ^TKSPropertySelectorS;
  22290. KSPROPERTY_SELECTOR_S = packed record
  22291. Property_: KSPROPERTY;
  22292. Value: Integer; // Value to set or get
  22293. Flags: ULONG;
  22294. Capabilities: ULONG;
  22295. end;
  22296. {$EXTERNALSYM KSPROPERTY_SELECTOR_S}
  22297. PKSPROPERTY_SELECTOR_S = ^KSPROPERTY_SELECTOR_S;
  22298. {$EXTERNALSYM PKSPROPERTY_SELECTOR_S}
  22299. TKSPropertySelectorS = KSPROPERTY_SELECTOR_S;
  22300. PKSPropertySelectorNodeS = ^TKSPropertySelectorNodeS;
  22301. KSPROPERTY_SELECTOR_NODE_S = packed record
  22302. NodeProperty: KSP_NODE;
  22303. Value: Integer; // Value to set or get
  22304. Flags: ULONG;
  22305. Capabilities: ULONG;
  22306. end;
  22307. {$EXTERNALSYM KSPROPERTY_SELECTOR_NODE_S}
  22308. PKSPROPERTY_SELECTOR_NODE_S = ^KSPROPERTY_SELECTOR_NODE_S;
  22309. {$EXTERNALSYM PKSPROPERTY_SELECTOR_NODE_S}
  22310. TKSPropertySelectorNodeS = KSPROPERTY_SELECTOR_NODE_S;
  22311. //===========================================================================
  22312. const
  22313. PROPSETID_TUNER : TGUID = '{6a2e0605-28e4-11d0-a18c-00a0c9118956}';
  22314. {$EXTERNALSYM PROPSETID_TUNER}
  22315. type
  22316. KSPROPERTY_TUNER = (
  22317. KSPROPERTY_TUNER_CAPS, // R -overall device capabilities
  22318. KSPROPERTY_TUNER_MODE_CAPS, // R -capabilities in this mode
  22319. KSPROPERTY_TUNER_MODE, // RW -set a mode (TV, FM, AM, DSS)
  22320. KSPROPERTY_TUNER_STANDARD, // R -get TV standard (only if TV mode)
  22321. KSPROPERTY_TUNER_FREQUENCY, // RW -set/get frequency
  22322. KSPROPERTY_TUNER_INPUT, // RW -select an input
  22323. KSPROPERTY_TUNER_STATUS, // R -tuning status
  22324. KSPROPERTY_TUNER_IF_MEDIUM // R O-Medium for IF or Transport Pin
  22325. );
  22326. {$EXTERNALSYM KSPROPERTY_TUNER}
  22327. TKSPropertyTuner = KSPROPERTY_TUNER;
  22328. KSPROPERTY_TUNER_MODES = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22329. {$EXTERNALSYM KSPROPERTY_TUNER_MODES}
  22330. const
  22331. KSPROPERTY_TUNER_MODE_TV = $0001;
  22332. {$EXTERNALSYM KSPROPERTY_TUNER_MODE_TV}
  22333. KSPROPERTY_TUNER_MODE_FM_RADIO = $0002;
  22334. {$EXTERNALSYM KSPROPERTY_TUNER_MODE_FM_RADIO}
  22335. KSPROPERTY_TUNER_MODE_AM_RADIO = $0004;
  22336. {$EXTERNALSYM KSPROPERTY_TUNER_MODE_AM_RADIO}
  22337. KSPROPERTY_TUNER_MODE_DSS = $0008;
  22338. {$EXTERNALSYM KSPROPERTY_TUNER_MODE_DSS}
  22339. KSPROPERTY_TUNER_MODE_ATSC = $0010; // also used for DVB-T, DVB-C
  22340. {$EXTERNALSYM KSPROPERTY_TUNER_MODE_ATSC}
  22341. // Describes how the device tunes. Only one of these flags may be set
  22342. // in KSPROPERTY_TUNER_MODE_CAPS_S.Strategy
  22343. // Describe how the driver should attempt to tune:
  22344. // EXACT: just go to the frequency specified (no fine tuning)
  22345. // FINE: (slow) do an exhaustive search for the best signal
  22346. // COARSE: (fast) use larger frequency jumps to just determine if any signal
  22347. type
  22348. KS_TUNER_TUNING_FLAGS = (
  22349. {$IFNDEF COMPILER6_UP}
  22350. KS_TUNER_TUNING_INVALID_0,
  22351. KS_TUNER_TUNING_EXACT, // No fine tuning
  22352. {$ELSE}
  22353. KS_TUNER_TUNING_EXACT = 1,
  22354. {$ENDIF}
  22355. KS_TUNER_TUNING_FINE, // Fine grained search
  22356. KS_TUNER_TUNING_COARSE // Coarse search
  22357. );
  22358. {$EXTERNALSYM KS_TUNER_TUNING_FLAGS}
  22359. KS_TUNER_STRATEGY = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22360. {$EXTERNALSYM KS_TUNER_STRATEGY}
  22361. const
  22362. KS_TUNER_STRATEGY_PLL = $01; // Tune by PLL offset
  22363. {$EXTERNALSYM KS_TUNER_STRATEGY_PLL}
  22364. KS_TUNER_STRATEGY_SIGNAL_STRENGTH = $02; // Tune by signal strength
  22365. {$EXTERNALSYM KS_TUNER_STRATEGY_SIGNAL_STRENGTH}
  22366. KS_TUNER_STRATEGY_DRIVER_TUNES = $04; // Driver does fine tuning
  22367. {$EXTERNALSYM KS_TUNER_STRATEGY_DRIVER_TUNES}
  22368. type
  22369. PKSPropertyTunerCapsS = ^TKSPropertyTunerCapsS;
  22370. KSPROPERTY_TUNER_CAPS_S = record
  22371. Property_ : KSPROPERTY ;
  22372. ModesSupported : ULONG ; // KS_PROPERTY_TUNER_MODES_*
  22373. VideoMedium : TKSPinMedium ; // GUID_NULL (no pin), or GUID
  22374. TVAudioMedium : TKSPinMedium ; // GUID_NULL (no pin), or GUID
  22375. RadioAudioMedium : TKSPinMedium ; // GUID_NULL (no pin), or GUID
  22376. end;
  22377. {$EXTERNALSYM KSPROPERTY_TUNER_CAPS_S}
  22378. PKSPROPERTY_TUNER_CAPS_S = ^KSPROPERTY_TUNER_CAPS_S;
  22379. {$EXTERNALSYM PKSPROPERTY_TUNER_CAPS_S}
  22380. TKSPropertyTunerCapsS = KSPROPERTY_TUNER_CAPS_S;
  22381. PKSPropertyTunerIfMediumS = ^TKSPropertyTunerIfMediumS;
  22382. KSPROPERTY_TUNER_IF_MEDIUM_S = record
  22383. Property_ : KSPROPERTY;
  22384. IFMedium : TKSPinMedium; // GUID_NULL (no pin), or GUID
  22385. end;
  22386. {$EXTERNALSYM KSPROPERTY_TUNER_IF_MEDIUM_S}
  22387. PKSPROPERTY_TUNER_IF_MEDIUM_S = ^KSPROPERTY_TUNER_IF_MEDIUM_S;
  22388. {$EXTERNALSYM PKSPROPERTY_TUNER_IF_MEDIUM_S}
  22389. TKSPropertyTunerIfMediumS = KSPROPERTY_TUNER_IF_MEDIUM_S;
  22390. PKSPropertyTunerModeCapsS = ^TKSPropertyTunerModeCapsS;
  22391. KSPROPERTY_TUNER_MODE_CAPS_S = record
  22392. Property_ : KSPROPERTY;
  22393. Mode : ULONG; // IN: KSPROPERTY_TUNER_MODE
  22394. StandardsSupported : ULONG; // KS_AnalogVideo_* (if TV or DSS)
  22395. MinFrequency : ULONG; // Hz
  22396. MaxFrequency : ULONG; // Hz
  22397. TuningGranularity : ULONG; // Hz
  22398. NumberOfInputs : ULONG; // count of inputs
  22399. SettlingTime : ULONG; // milliSeconds
  22400. Strategy : ULONG; // KS_TUNER_STRATEGY
  22401. end;
  22402. {$EXTERNALSYM KSPROPERTY_TUNER_MODE_CAPS_S}
  22403. PKSPROPERTY_TUNER_MODE_CAPS_S = ^KSPROPERTY_TUNER_MODE_CAPS_S;
  22404. {$EXTERNALSYM PKSPROPERTY_TUNER_MODE_CAPS_S}
  22405. TKSPropertyTunerModeCapsS = KSPROPERTY_TUNER_MODE_CAPS_S;
  22406. PKSPropertyTunerModeS = ^TKSPropertyTunerModeS;
  22407. KSPROPERTY_TUNER_MODE_S = record
  22408. Property_ : KSPROPERTY;
  22409. Mode : ULONG; // IN: KSPROPERTY_TUNER_MODE
  22410. end;
  22411. {$EXTERNALSYM KSPROPERTY_TUNER_MODE_S}
  22412. PKSPROPERTY_TUNER_MODE_S = ^KSPROPERTY_TUNER_MODE_S;
  22413. {$EXTERNALSYM PKSPROPERTY_TUNER_MODE_S}
  22414. TKSPropertyTunerModeS = KSPROPERTY_TUNER_MODE_S;
  22415. PKSPropertyTunerFrequencyS = ^TKSPropertyTunerFrequencyS;
  22416. KSPROPERTY_TUNER_FREQUENCY_S = record
  22417. Property_ : KSPROPERTY;
  22418. Frequency : ULONG; // Hz
  22419. LastFrequency : ULONG; // Hz (last known good)
  22420. TuningFlags : ULONG; // KS_TUNER_TUNING_FLAGS
  22421. VideoSubChannel : ULONG; // DSS
  22422. AudioSubChannel : ULONG; // DSS
  22423. Channel : ULONG; // VBI decoders
  22424. Country : ULONG; // VBI decoders
  22425. end;
  22426. {$EXTERNALSYM KSPROPERTY_TUNER_FREQUENCY_S}
  22427. PKSPROPERTY_TUNER_FREQUENCY_S = ^KSPROPERTY_TUNER_FREQUENCY_S;
  22428. {$EXTERNALSYM PKSPROPERTY_TUNER_FREQUENCY_S}
  22429. TKSPropertyTunerFrequencyS = KSPROPERTY_TUNER_FREQUENCY_S;
  22430. PKSPropertyTunerStandardS = ^TKSPropertyTunerStandardS;
  22431. KSPROPERTY_TUNER_STANDARD_S = record
  22432. Property_ : KSPROPERTY;
  22433. Standard : ULONG; // KS_AnalogVideo_*
  22434. end;
  22435. {$EXTERNALSYM KSPROPERTY_TUNER_STANDARD_S}
  22436. PKSPROPERTY_TUNER_STANDARD_S = ^KSPROPERTY_TUNER_STANDARD_S;
  22437. {$EXTERNALSYM PKSPROPERTY_TUNER_STANDARD_S}
  22438. TKSPropertyTunerStandardS = KSPROPERTY_TUNER_STANDARD_S;
  22439. PKSPropertyTunerInputS = ^TKSPropertyTunerInputS;
  22440. KSPROPERTY_TUNER_INPUT_S = record
  22441. Property_ : KSPROPERTY;
  22442. InputIndex : ULONG; // 0 to (n-1) inputs
  22443. end;
  22444. {$EXTERNALSYM KSPROPERTY_TUNER_INPUT_S}
  22445. PKSPROPERTY_TUNER_INPUT_S = ^KSPROPERTY_TUNER_INPUT_S;
  22446. {$EXTERNALSYM PKSPROPERTY_TUNER_INPUT_S}
  22447. TKSPropertyTunerInputS = KSPROPERTY_TUNER_INPUT_S;
  22448. PKSPropertyTunerStatusS = ^TKSPropertyTunerStatusS;
  22449. KSPROPERTY_TUNER_STATUS_S = record
  22450. Property_ : KSPROPERTY;
  22451. CurrentFrequency : ULONG; // Hz
  22452. PLLOffset : ULONG; // if Strategy.KS_TUNER_STRATEGY_PLL
  22453. SignalStrength : ULONG; // if Stretegy.KS_TUNER_STRATEGY_SIGNAL_STRENGTH
  22454. Busy : ULONG; // TRUE if in the process of tuning
  22455. end;
  22456. {$EXTERNALSYM KSPROPERTY_TUNER_STATUS_S}
  22457. PKSPROPERTY_TUNER_STATUS_S = ^KSPROPERTY_TUNER_STATUS_S;
  22458. {$EXTERNALSYM PKSPROPERTY_TUNER_STATUS_S}
  22459. TKSPropertyTunerStatusS = KSPROPERTY_TUNER_STATUS_S;
  22460. const
  22461. EVENTSETID_TUNER : TGUID = '{6a2e0606-28e4-11d0-a18c-00a0c9118956}';
  22462. {$EXTERNALSYM EVENTSETID_TUNER}
  22463. type
  22464. KSEVENT_TUNER = (
  22465. KSEVENT_TUNER_CHANGED
  22466. );
  22467. {$EXTERNALSYM KSEVENT_TUNER}
  22468. TKSEventTuner = KSEVENT_TUNER;
  22469. //===========================================================================
  22470. // USB Video Class Definitions
  22471. const
  22472. KSNODETYPE_VIDEO_STREAMING : TGUID = '{DFF229E1-F70F-11D0-B917-00A0C9223196}';
  22473. {$EXTERNALSYM KSNODETYPE_VIDEO_STREAMING}
  22474. KSNODETYPE_VIDEO_INPUT_TERMINAL : TGUID = '{DFF229E2-F70F-11D0-B917-00A0C9223196}';
  22475. {$EXTERNALSYM KSNODETYPE_VIDEO_INPUT_TERMINAL}
  22476. KSNODETYPE_VIDEO_OUTPUT_TERMINAL : TGUID = '{DFF229E3-F70F-11D0-B917-00A0C9223196}';
  22477. {$EXTERNALSYM KSNODETYPE_VIDEO_OUTPUT_TERMINAL}
  22478. KSNODETYPE_VIDEO_SELECTOR : TGUID = '{DFF229E4-F70F-11D0-B917-00A0C9223196}';
  22479. {$EXTERNALSYM KSNODETYPE_VIDEO_SELECTOR}
  22480. KSNODETYPE_VIDEO_PROCESSING : TGUID = '{DFF229E5-F70F-11D0-B917-00A0C9223196}';
  22481. {$EXTERNALSYM KSNODETYPE_VIDEO_PROCESSING}
  22482. KSNODETYPE_VIDEO_CAMERA_TERMINAL : TGUID = '{DFF229E6-F70F-11D0-B917-00A0C9223196}';
  22483. {$EXTERNALSYM KSNODETYPE_VIDEO_CAMERA_TERMINAL}
  22484. KSNODETYPE_VIDEO_INPUT_MTT : TGUID = '{DFF229E7-F70F-11D0-B917-00A0C9223196}';
  22485. {$EXTERNALSYM KSNODETYPE_VIDEO_INPUT_MTT}
  22486. KSNODETYPE_VIDEO_OUTPUT_MTT : TGUID = '{DFF229E8-F70F-11D0-B917-00A0C9223196}';
  22487. {$EXTERNALSYM KSNODETYPE_VIDEO_OUTPUT_MTT}
  22488. //===========================================================================
  22489. const
  22490. PROPSETID_VIDCAP_VIDEOENCODER : TGUID = '{6a2e0610-28e4-11d0-a18c-00a0c9118956}';
  22491. {$EXTERNALSYM PROPSETID_VIDCAP_VIDEOENCODER}
  22492. type
  22493. KSPROPERTY_VIDCAP_VIDEOENCODER = (
  22494. KSPROPERTY_VIDEOENCODER_CAPS, // R
  22495. KSPROPERTY_VIDEOENCODER_STANDARD, // RW
  22496. KSPROPERTY_VIDEOENCODER_COPYPROTECTION, // RW O
  22497. KSPROPERTY_VIDEOENCODER_CC_ENABLE // RW O
  22498. );
  22499. {$EXTERNALSYM KSPROPERTY_VIDCAP_VIDEOENCODER}
  22500. TKSPropertyVidCapVideoEncoder = KSPROPERTY_VIDCAP_VIDEOENCODER;
  22501. PKSPropertyVideoEncoderS = ^TKSPropertyVideoEncoderS;
  22502. KSPROPERTY_VIDEOENCODER_S = record
  22503. Property_ : KSPROPERTY;
  22504. Value : longint; // value to get or set
  22505. Flags : ULONG; //
  22506. Capabilities : ULONG; //
  22507. end;
  22508. {$EXTERNALSYM KSPROPERTY_VIDEOENCODER_S}
  22509. PKSPROPERTY_VIDEOENCODER_S = ^KSPROPERTY_VIDEOENCODER_S;
  22510. {$EXTERNALSYM PKSPROPERTY_VIDEOENCODER_S}
  22511. TKSPropertyVideoEncoderS = KSPROPERTY_VIDEOENCODER_S;
  22512. //===========================================================================
  22513. const
  22514. PROPSETID_VIDCAP_VIDEODECODER : TGUID = '{C6E13350-30AC-11d0-A18C-00A0C9118956}';
  22515. {$EXTERNALSYM PROPSETID_VIDCAP_VIDEODECODER}
  22516. type
  22517. KSPROPERTY_VIDCAP_VIDEODECODER = (
  22518. KSPROPERTY_VIDEODECODER_CAPS, // R
  22519. KSPROPERTY_VIDEODECODER_STANDARD, // RW
  22520. KSPROPERTY_VIDEODECODER_STATUS, // R
  22521. KSPROPERTY_VIDEODECODER_OUTPUT_ENABLE, // Rw O
  22522. KSPROPERTY_VIDEODECODER_VCR_TIMING // RW O
  22523. );
  22524. {$EXTERNALSYM KSPROPERTY_VIDCAP_VIDEODECODER}
  22525. TKSPropertyVidCapVideoDecoder = KSPROPERTY_VIDCAP_VIDEODECODER;
  22526. KS_VIDEODECODER_FLAGS = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22527. {$EXTERNALSYM KS_VIDEODECODER_FLAGS}
  22528. const
  22529. KS_VIDEODECODER_FLAGS_CAN_DISABLE_OUTPUT = $0001; // VP Output can tri-stae
  22530. {$EXTERNALSYM KS_VIDEODECODER_FLAGS_CAN_DISABLE_OUTPUT}
  22531. KS_VIDEODECODER_FLAGS_CAN_USE_VCR_LOCKING = $0002; // VCR PLL timings
  22532. {$EXTERNALSYM KS_VIDEODECODER_FLAGS_CAN_USE_VCR_LOCKING}
  22533. KS_VIDEODECODER_FLAGS_CAN_INDICATE_LOCKED = $0004; // Can indicate valid signal
  22534. {$EXTERNALSYM KS_VIDEODECODER_FLAGS_CAN_INDICATE_LOCKED}
  22535. type
  22536. PKSPropertyVideoDecoderCapsS = ^TKSPropertyVideoDecoderCapsS;
  22537. KSPROPERTY_VIDEODECODER_CAPS_S = record
  22538. Property_ : KSPROPERTY;
  22539. StandardsSupported : ULONG; // KS_AnalogVideo_*
  22540. Capabilities : ULONG; // KS_VIDEODECODER_FLAGS_*
  22541. SettlingTime : ULONG; // milliseconds
  22542. HSyncPerVSync : ULONG; // Number of HSync Pulses per VSync
  22543. end;
  22544. {$EXTERNALSYM KSPROPERTY_VIDEODECODER_CAPS_S}
  22545. PKSPROPERTY_VIDEODECODER_CAPS_S = ^KSPROPERTY_VIDEODECODER_CAPS_S;
  22546. {$EXTERNALSYM PKSPROPERTY_VIDEODECODER_CAPS_S}
  22547. TKSPropertyVideoDecoderCapsS = KSPROPERTY_VIDEODECODER_CAPS_S;
  22548. PKSPropertyVideoDecoderStatusS = ^TKSPropertyVideoDecoderStatusS;
  22549. KSPROPERTY_VIDEODECODER_STATUS_S = record
  22550. Property_ : KSPROPERTY;
  22551. NumberOfLines : ULONG; // 525 or 625 lines detected
  22552. SignalLocked : ULONG; // TRUE if signal is locked
  22553. end;
  22554. {$EXTERNALSYM KSPROPERTY_VIDEODECODER_STATUS_S}
  22555. PKSPROPERTY_VIDEODECODER_STATUS_S = ^KSPROPERTY_VIDEODECODER_STATUS_S;
  22556. {$EXTERNALSYM PKSPROPERTY_VIDEODECODER_STATUS_S}
  22557. TKSPropertyVideoDecoderStatusS = KSPROPERTY_VIDEODECODER_STATUS_S;
  22558. PKSPropertyVideoDecoderS = ^TKSPropertyVideoDecoderS;
  22559. KSPROPERTY_VIDEODECODER_S = record
  22560. Property_ : KSPROPERTY;
  22561. Value : ULONG; // Get or set a value
  22562. end;
  22563. {$EXTERNALSYM KSPROPERTY_VIDEODECODER_S}
  22564. PKSPROPERTY_VIDEODECODER_S = ^KSPROPERTY_VIDEODECODER_S;
  22565. {$EXTERNALSYM PKSPROPERTY_VIDEODECODER_S}
  22566. TKSPropertyVideoDecoderS = KSPROPERTY_VIDEODECODER_S;
  22567. const
  22568. EVENTSETID_VIDEODECODER : TGUID = '{6a2e0621-28e4-11d0-a18c-00a0c9118956}';
  22569. {$EXTERNALSYM EVENTSETID_VIDEODECODER}
  22570. type
  22571. KSEVENT_VIDEODECODER = (
  22572. KSEVENT_VIDEODECODER_CHANGED
  22573. );
  22574. {$EXTERNALSYM KSEVENT_VIDEODECODER}
  22575. TKSEventVideoDecoder = KSEVENT_VIDEODECODER;
  22576. //===========================================================================
  22577. const
  22578. PROPSETID_VIDCAP_CAMERACONTROL : TGUID = '{C6E13370-30AC-11d0-A18C-00A0C9118956}';
  22579. {$EXTERNALSYM PROPSETID_VIDCAP_CAMERACONTROL}
  22580. type
  22581. KSPROPERTY_VIDCAP_CAMERACONTROL = (
  22582. KSPROPERTY_CAMERACONTROL_PAN, // RW O
  22583. KSPROPERTY_CAMERACONTROL_TILT, // RW O
  22584. KSPROPERTY_CAMERACONTROL_ROLL, // RW O
  22585. KSPROPERTY_CAMERACONTROL_ZOOM, // RW O
  22586. KSPROPERTY_CAMERACONTROL_EXPOSURE, // RW O
  22587. KSPROPERTY_CAMERACONTROL_IRIS, // RW O
  22588. KSPROPERTY_CAMERACONTROL_FOCUS, // RW O
  22589. KSPROPERTY_CAMERACONTROL_SCANMODE, // RW O
  22590. KSPROPERTY_CAMERACONTROL_PRIVACY, // RW O
  22591. KSPROPERTY_CAMERACONTROL_PANTILT, // RW O
  22592. KSPROPERTY_CAMERACONTROL_PAN_RELATIVE, // RW O
  22593. KSPROPERTY_CAMERACONTROL_TILT_RELATIVE, // RW O
  22594. KSPROPERTY_CAMERACONTROL_ROLL_RELATIVE, // RW O
  22595. KSPROPERTY_CAMERACONTROL_ZOOM_RELATIVE, // RW O
  22596. KSPROPERTY_CAMERACONTROL_EXPOSURE_RELATIVE, // RW O
  22597. KSPROPERTY_CAMERACONTROL_IRIS_RELATIVE, // RW O
  22598. KSPROPERTY_CAMERACONTROL_FOCUS_RELATIVE, // RW O
  22599. KSPROPERTY_CAMERACONTROL_PANTILT_RELATIVE, // RW O
  22600. KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH
  22601. );
  22602. {$EXTERNALSYM KSPROPERTY_VIDCAP_CAMERACONTROL}
  22603. TKSPropertyVidCapCameraControl = KSPROPERTY_VIDCAP_CAMERACONTROL;
  22604. PKSPropertyCameraControlS = ^TKSPropertyCameraControlS;
  22605. KSPROPERTY_CAMERACONTROL_S = record
  22606. Property_ : KSPROPERTY;
  22607. Value : longint; // value to get or set
  22608. Flags : ULONG; // KSPROPERTY_CAMERACONTROL_FLAGS_*
  22609. Capabilities : ULONG; // KSPROPERTY_CAMERACONTROL_FLAGS_*
  22610. end;
  22611. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_S}
  22612. PKSPROPERTY_CAMERACONTROL_S = ^KSPROPERTY_CAMERACONTROL_S;
  22613. {$EXTERNALSYM PKSPROPERTY_CAMERACONTROL_S}
  22614. TKSPropertyCameraControlS = KSPROPERTY_CAMERACONTROL_S;
  22615. PKSPropertyCameraControlNodeS = ^TKSPropertyCameraControlNodeS;
  22616. KSPROPERTY_CAMERACONTROL_NODE_S = packed record
  22617. NodeProperty: KSP_NODE;
  22618. Value: Integer; // value to get or set
  22619. Flags: ULONG; // KSPROPERTY_CAMERACONTROL_FLAGS_*
  22620. Capabilities: ULONG; // KSPROPERTY_CAMERACONTROL_FLAGS_*
  22621. end;
  22622. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_NODE_S}
  22623. PKSPROPERTY_CAMERACONTROL_NODE_S = ^KSPROPERTY_CAMERACONTROL_NODE_S;
  22624. {$EXTERNALSYM PKSPROPERTY_CAMERACONTROL_NODE_S}
  22625. TKSPropertyCameraControlNodeS = KSPROPERTY_CAMERACONTROL_NODE_S;
  22626. PKSPropertyCameraControlS2 = ^TKSPropertyCameraControlS2;
  22627. KSPROPERTY_CAMERACONTROL_S2 = packed record
  22628. Property_: KSPROPERTY;
  22629. Value1: Integer;
  22630. Flags: ULONG;
  22631. Capabilities: ULONG;
  22632. Value2: Integer;
  22633. end;
  22634. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_S2}
  22635. PKSPROPERTY_CAMERACONTROL_S2 = ^KSPROPERTY_CAMERACONTROL_S2;
  22636. {$EXTERNALSYM PKSPROPERTY_CAMERACONTROL_S2}
  22637. TKSPropertyCameraControlS2 = KSPROPERTY_CAMERACONTROL_S2;
  22638. PKSPropertyCameraControlNodeS2 = ^TKSPropertyCameraControlNodeS2;
  22639. KSPROPERTY_CAMERACONTROL_NODE_S2 = packed record
  22640. NodeProperty: KSP_NODE ;
  22641. Value1: Integer;
  22642. Flags: ULONG;
  22643. Capabilities: ULONG;
  22644. Value2: Integer;
  22645. end;
  22646. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_NODE_S2}
  22647. PKSPROPERTY_CAMERACONTROL_NODE_S2 = ^KSPROPERTY_CAMERACONTROL_NODE_S2;
  22648. {$EXTERNALSYM PKSPROPERTY_CAMERACONTROL_NODE_S2}
  22649. TKSPropertyCameraControlNodeS2 = KSPROPERTY_CAMERACONTROL_NODE_S2;
  22650. PKSPropertyCameraControlFocalLengthS = ^TKSPropertyCameraControlFocalLengthS;
  22651. KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S = packed record
  22652. Property_: KSPROPERTY;
  22653. lOcularFocalLength: Integer;
  22654. lObjectiveFocalLengthMin: Integer;
  22655. lObjectiveFocalLengthMax: Integer;
  22656. end;
  22657. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S}
  22658. PKSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S = ^KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S;
  22659. {$EXTERNALSYM PKSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S}
  22660. TKSPropertyCameraControlFocalLengthS = KSPROPERTY_CAMERACONTROL_FOCAL_LENGTH_S;
  22661. KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S = packed record
  22662. NodeProperty: KSNODEPROPERTY;
  22663. lOcularFocalLength: Integer;
  22664. lObjectiveFocalLengthMin: Integer;
  22665. lObjectiveFocalLengthMax: Integer;
  22666. end;
  22667. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S}
  22668. TKSPropertyCameraControlNodeFocalLengthS = KSPROPERTY_CAMERACONTROL_NODE_FOCAL_LENGTH_S;
  22669. const
  22670. KSPROPERTY_CAMERACONTROL_FLAGS_AUTO = $0001;
  22671. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_FLAGS_AUTO}
  22672. KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL = $0002;
  22673. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_FLAGS_MANUAL}
  22674. KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE = $0000;
  22675. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_FLAGS_ABSOLUTE}
  22676. KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE = $0010;
  22677. {$EXTERNALSYM KSPROPERTY_CAMERACONTROL_FLAGS_RELATIVE}
  22678. //===========================================================================
  22679. PROPSETID_VIDCAP_CROSSBAR : TGUID = '{6a2e0640-28e4-11d0-a18c-00a0c9118956}';
  22680. {$EXTERNALSYM PROPSETID_VIDCAP_CROSSBAR}
  22681. type
  22682. KSPROPERTY_VIDCAP_CROSSBAR = (
  22683. KSPROPERTY_CROSSBAR_CAPS, // R
  22684. KSPROPERTY_CROSSBAR_PININFO, // R
  22685. KSPROPERTY_CROSSBAR_CAN_ROUTE, // R
  22686. KSPROPERTY_CROSSBAR_ROUTE // RW
  22687. );
  22688. {$EXTERNALSYM KSPROPERTY_VIDCAP_CROSSBAR}
  22689. TKSPropertyVidCapCrossbar = KSPROPERTY_VIDCAP_CROSSBAR;
  22690. PKSPropertyCrossbarCapsS = ^TKSPropertyCrossbarCapsS;
  22691. KSPROPERTY_CROSSBAR_CAPS_S = record
  22692. Property_ : KSPROPERTY;
  22693. NumberOfInputs : ULONG; // the number of audio and video input pins
  22694. NumberOfOutputs : ULONG; // the number of audio and video output pins
  22695. end;
  22696. {$EXTERNALSYM KSPROPERTY_CROSSBAR_CAPS_S}
  22697. PKSPROPERTY_CROSSBAR_CAPS_S = ^KSPROPERTY_CROSSBAR_CAPS_S;
  22698. {$EXTERNALSYM PKSPROPERTY_CROSSBAR_CAPS_S}
  22699. TKSPropertyCrossbarCapsS = KSPROPERTY_CROSSBAR_CAPS_S;
  22700. PKSPropertyCrossbarPinInfoS = ^TKSPropertyCrossbarPinInfoS;
  22701. KSPROPERTY_CROSSBAR_PININFO_S = record
  22702. Property_ : KSPROPERTY;
  22703. Direction : TKSPinDataFlow; // KSPIN_DATAFLOW_IN or KSPIN_DATAFLOW_OUT?
  22704. Index : ULONG; // Which pin to return data for?
  22705. PinType : ULONG; // KS_PhysConn_Video_* or KS_PhysConn_Audio_*
  22706. RelatedPinIndex : ULONG; // For video pins, this is the related audio pin
  22707. Medium : TKSPinMedium; // Identifies the hardware connection
  22708. end;
  22709. {$EXTERNALSYM KSPROPERTY_CROSSBAR_PININFO_S}
  22710. PKSPROPERTY_CROSSBAR_PININFO_S = ^KSPROPERTY_CROSSBAR_PININFO_S;
  22711. {$EXTERNALSYM PKSPROPERTY_CROSSBAR_PININFO_S}
  22712. TKSPropertyCrossbarPinInfoS = KSPROPERTY_CROSSBAR_PININFO_S;
  22713. PKSPropertyCrossbarRouteS = ^TKSPropertyCrossbarRouteS;
  22714. KSPROPERTY_CROSSBAR_ROUTE_S = record
  22715. Property_ : KSPROPERTY;
  22716. IndexInputPin : ULONG; // Zero based index of the input pin
  22717. IndexOutputPin : ULONG; // Zero based index of the output pin
  22718. CanRoute : ULONG; // returns non-zero on CAN_ROUTE if routing is possible
  22719. end;
  22720. {$EXTERNALSYM KSPROPERTY_CROSSBAR_ROUTE_S}
  22721. PKSPROPERTY_CROSSBAR_ROUTE_S = ^KSPROPERTY_CROSSBAR_ROUTE_S;
  22722. {$EXTERNALSYM PKSPROPERTY_CROSSBAR_ROUTE_S}
  22723. TKSPropertyCrossbarRouteS = KSPROPERTY_CROSSBAR_ROUTE_S;
  22724. const
  22725. EVENTSETID_CROSSBAR : TGUID = '{6a2e0641-28e4-11d0-a18c-00a0c9118956}';
  22726. {$EXTERNALSYM EVENTSETID_CROSSBAR}
  22727. type
  22728. KSEVENT_CROSSBAR = (
  22729. KSEVENT_CROSSBAR_CHANGED
  22730. );
  22731. {$EXTERNALSYM KSEVENT_CROSSBAR}
  22732. TKSEventCrossbar = KSEVENT_CROSSBAR;
  22733. // The following IDs should match the AM equivalents
  22734. KS_PhysicalConnectorType = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22735. {$EXTERNALSYM KS_PhysicalConnectorType}
  22736. const
  22737. KS_PhysConn_Video_Tuner = 1;
  22738. {$EXTERNALSYM KS_PhysConn_Video_Tuner}
  22739. KS_PhysConn_Video_Composite = 2;
  22740. {$EXTERNALSYM KS_PhysConn_Video_Composite}
  22741. KS_PhysConn_Video_SVideo = 3;
  22742. {$EXTERNALSYM KS_PhysConn_Video_SVideo}
  22743. KS_PhysConn_Video_RGB = 4;
  22744. {$EXTERNALSYM KS_PhysConn_Video_RGB}
  22745. KS_PhysConn_Video_YRYBY = 5;
  22746. {$EXTERNALSYM KS_PhysConn_Video_YRYBY}
  22747. KS_PhysConn_Video_SerialDigital = 6;
  22748. {$EXTERNALSYM KS_PhysConn_Video_SerialDigital}
  22749. KS_PhysConn_Video_ParallelDigital = 7;
  22750. {$EXTERNALSYM KS_PhysConn_Video_ParallelDigital}
  22751. KS_PhysConn_Video_SCSI = 8;
  22752. {$EXTERNALSYM KS_PhysConn_Video_SCSI}
  22753. KS_PhysConn_Video_AUX = 9;
  22754. {$EXTERNALSYM KS_PhysConn_Video_AUX}
  22755. KS_PhysConn_Video_1394 = 10;
  22756. {$EXTERNALSYM KS_PhysConn_Video_1394}
  22757. KS_PhysConn_Video_USB = 11;
  22758. {$EXTERNALSYM KS_PhysConn_Video_USB}
  22759. KS_PhysConn_Video_VideoDecoder = 12;
  22760. {$EXTERNALSYM KS_PhysConn_Video_VideoDecoder}
  22761. KS_PhysConn_Video_VideoEncoder = 13;
  22762. {$EXTERNALSYM KS_PhysConn_Video_VideoEncoder}
  22763. KS_PhysConn_Video_SCART = 14;
  22764. {$EXTERNALSYM KS_PhysConn_Video_SCART}
  22765. KS_PhysConn_Audio_Tuner = 4096;
  22766. {$EXTERNALSYM KS_PhysConn_Audio_Tuner}
  22767. KS_PhysConn_Audio_Line = 4097;
  22768. {$EXTERNALSYM KS_PhysConn_Audio_Line}
  22769. KS_PhysConn_Audio_Mic = 4098;
  22770. {$EXTERNALSYM KS_PhysConn_Audio_Mic}
  22771. KS_PhysConn_Audio_AESDigital = 4099;
  22772. {$EXTERNALSYM KS_PhysConn_Audio_AESDigital}
  22773. KS_PhysConn_Audio_SPDIFDigital = 4100;
  22774. {$EXTERNALSYM KS_PhysConn_Audio_SPDIFDigital}
  22775. KS_PhysConn_Audio_SCSI = 4101;
  22776. {$EXTERNALSYM KS_PhysConn_Audio_SCSI}
  22777. KS_PhysConn_Audio_AUX = 4102;
  22778. {$EXTERNALSYM KS_PhysConn_Audio_AUX}
  22779. KS_PhysConn_Audio_1394 = 4103;
  22780. {$EXTERNALSYM KS_PhysConn_Audio_1394}
  22781. KS_PhysConn_Audio_USB = 4104;
  22782. {$EXTERNALSYM KS_PhysConn_Audio_USB}
  22783. KS_PhysConn_Audio_AudioDecoder = 4105;
  22784. {$EXTERNALSYM KS_PhysConn_Audio_AudioDecoder}
  22785. //===========================================================================
  22786. PROPSETID_VIDCAP_TVAUDIO : TGUID = '{6a2e0650-28e4-11d0-a18c-00a0c9118956}';
  22787. {$EXTERNALSYM PROPSETID_VIDCAP_TVAUDIO}
  22788. type
  22789. KSPROPERTY_VIDCAP_TVAUDIO = (
  22790. KSPROPERTY_TVAUDIO_CAPS, // R
  22791. KSPROPERTY_TVAUDIO_MODE, // RW
  22792. KSPROPERTY_TVAUDIO_CURRENTLY_AVAILABLE_MODES // R
  22793. );
  22794. {$EXTERNALSYM KSPROPERTY_VIDCAP_TVAUDIO}
  22795. TKSPropertyVidCapTVAudio = KSPROPERTY_VIDCAP_TVAUDIO;
  22796. const
  22797. KS_TVAUDIO_MODE_MONO = $0001; // Mono
  22798. {$EXTERNALSYM KS_TVAUDIO_MODE_MONO}
  22799. KS_TVAUDIO_MODE_STEREO = $0002; // Stereo
  22800. {$EXTERNALSYM KS_TVAUDIO_MODE_STEREO}
  22801. KS_TVAUDIO_MODE_LANG_A = $0010; // Primary language
  22802. {$EXTERNALSYM KS_TVAUDIO_MODE_LANG_A}
  22803. KS_TVAUDIO_MODE_LANG_B = $0020; // 2nd avail language
  22804. {$EXTERNALSYM KS_TVAUDIO_MODE_LANG_B}
  22805. KS_TVAUDIO_MODE_LANG_C = $0040; // 3rd avail language
  22806. {$EXTERNALSYM KS_TVAUDIO_MODE_LANG_C}
  22807. type
  22808. PKSPropertyTVAudioCapsS = ^TKSPropertyTVAudioCapsS;
  22809. KSPROPERTY_TVAUDIO_CAPS_S = record
  22810. Property_ : KSPROPERTY;
  22811. Capabilities : ULONG; // Bitmask of KS_TVAUDIO_MODE_*
  22812. InputMedium : TKSPinMedium;
  22813. OutputMedium : TKSPinMedium;
  22814. end;
  22815. {$EXTERNALSYM KSPROPERTY_TVAUDIO_CAPS_S}
  22816. PKSPROPERTY_TVAUDIO_CAPS_S = ^KSPROPERTY_TVAUDIO_CAPS_S;
  22817. {$EXTERNALSYM PKSPROPERTY_TVAUDIO_CAPS_S}
  22818. TKSPropertyTVAudioCapsS = KSPROPERTY_TVAUDIO_CAPS_S;
  22819. PKSPropertyTVAudioS = ^TKSPropertyTVAudioS;
  22820. KSPROPERTY_TVAUDIO_S = record
  22821. Property_ : KSPROPERTY;
  22822. Mode : ULONG; // KS_TVAUDIO_MODE_*
  22823. end;
  22824. {$EXTERNALSYM KSPROPERTY_TVAUDIO_S}
  22825. PKSPROPERTY_TVAUDIO_S = ^KSPROPERTY_TVAUDIO_S;
  22826. {$EXTERNALSYM PKSPROPERTY_TVAUDIO_S}
  22827. TKSPropertyTVAudioS = KSPROPERTY_TVAUDIO_S;
  22828. const
  22829. KSEVENTSETID_VIDCAP_TVAUDIO : TGUID = '{6a2e0651-28e4-11d0-a18c-00a0c9118956}';
  22830. {$EXTERNALSYM KSEVENTSETID_VIDCAP_TVAUDIO}
  22831. type
  22832. KSEVENT_TVAUDIO = (
  22833. KSEVENT_TVAUDIO_CHANGED
  22834. );
  22835. {$EXTERNALSYM KSEVENT_TVAUDIO}
  22836. TKSEventTVAudio = KSEVENT_TVAUDIO;
  22837. //===========================================================================
  22838. const
  22839. PROPSETID_VIDCAP_VIDEOCOMPRESSION : TGUID = '{C6E13343-30AC-11d0-A18C-00A0C9118956}';
  22840. {$EXTERNALSYM PROPSETID_VIDCAP_VIDEOCOMPRESSION}
  22841. type
  22842. KSPROPERTY_VIDCAP_VIDEOCOMPRESSION = (
  22843. KSPROPERTY_VIDEOCOMPRESSION_GETINFO, // R
  22844. KSPROPERTY_VIDEOCOMPRESSION_KEYFRAME_RATE, // RW
  22845. KSPROPERTY_VIDEOCOMPRESSION_PFRAMES_PER_KEYFRAME, // RW
  22846. KSPROPERTY_VIDEOCOMPRESSION_QUALITY, // RW
  22847. KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_KEYFRAME, // W
  22848. KSPROPERTY_VIDEOCOMPRESSION_OVERRIDE_FRAME_SIZE, // W
  22849. KSPROPERTY_VIDEOCOMPRESSION_WINDOWSIZE // RW
  22850. );
  22851. {$EXTERNALSYM KSPROPERTY_VIDCAP_VIDEOCOMPRESSION}
  22852. TKSPRopertyVidCapVideoCompression = KSPROPERTY_VIDCAP_VIDEOCOMPRESSION;
  22853. KS_CompressionCaps = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22854. {$EXTERNALSYM KS_CompressionCaps}
  22855. const
  22856. KS_CompressionCaps_CanQuality = 1;
  22857. {$EXTERNALSYM KS_CompressionCaps_CanQuality}
  22858. KS_CompressionCaps_CanCrunch = 2;
  22859. {$EXTERNALSYM KS_CompressionCaps_CanCrunch}
  22860. KS_CompressionCaps_CanKeyFrame = 4;
  22861. {$EXTERNALSYM KS_CompressionCaps_CanKeyFrame}
  22862. KS_CompressionCaps_CanBFrame = 8;
  22863. {$EXTERNALSYM KS_CompressionCaps_CanBFrame}
  22864. KS_CompressionCaps_CanWindow = $10;
  22865. {$EXTERNALSYM KS_CompressionCaps_CanWindow}
  22866. type
  22867. PKSPropertyVideoCompressionGetInfoS = ^TKSPropertyVideoCompressionGetInfoS;
  22868. KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S = record
  22869. Property_ : KSPROPERTY;
  22870. // Note, no VersionString!
  22871. // Note, no DescriptionString!
  22872. StreamIndex : ULONG; // zero based index of stream
  22873. DefaultKeyFrameRate : longint; // Key frame rate
  22874. DefaultPFrameRate : longint; // Predeicted frames per Key frame
  22875. DefaultQuality : longint; // 0 to 10000
  22876. NumberOfQualitySettings : longint; // How many discreet quality settings?
  22877. Capabilities : longint; // KS_CompressionCaps_*
  22878. end;
  22879. {$EXTERNALSYM KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S}
  22880. PKSPROPERTY_VIDEOCOMPRESSION_GETINFO_S = ^KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S;
  22881. {$EXTERNALSYM PKSPROPERTY_VIDEOCOMPRESSION_GETINFO_S}
  22882. TKSPropertyVideoCompressionGetInfoS = KSPROPERTY_VIDEOCOMPRESSION_GETINFO_S;
  22883. PKSPropertyVideoCompressionS = ^TKSPropertyVideoCompressionS;
  22884. KSPROPERTY_VIDEOCOMPRESSION_S = record
  22885. Property_ : KSPROPERTY;
  22886. StreamIndex : ULONG; // zero based index of stream
  22887. Value : longint; // value to get or set
  22888. end;
  22889. {$EXTERNALSYM KSPROPERTY_VIDEOCOMPRESSION_S}
  22890. PKSPROPERTY_VIDEOCOMPRESSION_S = ^KSPROPERTY_VIDEOCOMPRESSION_S;
  22891. {$EXTERNALSYM PKSPROPERTY_VIDEOCOMPRESSION_S}
  22892. TKSPropertyVideoCompressionS = KSPROPERTY_VIDEOCOMPRESSION_S;
  22893. //===========================================================================
  22894. // MEDIASUBTYPE_Overlay
  22895. const
  22896. KSDATAFORMAT_SUBTYPE_OVERLAY : TGUID = '{e436eb7f-524f-11ce-9f53-0020af0ba770}';
  22897. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_OVERLAY}
  22898. KSPROPSETID_OverlayUpdate : TGUID = '{490EA5CF-7681-11D1-A21C-00A0C9223196}';
  22899. {$EXTERNALSYM KSPROPSETID_OverlayUpdate}
  22900. type
  22901. KSPROPERTY_OVERLAYUPDATE = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22902. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE}
  22903. const
  22904. KSPROPERTY_OVERLAYUPDATE_INTERESTS = $0;
  22905. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE_INTERESTS}
  22906. KSPROPERTY_OVERLAYUPDATE_CLIPLIST = $1;
  22907. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE_CLIPLIST}
  22908. KSPROPERTY_OVERLAYUPDATE_PALETTE = $2;
  22909. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE_PALETTE}
  22910. KSPROPERTY_OVERLAYUPDATE_COLORKEY = $4;
  22911. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE_COLORKEY}
  22912. KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION = $8;
  22913. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION}
  22914. KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE = $10;
  22915. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE}
  22916. KSPROPERTY_OVERLAYUPDATE_COLORREF = $10000000;
  22917. {$EXTERNALSYM KSPROPERTY_OVERLAYUPDATE_COLORREF}
  22918. type
  22919. KSDISPLAYCHANGE = record
  22920. PelsWidth :ULONG;
  22921. PelsHeight :ULONG;
  22922. BitsPerPel :ULONG;
  22923. DeviceID :array[0..0] of WideChar;
  22924. end;
  22925. {$EXTERNALSYM KSDISPLAYCHANGE}
  22926. PKSDISPLAYCHANGE = ^KSDISPLAYCHANGE;
  22927. {$EXTERNALSYM PKSDISPLAYCHANGE}
  22928. TKSDisplayChange = KSDISPLAYCHANGE;
  22929. {#define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_INTERESTS(Handler)\
  22930. DEFINE_KSPROPERTY_ITEM(\
  22931. KSPROPERTY_OVERLAYUPDATE_INTERESTS,\
  22932. (Handler),\
  22933. sizeof(KSPROPERTY),\
  22934. sizeof(ULONG),\
  22935. NULL, NULL, 0, NULL, NULL, 0)
  22936. #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_PALETTE(Handler)\
  22937. DEFINE_KSPROPERTY_ITEM(\
  22938. KSPROPERTY_OVERLAYUPDATE_PALETTE,\
  22939. NULL,\
  22940. sizeof(KSPROPERTY),\
  22941. 0,\
  22942. (Handler),\
  22943. NULL, 0, NULL, NULL, 0)
  22944. #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORKEY(Handler)\
  22945. DEFINE_KSPROPERTY_ITEM(\
  22946. KSPROPERTY_OVERLAYUPDATE_COLORKEY,\
  22947. NULL,\
  22948. sizeof(KSPROPERTY),\
  22949. sizeof(COLORKEY),\
  22950. (Handler),\
  22951. NULL, 0, NULL, NULL, 0)
  22952. #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_CLIPLIST(Handler)\
  22953. DEFINE_KSPROPERTY_ITEM(\
  22954. KSPROPERTY_OVERLAYUPDATE_CLIPLIST,\
  22955. NULL,\
  22956. sizeof(KSPROPERTY),\
  22957. 2 * sizeof(RECT) + sizeof(RGNDATAHEADER),\
  22958. (Handler),\
  22959. NULL, 0, NULL, NULL, 0)
  22960. #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_VIDEOPOSITION(Handler)\
  22961. DEFINE_KSPROPERTY_ITEM(\
  22962. KSPROPERTY_OVERLAYUPDATE_VIDEOPOSITION,\
  22963. NULL,\
  22964. sizeof(KSPROPERTY),\
  22965. 2 * sizeof(RECT),\
  22966. (Handler),\
  22967. NULL, 0, NULL, NULL, 0)
  22968. #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_DISPLAYCHANGE(Handler)\
  22969. DEFINE_KSPROPERTY_ITEM(\
  22970. KSPROPERTY_OVERLAYUPDATE_DISPLAYCHANGE,\
  22971. NULL,\
  22972. sizeof(KSPROPERTY),\
  22973. sizeof(KSDISPLAYCHANGE),\
  22974. (Handler),\
  22975. NULL, 0, NULL, NULL, 0)
  22976. #define DEFINE_KSPROPERTY_ITEM_OVERLAYUPDATE_COLORREF(Handler)\
  22977. DEFINE_KSPROPERTY_ITEM(\
  22978. KSPROPERTY_OVERLAYUPDATE_COLORREF,\
  22979. (Handler),\
  22980. sizeof(KSPROPERTY),\
  22981. sizeof(COLORREF),\
  22982. NULL,\
  22983. NULL, 0, NULL, NULL, 0) }
  22984. //===========================================================================
  22985. const
  22986. PROPSETID_VIDCAP_VIDEOCONTROL : TGUID = '{6a2e0670-28e4-11d0-a18c-00a0c9118956}';
  22987. {$EXTERNALSYM PROPSETID_VIDCAP_VIDEOCONTROL}
  22988. type
  22989. KSPROPERTY_VIDCAP_VIDEOCONTROL = (
  22990. KSPROPERTY_VIDEOCONTROL_CAPS, // R
  22991. KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE, // R O
  22992. KSPROPERTY_VIDEOCONTROL_FRAME_RATES, // R O
  22993. KSPROPERTY_VIDEOCONTROL_MODE // RWO
  22994. );
  22995. {$EXTERNALSYM KSPROPERTY_VIDCAP_VIDEOCONTROL}
  22996. TKSPropertyVidCapVideoControl = KSPROPERTY_VIDCAP_VIDEOCONTROL;
  22997. KS_VideoControlFlags = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  22998. {$EXTERNALSYM KS_VideoControlFlags}
  22999. const
  23000. KS_VideoControlFlag_FlipHorizontal = $0001;
  23001. {$EXTERNALSYM KS_VideoControlFlag_FlipHorizontal}
  23002. KS_VideoControlFlag_FlipVertical = $0002;
  23003. {$EXTERNALSYM KS_VideoControlFlag_FlipVertical}
  23004. KS_Obsolete_VideoControlFlag_ExternalTriggerEnable = $0010; // ***WARNING *** Flag msimatch with DSHOW.
  23005. {$EXTERNALSYM KS_Obsolete_VideoControlFlag_ExternalTriggerEnable}
  23006. KS_Obsolete_VideoControlFlag_Trigger = $0020; // ***WARNING *** Flag msimatch with DSHOW.
  23007. {$EXTERNALSYM KS_Obsolete_VideoControlFlag_Trigger}
  23008. KS_VideoControlFlag_ExternalTriggerEnable = $0004;
  23009. {$EXTERNALSYM KS_VideoControlFlag_ExternalTriggerEnable}
  23010. KS_VideoControlFlag_Trigger = $0008;
  23011. {$EXTERNALSYM KS_VideoControlFlag_Trigger}
  23012. type
  23013. PKSPropertyVideoControlCapsS = ^TKSPropertyVideoControlCapsS;
  23014. KSPROPERTY_VIDEOCONTROL_CAPS_S = record
  23015. Property_ : KSPROPERTY;
  23016. StreamIndex : ULONG;
  23017. VideoControlCaps : ULONG; // KS_VideoControlFlags_*
  23018. end;
  23019. {$EXTERNALSYM KSPROPERTY_VIDEOCONTROL_CAPS_S}
  23020. PKSPROPERTY_VIDEOCONTROL_CAPS_S = ^KSPROPERTY_VIDEOCONTROL_CAPS_S;
  23021. {$EXTERNALSYM PKSPROPERTY_VIDEOCONTROL_CAPS_S}
  23022. TKSPropertyVideoControlCapsS = KSPROPERTY_VIDEOCONTROL_CAPS_S;
  23023. PKSPropertyVideoControlModeS = ^TKSPropertyVideoControlModeS;
  23024. KSPROPERTY_VIDEOCONTROL_MODE_S = record
  23025. Property_ : KSPROPERTY;
  23026. StreamIndex : ULONG;
  23027. Mode : longint; // KS_VideoControlFlags_*
  23028. end;
  23029. {$EXTERNALSYM KSPROPERTY_VIDEOCONTROL_MODE_S}
  23030. PKSPROPERTY_VIDEOCONTROL_MODE_S = ^KSPROPERTY_VIDEOCONTROL_MODE_S;
  23031. {$EXTERNALSYM PKSPROPERTY_VIDEOCONTROL_MODE_S}
  23032. TKSPropertyVideoControlModeS = KSPROPERTY_VIDEOCONTROL_MODE_S;
  23033. PKSPropertyVideoControlActualFrameRateS = ^TKSPropertyVideoControlActualFrameRateS;
  23034. KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S = record
  23035. Property_ : KSPROPERTY;
  23036. StreamIndex : ULONG; // Index of stream
  23037. RangeIndex : ULONG; // Index of range
  23038. Dimensions : TSIZE; // Size of image
  23039. CurrentActualFrameRate : int64; // Only correct if pin is open
  23040. CurrentMaxAvailableFrameRate : int64; // Max Rate temporarily limited on USB or 1394?
  23041. end;
  23042. {$EXTERNALSYM KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S}
  23043. PKSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S = ^KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S;
  23044. {$EXTERNALSYM PKSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S}
  23045. TKSPropertyVideoControlActualFrameRateS = KSPROPERTY_VIDEOCONTROL_ACTUAL_FRAME_RATE_S;
  23046. // KSPROPERTY_VIDEOCONTROL_FRAME_RATES returns a list of available frame rates in 100 nS units
  23047. PKSPropertyVideoControlFrameRatesS = ^TKSPropertyVideoControlFrameRatesS;
  23048. KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S = record
  23049. Property_ : KSPROPERTY;
  23050. StreamIndex : ULONG; // Index of stream
  23051. RangeIndex : ULONG; // Index of range
  23052. Dimensions : TSIZE; // Size of image
  23053. end;
  23054. {$EXTERNALSYM KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S}
  23055. PKSPROPERTY_VIDEOCONTROL_FRAME_RATES_S = ^KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S;
  23056. {$EXTERNALSYM PKSPROPERTY_VIDEOCONTROL_FRAME_RATES_S}
  23057. TKSPropertyVideoControlFrameRatesS = KSPROPERTY_VIDEOCONTROL_FRAME_RATES_S;
  23058. //===========================================================================
  23059. const
  23060. PROPSETID_VIDCAP_DROPPEDFRAMES : TGUID = '{C6E13344-30AC-11d0-A18C-00A0C9118956}';
  23061. {$EXTERNALSYM PROPSETID_VIDCAP_DROPPEDFRAMES}
  23062. type
  23063. KSPROPERTY_VIDCAP_DROPPEDFRAMES = (
  23064. KSPROPERTY_DROPPEDFRAMES_CURRENT // R
  23065. );
  23066. {$EXTERNALSYM KSPROPERTY_VIDCAP_DROPPEDFRAMES}
  23067. TKSPropertyVidCapDroppedFrames = KSPROPERTY_VIDCAP_DROPPEDFRAMES;
  23068. PKSPropertyDroppedFramesCurrentS = ^TKSPropertyDroppedFramesCurrentS;
  23069. KSPROPERTY_DROPPEDFRAMES_CURRENT_S = record
  23070. Property_ : KSPROPERTY;
  23071. PictureNumber : int64; // Current Picture Number
  23072. DropCount : int64; // Count of frames dropped
  23073. AverageFrameSize : ULONG; // Average size of frames captured
  23074. end;
  23075. {$EXTERNALSYM KSPROPERTY_DROPPEDFRAMES_CURRENT_S}
  23076. PKSPROPERTY_DROPPEDFRAMES_CURRENT_S = ^KSPROPERTY_DROPPEDFRAMES_CURRENT_S;
  23077. {$EXTERNALSYM PKSPROPERTY_DROPPEDFRAMES_CURRENT_S}
  23078. TKSPropertyDroppedFramesCurrentS = KSPROPERTY_DROPPEDFRAMES_CURRENT_S;
  23079. //===========================================================================
  23080. // VPE
  23081. const
  23082. KSPROPSETID_VPConfig : TGUID = '{bc29a660-30e3-11d0-9e69-00c04fd7c15b}';
  23083. {$EXTERNALSYM KSPROPSETID_VPConfig}
  23084. KSPROPSETID_VPVBIConfig : TGUID = '{ec529b00-1a1f-11d1-bad9-00609744111a}';
  23085. {$EXTERNALSYM KSPROPSETID_VPVBIConfig}
  23086. // Both of the above property sets use the same list of properties below
  23087. type
  23088. KSPROPERTY_VPCONFIG = (
  23089. KSPROPERTY_VPCONFIG_NUMCONNECTINFO,
  23090. KSPROPERTY_VPCONFIG_GETCONNECTINFO,
  23091. KSPROPERTY_VPCONFIG_SETCONNECTINFO,
  23092. KSPROPERTY_VPCONFIG_VPDATAINFO,
  23093. KSPROPERTY_VPCONFIG_MAXPIXELRATE,
  23094. KSPROPERTY_VPCONFIG_INFORMVPINPUT,
  23095. KSPROPERTY_VPCONFIG_NUMVIDEOFORMAT,
  23096. KSPROPERTY_VPCONFIG_GETVIDEOFORMAT,
  23097. KSPROPERTY_VPCONFIG_SETVIDEOFORMAT,
  23098. KSPROPERTY_VPCONFIG_INVERTPOLARITY,
  23099. KSPROPERTY_VPCONFIG_DECIMATIONCAPABILITY, // E_NOTIMPL for VBI
  23100. KSPROPERTY_VPCONFIG_SCALEFACTOR, // E_NOTIMPL for VBI
  23101. KSPROPERTY_VPCONFIG_DDRAWHANDLE,
  23102. KSPROPERTY_VPCONFIG_VIDEOPORTID,
  23103. KSPROPERTY_VPCONFIG_DDRAWSURFACEHANDLE,
  23104. KSPROPERTY_VPCONFIG_SURFACEPARAMS
  23105. );
  23106. {$EXTERNALSYM KSPROPERTY_VPCONFIG}
  23107. TKSPropertyVPConfig = KSPROPERTY_VPCONFIG;
  23108. //=========================
  23109. // IBasicAudio
  23110. //
  23111. const
  23112. CLSID_KsIBasicAudioInterfaceHandler : TGUID = '{b9f8ac3e-0f71-11d2-b72c-00c04fb6bd3d}';
  23113. {$EXTERNALSYM CLSID_KsIBasicAudioInterfaceHandler}
  23114. type
  23115. KSVPMAXPIXELRATE = record
  23116. Size : TAMVPSIZE;
  23117. MaxPixelsPerSecond : DWORD;
  23118. Reserved : DWORD;
  23119. end;
  23120. {$EXTERNALSYM KSVPMAXPIXELRATE}
  23121. PKSVPMAXPIXELRATE = ^KSVPMAXPIXELRATE;
  23122. {$EXTERNALSYM PKSVPMAXPIXELRATE}
  23123. TKSVPMaxPixelRate = KSVPMAXPIXELRATE;
  23124. PKSVPSizeProp = ^TKSVPSizeProp;
  23125. KSVPSIZE_PROP = record
  23126. Property_ : KSPROPERTY;
  23127. Size : TAMVPSIZE;
  23128. end;
  23129. {$EXTERNALSYM KSVPSIZE_PROP}
  23130. PKSVPSIZE_PROP = ^KSVPSIZE_PROP;
  23131. {$EXTERNALSYM PKSVPSIZE_PROP}
  23132. TKSVPSizeProp = KSVPSIZE_PROP;
  23133. KSVPSURFACEPARAMS = record
  23134. dwPitch : DWORD;
  23135. dwXOrigin : DWORD;
  23136. dwYOrigin : DWORD;
  23137. end;
  23138. {$EXTERNALSYM KSVPSURFACEPARAMS}
  23139. PKSVPSURFACEPARAMS = ^KSVPSURFACEPARAMS;
  23140. {$EXTERNALSYM PKSVPSURFACEPARAMS}
  23141. TKSVPSurfaceParams = KSVPSURFACEPARAMS;
  23142. //==========================================================================
  23143. // The following definitions must be in sync with DDraw.h in DirectX SDK
  23144. //==========================================================================
  23145. //*
  23146. //* The FourCC code is valid.
  23147. //*
  23148. // uses DirectDraw.pas
  23149. //==========================================================================
  23150. // End of DDraw.h header info
  23151. //==========================================================================
  23152. //==========================================================================
  23153. // The following definitions must be in sync with DVP.h in DirectX SDK
  23154. //==========================================================================
  23155. _DDVIDEOPORTCONNECT = record
  23156. dwSize : DWORD; // size of the DDVIDEOPORTCONNECT structure
  23157. dwPortWidth : DWORD; // Width of the video port
  23158. guidTypeID : TGUID; // Description of video port connection
  23159. dwFlags : DWORD; // Connection flags
  23160. dwReserved1 : DWORD; // Reserved, set to zero.
  23161. end;
  23162. {$EXTERNALSYM _DDVIDEOPORTCONNECT}
  23163. DDVIDEOPORTCONNECT = _DDVIDEOPORTCONNECT;
  23164. {$EXTERNALSYM DDVIDEOPORTCONNECT}
  23165. PDDVIDEOPORTCONNECT = ^DDVIDEOPORTCONNECT;
  23166. {$EXTERNALSYM PDDVIDEOPORTCONNECT}
  23167. TDDVideoPortConnect = _DDVIDEOPORTCONNECT;
  23168. const
  23169. DDVPTYPE_E_HREFH_VREFH : TGUID = (D1:$54F39980;D2:$DA60;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8));
  23170. {$EXTERNALSYM DDVPTYPE_E_HREFH_VREFH}
  23171. DDVPTYPE_E_HREFL_VREFL : TGUID = (D1:$E09C77E0;D2:$DA60;D3:$11CF;D4:($9B,$06,$00,$A0,$C9,$03,$A3,$B8));
  23172. {$EXTERNALSYM DDVPTYPE_E_HREFL_VREFL}
  23173. //==========================================================================
  23174. // End of DVP.h header info
  23175. //==========================================================================
  23176. //==========================================================================
  23177. // The following definitions must be in sync with VPType.h in AM 2.0 SDK
  23178. //==========================================================================
  23179. type
  23180. // pixel aspect ratios corresponding to a 720x480 NTSC image or a 720x576 image
  23181. KS_AMPixAspectRatio = ( // AMPixAspectRatio
  23182. KS_PixAspectRatio_NTSC4x3,
  23183. KS_PixAspectRatio_NTSC16x9,
  23184. KS_PixAspectRatio_PAL4x3,
  23185. KS_PixAspectRatio_PAL16x9
  23186. );
  23187. {$NODEFINE KS_AMPixAspectRatio}
  23188. TKSAMPixAspectRatio = KS_AMPixAspectRatio;
  23189. {$NODEFINE TKSAMPixAspectRatio}
  23190. KS_AMVP_SELECTFORMATBY = ( // AMVP_SELECTFORMATBY
  23191. KS_AMVP_DO_NOT_CARE,
  23192. KS_AMVP_BEST_BANDWIDTH,
  23193. KS_AMVP_INPUT_SAME_AS_OUTPUT
  23194. );
  23195. {$NODEFINE KS_AMVP_SELECTFORMATBY}
  23196. TKSAMVPSelectFormatBy = KS_AMVP_SELECTFORMATBY;
  23197. {$NODEFINE TKSAMVPSelectFormatBy}
  23198. KS_AMVP_MODE = ( // AMVP_MODE
  23199. KS_AMVP_MODE_WEAVE,
  23200. KS_AMVP_MODE_BOBINTERLEAVED,
  23201. KS_AMVP_MODE_BOBNONINTERLEAVED,
  23202. KS_AMVP_MODE_SKIPEVEN,
  23203. KS_AMVP_MODE_SKIPODD
  23204. );
  23205. {$NODEFINE KS_AMVP_MODE}
  23206. TKSAMVPMode = KS_AMVP_MODE;
  23207. {$NODEFINE TKSAMVPMode}
  23208. PKSAMVPDimInfo = ^TKSAMVPDimInfo;
  23209. {$NODEFINE PKSAMVPDimInfo}
  23210. tagKS_AMVPDIMINFO = record // AMVPDIMINFO
  23211. dwFieldWidth : DWORD; // [out] field width
  23212. dwFieldHeight : DWORD; // [out] field height
  23213. dwVBIWidth : DWORD; // [out] VBI data width
  23214. dwVBIHeight : DWORD; // [out] VBI data height
  23215. rcValidRegion : TRECT; // [out] valid rect for data cropping
  23216. end;
  23217. {$NODEFINE tagKS_AMVPDIMINFO}
  23218. KS_AMVPDIMINFO = tagKS_AMVPDIMINFO;
  23219. {$EXTERNALSYM KS_AMVPDIMINFO}
  23220. PKS_AMVPDIMINFO = ^KS_AMVPDIMINFO;
  23221. {$NODEFINE PKS_AMVPDIMINFO}
  23222. TKSAMVPDimInfo = tagKS_AMVPDIMINFO;
  23223. {$NODEFINE TKSAMVPDimInfo}
  23224. PKSAMVPDataInfo = ^TKSAMVPDataInfo;
  23225. {$NODEFINE PKSAMVPDataInfo}
  23226. tagKS_AMVPDATAINFO = record // AMVPDATAINFO
  23227. dwSize : DWORD; // Size of the struct
  23228. dwMicrosecondsPerField : DWORD; // Time taken by each field
  23229. amvpDimInfo : TKSAMVPDimInfo; // Dimensional Information
  23230. dwPictAspectRatioX : DWORD; // Pict aspect ratio in X dimn
  23231. dwPictAspectRatioY : DWORD; // Pict aspect ratio in Y dimn
  23232. bEnableDoubleClock : BOOL; // Videoport should enable double clocking
  23233. bEnableVACT : BOOL; // Videoport should use an external VACT signal
  23234. bDataIsInterlaced : BOOL; // Indicates that the signal is interlaced
  23235. lHalfLinesOdd : Longint; // number of halflines in the odd field
  23236. bFieldPolarityInverted : BOOL; // Device inverts the polarity by default
  23237. dwNumLinesInVREF : DWORD; // Number of lines of data in VREF
  23238. lHalfLinesEven : Longint; // number of halflines in the even field
  23239. dwReserved1 : DWORD; // Reserved for future use
  23240. end;
  23241. {$NODEFINE tagKS_AMVPDATAINFO}
  23242. KS_AMVPDATAINFO = tagKS_AMVPDATAINFO;
  23243. {$NODEFINE KS_AMVPDATAINFO}
  23244. PKS_AMVPDATAINFO = ^KS_AMVPDATAINFO;
  23245. {$NODEFINE PKS_AMVPDATAINFO}
  23246. TKSAMVPDataInfo = tagKS_AMVPDATAINFO;
  23247. {$NODEFINE TKSAMVPDataInfo}
  23248. PKSAMVPSize = ^TKSAMVPSize;
  23249. {$NODEFINE PKSAMVPSize}
  23250. tagKS_AMVPSIZE = record // AMVPSIZE
  23251. dwWidth : DWORD; // [in] width in pixels
  23252. dwHeight : DWORD; // [in] height in pixels
  23253. end;
  23254. {$NODEFINE tagKS_AMVPSIZE}
  23255. KS_AMVPSIZE = tagKS_AMVPSIZE;
  23256. {$NODEFINE KS_AMVPSIZE}
  23257. PKS_AMVPSIZE = ^KS_AMVPSIZE;
  23258. {$NODEFINE PKS_AMVPSIZE}
  23259. TKSAMVPSize = tagKS_AMVPSIZE;
  23260. {$NODEFINE TKSAMVPSize}
  23261. //==========================================================================
  23262. // End of VPType.h header info
  23263. //==========================================================================
  23264. { // allready defined above
  23265. PKSVPMAXPIXELRATE = ^TKSVPMAXPIXELRATE;
  23266. TKSVPMAXPIXELRATE = record
  23267. Size : TKS_AMVPSIZE;
  23268. MaxPixelsPerSecond : DWORD;
  23269. Reserved : DWORD;
  23270. end;
  23271. PKSVPSIZE_PROP = ^TKSVPSIZE_PROP;
  23272. TKSVPSIZE_PROP = record
  23273. Property_ : KSPROPERTY;
  23274. Size : TKS_AMVPSIZE;
  23275. end;
  23276. PKSVPSURFACEPARAMS = ^TKSVPSURFACEPARAMS;
  23277. TKSVPSURFACEPARAMS = record
  23278. dwPitch : DWORD;
  23279. dwXOrigin : DWORD;
  23280. dwYOrigin : DWORD;
  23281. end; }
  23282. //
  23283. // IVPNotify event notification
  23284. //
  23285. const
  23286. KSEVENTSETID_VPNotify : TGUID = '{20c5598e-d3c8-11d0-8dfc-00c04fd7c08b}';
  23287. {$EXTERNALSYM KSEVENTSETID_VPNotify}
  23288. type
  23289. KSEVENT_VPNOTIFY = (
  23290. KSEVENT_VPNOTIFY_FORMATCHANGE
  23291. );
  23292. {$EXTERNALSYM KSEVENT_VPNOTIFY}
  23293. TKSEventVPNotify = KSEVENT_VPNOTIFY;
  23294. //
  23295. // VIDCAPTOSTI event notification
  23296. //
  23297. const
  23298. KSEVENTSETID_VIDCAPTOSTI : TGUID = '{DB47DE20-F628-11d1-BA41-00A0C90D2B05}';
  23299. {$EXTERNALSYM KSEVENTSETID_VIDCAPTOSTI}
  23300. type
  23301. KSEVENT_VIDCAPTOSTI = (
  23302. KSEVENT_VIDCAPTOSTI_EXT_TRIGGER,
  23303. KSEVENT_VIDCAP_AUTO_UPDATE,
  23304. KSEVENT_VIDCAP_SEARCH
  23305. );
  23306. {$EXTERNALSYM KSEVENT_VIDCAPTOSTI}
  23307. TKSEventVidCapToSTI = KSEVENT_VIDCAPTOSTI;
  23308. //
  23309. // Extension Unit Properties
  23310. //
  23311. const
  23312. KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH = $ffff; // (RW)
  23313. {$EXTERNALSYM KSPROPERTY_EXTENSION_UNIT_PASS_THROUGH}
  23314. type
  23315. PKSPropertyExtensionUnit = ^TKSPropertyExtensionUnit;
  23316. KSPROPERTY_EXTENSION_UNIT = (
  23317. KSPROPERTY_EXTENSION_UNIT_INFO, // (R)
  23318. KSPROPERTY_EXTENSION_UNIT_CONTROL // (RW)
  23319. );
  23320. {$EXTERNALSYM KSPROPERTY_EXTENSION_UNIT}
  23321. PKSPROPERTY_EXTENSION_UNIT = ^KSPROPERTY_EXTENSION_UNIT;
  23322. {$EXTERNALSYM PKSPROPERTY_EXTENSION_UNIT}
  23323. TKSPropertyExtensionUnit = KSPROPERTY_EXTENSION_UNIT;
  23324. //
  23325. // IVPVBINotify event notification
  23326. //
  23327. const
  23328. KSEVENTSETID_VPVBINotify : TGUID = '{ec529b01-1a1f-11d1-bad9-00609744111a}';
  23329. {$EXTERNALSYM KSEVENTSETID_VPVBINotify}
  23330. type
  23331. KSEVENT_VPVBINOTIFY = (
  23332. KSEVENT_VPVBINOTIFY_FORMATCHANGE
  23333. );
  23334. {$EXTERNALSYM KSEVENT_VPVBINOTIFY}
  23335. TKSEventVPVBINotify = KSEVENT_VPVBINOTIFY;
  23336. //
  23337. // closed caption information
  23338. //
  23339. const
  23340. KSDATAFORMAT_TYPE_AUXLine21Data : TGUID = '{670aea80-3a82-11d0-b79b-00aa003767a7}';
  23341. {$EXTERNALSYM KSDATAFORMAT_TYPE_AUXLine21Data}
  23342. KSDATAFORMAT_SUBTYPE_Line21_BytePair : TGUID = '{6e8d4a22-310c-11d0-b79a-00aa003767a7}';
  23343. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_Line21_BytePair}
  23344. KSDATAFORMAT_SUBTYPE_Line21_GOPPacket : TGUID = '{6e8d4a23-310c-11d0-b79a-00aa003767a7}';
  23345. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_Line21_GOPPacket}
  23346. type
  23347. PKSGopUserData = ^TKSGopUserData;
  23348. _KSGOP_USERDATA = record
  23349. sc : ULONG;
  23350. reserved1 : ULONG;
  23351. cFields : BYTE;
  23352. l21Data : array[0..2] of CHAR;
  23353. end;
  23354. {$EXTERNALSYM _KSGOP_USERDATA}
  23355. KSGOP_USERDATA = _KSGOP_USERDATA;
  23356. {$EXTERNALSYM KSGOP_USERDATA}
  23357. PKSGOP_USERDATA = ^KSGOP_USERDATA;
  23358. {$EXTERNALSYM PKSGOP_USERDATA}
  23359. TKSGopUserData = _KSGOP_USERDATA;
  23360. //
  23361. // DVD encrypted PACK format type definition
  23362. //
  23363. const
  23364. KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK : TGUID = '{ed0b916a-044d-11d1-aa78-00c04fc31d60}';
  23365. {$EXTERNALSYM KSDATAFORMAT_TYPE_DVD_ENCRYPTED_PACK}
  23366. KS_AM_UseNewCSSKey = $1;
  23367. {$EXTERNALSYM KS_AM_UseNewCSSKey}
  23368. // -----------------------------------------------------------------------
  23369. // KS_AM_KSPROPSETID_TSRateChange property set definitions for time stamp
  23370. // rate changes.
  23371. // -----------------------------------------------------------------------
  23372. KSPROPSETID_TSRateChange : TGUID = '{A503C5C0-1D1D-11D1-AD80-444553540000}';
  23373. {$EXTERNALSYM KSPROPSETID_TSRateChange}
  23374. type
  23375. PKSAMPropertyTSRateChange = ^TKSAMPropertyTSRateChange;
  23376. KS_AM_PROPERTY_TS_RATE_CHANGE = (
  23377. KS_AM_RATE_Invalid,
  23378. KS_AM_RATE_SimpleRateChange, // rw, use KS_AM_SimpleRateChange
  23379. KS_AM_RATE_ExactRateChange, // rw, use KS_AM_ExactRateChange
  23380. KS_AM_RATE_MaxFullDataRate, // r, use KS_AM_MaxFullDataRate
  23381. KS_AM_RATE_Step // w, use KS_AM_Step
  23382. );
  23383. {$EXTERNALSYM KS_AM_PROPERTY_TS_RATE_CHANGE}
  23384. TKSAMPropertyTSRateChange = KS_AM_PROPERTY_TS_RATE_CHANGE;
  23385. PKSAMSimpleRateChange = ^TKSAMSimpleRateChange;
  23386. KS_AM_SimpleRateChange = record
  23387. // this is the simplest mechanism to set a time stamp rate change on
  23388. // a filter (simplest for the person setting the rate change, harder
  23389. // for the filter doing the rate change).
  23390. StartTime : TReferenceTime; //stream time at which to start this rate
  23391. Rate : Longint; //new rate * 10000 (decimal)
  23392. end;
  23393. {$EXTERNALSYM KS_AM_SimpleRateChange}
  23394. PKS_AM_SimpleRateChange = ^KS_AM_SimpleRateChange;
  23395. {$EXTERNALSYM PKS_AM_SimpleRateChange}
  23396. TKSAMSimpleRateChange = KS_AM_SimpleRateChange;
  23397. PKSAMExactRateChange = ^TKSAMExactRateChange;
  23398. KS_AM_ExactRateChange = record
  23399. OutputZeroTime : TReferenceTime; //input TS that maps to zero output TS
  23400. Rate : Longint; //new rate * 10000 (decimal)
  23401. end;
  23402. {$EXTERNALSYM KS_AM_ExactRateChange}
  23403. PKS_AM_ExactRateChange = ^KS_AM_ExactRateChange;
  23404. {$EXTERNALSYM PKS_AM_ExactRateChange}
  23405. TKSAMExactRateChange = KS_AM_ExactRateChange;
  23406. KS_AM_MaxFullDataRate = {$IFDEF TYPE_IDENTITY}type {$ENDIF} Longint; //rate * 10000 (decimal)
  23407. {$EXTERNALSYM KS_AM_MaxFullDataRate}
  23408. KS_AM_Step = {$IFDEF TYPE_IDENTITY}type {$ENDIF} DWORD; // number of frame to step
  23409. {$EXTERNALSYM KS_AM_Step}
  23410. //===========================================================================
  23411. //ENCODER API DEFINITIONS
  23412. //===========================================================================
  23413. const
  23414. KSCATEGORY_ENCODER : TGUID = '{19689BF6-C384-48fd-AD51-90E58C79F70B}';
  23415. {$EXTERNALSYM KSCATEGORY_ENCODER}
  23416. KSCATEGORY_MULTIPLEXER : TGUID = '{7A5DE1D3-01A1-452c-B481-4FA2B96271E8}';
  23417. {$EXTERNALSYM KSCATEGORY_MULTIPLEXER}
  23418. // ENCAPIPARAM_BITRATE : TGUID = '{49CC4C43-CA83-4ad4-A9AF-F3696AF666DF}';
  23419. // ENCAPIPARAM_PEAK_BITRATE : TGUID = '{703F16A9-3D48-44a1-B077-018DFF915D19}';
  23420. // ENCAPIPARAM_BITRATE_MODE : TGUID = '{EE5FB25C-C713-40d1-9D58-C0D7241E250F}';
  23421. // CODECAPI_CHANGELISTS : TGUID = '{62B12ACF-F6B0-47D9-9456-96F22C4E0B9D}';
  23422. // CODECAPI_VIDEO_ENCODER : TGUID = '{7112E8E1-3D03-47EF-8E60-03F1CF537301}';
  23423. // CODECAPI_AUDIO_ENCODER : TGUID = '{B9D19A3E-F897-429C-BC46-8138B7272B2D}';
  23424. // CODECAPI_SETALLDEFAULTS : TGUID = '{6C5E6A7C-ACF8-4F55-A999-1A628109051B}';
  23425. // CODECAPI_ALLSETTINGS : TGUID = '{6A577E92-83E1-4113-ADC2-4FCEC32F83A1}';
  23426. // CODECAPI_SUPPORTSEVENTS : TGUID = '{0581AF97-7693-4DBD-9DCA-3F9EBD6585A1}';
  23427. // CODECAPI_CURRENTCHANGELIST : TGUID = '{1CB14E83-7D72-4657-83FD-47A2C5B9D13D}';
  23428. {************************************************************************
  23429. * *
  23430. * dmksctrl.h -- Definition of IKsControl *
  23431. * *
  23432. * Copyright (c) 1998-1999 Microsoft Corporation *
  23433. * *
  23434. * *
  23435. * This header file contains the definition of IKsControl, which *
  23436. * duplicates definitions from ks.h and ksproxy.h. Your code should *
  23437. * include ks.h and ksproxy.h directly if you have them (they are *
  23438. * provided in the Windows 98 DDK and will be in the Windows NT 5 *
  23439. * SDK). *
  23440. * *
  23441. ************************************************************************}
  23442. // IID_IKsControl : TGUID = (D1:$28F54685;D2:$06FD;D3:$11D2;D4:($B2,$7A,$00,$A0,$C9,$22,$31,$96));
  23443. type
  23444. {$HPPEMIT 'typedef System::DelphiInterface<IKsControl> _di_IKsControl;'}
  23445. {$EXTERNALSYM IKsControl}
  23446. IKsControl = interface(IUnknown)
  23447. ['{28F54685-06FD-11D2-B27A-00A0C9223196}']
  23448. (*** IKsControl methods ***)
  23449. procedure KsProperty(Property_: PKSPROPERTY; PropertyLength: ULONG; PropertyData: Pointer;
  23450. DataLength: ULONG; out BytesReturned: ULONG); stdcall;
  23451. procedure KsMethod(Method: PKSMETHOD; MethodLength: ULONG; MethodData: Pointer;
  23452. DataLength: ULONG; out BytesReturned: ULONG); stdcall;
  23453. procedure KsEvent({OPTIONAL}Event: PKSEVENT; EventLength: ULONG; EventData: Pointer;
  23454. DataLength: ULONG; out BytesReturned: ULONG); stdcall;
  23455. end;
  23456. //------------------------------------------------------------------------------
  23457. // File: BDAMedia.h
  23458. //
  23459. // Desc: Broadcast Driver Architecture Multimedia Definitions.
  23460. //
  23461. // Copyright (c) 1996 - 2000, Microsoft Corporation. All rights reserved.
  23462. //------------------------------------------------------------------------------
  23463. //===========================================================================
  23464. //
  23465. // KSProperty Set Structure Definitions for BDA
  23466. //
  23467. //===========================================================================
  23468. PKSPBDANodePin = ^TKSPBDANodePin;
  23469. KSP_BDA_NODE_PIN = record
  23470. Property_ : KSPROPERTY;
  23471. ulNodeType : ULONG;
  23472. ulInputPinId : ULONG;
  23473. ulOutputPinId : ULONG;
  23474. end;
  23475. {$EXTERNALSYM KSP_BDA_NODE_PIN}
  23476. PKSP_BDA_NODE_PIN = ^KSP_BDA_NODE_PIN;
  23477. {$EXTERNALSYM PKSP_BDA_NODE_PIN}
  23478. TKSPBDANodePin = KSP_BDA_NODE_PIN;
  23479. PKSMBDAPin = ^TKSMBDAPin;
  23480. KSM_BDA_PIN = record
  23481. Method: KSMETHOD;
  23482. case integer of
  23483. 0 : (PinId : ULONG;
  23484. Reserved : ULONG);
  23485. 1 : (PinType : ULONG;
  23486. Reserved_ : ULONG);
  23487. end;
  23488. {$EXTERNALSYM KSM_BDA_PIN}
  23489. PKSM_BDA_PIN = ^KSM_BDA_PIN;
  23490. {$EXTERNALSYM PKSM_BDA_PIN}
  23491. TKSMBDAPin = KSM_BDA_PIN;
  23492. PKSMBDAPinPair = ^TKSMBDAPinPair;
  23493. KSM_BDA_PIN_PAIR = record
  23494. Method: KSMETHOD;
  23495. case integer of
  23496. 0 : (InputPinId : ULONG;
  23497. OutputPinId : ULONG);
  23498. 1 : (InputPinType : ULONG;
  23499. OutputPinType : ULONG);
  23500. end;
  23501. {$EXTERNALSYM KSM_BDA_PIN_PAIR}
  23502. PKSM_BDA_PIN_PAIR = ^KSM_BDA_PIN_PAIR;
  23503. {$EXTERNALSYM PKSM_BDA_PIN_PAIR}
  23504. TKSMBDAPinPair = KSM_BDA_PIN_PAIR;
  23505. PKSPNodeESPID = ^TKSPNodeESPID;
  23506. KSP_NODE_ESPID = record
  23507. Property_ : TKSPNode;
  23508. EsPid : ULONG;
  23509. end;
  23510. {$EXTERNALSYM KSP_NODE_ESPID}
  23511. PKSP_NODE_ESPID = ^KSP_NODE_ESPID;
  23512. {$EXTERNALSYM PKSP_NODE_ESPID}
  23513. TKSPNodeESPID = KSP_NODE_ESPID;
  23514. //===========================================================================
  23515. //
  23516. // BDA Data Range definitions. Includes specifier definitions.
  23517. //
  23518. //===========================================================================
  23519. // Antenna Signal Formats
  23520. //
  23521. PKSDataRangeBDAAntenna = ^TKSDataRangeBDAAntenna;
  23522. KS_DATARANGE_BDA_ANTENNA = record
  23523. DataRange : TKSDataRange;
  23524. // Antenna specifier can go here if required
  23525. //
  23526. end;
  23527. {$EXTERNALSYM KS_DATARANGE_BDA_ANTENNA}
  23528. PKS_DATARANGE_BDA_ANTENNA = ^KS_DATARANGE_BDA_ANTENNA;
  23529. {$EXTERNALSYM PKS_DATARANGE_BDA_ANTENNA}
  23530. TKSDataRangeBDAAntenna = KS_DATARANGE_BDA_ANTENNA;
  23531. // Transport Formats
  23532. //
  23533. PBDATransportInfo = ^TBDATransportInfo;
  23534. BDA_TRANSPORT_INFO = record
  23535. ulcbPhyiscalPacket : ULONG; // Size, in bytes, of a physical packet
  23536. // (e.g. Satellite link payload size.
  23537. ulcbPhyiscalFrame : ULONG; // Size, in bytes, of each physical frame
  23538. // 0 indicates no HW requirement
  23539. ulcbPhyiscalFrameAlignment : ULONG; // Capture buffer alignment in bytes
  23540. // 0 and 1 indicate no alignment requirements
  23541. AvgTimePerFrame : TReferenceTime ; // Normal ActiveMovie units (100 nS)
  23542. end;
  23543. {$EXTERNALSYM BDA_TRANSPORT_INFO}
  23544. PBDA_TRANSPORT_INFO = ^BDA_TRANSPORT_INFO;
  23545. {$EXTERNALSYM PBDA_TRANSPORT_INFO}
  23546. TBDATransportInfo = BDA_TRANSPORT_INFO;
  23547. PKSDataRangeBDATransport = ^TKSDataRangeBDATransport;
  23548. KS_DATARANGE_BDA_TRANSPORT = record
  23549. DataRange : TKSDataRange;
  23550. BdaTransportInfo : TBDATransportInfo;
  23551. // Transport specifier can go here if required
  23552. //
  23553. end;
  23554. {$EXTERNALSYM KS_DATARANGE_BDA_TRANSPORT}
  23555. PKS_DATARANGE_BDA_TRANSPORT = ^KS_DATARANGE_BDA_TRANSPORT;
  23556. {$EXTERNALSYM PKS_DATARANGE_BDA_TRANSPORT}
  23557. TKSDataRangeBDATransport = KS_DATARANGE_BDA_TRANSPORT;
  23558. //===========================================================================
  23559. // BDA Event Guids
  23560. //
  23561. // These are sent by the IBroadcastEvent service on the graph.
  23562. // To receive,
  23563. // 0) Implement IBroadcastEvent in your receiving object - this has one Method on it: Fire()
  23564. // 1) QI the graphs service provider for SID_SBroadcastEventService
  23565. // for the IID_IBroadcastEvent object
  23566. // 2) OR create the event service (CLSID_BroadcastEventService) if not already there
  23567. // and register it
  23568. // 3) QI that object for it's IConnectionPoint interface (*pCP)
  23569. // 4) Advise your object on *pCP (e.g. pCP->Advise(static_cast<IBroadCastEvent*>(this), &dwCookie)
  23570. // 5) Unadvise when done..
  23571. // 6) Implement IBroadcastEvent::Fire(GUID gEventID)
  23572. // Check for relevant event below and deal with it appropriatly...
  23573. //===========================================================================
  23574. const
  23575. EVENTID_TuningChanged : TGUID = '{9D7E6235-4B7D-425d-A6D1-D717C33B9C4C}';
  23576. {$EXTERNALSYM EVENTID_TuningChanged}
  23577. EVENTID_CADenialCountChanged : TGUID = '{2A65C528-2249-4070-AC16-00390CDFB2DD}';
  23578. {$EXTERNALSYM EVENTID_CADenialCountChanged}
  23579. EVENTID_SignalStatusChanged : TGUID = '{6D9CFAF2-702D-4b01-8DFF-6892AD20D191}';
  23580. {$EXTERNALSYM EVENTID_SignalStatusChanged}
  23581. //===========================================================================
  23582. //
  23583. // BDA Stream Format GUIDs
  23584. //
  23585. //===========================================================================
  23586. const
  23587. KSDATAFORMAT_TYPE_BDA_ANTENNA : TGUID = '{71985F41-1CA1-11d3-9CC8-00C04F7971E0}';
  23588. {$EXTERNALSYM KSDATAFORMAT_TYPE_BDA_ANTENNA}
  23589. KSDATAFORMAT_SUBTYPE_BDA_MPEG2_TRANSPORT : TGUID = '{F4AEB342-0329-4fdd-A8FD-4AFF4926C978}';
  23590. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_BDA_MPEG2_TRANSPORT}
  23591. KSDATAFORMAT_SPECIFIER_BDA_TRANSPORT : TGUID = '{8DEDA6FD-AC5F-4334-8ECF-A4BA8FA7D0F0}';
  23592. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_BDA_TRANSPORT}
  23593. KSDATAFORMAT_TYPE_BDA_IF_SIGNAL : TGUID = '{61BE0B47-A5EB-499b-9A85-5B16C07F1258}';
  23594. {$EXTERNALSYM KSDATAFORMAT_TYPE_BDA_IF_SIGNAL}
  23595. KSDATAFORMAT_TYPE_MPEG2_SECTIONS : TGUID = '{455F176C-4B06-47CE-9AEF-8CAEF73DF7B5}';
  23596. {$EXTERNALSYM KSDATAFORMAT_TYPE_MPEG2_SECTIONS}
  23597. KSDATAFORMAT_SUBTYPE_ATSC_SI : TGUID = '{B3C7397C-D303-414D-B33C-4ED2C9D29733}';
  23598. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_ATSC_SI}
  23599. KSDATAFORMAT_SUBTYPE_DVB_SI : TGUID = '{e9dd31a3-221d-4adb-8532-9af309c1a408}';
  23600. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_DVB_SI}
  23601. KSDATAFORMAT_SUBTYPE_BDA_OPENCABLE_PSIP : TGUID = '{762E3F66-336F-48d1-BF83-2B00352C11F0}';
  23602. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_BDA_OPENCABLE_PSIP}
  23603. KSDATAFORMAT_SUBTYPE_BDA_OPENCABLE_OOB_PSIP : TGUID = '{951727DB-D2CE-4528-96F6-3301FABB2DE0}';
  23604. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_BDA_OPENCABLE_OOB_PSIP}
  23605. //===========================================================================
  23606. //
  23607. // KSPinName Definitions for BDA
  23608. //
  23609. //===========================================================================
  23610. // Pin name for a BDA transport pin
  23611. PINNAME_BDA_TRANSPORT : TGUID = '{78216A81-CFA8-493e-9711-36A61C08BD9D}';
  23612. {$EXTERNALSYM PINNAME_BDA_TRANSPORT}
  23613. // Pin name for a BDA analog video pin
  23614. PINNAME_BDA_ANALOG_VIDEO : TGUID = '{5C0C8281-5667-486c-8482-63E31F01A6E9}';
  23615. {$EXTERNALSYM PINNAME_BDA_ANALOG_VIDEO}
  23616. // Pin name for a BDA analog audio pin
  23617. PINNAME_BDA_ANALOG_AUDIO : TGUID = '{D28A580A-9B1F-4b0c-9C33-9BF0A8EA636B}';
  23618. {$EXTERNALSYM PINNAME_BDA_ANALOG_AUDIO}
  23619. // Pin name for a BDA FM Radio pin
  23620. PINNAME_BDA_FM_RADIO : TGUID = '{D2855FED-B2D3-4eeb-9BD0-193436A2F890}';
  23621. {$EXTERNALSYM PINNAME_BDA_FM_RADIO}
  23622. // Pin name for a BDA Intermediate Frequency pin
  23623. PINNAME_BDA_IF_PIN : TGUID = '{1A9D4A42-F3CD-48a1-9AEA-71DE133CBE14}';
  23624. {$EXTERNALSYM PINNAME_BDA_IF_PIN}
  23625. // Pin name for a BDA Open Cable PSIP pin
  23626. PINNAME_BDA_OPENCABLE_PSIP_PIN : TGUID = '{297BB104-E5C9-4ACE-B123-95C3CBB24D4F}';
  23627. {$EXTERNALSYM PINNAME_BDA_OPENCABLE_PSIP_PIN}
  23628. //===========================================================================
  23629. //
  23630. // KSProperty Set Definitions for BDA
  23631. //
  23632. //===========================================================================
  23633. //------------------------------------------------------------
  23634. //
  23635. // BDA Network Ethernet Filter Property Set
  23636. KSPROPSETID_BdaEthernetFilter : TGUID = '{71985F43-1CA1-11d3-9CC8-00C04F7971E0}';
  23637. {$EXTERNALSYM KSPROPSETID_BdaEthernetFilter}
  23638. type
  23639. KSPROPERTY_BDA_ETHERNET_FILTER = (
  23640. KSPROPERTY_BDA_ETHERNET_FILTER_MULTICAST_LIST_SIZE,
  23641. KSPROPERTY_BDA_ETHERNET_FILTER_MULTICAST_LIST,
  23642. KSPROPERTY_BDA_ETHERNET_FILTER_MULTICAST_MODE
  23643. );
  23644. {$EXTERNALSYM KSPROPERTY_BDA_ETHERNET_FILTER}
  23645. TKSPropertyBDAEthernetFilter = KSPROPERTY_BDA_ETHERNET_FILTER;
  23646. //------------------------------------------------------------
  23647. //
  23648. // BDA Network IPv4 Filter Property Set
  23649. //
  23650. // {71985F44-1CA1-11d3-9CC8-00C04F7971E0}
  23651. //
  23652. const
  23653. KSPROPSETID_BdaIPv4Filter : TGUID ='{71985F44-1CA1-11d3-9CC8-00C04F7971E0}';
  23654. {$EXTERNALSYM KSPROPSETID_BdaIPv4Filter}
  23655. type
  23656. KSPROPERTY_BDA_IPv4_FILTER = (
  23657. KSPROPERTY_BDA_IPv4_FILTER_MULTICAST_LIST_SIZE,
  23658. KSPROPERTY_BDA_IPv4_FILTER_MULTICAST_LIST,
  23659. KSPROPERTY_BDA_IPv4_FILTER_MULTICAST_MODE
  23660. );
  23661. {$EXTERNALSYM KSPROPERTY_BDA_IPv4_FILTER}
  23662. TKSPropertyBDAIPv4Filter = KSPROPERTY_BDA_IPv4_FILTER;
  23663. //------------------------------------------------------------
  23664. //
  23665. // BDA Network IPv6 Filter Property Set
  23666. //
  23667. // {E1785A74-2A23-4fb3-9245-A8F88017EF33}
  23668. //
  23669. const
  23670. KSPROPSETID_BdaIPv6Filter : TGUID = '{E1785A74-2A23-4fb3-9245-A8F88017EF33}';
  23671. {$EXTERNALSYM KSPROPSETID_BdaIPv6Filter}
  23672. type
  23673. KSPROPERTY_BDA_IPv6_FILTER = (
  23674. KSPROPERTY_BDA_IPv6_FILTER_MULTICAST_LIST_SIZE,
  23675. KSPROPERTY_BDA_IPv6_FILTER_MULTICAST_LIST,
  23676. KSPROPERTY_BDA_IPv6_FILTER_MULTICAST_MODE
  23677. );
  23678. {$EXTERNALSYM KSPROPERTY_BDA_IPv6_FILTER}
  23679. TKSPropertyBDAIPv6Filter = KSPROPERTY_BDA_IPv6_FILTER;
  23680. //------------------------------------------------------------
  23681. // BDA Signal Statistics Property Set
  23682. //
  23683. const
  23684. KSPROPSETID_BdaSignalStats : TGUID = '{1347D106-CF3A-428a-A5CB-AC0D9A2A4338}';
  23685. {$EXTERNALSYM KSPROPSETID_BdaSignalStats}
  23686. type
  23687. KSPROPERTY_BDA_SIGNAL_STATS = (
  23688. KSPROPERTY_BDA_SIGNAL_STRENGTH,
  23689. KSPROPERTY_BDA_SIGNAL_QUALITY,
  23690. KSPROPERTY_BDA_SIGNAL_PRESENT,
  23691. KSPROPERTY_BDA_SIGNAL_LOCKED,
  23692. KSPROPERTY_BDA_SAMPLE_TIME
  23693. );
  23694. {$EXTERNALSYM KSPROPERTY_BDA_SIGNAL_STATS}
  23695. TKSPropertyBDASignalStats = KSPROPERTY_BDA_SIGNAL_STATS;
  23696. //------------------------------------------------------------
  23697. // BDA Signal Property Set
  23698. //
  23699. // {D2F1644B-B409-11d2-BC69-00A0C9EE9E16}
  23700. const
  23701. KSPROPSETID_BdaSignal : TGUID = '{D2F1644B-B409-11d2-BC69-00A0C9EE9E16}';
  23702. {$EXTERNALSYM KSPROPSETID_BdaSignal}
  23703. //type
  23704. // KSPROPERTY_BDA_SIGNAL = (
  23705. // KSPROPERTY_BDA_SIGNAL_SOURCE,
  23706. // KSPROPERTY_BDA_SIGNAL_TUNING_SPACE,
  23707. // KSPROPERTY_BDA_SIGNAL_NETWORK_TYPE,
  23708. // KSPROPERTY_BDA_SIGNAL_STATE
  23709. // );
  23710. // {$NODEFINE KSPROPERTY_BDA_SIGNAL}
  23711. // TKSPropertyBDASignal = KSPROPERTY_BDA_SIGNAL;
  23712. // {$NODEFINE TKSPropertyBDASignal}
  23713. //------------------------------------------------------------
  23714. //
  23715. //
  23716. // BDA Change Sync Method Set
  23717. //
  23718. const
  23719. KSMETHODSETID_BdaChangeSync : TGUID = '{FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}';
  23720. {$EXTERNALSYM KSMETHODSETID_BdaChangeSync}
  23721. type
  23722. KSMETHOD_BDA_CHANGE_SYNC = (
  23723. KSMETHOD_BDA_START_CHANGES,
  23724. KSMETHOD_BDA_CHECK_CHANGES,
  23725. KSMETHOD_BDA_COMMIT_CHANGES,
  23726. KSMETHOD_BDA_GET_CHANGE_STATE
  23727. );
  23728. {$EXTERNALSYM KSMETHOD_BDA_CHANGE_SYNC}
  23729. TKSMethodBDAChangeSync = KSMETHOD_BDA_CHANGE_SYNC;
  23730. //------------------------------------------------------------
  23731. //
  23732. //
  23733. // BDA Device Configuration Method Set
  23734. //
  23735. const
  23736. KSMETHODSETID_BdaDeviceConfiguration : TGUID = '{71985F45-1CA1-11d3-9CC8-00C04F7971E0}';
  23737. {$EXTERNALSYM KSMETHODSETID_BdaDeviceConfiguration}
  23738. type
  23739. KSMETHOD_BDA_DEVICE_CONFIGURATION = (
  23740. KSMETHOD_BDA_CREATE_PIN_FACTORY,
  23741. KSMETHOD_BDA_DELETE_PIN_FACTORY,
  23742. KSMETHOD_BDA_CREATE_TOPOLOGY
  23743. );
  23744. {$EXTERNALSYM KSMETHOD_BDA_DEVICE_CONFIGURATION}
  23745. TKSMethodBDADeviceConfiguration = KSMETHOD_BDA_DEVICE_CONFIGURATION;
  23746. //------------------------------------------------------------
  23747. //
  23748. //
  23749. // BDA Topology Property Set
  23750. //
  23751. const
  23752. KSPROPSETID_BdaTopology : TGUID = '{A14EE835-0A23-11d3-9CC7-00C04F7971E0}';
  23753. {$EXTERNALSYM KSPROPSETID_BdaTopology}
  23754. type
  23755. KSPROPERTY_BDA_TOPOLOGY = (
  23756. KSPROPERTY_BDA_NODE_TYPES,
  23757. KSPROPERTY_BDA_PIN_TYPES,
  23758. KSPROPERTY_BDA_TEMPLATE_CONNECTIONS,
  23759. KSPROPERTY_BDA_NODE_METHODS,
  23760. KSPROPERTY_BDA_NODE_PROPERTIES,
  23761. KSPROPERTY_BDA_NODE_EVENTS,
  23762. KSPROPERTY_BDA_CONTROLLING_PIN_ID,
  23763. KSPROPERTY_BDA_NODE_DESCRIPTORS
  23764. );
  23765. {$EXTERNALSYM KSPROPERTY_BDA_TOPOLOGY}
  23766. TKSPropertyBDATopology = KSPROPERTY_BDA_TOPOLOGY;
  23767. //------------------------------------------------------------
  23768. //
  23769. //
  23770. // BDA Pin Control Property Set
  23771. //
  23772. // {0DED49D5-A8B7-4d5d-97A1-12B0C195874D}
  23773. //
  23774. const
  23775. KSPROPSETID_BdaPinControl : TGUID = '{0DED49D5-A8B7-4d5d-97A1-12B0C195874D}';
  23776. {$EXTERNALSYM KSPROPSETID_BdaPinControl}
  23777. type
  23778. KSPROPERTY_BDA_PIN_CONTROL = (
  23779. KSPROPERTY_BDA_PIN_ID,
  23780. KSPROPERTY_BDA_PIN_TYPE
  23781. );
  23782. {$EXTERNALSYM KSPROPERTY_BDA_PIN_CONTROL}
  23783. TKSPropertyBDAPinControl = KSPROPERTY_BDA_PIN_CONTROL;
  23784. //------------------------------------------------------------
  23785. //
  23786. //
  23787. // BDA Pin Event Set
  23788. const
  23789. KSEVENTSETID_BdaPinEvent : TGUID = '{104781CD-50BD-40d5-95FB-087E0E86A591}';
  23790. {$EXTERNALSYM KSEVENTSETID_BdaPinEvent}
  23791. type
  23792. KSPROPERTY_BDA_PIN_EVENT = (
  23793. {$EXTERNALSYM KSPROPERTY_BDA_PIN_EVENT}
  23794. KSEVENT_BDA_PIN_CONNECTED,
  23795. KSEVENT_BDA_PIN_DISCONNECTED
  23796. );
  23797. TKSPropertyBDAPinEvent = KSPROPERTY_BDA_PIN_EVENT;
  23798. //------------------------------------------------------------
  23799. //
  23800. //
  23801. // BDA Void Transform Property Set
  23802. //
  23803. const
  23804. KSPROPSETID_BdaVoidTransform : TGUID = '{71985F46-1CA1-11d3-9CC8-00C04F7971E0}';
  23805. {$EXTERNALSYM KSPROPSETID_BdaVoidTransform}
  23806. type
  23807. KSPROPERTY_BDA_VOID_TRANSFORM = (
  23808. KSPROPERTY_BDA_VOID_TRANSFORM_START,
  23809. KSPROPERTY_BDA_VOID_TRANSFORM_STOP
  23810. );
  23811. {$EXTERNALSYM KSPROPERTY_BDA_VOID_TRANSFORM}
  23812. TKSPropertyBDAVoidTransform = KSPROPERTY_BDA_VOID_TRANSFORM;
  23813. //------------------------------------------------------------
  23814. //
  23815. //
  23816. // BDA Null Transform Property Set
  23817. //
  23818. const
  23819. KSPROPSETID_BdaNullTransform : TGUID = '{DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}';
  23820. {$EXTERNALSYM KSPROPSETID_BdaNullTransform}
  23821. type
  23822. KSPROPERTY_BDA_NULL_TRANSFORM = (
  23823. KSPROPERTY_BDA_NULL_TRANSFORM_START,
  23824. KSPROPERTY_BDA_NULL_TRANSFORM_STOP
  23825. );
  23826. {$EXTERNALSYM KSPROPERTY_BDA_NULL_TRANSFORM}
  23827. TKSPropertyBDANullTransform = KSPROPERTY_BDA_NULL_TRANSFORM;
  23828. //------------------------------------------------------------
  23829. //
  23830. //
  23831. // BDA Frequency Filter Property Set
  23832. //
  23833. const
  23834. KSPROPSETID_BdaFrequencyFilter : TGUID = '{71985F47-1CA1-11d3-9CC8-00C04F7971E0}';
  23835. {$EXTERNALSYM KSPROPSETID_BdaFrequencyFilter}
  23836. type
  23837. KSPROPERTY_BDA_FREQUENCY_FILTER = (
  23838. KSPROPERTY_BDA_RF_TUNER_FREQUENCY,
  23839. KSPROPERTY_BDA_RF_TUNER_POLARITY,
  23840. KSPROPERTY_BDA_RF_TUNER_RANGE,
  23841. KSPROPERTY_BDA_RF_TUNER_TRANSPONDER,
  23842. KSPROPERTY_BDA_RF_TUNER_BANDWIDTH,
  23843. KSPROPERTY_BDA_RF_TUNER_FREQUENCY_MULTIPLIER
  23844. );
  23845. {$EXTERNALSYM KSPROPERTY_BDA_FREQUENCY_FILTER}
  23846. TKSPropertyBDAFrequencyFilter = KSPROPERTY_BDA_FREQUENCY_FILTER;
  23847. //------------------------------------------------------------
  23848. // BDA LNB Info Property Set
  23849. //
  23850. // {992CF102-49F9-4719-A664-C4F23E2408F4}
  23851. const
  23852. KSPROPSETID_BdaLNBInfo : TGUID = '{992CF102-49F9-4719-A664-C4F23E2408F4}';
  23853. {$EXTERNALSYM KSPROPSETID_BdaLNBInfo}
  23854. type
  23855. KSPROPERTY_BDA_LNB_INFO = (
  23856. KSPROPERTY_BDA_LNB_LOF_LOW_BAND,
  23857. KSPROPERTY_BDA_LNB_LOF_HIGH_BAND,
  23858. KSPROPERTY_BDA_LNB_SWITCH_FREQUENCY
  23859. );
  23860. {$EXTERNALSYM KSPROPERTY_BDA_LNB_INFO}
  23861. TKSPropertyBDALNBInfo = KSPROPERTY_BDA_LNB_INFO;
  23862. //------------------------------------------------------------
  23863. //
  23864. //
  23865. // BDA Digital Demodulator Property Set
  23866. //
  23867. const
  23868. KSPROPSETID_BdaDigitalDemodulator : TGUID = '{EF30F379-985B-4d10-B640-A79D5E04E1E0}';
  23869. {$EXTERNALSYM KSPROPSETID_BdaDigitalDemodulator}
  23870. type
  23871. KSPROPERTY_BDA_DIGITAL_DEMODULATOR = (
  23872. KSPROPERTY_BDA_MODULATION_TYPE,
  23873. KSPROPERTY_BDA_INNER_FEC_TYPE,
  23874. KSPROPERTY_BDA_INNER_FEC_RATE,
  23875. KSPROPERTY_BDA_OUTER_FEC_TYPE,
  23876. KSPROPERTY_BDA_OUTER_FEC_RATE,
  23877. KSPROPERTY_BDA_SYMBOL_RATE,
  23878. KSPROPERTY_BDA_SPECTRAL_INVERSION,
  23879. KSPROPERTY_BDA_GUARD_INTERVAL,
  23880. KSPROPERTY_BDA_TRANSMISSION_MODE
  23881. );
  23882. {$EXTERNALSYM KSPROPERTY_BDA_DIGITAL_DEMODULATOR}
  23883. TKSPropertyBDADigitalDemodulator = KSPROPERTY_BDA_DIGITAL_DEMODULATOR;
  23884. //------------------------------------------------------------
  23885. //
  23886. //
  23887. // BDA Table Section Property Set
  23888. //
  23889. // {516B99C5-971C-4aaf-B3F3-D9FDA8A15E16}
  23890. //
  23891. const
  23892. KSPROPSETID_BdaTableSection : TGUID = '{516B99C5-971C-4aaf-B3F3-D9FDA8A15E16}';
  23893. {$EXTERNALSYM KSPROPSETID_BdaTableSection}
  23894. type
  23895. KSPROPERTY_IDS_BDA_TABLE = (
  23896. KSPROPERTY_BDA_TABLE_SECTION
  23897. );
  23898. {$EXTERNALSYM KSPROPERTY_IDS_BDA_TABLE}
  23899. TKSPropertyIdsBDATable = KSPROPERTY_IDS_BDA_TABLE;
  23900. //------------------------------------------------------------
  23901. //
  23902. // BDA PID Filter Property Set
  23903. //
  23904. const
  23905. KSPROPSETID_BdaPIDFilter : TGUID = '{D0A67D65-08DF-4fec-8533-E5B550410B85}';
  23906. {$EXTERNALSYM KSPROPSETID_BdaPIDFilter}
  23907. type
  23908. KSPROPERTY_BDA_PIDFILTER = (
  23909. KSPROPERTY_BDA_PIDFILTER_MAP_PIDS,
  23910. KSPROPERTY_BDA_PIDFILTER_UNMAP_PIDS,
  23911. KSPROPERTY_BDA_PIDFILTER_LIST_PIDS
  23912. );
  23913. {$EXTERNALSYM KSPROPERTY_BDA_PIDFILTER}
  23914. TKSPropertyBDAPIDFilter = KSPROPERTY_BDA_PIDFILTER;
  23915. //------------------------------------------------------------
  23916. //
  23917. // BDA CA Property Set
  23918. //
  23919. const
  23920. KSPROPSETID_BdaCA : TGUID = '{B0693766-5278-4ec6-B9E1-3CE40560EF5A}';
  23921. {$EXTERNALSYM KSPROPSETID_BdaCA}
  23922. type
  23923. KSPROPERTY_BDA_CA = (
  23924. KSPROPERTY_BDA_ECM_MAP_STATUS,
  23925. KSPROPERTY_BDA_CA_MODULE_STATUS,
  23926. KSPROPERTY_BDA_CA_SMART_CARD_STATUS,
  23927. KSPROPERTY_BDA_CA_MODULE_UI,
  23928. KSPROPERTY_BDA_CA_SET_PROGRAM_PIDS,
  23929. KSPROPERTY_BDA_CA_REMOVE_PROGRAM
  23930. );
  23931. {$EXTERNALSYM KSPROPERTY_BDA_CA}
  23932. TKSPropertyBDACA = KSPROPERTY_BDA_CA;
  23933. //------------------------------------------------------------
  23934. //
  23935. // BDA CA Event Set
  23936. //
  23937. const
  23938. KSEVENTSETID_BdaCAEvent : TGUID = '{488C4CCC-B768-4129-8EB1-B00A071F9068}';
  23939. {$EXTERNALSYM KSEVENTSETID_BdaCAEvent}
  23940. type
  23941. KSPROPERTY_BDA_CA_EVENT = (
  23942. KSEVENT_BDA_PROGRAM_FLOW_STATUS_CHANGED,
  23943. KSEVENT_BDA_CA_MODULE_STATUS_CHANGED,
  23944. KSEVENT_BDA_CA_SMART_CARD_STATUS_CHANGED,
  23945. KSEVENT_BDA_CA_MODULE_UI_REQUESTED
  23946. );
  23947. {$EXTERNALSYM KSPROPERTY_BDA_CA_EVENT}
  23948. TKSPropertyBDACAEvent = KSPROPERTY_BDA_CA_EVENT;
  23949. //===========================================================================
  23950. //
  23951. // BDA Filter Categories
  23952. //
  23953. //===========================================================================
  23954. const
  23955. KSCATEGORY_BDA_RECEIVER_COMPONENT : TGUID = '{FD0A5AF4-B41D-11d2-9C95-00C04F7971E0}';
  23956. {$EXTERNALSYM KSCATEGORY_BDA_RECEIVER_COMPONENT}
  23957. KSCATEGORY_BDA_NETWORK_TUNER : TGUID = '{71985F48-1CA1-11d3-9CC8-00C04F7971E0}';
  23958. {$EXTERNALSYM KSCATEGORY_BDA_NETWORK_TUNER}
  23959. KSCATEGORY_BDA_NETWORK_EPG : TGUID = '{71985F49-1CA1-11d3-9CC8-00C04F7971E0}';
  23960. {$EXTERNALSYM KSCATEGORY_BDA_NETWORK_EPG}
  23961. KSCATEGORY_BDA_IP_SINK : TGUID = '{71985F4A-1CA1-11d3-9CC8-00C04F7971E0}';
  23962. {$EXTERNALSYM KSCATEGORY_BDA_IP_SINK}
  23963. KSCATEGORY_BDA_NETWORK_PROVIDER : TGUID = '{71985F4B-1CA1-11d3-9CC8-00C04F7971E0}';
  23964. {$EXTERNALSYM KSCATEGORY_BDA_NETWORK_PROVIDER}
  23965. KSCATEGORY_BDA_TRANSPORT_INFORMATION : TGUID = '{A2E3074F-6C3D-11d3-B653-00C04F79498E}';
  23966. {$EXTERNALSYM KSCATEGORY_BDA_TRANSPORT_INFORMATION}
  23967. //===========================================================================
  23968. //
  23969. // BDA Node Categories
  23970. //
  23971. //===========================================================================
  23972. KSNODE_BDA_RF_TUNER : TGUID = '{71985F4C-1CA1-11d3-9CC8-00C04F7971E0}';
  23973. {$EXTERNALSYM KSNODE_BDA_RF_TUNER}
  23974. KSNODE_BDA_QAM_DEMODULATOR : TGUID = '{71985F4D-1CA1-11d3-9CC8-00C04F7971E0}';
  23975. {$EXTERNALSYM KSNODE_BDA_QAM_DEMODULATOR}
  23976. KSNODE_BDA_QPSK_DEMODULATOR : TGUID = '{6390C905-27C1-4d67-BDB7-77C50D079300}';
  23977. {$EXTERNALSYM KSNODE_BDA_QPSK_DEMODULATOR}
  23978. KSNODE_BDA_8VSB_DEMODULATOR : TGUID = '{71985F4F-1CA1-11d3-9CC8-00C04F7971E0}';
  23979. {$EXTERNALSYM KSNODE_BDA_8VSB_DEMODULATOR}
  23980. KSNODE_BDA_OPENCABLE_POD : TGUID = '{D83EF8FC-F3B8-45ab-8B71-ECF7C339DEB4}';
  23981. {$EXTERNALSYM KSNODE_BDA_OPENCABLE_POD}
  23982. KSNODE_BDA_PID_FILTER : TGUID = '{F5412789-B0A0-44e1-AE4F-EE999B1B7FBE}';
  23983. {$EXTERNALSYM KSNODE_BDA_PID_FILTER}
  23984. KSNODE_BDA_IP_SINK : TGUID = '{71985F4E-1CA1-11d3-9CC8-00C04F7971E0}';
  23985. {$EXTERNALSYM KSNODE_BDA_IP_SINK}
  23986. KSNODE_BDA_COFDM_DEMODULATOR: TGUID = '{2DAC6E05-EDBE-4b9c-B387-1B6FAD7D6495}';
  23987. {$EXTERNALSYM KSNODE_BDA_COFDM_DEMODULATOR}
  23988. KSNODE_BDA_COMMON_CA_POD : TGUID = '{D83EF8FC-F3B8-45ab-8B71-ECF7C339DEB4}';
  23989. {$EXTERNALSYM KSNODE_BDA_COMMON_CA_POD}
  23990. //===========================================================================
  23991. //
  23992. // IPSink PINNAME GUID
  23993. //
  23994. //===========================================================================
  23995. PINNAME_IPSINK_INPUT : TGUID = '{3fdffa70-ac9a-11d2-8f17-00c04f7971e2}';
  23996. {$EXTERNALSYM PINNAME_IPSINK_INPUT}
  23997. //===========================================================================
  23998. //
  23999. // BDA IPSink Categories/Types
  24000. //
  24001. //===========================================================================
  24002. KSDATAFORMAT_TYPE_BDA_IP : TGUID = '{e25f7b8e-cccc-11d2-8f25-00c04f7971e2}';
  24003. {$EXTERNALSYM KSDATAFORMAT_TYPE_BDA_IP}
  24004. KSDATAFORMAT_SUBTYPE_BDA_IP : TGUID = '{5a9a213c-db08-11d2-8f32-00c04f7971e2}';
  24005. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_BDA_IP}
  24006. KSDATAFORMAT_SPECIFIER_BDA_IP : TGUID = '{6B891420-DB09-11d2-8F32-00C04F7971E2}';
  24007. {$EXTERNALSYM KSDATAFORMAT_SPECIFIER_BDA_IP}
  24008. KSDATAFORMAT_TYPE_BDA_IP_CONTROL : TGUID = '{DADD5799-7D5B-4b63-80FB-D1442F26B621}';
  24009. {$EXTERNALSYM KSDATAFORMAT_TYPE_BDA_IP_CONTROL}
  24010. KSDATAFORMAT_SUBTYPE_BDA_IP_CONTROL : TGUID = '{499856E8-E85B-48ed-9BEA-410D0DD4EF81}';
  24011. {$EXTERNALSYM KSDATAFORMAT_SUBTYPE_BDA_IP_CONTROL}
  24012. //===========================================================================
  24013. //
  24014. // MPE PINNAME GUID
  24015. //
  24016. //===========================================================================
  24017. PINNAME_MPE : TGUID = '{C1B06D73-1DBB-11d3-8F46-00C04F7971E2}';
  24018. {$EXTERNALSYM PINNAME_MPE}
  24019. /////////////////////////////////////////////////////////////
  24020. //
  24021. // BDA MPE Categories/Types
  24022. //
  24023. KSDATAFORMAT_TYPE_MPE : TGUID = '{455F176C-4B06-47ce-9AEF-8CAEF73DF7B5}';
  24024. {$EXTERNALSYM KSDATAFORMAT_TYPE_MPE}
  24025. //------------------------------------------------------------------------------
  24026. // File: BDAIface.idl
  24027. //
  24028. // Desc: This file defines the Ring 3 BDA interfaces that are common to
  24029. // all BDA network and device types.
  24030. //
  24031. // The interfaces specific to a particular Network Type or filter
  24032. // implementation are defined in a separate include file for that
  24033. // Network Type or filter implementation.
  24034. //
  24035. // Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved.
  24036. //------------------------------------------------------------------------------
  24037. const
  24038. IID_IBDA_NetworkProvider : TGUID = '{fd501041-8ebe-11ce-8183-00aa00577da2}';
  24039. {$EXTERNALSYM IID_IBDA_NetworkProvider}
  24040. IID_IBDA_EthernetFilter : TGUID = '{71985F43-1CA1-11d3-9CC8-00C04F7971E0}';
  24041. {$EXTERNALSYM IID_IBDA_EthernetFilter}
  24042. IID_IBDA_IPV4Filter : TGUID = '{71985F44-1CA1-11d3-9CC8-00C04F7971E0}';
  24043. {$EXTERNALSYM IID_IBDA_IPV4Filter}
  24044. IID_IBDA_IPV6Filter : TGUID = '{E1785A74-2A23-4fb3-9245-A8F88017EF33}';
  24045. {$EXTERNALSYM IID_IBDA_IPV6Filter}
  24046. IID_IBDA_DeviceControl : TGUID = '{FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}';
  24047. {$EXTERNALSYM IID_IBDA_DeviceControl}
  24048. IID_IBDA_PinControl : TGUID = '{0DED49D5-A8B7-4d5d-97A1-12B0C195874D}';
  24049. {$EXTERNALSYM IID_IBDA_PinControl}
  24050. IID_IBDA_SignalProperties : TGUID = '{D2F1644B-B409-11d2-BC69-00A0C9EE9E16}';
  24051. {$EXTERNALSYM IID_IBDA_SignalProperties}
  24052. IID_IBDA_VoidTransform : TGUID = '{71985F46-1CA1-11d3-9CC8-00C04F7971E0}';
  24053. {$EXTERNALSYM IID_IBDA_VoidTransform}
  24054. IID_IBDA_NullTransform : TGUID = '{DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}';
  24055. {$EXTERNALSYM IID_IBDA_NullTransform}
  24056. IID_IBDA_FrequencyFilter : TGUID = '{71985F47-1CA1-11d3-9CC8-00C04F7971E0}';
  24057. {$EXTERNALSYM IID_IBDA_FrequencyFilter}
  24058. IID_IBDA_AutoDemodulate : TGUID = '{DDF15B12-BD25-11d2-9CA0-00C04F7971E0}';
  24059. {$EXTERNALSYM IID_IBDA_AutoDemodulate}
  24060. IID_IBDA_DigitalDemodulator : TGUID = '{EF30F379-985B-4d10-B640-A79D5E04E1E0}';
  24061. {$EXTERNALSYM IID_IBDA_DigitalDemodulator}
  24062. IID_IBDA_IPSinkControl : TGUID = '{3F4DC8E2-4050-11d3-8F4B-00C04F7971E2}';
  24063. {$EXTERNALSYM IID_IBDA_IPSinkControl}
  24064. IID_IEnumPIDMap : TGUID = '{afb6c2a2-2c41-11d3-8a60-0000f81e0e4a}';
  24065. {$EXTERNALSYM IID_IEnumPIDMap}
  24066. IID_IMPEG2PIDMap : TGUID = '{afb6c2a1-2c41-11d3-8a60-0000f81e0e4a}';
  24067. {$EXTERNALSYM IID_IMPEG2PIDMap}
  24068. IID_IBDA_SignalStatistics : TGUID = '{1347D106-CF3A-428a-A5CB-AC0D9A2A4338}';
  24069. {$EXTERNALSYM IID_IBDA_SignalStatistics}
  24070. IID_IBDA_Topology : TGUID = '{79B56888-7FEA-4690-B45D-38FD3C7849BE}';
  24071. {$EXTERNALSYM IID_IBDA_Topology}
  24072. IID_IBDA_LNBInfo : TGUID = '{992CF102-49F9-4719-A664-C4F23E2408F4}';
  24073. {$EXTERNALSYM IID_IBDA_LNBInfo}
  24074. IID_IBDA_IPSinkInfo : TGUID = '{A750108F-492E-4d51-95F7-649B23FF7AD7}';
  24075. {$EXTERNALSYM IID_IBDA_IPSinkInfo}
  24076. IID_IFrequencyMap : TGUID = '{06FB45C1-693C-4ea7-B79F-7A6A54D8DEF2}'; //DX9
  24077. {$EXTERNALSYM IID_IFrequencyMap}
  24078. type
  24079. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_NetworkProvider> _di_IBDA_NetworkProvider;'}
  24080. {$EXTERNALSYM IBDA_NetworkProvider}
  24081. IBDA_NetworkProvider = interface(IUnknown)
  24082. ['{fd501041-8ebe-11ce-8183-00aa00577da2}']
  24083. (*** IBDA_NetworkProvider methods ***)
  24084. function PutSignalSource(ulSignalSource: ULONG): HResult; stdcall;
  24085. function GetSignalSource(out pulSignalSource: ULONG): HResult; stdcall;
  24086. function GetNetworkType(var pguidNetworkType: TGUID): HResult; stdcall;
  24087. function PutTuningSpace(const guidTuningSpace: TGUID): HResult; stdcall;
  24088. function GetTuningSpace(out pguidTuingSpace: TGUID): HResult; stdcall;
  24089. function RegisterDeviceFilter(pUnkFilterControl: IUnknown;
  24090. var ppvRegisitrationContext: ULONG): HResult; stdcall;
  24091. function UnRegisterDeviceFilter(pvRegistrationContext: ULONG): HResult; stdcall;
  24092. end;
  24093. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_EthernetFilter> _di_IBDA_EthernetFilter;'}
  24094. {$EXTERNALSYM IBDA_EthernetFilter}
  24095. IBDA_EthernetFilter = interface(IUnknown)
  24096. ['{71985F43-1CA1-11d3-9CC8-00C04F7971E0}']
  24097. (*** IBDA_EthernetFilter methods ***)
  24098. function GetMulticastListSize(out pulcbAddresses: ULONG): HResult; stdcall;
  24099. function PutMulticastList(ulcbAddresses: ULONG; pAddressList: Pointer): HResult; stdcall;
  24100. function GetMulticastList(out pulcbAddresses: ULONG;
  24101. out pAddressList): HResult; stdcall;
  24102. function PutMulticastMode(ulModeMask: ULONG): HResult; stdcall;
  24103. function GetMulticastMode(out pulModeMask: ULONG): HResult; stdcall;
  24104. end;
  24105. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_IPV4Filter> _di_IBDA_IPV4Filter;'}
  24106. {$EXTERNALSYM IBDA_IPV4Filter}
  24107. IBDA_IPV4Filter = interface(IUnknown)
  24108. ['{71985F44-1CA1-11d3-9CC8-00C04F7971E0}']
  24109. (*** IBDA_IPV4Filter methods ***)
  24110. function GetMulticastListSize(out pulcbAddresses: ULONG): HResult; stdcall;
  24111. function PutMulticastList(ulcbAddresses: ULONG; pAddressList: Pointer): HResult; stdcall;
  24112. function GetMulticastList(var pulcbAddresses: ULONG; out pAddressList): HResult; stdcall;
  24113. function PutMulticastMode(ulModeMask: ULONG): HResult; stdcall;
  24114. function GetMulticastMode(out pulModeMask: ULONG): HResult; stdcall;
  24115. end;
  24116. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_IPV6Filter> _di_IBDA_IPV6Filter;'}
  24117. {$EXTERNALSYM IBDA_IPV6Filter}
  24118. IBDA_IPV6Filter = interface(IUnknown)
  24119. ['{E1785A74-2A23-4fb3-9245-A8F88017EF33}']
  24120. (*** IBDA_IPV6Filter methods ***)
  24121. function GetMulticastListSize(out pulcbAddresses: ULONG): HResult; stdcall;
  24122. function PutMulticastList(ulcbAddresses: ULONG; pAddressList: Pointer): HResult; stdcall;
  24123. function GetMulticastList(var pulcbAddresses: ULONG; out pAddressList): HResult; stdcall;
  24124. function PutMulticastMode(ulModeMask: ULONG): HResult; stdcall;
  24125. function GetMulticastMode(out pulModeMask: ULONG): HResult; stdcall;
  24126. end;
  24127. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_DeviceControl> _di_IBDA_DeviceControl;'}
  24128. {$EXTERNALSYM IBDA_DeviceControl}
  24129. IBDA_DeviceControl = interface(IUnknown)
  24130. ['{FD0A5AF3-B41D-11d2-9C95-00C04F7971E0}']
  24131. (*** IBDA_DeviceControl methods ***)
  24132. function StartChanges : HResult; stdcall;
  24133. function CheckChanges : HResult; stdcall;
  24134. function CommitChanges : HResult; stdcall;
  24135. function GetChangeState(var pState: ULONG): HResult; stdcall;
  24136. end;
  24137. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_PinControl> _di_IBDA_PinControl;'}
  24138. {$EXTERNALSYM IBDA_PinControl}
  24139. IBDA_PinControl = interface(IUnknown)
  24140. ['{0DED49D5-A8B7-4d5d-97A1-12B0C195874D}']
  24141. (*** IBDA_PinControl methods ***)
  24142. function GetPinID(var pulPinID: ULONG): HResult; stdcall;
  24143. function GetPinType(var pulPinType: ULONG): HResult; stdcall;
  24144. function RegistrationContext(var pulRegistrationCtx: ULONG): HResult; stdcall;
  24145. end;
  24146. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_SignalProperties> _di_IBDA_SignalProperties;'}
  24147. {$EXTERNALSYM IBDA_SignalProperties}
  24148. IBDA_SignalProperties = interface(IUnknown)
  24149. ['{D2F1644B-B409-11d2-BC69-00A0C9EE9E16}']
  24150. (*** IBDA_SignalProperties methods ***)
  24151. function PutNetworkType(const guidNetworkType: TGUID): HResult; stdcall;
  24152. function GetNetworkType(out pguidNetworkType: TGUID): HResult; stdcall;
  24153. function PutSignalSource(ulSignalSource: ULONG): HResult; stdcall;
  24154. function GetSignalSource(out pulSignalSource: ULONG): HResult; stdcall;
  24155. function PutTuningSpace(const guidTuningSpace: TGUID): HResult; stdcall;
  24156. function GetTuningSpace(out pguidTuingSpace: TGUID): HResult; stdcall;
  24157. end;
  24158. //---------------------------------------------------------------------
  24159. //
  24160. // IBDA_SignalStatistics interface
  24161. //
  24162. // Implemented by a BDA Control Node
  24163. //
  24164. // A BDA Control Node may return these properties to describe
  24165. // the condition of a signal that is being received.
  24166. //
  24167. //---------------------------------------------------------------------
  24168. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_SignalStatistics> _di_IBDA_SignalStatistics;'}
  24169. {$EXTERNALSYM IBDA_SignalStatistics}
  24170. IBDA_SignalStatistics = interface(IUnknown)
  24171. ['{1347D106-CF3A-428a-A5CB-AC0D9A2A4338}']
  24172. (*** IBDA_SignalStatistics methods ***)
  24173. function put_SignalStrength(lDbStrength: LongInt): HResult; stdcall;
  24174. function get_SignalStrength(out plDbStrength: LongInt): HResult; stdcall;
  24175. function put_SignalQuality(lPercentQuality: LongInt): HResult; stdcall;
  24176. function get_SignalQuality(out lPercentQuality: LongInt): HResult; stdcall;
  24177. function put_SignalPresent(fPresent: BOOL): HResult; stdcall;
  24178. function get_SignalPresent(out fPresent: BOOL): HResult; stdcall;
  24179. function put_SignalLocked(fLocked: BOOL): HResult; stdcall;
  24180. function get_SignalLocked(out pfLocked: BOOL): HResult; stdcall;
  24181. function put_SampleTime(lmsSampleTime: LongInt): HResult; stdcall;
  24182. function get_SampleTime(out plmsSampleTime: LongInt): HResult; stdcall;
  24183. end;
  24184. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_Topology> _di_IBDA_Topology;'}
  24185. {$EXTERNALSYM IBDA_Topology}
  24186. IBDA_Topology = interface(IUnknown)
  24187. ['{79B56888-7FEA-4690-B45D-38FD3C7849BE}']
  24188. (*** IBDA_Topology methods ***)
  24189. function GetNodeTypes(var pulcNodeTypes: ULONG; ulcNodeTypesMax: ULONG;
  24190. var rgulNodeTypes: ULONG): HResult; stdcall;
  24191. function GetNodeDescriptors(var ulcNodeDescriptors: ULONG; ulcNodeDescriptorsMax: ULONG;
  24192. rgNodeDescriptors: PBDANodeDescriptor): HResult; stdcall;
  24193. function GetNodeInterfaces(ulNodeType: ULONG; var pulcInterfaces: ULONG;
  24194. ulcInterfacesMax: ULONG; rgguidInterfaces: PGUID): HResult; stdcall;
  24195. function GetPinTypes(var pulcPinTypes: ULONG; ulcPinTypesMax: ULONG;
  24196. var rgulPinTypes: ULONG): HResult; stdcall;
  24197. function GetTemplateConnections(var pulcConnections: ULONG; ulcConnectionsMax: ULONG;
  24198. var rgConnections: TBDATemplateConnection): HResult; stdcall;
  24199. function CreatePin(ulPinType: ULONG; var pulPinId: ULONG): HResult; stdcall;
  24200. function DeletePin(ulPinId: ULONG): HResult; stdcall;
  24201. function SetMediaType(ulPinId :ULONG; pMediaType: PAMMediaType): HResult; stdcall;
  24202. function SetMedium(ulPinId: ULONG; pMedium: PREGPINMEDIUM): HResult; stdcall;
  24203. function CreateTopology(ulInputPinId, ulOutputPinId: ULONG): HResult; stdcall;
  24204. function GetControlNode(ulInputPinId, ulOutputPinId, ulNodeType: ULONG;
  24205. ppControlNode: IUnknown): HResult; stdcall;
  24206. end;
  24207. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_VoidTransform> _di_IBDA_VoidTransform;'}
  24208. {$EXTERNALSYM IBDA_VoidTransform}
  24209. IBDA_VoidTransform = interface(IUnknown)
  24210. ['{71985F46-1CA1-11d3-9CC8-00C04F7971E0}']
  24211. (*** IBDA_VoidTransform methods ***)
  24212. function Start: HResult; stdcall;
  24213. function Stop: HResult; stdcall;
  24214. end;
  24215. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_NullTransform> _di_IBDA_NullTransform;'}
  24216. {$EXTERNALSYM IBDA_NullTransform}
  24217. IBDA_NullTransform = interface(IUnknown)
  24218. ['{DDF15B0D-BD25-11d2-9CA0-00C04F7971E0}']
  24219. (*** IBDA_NullTransform methods ***)
  24220. function Start: HResult; stdcall;
  24221. function Stop: HResult; stdcall;
  24222. end;
  24223. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_FrequencyFilter> _di_IBDA_FrequencyFilter;'}
  24224. {$EXTERNALSYM IBDA_FrequencyFilter}
  24225. IBDA_FrequencyFilter = interface(IUnknown)
  24226. ['{71985F47-1CA1-11d3-9CC8-00C04F7971E0}']
  24227. (*** IBDA_FrequencyFilter methods ***)
  24228. function put_Autotune(pulTransponder: PULONG): HResult; stdcall;
  24229. function get_Autotune(pulTransponder: PULONG): HResult; stdcall;
  24230. function put_Frequency(pulFrequency: PULONG): HResult; stdcall;
  24231. function get_Frequency(pulFrequency: PULONG): HResult; stdcall;
  24232. function put_Polarity(pulPolarity: PULONG): HResult; stdcall;
  24233. function get_Polarity(pulPolarity: PULONG): HResult; stdcall;
  24234. function put_Range(pulRange: PULONG): HResult; stdcall;
  24235. function get_Range(pulRange: PULONG): HResult; stdcall;
  24236. function put_Bandwidth(ulBandwidth: ULONG): HResult; stdcall;
  24237. function get_Bandwidth(out pulBandwidth: ULONG): HResult; stdcall;
  24238. function put_FrequencyMultiplier(ulMultiplier: ULONG): HResult; stdcall;
  24239. function get_FrequencyMultiplier(out pulMultiplier: ULONG): HResult; stdcall;
  24240. end;
  24241. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_LNBInfo> _di_IBDA_LNBInfo;'}
  24242. {$EXTERNALSYM IBDA_LNBInfo}
  24243. IBDA_LNBInfo = interface(IUnknown)
  24244. ['{992CF102-49F9-4719-A664-C4F23E2408F4}']
  24245. (*** IBDA_LNBInfo methods ***)
  24246. function put_LocalOscilatorFrequencyLowBand(ulLOFLow: ULONG): HResult; stdcall;
  24247. function get_LocalOscilatorFrequencyLowBand(out pulLOFLow: ULONG): HResult; stdcall;
  24248. function put_LocalOscilatorFrequencyHighBand(ulLOFHigh: ULONG): HResult; stdcall;
  24249. function get_LocalOscilatorFrequencyHighBand(out pulLOFHigh: ULONG): HResult; stdcall;
  24250. function put_HighLowSwitchFrequency(ulSwitchFrequency: ULONG): HResult; stdcall;
  24251. function get_HighLowSwitchFrequency(out pulSwitchFrequency: ULONG): HResult; stdcall;
  24252. end;
  24253. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_AutoDemodulate> _di_IBDA_AutoDemodulate;'}
  24254. {$EXTERNALSYM IBDA_AutoDemodulate}
  24255. IBDA_AutoDemodulate = interface(IUnknown)
  24256. ['{DDF15B12-BD25-11d2-9CA0-00C04F7971E0}']
  24257. (*** IBDA_AutoDemodulate methods ***)
  24258. function put_AutoDemodulate : HResult; stdcall;
  24259. end;
  24260. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_DigitalDemodulator> _di_IBDA_DigitalDemodulator;'}
  24261. {$EXTERNALSYM IBDA_DigitalDemodulator}
  24262. IBDA_DigitalDemodulator = interface(IUnknown)
  24263. ['{EF30F379-985B-4d10-B640-A79D5E04E1E0}']
  24264. (*** IBDA_DigitalDemodulator methods ***)
  24265. function put_ModulationType(var pModulationType: ModulationType): HResult; stdcall;
  24266. function get_ModulationType(out pModulationType: ModulationType): HResult; stdcall;
  24267. function put_InnerFECMethod(var pFECMethod: FECMethod): HResult; stdcall;
  24268. function get_InnerFECMethod(out pFECMethod: FECMethod): HResult; stdcall;
  24269. function put_InnerFECRate(var pFECRate: BinaryConvolutionCodeRate): HResult; stdcall;
  24270. function get_InnerFECRate(out pFECRate: BinaryConvolutionCodeRate): HResult; stdcall;
  24271. function put_OuterFECMethod(var pFECMethod: FECMethod): HResult; stdcall;
  24272. function get_OuterFECMethod(out pFECMethod: FECMethod): HResult; stdcall;
  24273. function put_OuterFECRate(var pFECRate: BinaryConvolutionCodeRate): HResult; stdcall;
  24274. function get_OuterFECRate(out pFECRate: BinaryConvolutionCodeRate): HResult; stdcall;
  24275. function put_SymbolRate(var pSymbolRate: ULONG): HResult; stdcall;
  24276. function get_SymbolRate(out pSymbolRate: ULONG): HResult; stdcall;
  24277. function put_SpectralInversion(var pSpectralInversion: SpectralInversion): HResult; stdcall;
  24278. function get_SpectralInversion(out pSpectralInversion: SpectralInversion): HResult; stdcall;
  24279. end;
  24280. KSPROPERTY_IPSINK = (
  24281. KSPROPERTY_IPSINK_MULTICASTLIST,
  24282. KSPROPERTY_IPSINK_ADAPTER_DESCRIPTION,
  24283. KSPROPERTY_IPSINK_ADAPTER_ADDRESS
  24284. );
  24285. {$EXTERNALSYM KSPROPERTY_IPSINK}
  24286. TKSPropertyIPSink = KSPROPERTY_IPSINK;
  24287. //---------------------------------------------------------------------
  24288. // IBDA_IPSinkControl interface (mutlimedia\filters.ks\ipsink)
  24289. // IBDA_IPSinkInfo interface
  24290. //
  24291. // IBDA_IPSinkControl is no longer being supported for Ring3 clients.
  24292. // Use the BDA_IPSinkInfo interface instead.
  24293. //---------------------------------------------------------------------
  24294. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_IPSinkControl> _di_IBDA_IPSinkControl;'}
  24295. {$EXTERNALSYM IBDA_IPSinkControl}
  24296. IBDA_IPSinkControl = interface(IUnknown)
  24297. ['{3F4DC8E2-4050-11d3-8F4B-00C04F7971E2}']
  24298. (*** IBDA_IPSinkControl methods ***)
  24299. function GetMulticastList(var pulcbSize: ULONG; pbBuffer: Pointer): HResult; stdcall;
  24300. function GetAdapterIPAddress(var pulcbSize: ULONG; pbBuffer: Pointer): HResult; stdcall;
  24301. end;
  24302. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_IPSinkInfo> _di_IBDA_IPSinkInfo;'}
  24303. {$EXTERNALSYM IBDA_IPSinkInfo}
  24304. IBDA_IPSinkInfo = interface(IUnknown)
  24305. ['{A750108F-492E-4d51-95F7-649B23FF7AD7}']
  24306. (*** IBDA_IPSinkInfo methods ***)
  24307. // returns N 6-byte 802.3 IP addreses.
  24308. function get_MulticastList(pulcbAddresses: PULONG; // 6*N
  24309. out ppbAddressList: PBYTE // Allocated by caller, must deallocate in callee with CoTaskMemFree()
  24310. ): HResult; stdcall;
  24311. function get_AdapterIPAddress(out pbstrBuffer: WideString): HResult; stdcall;
  24312. function get_AdapterDescription(out pbstrBuffer: WideString): HResult; stdcall;
  24313. end;
  24314. {$HPPEMIT 'typedef System::DelphiInterface<IEnumPIDMap> _di_IEnumPIDMap;'}
  24315. {$EXTERNALSYM IEnumPIDMap}
  24316. IEnumPIDMap = interface(IUnknown)
  24317. ['{afb6c2a2-2c41-11d3-8a60-0000f81e0e4a}']
  24318. (*** IEnumPIDMap methods ***)
  24319. function Next(cRequest: ULONG; var pPIDMap: TPIDMap; out pcReceived: ULONG): HResult; stdcall;
  24320. function Skip(cRecords: ULONG): HResult; stdcall;
  24321. function Reset: HResult; stdcall;
  24322. function Clone(out ppIEnumPIDMap: IEnumPIDMap): HResult; stdcall;
  24323. end;
  24324. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2PIDMap> _di_IMPEG2PIDMap;'}
  24325. {$EXTERNALSYM IMPEG2PIDMap}
  24326. IMPEG2PIDMap = interface(IUnknown)
  24327. ['{afb6c2a1-2c41-11d3-8a60-0000f81e0e4a}']
  24328. (*** IMPEG2PIDMap methods ***)
  24329. function MapPID(culPID: ULONG; pulPID: PULONG;
  24330. MediaSampleContent: TMediaSampleContent): HResult; stdcall;
  24331. function UnmapPID(culPID: ULONG; pulPID: PULONG): HResult; stdcall;
  24332. function EnumPIDMap(out pIEnumPIDMap: IEnumPIDMap): HResult; stdcall;
  24333. end;
  24334. //---------------------------------------------------------------------
  24335. // IFrequencyMap interface
  24336. // Currently implemented on the TIF. The interface can be QIed on the NP
  24337. //---------------------------------------------------------------------
  24338. // DirectX9 Specific
  24339. {$HPPEMIT 'typedef System::DelphiInterface<IFrequencyMap> _di_IFrequencyMap;'}
  24340. {$EXTERNALSYM IFrequencyMap}
  24341. IFrequencyMap = interface(IUnknown)
  24342. ['{06FB45C1-693C-4ea7-B79F-7A6A54D8DEF2}']
  24343. (*** IFrequencyMap methods ***)
  24344. function get_FrequencyMapping(out ulCount: ULONG; out ppulList: PULONG): HResult; stdcall;
  24345. function put_FrequencyMapping(ulCount: ULONG; pList: PULONG): HResult; stdcall;
  24346. function get_CountryCode(out pulCountryCode: ULONG): HResult; stdcall;
  24347. function put_CountryCode(ulCountryCode: ULONG): HResult; stdcall;
  24348. function get_DefaultFrequencyMapping(ulCountryCode: ULONG; out pulCount: ULONG;
  24349. out ppulList: PULONG): HResult; stdcall;
  24350. function get_CountryCodeList(out pulCount: ULONG; out ppulList: PULONG): HResult; stdcall;
  24351. end;
  24352. //---------------------------------------------------------------------
  24353. //
  24354. // Copyright (c) 1999-2001 Microsoft Corporation
  24355. //
  24356. // BDATIF.idl
  24357. //
  24358. //---------------------------------------------------------------------
  24359. const
  24360. IID_IMPEG2_TIF_CONTROL : TGUID = '{F9BAC2F9-4149-4916-B2EF-FAA202326862}';
  24361. {$EXTERNALSYM IID_IMPEG2_TIF_CONTROL}
  24362. IID_ITuneRequestInfo : TGUID = '{A3B152DF-7A90-4218-AC54-9830BEE8C0B6}';
  24363. {$EXTERNALSYM IID_ITuneRequestInfo}
  24364. IID_IGuideDataEvent : TGUID = '{EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}';
  24365. {$EXTERNALSYM IID_IGuideDataEvent}
  24366. IID_IGuideDataProperty : TGUID = '{88EC5E58-BB73-41d6-99CE-66C524B8B591}';
  24367. {$EXTERNALSYM IID_IGuideDataProperty}
  24368. IID_IEnumGuideDataProperties : TGUID = '{AE44423B-4571-475c-AD2C-F40A771D80EF}';
  24369. {$EXTERNALSYM IID_IEnumGuideDataProperties}
  24370. IID_IEnumTuneRequests : TGUID = '{1993299C-CED6-4788-87A3-420067DCE0C7}';
  24371. {$EXTERNALSYM IID_IEnumTuneRequests}
  24372. IID_IGuideData : TGUID = '{61571138-5B01-43cd-AEAF-60B784A0BF93}';
  24373. {$EXTERNALSYM IID_IGuideData}
  24374. IID_IGuideDataLoader : TGUID = '{4764ff7c-fa95-4525-af4d-d32236db9e38}';
  24375. {$EXTERNALSYM IID_IGuideDataLoader}
  24376. IID_IBDA_TIF_REGISTRATION : TGUID = '{DFEF4A68-EE61-415f-9CCB-CD95F2F98A3A}'; // DX9
  24377. {$EXTERNALSYM IID_IBDA_TIF_REGISTRATION}
  24378. LIBID_PSISLOAD : TGUID = '{8224A083-7F8C-432D-B83E-3C5E9BDE3528}';
  24379. {$EXTERNALSYM LIBID_PSISLOAD}
  24380. CLSID_TIFLoad : TGUID = '{14EB8748-1753-4393-95AE-4F7E7A87AAD6}';// default interface IGuideDataEvent
  24381. {$EXTERNALSYM CLSID_TIFLoad}
  24382. //******************************************************************************
  24383. //
  24384. // IBDA_TIF_REGISTRATION interface
  24385. //
  24386. // Implemented by the Microsoft ATSC/DVB BDA Network Provider
  24387. //
  24388. // Used by a transport information filter (TIF) to Register with the NP
  24389. // AND obtain an Interface to the Demux to set/ Remove PIDs.The TIF here passes
  24390. // IUNKNOWN of the pin it is connecting to and obtains the IMPEG2PIDMAP interface
  24391. // implemented by the NP to Map/ UnMap pids.
  24392. //
  24393. type
  24394. // DirectX9 Specific
  24395. {$HPPEMIT 'typedef System::DelphiInterface<IBDA_TIF_REGISTRATION> _di_IBDA_TIF_REGISTRATION;'}
  24396. {$EXTERNALSYM IBDA_TIF_REGISTRATION}
  24397. IBDA_TIF_REGISTRATION = interface(IUnknown)
  24398. ['{DFEF4A68-EE61-415f-9CCB-CD95F2F98A3A}']
  24399. (*** IBDA_TIF_REGISTRATION methods ***)
  24400. // Used to register a transport analyzer with the Network Provider.
  24401. function RegisterTIFEx(pTIFInputPin: IPin; out ppvRegistrationContext: ULONG;
  24402. out ppMpeg2DataControl: IUnknown): HResult; stdcall;
  24403. // Used to unregister TIF with the Network Provider.
  24404. function UnregisterTIF(pvRegistrationContext: ULONG): HResult; stdcall;
  24405. end;
  24406. //******************************************************************************
  24407. //
  24408. // IMPEG2_TIF_CONTROL interface
  24409. //
  24410. // Implemented by the Microsoft ATSC/DVB BDA Network Provider
  24411. //
  24412. // Used by a transport information filter (TIF) to request table
  24413. // sections carried on specific PIDs within the transport stream.
  24414. // The Network Provider Filter will, in turn, do the necessary
  24415. // control on the Demux Filter. All sections are delivered as comlete
  24416. // mpeg2 table sections via the TIF's connection to the Demux Filter.
  24417. //
  24418. {$HPPEMIT 'typedef System::DelphiInterface<IMPEG2_TIF_CONTROL> _di_IMPEG2_TIF_CONTROL;'}
  24419. {$EXTERNALSYM IMPEG2_TIF_CONTROL}
  24420. IMPEG2_TIF_CONTROL = interface(IUnknown)
  24421. ['{F9BAC2F9-4149-4916-B2EF-FAA202326862}']
  24422. (*** IMPEG2_TIF_CONTROL methods ***)
  24423. // Used to register a transport analyzer with the Network Provider
  24424. function RegisterTIF(pUnkTIF: IUnknown; out ppvRegistrationContext: ULONG): HResult; stdcall;
  24425. // Used to unregister TIF with the Network Provider
  24426. function UnregisterTIF(pvRegistrationContext: ULONG): HResult; stdcall;
  24427. // Used to add PSI/SI MPEG2 packet IDs to the TIF's data stream
  24428. function AddPIDs(ulcPIDs: ULONG; pulPIDs: array of ULONG): HResult; stdcall;
  24429. // Used to remove PSI/SI MPEG2 packet IDs from the TIF's data stream
  24430. function DeletePIDs(ulcPIDs: ULONG; pulPIDs: array of ULONG): HResult; stdcall;
  24431. // Returns the number of MPEG2 Packet IDs being filtered into the TIF's input data.
  24432. function GetPIDCount(out pulcPIDs: ULONG): HResult; stdcall;
  24433. // Returns the the list of MPEG2 Packet IDs being filtered into the TIF's input data.
  24434. function GetPIDs(out pulcPIDs: ULONG; pulPIDs: array of ULONG): HResult; stdcall;
  24435. end;
  24436. //******************************************************************************
  24437. //
  24438. // ITuneRequestInfo interface
  24439. //
  24440. // Implemented by a BDA transport information filter (TIF)
  24441. //
  24442. // Used by the BDA Network Provider to obtain network specific
  24443. // information about locating transport streams and aquiring
  24444. // services.
  24445. //
  24446. // GetLocatorData -
  24447. // GetComponentData -
  24448. // CreateComponentList -
  24449. // GetNextService -
  24450. // GetPreviouService -
  24451. // GetNextLocator -
  24452. // GetPreviousLocator -
  24453. {$HPPEMIT 'typedef System::DelphiInterface<ITuneRequestInfo> _di_ITuneRequestInfo;'}
  24454. {$EXTERNALSYM ITuneRequestInfo}
  24455. ITuneRequestInfo = interface(IUnknown)
  24456. ['{A3B152DF-7A90-4218-AC54-9830BEE8C0B6}']
  24457. (*** ITuneRequestInfo methods ***)
  24458. // TIF fills in channel/program locator information for the given tune request.
  24459. function GetLocatorData(Request: ITuneRequest): HResult; stdcall;
  24460. // TIF fills in all network specific component data for the existing component
  24461. // list on the given tune request.
  24462. function GetComponentData(CurrentRequest: ITuneRequest): HResult; stdcall;
  24463. // TIF creates a complete component list and fills in all network specific
  24464. // component data on the given tune request
  24465. function CreateComponentList(CurrentRequest: ITuneRequest): HResult; stdcall;
  24466. // TIF creates a new TuneRequest with channel/program locator information
  24467. // for the next service.
  24468. function GetNextProgram(CurrentRequest: ITuneRequest; out TuneRequest: ITuneRequest): HResult; stdcall;
  24469. // TIF creates a new TuneRequest with channel/program locator information
  24470. // for the previous service.
  24471. function GetPreviousProgram(CurrentRequest: ITuneRequest; out TuneRequest: ITuneRequest): HResult; stdcall;
  24472. // TIF creates a new TuneRequest with locator information for the next transport stream.
  24473. function GetNextLocator(CurrentRequest: ITuneRequest; out TuneRequest: ITuneRequest): HResult; stdcall;
  24474. // TIF creates a new TuneRequest with locator information for the previous transport stream.
  24475. function GetPreviousLocator(CurrentRequest: ITuneRequest; out TuneRequest: ITuneRequest): HResult; stdcall;
  24476. end;
  24477. //******************************************************************************
  24478. //
  24479. // IGuideDataEvent
  24480. //
  24481. // This is the guide data event notification callback interface. The
  24482. // callback interface is registered on a transport analyzer's
  24483. // IConnectionPoint by the event consumer.
  24484. //
  24485. // The event consumer MUST NOT BLOCK THE CALLING THREAD.
  24486. //
  24487. // If the consumer requires additional information about the event, it
  24488. // should queue the event to a separate thread.
  24489. //
  24490. // {EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}
  24491. //
  24492. {$HPPEMIT 'typedef System::DelphiInterface<IGuideDataEvent> _di_IGuideDataEvent;'}
  24493. {$EXTERNALSYM IGuideDataEvent}
  24494. IGuideDataEvent = interface(IUnknown)
  24495. ['{EFDA0C80-F395-42c3-9B3C-56B37DEC7BB7}']
  24496. (*** IGuideDataEvent methods ***)
  24497. // Indicates that a complete set of guide data has been acquire from
  24498. // the current transport stream.
  24499. //
  24500. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  24501. // it must supply this event.
  24502. //
  24503. function GuideDataAcquired: HResult; stdcall;
  24504. // Indicates that information about one or more programs changed.
  24505. //
  24506. // If varProgramDescriptionID is NULL then the consumer
  24507. // must get properties for all programs to determine which ones
  24508. // changed.
  24509. //
  24510. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  24511. // it must supply this event.
  24512. //
  24513. function ProgramChanged(varProgramDescriptionID: OLEVARIANT): HResult; stdcall;
  24514. // Indicates that information about one or more services changed.
  24515. //
  24516. // If varServiceDescriptionID is NULL then the consumer
  24517. // must get properties for all services to determine which ones
  24518. // changed.
  24519. //
  24520. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  24521. // it must supply this event.
  24522. //
  24523. function ServiceChanged(varServiceDescriptionID: OLEVARIANT): HResult; stdcall;
  24524. // Indicates that information about one or more schedule entries
  24525. // changed.
  24526. //
  24527. // If varScheduleEntryDescriptionID is NULL then the consumer
  24528. // must get properties for all schedule entries to determine which ones
  24529. // changed.
  24530. //
  24531. // MANDATORY - If a transport analyzer supports IGuideDataEvent then
  24532. // it must supply this event.
  24533. //
  24534. function ScheduleEntryChanged(varScheduleEntryDescriptionID: OLEVARIANT): HResult; stdcall;
  24535. // Indicates that the program with the given Description.ID
  24536. // has been deleted.
  24537. //
  24538. //
  24539. // Optional - Transport analyzer may supply this event. Consumer
  24540. // may return E_NOTIMPL.
  24541. //
  24542. function ProgramDeleted(varProgramDescriptionID: OLEVARIANT): HResult; stdcall;
  24543. // Indicates that the service with the given Description.ID
  24544. // has been deleted.
  24545. //
  24546. //
  24547. // Optional - Transport analyzer may supply this event. Consumer
  24548. // may return E_NOTIMPL.
  24549. //
  24550. function ServiceDeleted(varServiceDescriptionID: OLEVARIANT): HResult; stdcall;
  24551. // Indicates that the schedule entry with the given Description.ID
  24552. // has been deleted.
  24553. //
  24554. //
  24555. // Optional - Transport analyzer may supply this event. Consumer
  24556. // may return E_NOTIMPL.
  24557. //
  24558. function ScheduleDeleted(varScheduleEntryDescriptionID: OLEVARIANT): HResult; stdcall;
  24559. end;
  24560. //******************************************************************************
  24561. //
  24562. // IGuideDataPropery
  24563. //
  24564. // {88EC5E58-BB73-41d6-99CE-66C524B8B591}
  24565. //
  24566. // interface provided by a transport analyzer to represent a guide data property.
  24567. {$HPPEMIT 'typedef System::DelphiInterface<IGuideDataProperty> _di_IGuideDataProperty;'}
  24568. {$EXTERNALSYM IGuideDataProperty}
  24569. IGuideDataProperty = interface(IUnknown)
  24570. ['{88EC5E58-BB73-41d6-99CE-66C524B8B591}']
  24571. (*** IGuideDataProperty methods ***)
  24572. function Name(out pbstrName: TBSTR): HResult; stdcall;
  24573. function Language(out idLang: longint): HResult; stdcall;
  24574. function Value(out pvar: OLEVARIANT): HResult; stdcall;
  24575. end;
  24576. //******************************************************************************
  24577. //
  24578. // IEnumGuideDataProperties
  24579. //
  24580. // {AE44423B-4571-475c-AD2C-F40A771D80EF}
  24581. //
  24582. // Interface provided by a transport analyzer to enumerate guide data properties.
  24583. {$HPPEMIT 'typedef System::DelphiInterface<IEnumGuideDataProperties> _di_IEnumGuideDataProperties;'}
  24584. {$EXTERNALSYM IEnumGuideDataProperties}
  24585. IEnumGuideDataProperties = interface(IUnknown)
  24586. ['{AE44423B-4571-475c-AD2C-F40A771D80EF}']
  24587. (*** IEnumGuideDataProperties methods ***)
  24588. function Next(celt: ULONG; out ppprop: IGuideDataProperty ; out pcelt: ULONG): HResult; stdcall;
  24589. function Skip(celt: ULONG): HResult; stdcall;
  24590. function Reset: HResult; stdcall;
  24591. function Clone(out ppenum: IEnumGuideDataProperties): HResult; stdcall;
  24592. end;
  24593. //******************************************************************************
  24594. //
  24595. // IEnumTuneRequests
  24596. //
  24597. // {1993299C-CED6-4788-87A3-420067DCE0C7}
  24598. //
  24599. // Interface provided by a transport analyzer to enumerate service tune requests
  24600. {$HPPEMIT 'typedef System::DelphiInterface<IEnumTuneRequests> _di_IEnumTuneRequests;'}
  24601. {$EXTERNALSYM IEnumTuneRequests}
  24602. IEnumTuneRequests = interface(IUnknown)
  24603. ['{1993299C-CED6-4788-87A3-420067DCE0C7}']
  24604. (*** IEnumTuneRequests methods ***)
  24605. function Next(celt: ULONG; out ppprop: ITuneRequest; out pcelt: ULONG): HResult; stdcall;
  24606. function Skip(celt: ULONG): HResult; stdcall;
  24607. function Reset: HResult; stdcall;
  24608. function Clone(out ppenum: IEnumTuneRequests): HResult; stdcall;
  24609. end;
  24610. //******************************************************************************
  24611. //
  24612. // IGuideData
  24613. //
  24614. // {61571138-5B01-43cd-AEAF-60B784A0BF93}
  24615. //
  24616. // Interface provided by a transport analyzer to supply guide data information.
  24617. {$HPPEMIT 'typedef System::DelphiInterface<IGuideData> _di_IGuideData;'}
  24618. {$EXTERNALSYM IGuideData}
  24619. IGuideData = interface(IUnknown)
  24620. ['{61571138-5B01-43cd-AEAF-60B784A0BF93}']
  24621. (*** IGuideData methods ***)
  24622. //-------------------------------------------------------------------------
  24623. //
  24624. // GetServices
  24625. // Returns an enumeration of tune requests for all services whose
  24626. // information is found in the current transport stream.
  24627. //
  24628. // Parameters
  24629. //
  24630. // IEnumTuneRequests **
  24631. // Location in which a reference to the resulting
  24632. // IEnumTuneRequests is placed. The caller must release
  24633. // this reference when finished with it.
  24634. //
  24635. // Comments
  24636. // This call is used to enumerate all services whose information
  24637. // can be found in the service descriptor table. Each tune request
  24638. // in the IEnumTuneRequest * contains the tune request including the
  24639. // locator data for the service.
  24640. //
  24641. // Returns an enumeration of services whose information is found in the given transport stream
  24642. function GetServices(out ppEnumTuneRequests: IEnumTuneRequests): HResult; stdcall;
  24643. //-------------------------------------------------------------------------
  24644. //
  24645. // GetServiceProperties
  24646. // Returns an enumeration of all guide data properties for
  24647. // the service with the given Description.ID.
  24648. //
  24649. // Parameters
  24650. // ITuneRequest *
  24651. // Pointer to a tune request that contains information needed
  24652. // to indentify the requested transport stream.
  24653. // A NULL ITuneRequest * indicates that information about the
  24654. // current transport stream is requested.
  24655. //
  24656. // IEnumGuideDataProperties **
  24657. // Location in which a reference to the resulting
  24658. // IEnumGuideDataProperties is placed. The caller must release
  24659. // this reference when finished with it.
  24660. //
  24661. // Required Properties
  24662. // The following properties MUST be included in the returned
  24663. // property enumeration.
  24664. //
  24665. // Description.ID
  24666. // Uniquely identifies a service.
  24667. //
  24668. // Description.Name
  24669. // The default name to use for this service in the channel lineup.
  24670. //
  24671. // Description.Version
  24672. // Identifies the current version of the properties associated
  24673. // with this service.
  24674. //
  24675. // Provider.Name
  24676. // Name of the service provider (e.g. "KCTS")
  24677. //
  24678. // Provider.NetworkName
  24679. // Name of the network on which the service is provided.
  24680. // (e.g. "PBS")
  24681. //
  24682. // Service.TuneRequest
  24683. // Contains a tune request in the variant
  24684. //
  24685. //
  24686. // Returns an enumeration of all guide data properties for the service specified by a tune request.
  24687. function GetServiceProperties(pTuneRequest: ITuneRequest; out ppEnumProperties: IEnumGuideDataProperties): HResult; stdcall;
  24688. //-------------------------------------------------------------------------
  24689. //
  24690. // GetProgramIDs
  24691. // Returns an enumeration of the unique identifiers (Description.ID)
  24692. // of programs with description contained in all transport
  24693. // streams
  24694. //
  24695. // Parameters
  24696. //
  24697. // IEnumVARIANT **
  24698. // Location in which a reference to the resulting
  24699. // IEnumVARIANT is placed. The caller must release
  24700. // this reference when finished with it.
  24701. //
  24702. // Comments
  24703. // This call is used to get a list of programs that have
  24704. // guide data properties in all transport streams.
  24705. // Each variant returned in the IEnumVARIANT * contains the
  24706. // unique Description.ID property for a program.
  24707. // Note that more than on transport stream may contain properties
  24708. // for the same program. In this case the properties should be
  24709. // merged.
  24710. //
  24711. // Returns an enumeration of the Description.ID property for all programs on
  24712. // the given transport stream.
  24713. function GetGuideProgramIDs(out pEnumPrograms: IEnumVARIANT): HResult; stdcall;
  24714. //-------------------------------------------------------------------------
  24715. //
  24716. // GetProgramProperties
  24717. // Returns an enumeration of all guide data properties for
  24718. // the program with the given Description.ID.
  24719. //
  24720. // Parameters
  24721. // varProgramDescriptionID
  24722. // Variant containing the unique identifier for the program
  24723. // for which properties are requested.
  24724. //
  24725. // IEnumGuideDataProperties **
  24726. // Location in which a reference to the resulting
  24727. // IEnumGuideDataProperties is placed. The caller must release
  24728. // this reference when finished with it.
  24729. //
  24730. // Required Properties
  24731. // The following properties MUST be included in the returned
  24732. // property enumeration.
  24733. //
  24734. // Description.ID
  24735. // Uniquely identifies a program.
  24736. //
  24737. // Description.Version
  24738. // Identifies the current version of the properties associated
  24739. // with this program.
  24740. //
  24741. // Description.Title
  24742. // Human readable title of the program (e.g. "")
  24743. //
  24744. // Description.Long
  24745. // A description of the program.
  24746. //
  24747. // Returns an enumeration of all guide data properties for the program with
  24748. // the given Description.ID.
  24749. function GetProgramProperties(varProgramDescriptionID: OLEVARIANT;
  24750. out ppEnumProperties: IEnumGuideDataProperties): HResult; stdcall;
  24751. //-------------------------------------------------------------------------
  24752. //
  24753. // GetScheduleIDs
  24754. // Returns an enumeration of the unique identifiers (Description.ID)
  24755. // transport of schedule entries with description contained in the
  24756. // given transport stream.
  24757. //
  24758. // Parameters
  24759. //
  24760. // IEnumVARIANT **
  24761. // Location in which a reference to the resulting
  24762. // IEnumVARIANT is placed. The caller must release
  24763. // this reference when finished with it.
  24764. //
  24765. // Comments
  24766. // This call is used to get a list of schedule entries that have
  24767. // guide data properties in all transport streams.
  24768. // Each variant returned in the IEnumVARIANT * contains the
  24769. // unique Description.ID property for a schedule entry.
  24770. // Note that more than on transport stream may contain properties
  24771. // for the same schedule entry. In this case the properties
  24772. // should be merged.
  24773. //
  24774. // Returns an enumeration of the Description.ID property for all schedule
  24775. // entries in the transport stream specified by a tune request.
  24776. function GetScheduleEntryIDs(out pEnumScheduleEntries: IEnumVARIANT): HResult; stdcall;
  24777. //-------------------------------------------------------------------------
  24778. //
  24779. // GetScheduleEntryProperties
  24780. // Returns an enumeration of all guide data properties for
  24781. // the schedule entry with the given Description.ID.
  24782. //
  24783. // Parameters
  24784. // varScheduleEntryDescriptionID
  24785. // Variant containing the unique identifier for the schedule
  24786. // entry for which properties are requested.
  24787. //
  24788. // IEnumGuideDataProperties **
  24789. // Location in which a reference to the resulting
  24790. // IEnumGuideDataProperties is placed. The caller must release
  24791. // this reference when finished with it.
  24792. //
  24793. // Required Properties
  24794. // The following properties MUST be included in the returned
  24795. // property enumeration.
  24796. //
  24797. // Description.ID
  24798. // Uniquely identifies a schedule entry.
  24799. //
  24800. // Description.Version
  24801. // Identifies the current version of the properties associated
  24802. // with this program.
  24803. //
  24804. // Time.Start
  24805. // The starting time and date of this schedule entry.
  24806. //
  24807. // Time.End
  24808. // The ending time and date of this schedule entry.
  24809. //
  24810. // Schedule.Program
  24811. // The Description.ID of the program that will play at the
  24812. // time specified by this schedule entry.
  24813. //
  24814. // Schedule.Service
  24815. // The Description.ID of the Service that carries the
  24816. // program that will play at the time specified by this
  24817. // schedule entry.
  24818. //
  24819. // Returns an enumeration of all guide data properties for the schedule
  24820. // entry with the given Description.ID.")]
  24821. function GetScheduleEntryProperties(varScheduleEntryDescriptionID: OLEVARIANT;
  24822. out ppEnumProperties: IEnumGuideDataProperties): HResult; stdcall;
  24823. end;
  24824. //******************************************************************************
  24825. //
  24826. // IGuideDataLoader
  24827. //
  24828. // All Guide Data Loaders MUST implement this interface. It is how they are
  24829. // provided with the IGuideData interface that they will use.
  24830. //
  24831. //
  24832. {$HPPEMIT 'typedef System::DelphiInterface<IGuideDataLoader> _di_IGuideDataLoader;'}
  24833. {$EXTERNALSYM IGuideDataLoader}
  24834. IGuideDataLoader = interface(IUnknown)
  24835. ['{4764ff7c-fa95-4525-af4d-d32236db9e38}']
  24836. (*** IGuideDataLoader methods ***)
  24837. function Init(pGuideStore: IGuideData): HResult; stdcall;
  24838. function Terminate: HResult; stdcall;
  24839. end;
  24840. //******************************************************************************
  24841. // Copyright (c) 1998 Microsoft Corporation. All Rights Reserved.
  24842. // FileName: Mixerocx.idl
  24843. const
  24844. IID_IMixerOCXNotify : TGUID = '{81A3BD31-DEE1-11d1-8508-00A0C91F9CA0}';
  24845. {$EXTERNALSYM IID_IMixerOCXNotify}
  24846. IID_IMixerOCX : TGUID = '{81A3BD32-DEE1-11d1-8508-00A0C91F9CA0}';
  24847. {$EXTERNALSYM IID_IMixerOCX}
  24848. // data id flags, used to notify the client whenever pertinent data changes
  24849. MIXER_DATA_ASPECT_RATIO = $00000001; // picture aspect ratio changed
  24850. {$EXTERNALSYM MIXER_DATA_ASPECT_RATIO}
  24851. MIXER_DATA_NATIVE_SIZE = $00000002; // native size of video changed
  24852. {$EXTERNALSYM MIXER_DATA_NATIVE_SIZE}
  24853. MIXER_DATA_PALETTE = $00000004; // palette of video changed
  24854. {$EXTERNALSYM MIXER_DATA_PALETTE}
  24855. // status flags defined here
  24856. MIXER_STATE_MASK = $00000003; // use this mask with state status bits
  24857. {$EXTERNALSYM MIXER_STATE_MASK}
  24858. MIXER_STATE_UNCONNECTED = $00000000; // mixer is unconnected and stopped
  24859. {$EXTERNALSYM MIXER_STATE_UNCONNECTED}
  24860. MIXER_STATE_CONNECTED_STOPPED = $00000001; // mixer is connected and stopped
  24861. {$EXTERNALSYM MIXER_STATE_CONNECTED_STOPPED}
  24862. MIXER_STATE_CONNECTED_PAUSED = $00000002; // mixer is connected and paused
  24863. {$EXTERNALSYM MIXER_STATE_CONNECTED_PAUSED}
  24864. MIXER_STATE_CONNECTED_PLAYING = $00000003; // mixer is connected and playing
  24865. {$EXTERNALSYM MIXER_STATE_CONNECTED_PLAYING}
  24866. type
  24867. {$HPPEMIT 'typedef System::DelphiInterface<IMixerOCXNotify> _di_IMixerOCXNotify;'}
  24868. {$EXTERNALSYM IMixerOCXNotify}
  24869. IMixerOCXNotify = interface(IUnknown)
  24870. ['{81A3BD31-DEE1-11d1-8508-00A0C91F9CA0}']
  24871. (*** IMixerOCXNotify methods ***)
  24872. // invalidates the rect
  24873. function OnInvalidateRect(lpcRect: PRECT): HResult; stdcall;
  24874. // informs that a status change has occured, new status bits provided in ulStatusFlags
  24875. function OnStatusChange(ulStatusFlags: ULONG): HResult; stdcall;
  24876. // informs that data parameters, whose id is present in ilDataFlags has changed
  24877. function OnDataChange(ulDataFlags: ULONG): HResult; stdcall;
  24878. end;
  24879. {$HPPEMIT 'typedef System::DelphiInterface<IMixerOCX> _di_IMixerOCX;'}
  24880. {$EXTERNALSYM IMixerOCX}
  24881. IMixerOCX = interface(IUnknown)
  24882. ['{81A3BD32-DEE1-11d1-8508-00A0C91F9CA0}']
  24883. (*** IMixerOCX methods ***)
  24884. // used to notify the mixer that the display mode has changed, the mixer handles this
  24885. // asynchronously and the calls OnStatusChange(MIXER_DISPLAYCHANGE_HANDLED) when processing
  24886. // is done
  24887. function OnDisplayChange(ulBitsPerPixel, ulScreenWidth, ulScreenHeight: ULONG): HResult; stdcall;
  24888. function GetAspectRatio(out pdwPictAspectRatioX, pdwPictAspectRatioY: DWORD): HResult; stdcall;
  24889. function GetVideoSize(out pdwVideoWidth, pdwVideoHeight: DWORD): HResult; stdcall;
  24890. function GetStatus(out pdwStatus: DWORD): HResult; stdcall;
  24891. // the dc provided here is not supposed to be cached. If apps have set a dc using
  24892. // SetDrawInfo, then it is illegal to provide a non NULL argument here
  24893. function OnDraw(hdcDraw: HDC; prcDraw: PRECT): HResult; stdcall;
  24894. // lpptTopLeftSC should be NULL unless MIXER_DRAW_DC_ONSCREEN is set to TRUE
  24895. // specifying a NULL value for lprcClip means no clipping
  24896. // lpptTopLeftSC - top left corner of surface/dc in screen coordinates
  24897. // prcDrawCC - draw rectangle in surface/dc coordinates
  24898. // lprcClip - clipping rect in surface/dc coordinates (optional)
  24899. function SetDrawRegion(lpptTopLeftSC: PPOINT; prcDrawCC, lprcClip: PRECT): HResult; stdcall;
  24900. // function to set the sink interface for client notification
  24901. function Advise(pmdns: IMixerOCXNotify): HResult; stdcall;
  24902. // function to remove the sink interface
  24903. function UnAdvise: HResult; stdcall;
  24904. end;
  24905. /////////////////////////////////////////////////////////////////////////////
  24906. //
  24907. // Copyright (c) Microsoft Corporation. All rights reserved.
  24908. //
  24909. // Module Name:
  24910. //
  24911. // Mpeg2Bits.h
  24912. //
  24913. // Abstract:
  24914. //
  24915. // This file defines the MPEG-2 section header bitfields. These are
  24916. // defined here instead of in mpegstructs.idl because of MIDL
  24917. // compiler conflicts with bitfield definitions.
  24918. //
  24919. /////////////////////////////////////////////////////////////////////////////
  24920. // PID structure
  24921. // WORD Reserved : 3;
  24922. // WORD ProgramId : 13;
  24923. PPIDBits = ^TPIDBits;
  24924. PID_BITS = packed record
  24925. Bits: WORD;
  24926. end;
  24927. {$EXTERNALSYM PID_BITS}
  24928. PPID_BITS = ^PID_BITS;
  24929. {$EXTERNALSYM PPID_BITS}
  24930. TPIDBits = PID_BITS;
  24931. // Generic MPEG packet header structure
  24932. // WORD SectionLength : 12;
  24933. // WORD Reserved : 2;
  24934. // WORD PrivateIndicator : 1;
  24935. // WORD SectionSyntaxIndicator : 1;
  24936. PMPEGHeaderBits = ^TMPEGHeaderBits;
  24937. MPEG_HEADER_BITS = packed record
  24938. Bits: WORD;
  24939. end;
  24940. {$EXTERNALSYM MPEG_HEADER_BITS}
  24941. PMPEG_HEADER_BITS = ^MPEG_HEADER_BITS;
  24942. {$EXTERNALSYM PMPEG_HEADER_BITS}
  24943. TMPEGHeaderBits = MPEG_HEADER_BITS;
  24944. // Long MPEG packet header structure
  24945. // BYTE CurrentNextIndicator : 1;
  24946. // BYTE VersionNumber : 5;
  24947. // BYTE Reserved : 2;
  24948. PMPEGHeaderVersionBits = ^TMPEGHeaderVersionBits;
  24949. MPEG_HEADER_VERSION_BITS = packed record
  24950. Bits: BYTE;
  24951. end;
  24952. {$EXTERNALSYM MPEG_HEADER_VERSION_BITS}
  24953. PMPEG_HEADER_VERSION_BITS = ^MPEG_HEADER_VERSION_BITS;
  24954. {$EXTERNALSYM PMPEG_HEADER_VERSION_BITS}
  24955. TMPEGHeaderVersionBits = MPEG_HEADER_VERSION_BITS;
  24956. /////////////////////////////////////////////////////////////////////////////
  24957. //
  24958. // Copyright (c) Microsoft Corporation. All rights reserved.
  24959. //
  24960. // Module Name:
  24961. //
  24962. // Mpeg2Structs.idl
  24963. //
  24964. // Abstract:
  24965. //
  24966. // Definitions for the common structures used in Mpeg2Data
  24967. //
  24968. // Notes:
  24969. //
  24970. // This IDL file is not built independently, but is included and built
  24971. // in the master IDL file Mpeg2Data.idl
  24972. //
  24973. /////////////////////////////////////////////////////////////////////////////
  24974. type
  24975. // Basic Type Aliases
  24976. PPID = ^PID;
  24977. {$EXTERNALSYM PPID}
  24978. PID = WORD;
  24979. {$EXTERNALSYM PID}
  24980. PTID = ^TID;
  24981. {$EXTERNALSYM PTID}
  24982. TID = BYTE;
  24983. {$EXTERNALSYM TID}
  24984. ClientKey = UINT;
  24985. {$EXTERNALSYM ClientKey}
  24986. // MPEG-2 Current/Next bit field
  24987. MPEG_CURRENT_NEXT_BIT = (
  24988. {$EXTERNALSYM MPEG_CURRENT_NEXT_BIT}
  24989. MPEG_SECTION_IS_NEXT,
  24990. MPEG_SECTION_IS_CURRENT
  24991. );
  24992. TMPEGCurrentNextBit = MPEG_CURRENT_NEXT_BIT;
  24993. // MPEG-2 TID Extension structure
  24994. PTidExtension = ^TTidExtension;
  24995. TID_EXTENSION = packed record
  24996. wTidExt: WORD;
  24997. wCount : WORD;
  24998. end;
  24999. {$EXTERNALSYM TID_EXTENSION}
  25000. PTID_EXTENSION = ^TID_EXTENSION;
  25001. {$EXTERNALSYM PTID_EXTENSION}
  25002. TTidExtension = TID_EXTENSION;
  25003. // MPEG-2 packet "small" header structure
  25004. SECTION = packed record
  25005. TableId : TID;
  25006. Header : TMPEGHeaderBits;
  25007. SectionData : array[0..0] of BYTE; // Array size is Header.S.SectionLength
  25008. end;
  25009. {$EXTERNALSYM SECTION}
  25010. PSECTION = ^SECTION;
  25011. {$EXTERNALSYM PSECTION}
  25012. TSection = SECTION;
  25013. // MPEG-2 packet "long" header structure
  25014. PLongSection = ^TLongSection;
  25015. LONG_SECTION = packed record
  25016. TableId : TID;
  25017. Header : TMPEGHeaderBits;
  25018. TableIdExtension : WORD;
  25019. Version : TMPEGHeaderVersionBits;
  25020. SectionNumber : BYTE;
  25021. LastSectionNumber : BYTE;
  25022. RemainingData : array[0..0] of BYTE; // Array size is Header.S.SectionLength - 5
  25023. end;
  25024. {$EXTERNALSYM LONG_SECTION}
  25025. PLONG_SECTION = ^LONG_SECTION;
  25026. {$EXTERNALSYM PLONG_SECTION}
  25027. TLongSection = LONG_SECTION;
  25028. // DSM-CC packet header structure
  25029. PDSMCCSection = ^TDSMCCSection;
  25030. DSMCC_SECTION = packed record
  25031. TableId : TID;
  25032. Header : TMPEGHeaderBits;
  25033. TableIdExtension : WORD;
  25034. Version : TMPEGHeaderVersionBits;
  25035. SectionNumber : BYTE;
  25036. LastSectionNumber : BYTE;
  25037. ProtocolDiscriminator : BYTE;
  25038. DsmccType : BYTE;
  25039. MessageId : WORD;
  25040. TransactionId : DWORD;
  25041. Reserved : BYTE;
  25042. AdaptationLength : BYTE;
  25043. MessageLength : WORD;
  25044. RemainingData: array[0..0] of BYTE;
  25045. end;
  25046. {$EXTERNALSYM DSMCC_SECTION}
  25047. PDSMCC_SECTION = ^DSMCC_SECTION;
  25048. {$EXTERNALSYM PDSMCC_SECTION}
  25049. TDSMCCSection = DSMCC_SECTION;
  25050. // MPEG-2 request/response packets structures
  25051. PMPEGRQSTPacket = ^TMPEGRQSTPacket;
  25052. MPEG_RQST_PACKET = packed record
  25053. dwLength: DWORD;
  25054. pSection: PSECTION;
  25055. end;
  25056. {$EXTERNALSYM MPEG_RQST_PACKET}
  25057. PMPEG_RQST_PACKET = ^MPEG_RQST_PACKET;
  25058. {$EXTERNALSYM PMPEG_RQST_PACKET}
  25059. TMPEGRQSTPacket = MPEG_RQST_PACKET;
  25060. PMPEGPacketList = ^TMPEGPacketList;
  25061. MPEG_PACKET_LIST = packed record
  25062. wPacketCount : WORD ;
  25063. PacketList : array[0..0] of PMPEG_RQST_PACKET; // Array size is wPacketCount;
  25064. end;
  25065. {$EXTERNALSYM MPEG_PACKET_LIST}
  25066. PMPEG_PACKET_LIST = ^MPEG_PACKET_LIST;
  25067. {$EXTERNALSYM PMPEG_PACKET_LIST}
  25068. TMPEGPacketList = MPEG_PACKET_LIST;
  25069. // DSM-CC request filter options
  25070. PDSMCCFilterOptions = ^TDSMCCFilterOptions;
  25071. DSMCC_FILTER_OPTIONS = packed record
  25072. fSpecifyProtocol : BOOL; // If true, Protocol should be set to desired value
  25073. Protocol : BYTE;
  25074. fSpecifyType : BOOL; // If true, Type should be set to desired value
  25075. Type_ : BYTE;
  25076. fSpecifyMessageId : BOOL; // If true, MessageId should be set to desired value
  25077. MessageId : WORD;
  25078. fSpecifyTransactionId : BOOL; // If true, TransactionId (or DownloadId for DDB msgs) should be set to desired value
  25079. fUseTrxIdMessageIdMask : BOOL; // If false, TransactionId is filtered as is.
  25080. // If true, TransactionId is masked to look
  25081. // for any version of message with associated
  25082. // message identifier. See DVB - Data
  25083. // Broadcasting Guidlines 4.6.5. (Assignment
  25084. // and use of transactionId values).
  25085. TransactionId : DWORD;
  25086. fSpecifyModuleVersion : BOOL; // If true, ModuleVersion should be set to the desired value
  25087. ModuleVersion : BYTE;
  25088. fSpecifyBlockNumber : BOOL; // If true, BlockNumber should be set to desired value
  25089. BlockNumber : WORD;
  25090. fGetModuleCall : BOOL; // If true, NumberOfBlocksInModule should be set
  25091. NumberOfBlocksInModule : WORD;
  25092. end;
  25093. // 45 BYTES
  25094. {$EXTERNALSYM DSMCC_FILTER_OPTIONS}
  25095. PDSMCC_FILTER_OPTIONS = ^DSMCC_FILTER_OPTIONS;
  25096. {$EXTERNALSYM PDSMCC_FILTER_OPTIONS}
  25097. TDSMCCFilterOptions = DSMCC_FILTER_OPTIONS;
  25098. // ATSC request filter options
  25099. PATSCFilterOptions = ^TATSCFilterOptions;
  25100. ATSC_FILTER_OPTIONS = packed record
  25101. fSpecifyEtmId : BOOL; // If true, EtmId should be set to desired value
  25102. EtmId : DWORD;
  25103. end;
  25104. // 8 BYTES
  25105. {$EXTERNALSYM ATSC_FILTER_OPTIONS}
  25106. TATSCFilterOptions = ATSC_FILTER_OPTIONS;
  25107. // MPEG-2 request filter structure
  25108. PMPEG2Filter = ^TMPEG2Filter;
  25109. MPEG2_FILTER = packed record
  25110. bVersionNumber : BYTE; // Must be set to 1 or more to match filter definition
  25111. wFilterSize : WORD; // Size of total filter structure. Version 1 filter is 73 bytes.
  25112. fUseRawFilteringBits : BOOL; // If true, Filter and Mask fields should be set to desired value, all other
  25113. // fields with be ignored.
  25114. Filter : array[0..15] of BYTE; // Bits with values to compare against for a match.
  25115. Mask : array[0..15] of BYTE; // Bits set to 0 are bits that are compared to those in the filter, those
  25116. // bits set to 1 are ignored.
  25117. fSpecifyTableIdExtension : BOOL; // If true, TableIdExtension should be set to desired value (false = don't care)
  25118. TableIdExtension : WORD;
  25119. fSpecifyVersion : BOOL; // If true, Version should be set to desired value (false = don't care)
  25120. Version : BYTE;
  25121. fSpecifySectionNumber : BOOL; // If true, SectionNumber should be set to desired value (false = don't care)
  25122. SectionNumber : BYTE;
  25123. fSpecifyCurrentNext : BOOL; // If true, fNext should be set to desired value (false = don't care)
  25124. fNext : BOOL; // If true, next table is queried. Else, current
  25125. fSpecifyDsmccOptions : BOOL; // If true, Dsmcc should be set with desired filter options
  25126. Dsmcc : TDSMCCFilterOptions;
  25127. fSpecifyAtscOptions : BOOL; // If true, Atsc should be set with desired filter options
  25128. Atsc : TATSCFilterOptions;
  25129. end;
  25130. // 124 BYTES
  25131. {$EXTERNALSYM MPEG2_FILTER}
  25132. PMPEG2_FILTER = ^MPEG2_FILTER;
  25133. {$EXTERNALSYM PMPEG2_FILTER}
  25134. TMPEG2Filter = MPEG2_FILTER;
  25135. const
  25136. MPEG2_FILTER_VERSION_1_SIZE = 124;
  25137. {$EXTERNALSYM MPEG2_FILTER_VERSION_1_SIZE}
  25138. type
  25139. // Mpeg-2 Stream buffer structure
  25140. PMPEGStreamBuffer = ^TMPEGStreamBuffer;
  25141. MPEG_STREAM_BUFFER = packed record
  25142. hr : HResult;
  25143. dwDataBufferSize : DWORD;
  25144. dwSizeOfDataRead : DWORD;
  25145. pDataBuffer : PBYTE;
  25146. end;
  25147. {$EXTERNALSYM MPEG_STREAM_BUFFER}
  25148. PMPEG_STREAM_BUFFER = ^MPEG_STREAM_BUFFER;
  25149. {$EXTERNALSYM PMPEG_STREAM_BUFFER}
  25150. TMPEGStreamBuffer = MPEG_STREAM_BUFFER;
  25151. // MPEG-2 Time and Date structures
  25152. PMPEGTime = ^TMPEGTime;
  25153. MPEG_TIME = packed record
  25154. Hours : BYTE; // Legal Range: 0 to 23
  25155. Minutes : BYTE; // Legal Range: 0 to 59
  25156. Seconds : BYTE; // Legal Range: 0 to 59
  25157. end;
  25158. {$EXTERNALSYM MPEG_TIME}
  25159. TMPEGTime = MPEG_TIME;
  25160. MPEG_DURATION = MPEG_TIME;
  25161. {$EXTERNALSYM MPEG_DURATION}
  25162. PMPEGDate = ^TMPEGDate;
  25163. MPEG_DATE = packed record
  25164. Date : BYTE; // Legal Range: 1 to 31
  25165. Month : BYTE; // Legal Range: 1 to 12
  25166. Year : WORD; // Legal Range: 1900 to 2100
  25167. end;
  25168. {$EXTERNALSYM MPEG_DATE}
  25169. TMPEGDate = MPEG_DATE;
  25170. PMPEGDateAndTime = ^TMPEGDateAndTime;
  25171. MPEG_DATE_AND_TIME = packed record
  25172. D: TMPEGDate;
  25173. T: TMPEGTime;
  25174. end;
  25175. {$EXTERNALSYM MPEG_DATE_AND_TIME}
  25176. TMPEGDateAndTime = MPEG_DATE_AND_TIME;
  25177. // MPEG-2 API Context structures
  25178. MPEG_CONTEXT_TYPE = (
  25179. MPEG_CONTEXT_BCS_DEMUX,
  25180. MPEG_CONTEXT_WINSOCK
  25181. );
  25182. {$EXTERNALSYM MPEG_CONTEXT_TYPE}
  25183. TMPEGContextType = MPEG_CONTEXT_TYPE;
  25184. MPEG_BCS_DEMUX = packed record
  25185. AVMGraphId: DWORD;
  25186. end;
  25187. {$EXTERNALSYM MPEG_BCS_DEMUX}
  25188. TMPEGBCSDemux = MPEG_BCS_DEMUX;
  25189. MPEG_WINSOCK = record
  25190. AVMGraphId: DWORD;
  25191. end;
  25192. {$EXTERNALSYM MPEG_WINSOCK}
  25193. TMPEGWinsock = MPEG_WINSOCK;
  25194. PMPEGContext = ^TMPEGContext;
  25195. MPEG_CONTEXT = packed record
  25196. Type_ : TMPEGContextType;
  25197. case byte of
  25198. 0: (Demux: TMPEGBCSDemux);
  25199. 1: (Winsock: TMPEGWinsock);
  25200. end;
  25201. {$EXTERNALSYM MPEG_CONTEXT}
  25202. PMPEG_CONTEXT = ^MPEG_CONTEXT;
  25203. {$EXTERNALSYM PMPEG_CONTEXT}
  25204. TMPEGContext = MPEG_CONTEXT;
  25205. // MPEG-2 Service Request and Responses
  25206. MPEG_REQUEST_TYPE = (
  25207. MPEG_RQST_UNKNOWN,
  25208. MPEG_RQST_GET_SECTION,
  25209. MPEG_RQST_GET_SECTION_ASYNC,
  25210. MPEG_RQST_GET_TABLE,
  25211. MPEG_RQST_GET_TABLE_ASYNC,
  25212. MPEG_RQST_GET_SECTIONS_STREAM,
  25213. MPEG_RQST_GET_PES_STREAM,
  25214. MPEG_RQST_GET_TS_STREAM,
  25215. MPEG_RQST_START_MPE_STREAM
  25216. );
  25217. {$EXTERNALSYM MPEG_REQUEST_TYPE}
  25218. TMPEGRequestType = MPEG_REQUEST_TYPE;
  25219. PMPEGServiceRequest = ^TMPEGServiceRequest;
  25220. MPEG_SERVICE_REQUEST = packed record
  25221. Type_ : TMPEGRequestType;
  25222. Context : TMPEGContext;
  25223. Pid : PID;
  25224. TableId : TID;
  25225. Filter : TMPEG2Filter;
  25226. Flags : DWORD;
  25227. end;
  25228. {$EXTERNALSYM MPEG_SERVICE_REQUEST}
  25229. PMPEG_SERVICE_REQUEST = ^MPEG_SERVICE_REQUEST;
  25230. {$EXTERNALSYM PMPEG_SERVICE_REQUEST}
  25231. TMPEGServiceRequest = MPEG_SERVICE_REQUEST;
  25232. PMPEGServiceResponse = ^TMPEGServiceResponse;
  25233. MPEG_SERVICE_RESPONSE = packed record
  25234. IPAddress : DWORD;
  25235. Port : WORD;
  25236. end;
  25237. {$EXTERNALSYM MPEG_SERVICE_RESPONSE}
  25238. PMPEG_SERVICE_RESPONSE = ^MPEG_SERVICE_RESPONSE;
  25239. {$EXTERNALSYM PMPEG_SERVICE_RESPONSE}
  25240. TMPEGServiceResponse = MPEG_SERVICE_RESPONSE;
  25241. // DSM-CC & MPE Query Results
  25242. PDSMCCElement = ^TDSMCCElement;
  25243. DSMCC_ELEMENT = packed record
  25244. pid : PID;
  25245. bComponentTag : BYTE;
  25246. dwCarouselId : DWORD;
  25247. dwTransactionId : DWORD;
  25248. pNext : PDSMCCElement;
  25249. end;
  25250. {$EXTERNALSYM DSMCC_ELEMENT}
  25251. PDSMCC_ELEMENT = ^DSMCC_ELEMENT;
  25252. {$EXTERNALSYM PDSMCC_ELEMENT}
  25253. TDSMCCElement = DSMCC_ELEMENT;
  25254. PMPEElement = ^TMPEElement;
  25255. MPE_ELEMENT = packed record
  25256. pid : PID;
  25257. bComponentTag : BYTE;
  25258. pNext : PMPEElement;
  25259. end;
  25260. {$EXTERNALSYM MPE_ELEMENT}
  25261. PMPE_ELEMENT = ^MPE_ELEMENT;
  25262. {$EXTERNALSYM PMPE_ELEMENT}
  25263. TMPEElement = MPE_ELEMENT;
  25264. // MPEG-2 Stream Filtering Structure
  25265. PMPEGStreamFilter = ^TMPEGStreamFilter;
  25266. MPEG_STREAM_FILTER = packed record
  25267. wPidValue : WORD; // PID value
  25268. dwFilterSize : DWORD; // size of filter in bits
  25269. fCrcEnabled : BOOL; // enable/disable CRC check
  25270. rgchFilter : array[0..15] of BYTE; // filter data
  25271. rgchMask : array[0..15] of BYTE; // filter mask
  25272. end;
  25273. {$EXTERNALSYM MPEG_STREAM_FILTER}
  25274. TMPEGStreamFilter = MPEG_STREAM_FILTER;
  25275. /////////////////////////////////////////////////////////////////////////////
  25276. //
  25277. // Copyright (c) Microsoft Corporation. All rights reserved.
  25278. //
  25279. // Module Name:
  25280. //
  25281. // Mpeg2Data.idl
  25282. //
  25283. // Abstract:
  25284. //
  25285. // Main Mpeg2Data Library Definition, and interface definitions for
  25286. // the MPEG-2 Section and Table acquisition functionality
  25287. //
  25288. /////////////////////////////////////////////////////////////////////////////
  25289. const
  25290. // Declare well known PID/TID values for MPEG-2 tables
  25291. MPEG_PAT_PID = $0000;
  25292. {$EXTERNALSYM MPEG_PAT_PID}
  25293. MPEG_PAT_TID = $00;
  25294. {$EXTERNALSYM MPEG_PAT_TID}
  25295. MPEG_CAT_PID = $0001;
  25296. {$EXTERNALSYM MPEG_CAT_PID}
  25297. MPEG_CAT_TID = $01;
  25298. {$EXTERNALSYM MPEG_CAT_TID}
  25299. MPEG_PMT_TID = $02;
  25300. {$EXTERNALSYM MPEG_PMT_TID}
  25301. MPEG_TSDT_PID = $0002;
  25302. {$EXTERNALSYM MPEG_TSDT_PID}
  25303. MPEG_TSDT_TID = $03;
  25304. {$EXTERNALSYM MPEG_TSDT_TID}
  25305. // Declare well known PID/TID values for ATSC tables
  25306. ATSC_MGT_PID = $1FFB;
  25307. {$EXTERNALSYM ATSC_MGT_PID}
  25308. ATSC_MGT_TID = $C7;
  25309. {$EXTERNALSYM ATSC_MGT_TID}
  25310. ATSC_VCT_PID = $1FFB;
  25311. {$EXTERNALSYM ATSC_VCT_PID}
  25312. ATSC_VCT_TERR_TID = $C8;
  25313. {$EXTERNALSYM ATSC_VCT_TERR_TID}
  25314. ATSC_VCT_CABL_TID = $C9;
  25315. {$EXTERNALSYM ATSC_VCT_CABL_TID}
  25316. ATSC_RRT_PID = $1FFB;
  25317. {$EXTERNALSYM ATSC_RRT_PID}
  25318. ATSC_RRT_TID = $CA;
  25319. {$EXTERNALSYM ATSC_RRT_TID}
  25320. ATSC_EIT_TID = $CB;
  25321. {$EXTERNALSYM ATSC_EIT_TID}
  25322. ATSC_ETT_TID = $CC;
  25323. {$EXTERNALSYM ATSC_ETT_TID}
  25324. ATSC_STT_PID = $1FFB;
  25325. {$EXTERNALSYM ATSC_STT_PID}
  25326. ATSC_STT_TID = $CD;
  25327. {$EXTERNALSYM ATSC_STT_TID}
  25328. ATSC_PIT_TID = $D0;
  25329. {$EXTERNALSYM ATSC_PIT_TID}
  25330. // Declare well known PID/TID values for DVB tables
  25331. DVB_NIT_PID = $0010;
  25332. {$EXTERNALSYM DVB_NIT_PID}
  25333. DVB_NIT_ACTUAL_TID = $40;
  25334. {$EXTERNALSYM DVB_NIT_ACTUAL_TID}
  25335. DVB_NIT_OTHER_TID = $41;
  25336. {$EXTERNALSYM DVB_NIT_OTHER_TID}
  25337. DVB_SDT_PID = $0011;
  25338. {$EXTERNALSYM DVB_SDT_PID}
  25339. DVB_SDT_ACTUAL_TID = $42;
  25340. {$EXTERNALSYM DVB_SDT_ACTUAL_TID}
  25341. DVB_SDT_OTHER_TID = $46;
  25342. {$EXTERNALSYM DVB_SDT_OTHER_TID}
  25343. DVB_BAT_PID = $0011;
  25344. {$EXTERNALSYM DVB_BAT_PID}
  25345. DVB_BAT_TID = $4A;
  25346. {$EXTERNALSYM DVB_BAT_TID}
  25347. DVB_EIT_PID = $0012;
  25348. {$EXTERNALSYM DVB_EIT_PID}
  25349. DVB_EIT_ACTUAL_TID = $4E;
  25350. {$EXTERNALSYM DVB_EIT_ACTUAL_TID}
  25351. DVB_EIT_OTHER_TID = $4F;
  25352. {$EXTERNALSYM DVB_EIT_OTHER_TID}
  25353. DVB_RST_PID = $0013;
  25354. {$EXTERNALSYM DVB_RST_PID}
  25355. DVB_RST_TID = $71;
  25356. {$EXTERNALSYM DVB_RST_TID}
  25357. DVB_TDT_PID = $0014;
  25358. {$EXTERNALSYM DVB_TDT_PID}
  25359. DVB_TDT_TID = $70;
  25360. {$EXTERNALSYM DVB_TDT_TID}
  25361. DVB_ST_PID_16 = $0010;
  25362. {$EXTERNALSYM DVB_ST_PID_16}
  25363. DVB_ST_PID_17 = $0011;
  25364. {$EXTERNALSYM DVB_ST_PID_17}
  25365. DVB_ST_PID_18 = $0012;
  25366. {$EXTERNALSYM DVB_ST_PID_18}
  25367. DVB_ST_PID_19 = $0013;
  25368. {$EXTERNALSYM DVB_ST_PID_19}
  25369. DVB_ST_PID_20 = $0014;
  25370. {$EXTERNALSYM DVB_ST_PID_20}
  25371. DVB_ST_TID = $72;
  25372. {$EXTERNALSYM DVB_ST_TID}
  25373. DVB_TOT_PID = $0014;
  25374. {$EXTERNALSYM DVB_TOT_PID}
  25375. DVB_TOT_TID = $73;
  25376. {$EXTERNALSYM DVB_TOT_TID}
  25377. DVB_DIT_PID = $001E;
  25378. {$EXTERNALSYM DVB_DIT_PID}
  25379. DVB_DIT_TID = $7E;
  25380. {$EXTERNALSYM DVB_DIT_TID}
  25381. DVB_SIT_PID = $001F;
  25382. {$EXTERNALSYM DVB_SIT_PID}
  25383. DVB_SIT_TID = $7F;
  25384. {$EXTERNALSYM DVB_SIT_TID}
  25385. // Declare well known PID/TID values for ISDB tables
  25386. ISDB_DCT_PID = $0017;
  25387. {$EXTERNALSYM ISDB_DCT_PID}
  25388. ISDB_DCT_TID = $C0;
  25389. {$EXTERNALSYM ISDB_DCT_TID}
  25390. ISDB_LIT_PID = $0020;
  25391. {$EXTERNALSYM ISDB_LIT_PID}
  25392. ISDB_LIT_TID = $D0;
  25393. {$EXTERNALSYM ISDB_LIT_TID}
  25394. ISDB_ERT_PID = $0021;
  25395. {$EXTERNALSYM ISDB_ERT_PID}
  25396. ISDB_ERT_TID = $D1;
  25397. {$EXTERNALSYM ISDB_ERT_TID}
  25398. ISDB_ITT_TID = $D2;
  25399. {$EXTERNALSYM ISDB_ITT_TID}
  25400. ISDB_DLT_TID = $C1;
  25401. {$EXTERNALSYM ISDB_DLT_TID}
  25402. ISDB_PCAT_PID = $0022;
  25403. {$EXTERNALSYM ISDB_PCAT_PID}
  25404. ISDB_PCAT_TID = $C2;
  25405. {$EXTERNALSYM ISDB_PCAT_TID}
  25406. ISDB_SDTT_PID = $0023;
  25407. {$EXTERNALSYM ISDB_SDTT_PID}
  25408. ISDB_SDTT_TID = $C3;
  25409. {$EXTERNALSYM ISDB_SDTT_TID}
  25410. ////////////////////////////////////
  25411. //
  25412. // Mpeg2DataLib Library
  25413. //
  25414. ////////////////////////////////////
  25415. const
  25416. LIBID_Mpeg2DataLib : TGUID = '{DBAF6C1B-B6A4-4898-AE65-204F0D9509A1}';
  25417. {$EXTERNALSYM LIBID_Mpeg2DataLib}
  25418. IID_IMpeg2Data : TGUID = '{9B396D40-F380-4e3c-A514-1A82BF6EBFE6}';
  25419. {$EXTERNALSYM IID_IMpeg2Data}
  25420. IID_ISectionList : TGUID = '{AFEC1EB5-2A64-46c6-BF4B-AE3CCB6AFDB0}';
  25421. {$EXTERNALSYM IID_ISectionList}
  25422. IID_IMpeg2FilterControl : TGUID = '{7066CCDA-5C09-4e4f-85BC-2A2D6E0E310D}';
  25423. {$EXTERNALSYM IID_IMpeg2FilterControl}
  25424. IID_IMpeg2Stream : TGUID = '{400CC286-32A0-4ce4-9041-39571125A635}';
  25425. {$EXTERNALSYM IID_IMpeg2Stream}
  25426. CLSID_SectionList : TGUID = '{73DA5D04-4347-45d3-A9DC-FAE9DDBE558D}'; // ISectionList
  25427. {$EXTERNALSYM CLSID_SectionList}
  25428. CLSID_Mpeg2Stream : TGUID = '{F91D96C7-8509-4d0b-AB26-A0DD10904BB7}'; // IMpeg2Stream
  25429. {$EXTERNALSYM CLSID_Mpeg2Stream}
  25430. CLSID_Mpeg2Data : TGUID = '{C666E115-BB62-4027-A113-82D643FE2D99}'; // IMpeg2FilterControl (IAtscPsipParser IDvbSiParser Not available in DX9)
  25431. {$NODEFINE CLSID_Mpeg2Data}
  25432. type
  25433. ////////////////////////////////////
  25434. //
  25435. // IMpeg2Data Interface
  25436. //
  25437. ////////////////////////////////////
  25438. ISectionList = interface;
  25439. IMpeg2Stream = interface;
  25440. {$HPPEMIT 'typedef System::DelphiInterface<IMpeg2Data> _di_IMpeg2Data;'}
  25441. {$EXTERNALSYM IMpeg2Data}
  25442. IMpeg2Data = interface(IUnknown)
  25443. ['{9B396D40-F380-4e3c-A514-1A82BF6EBFE6}']
  25444. (*** IMpeg2Data methods ***)
  25445. function GetSection(pid: PID; tid: TID; pFilter: PMPEG2_FILTER {OPTIONAL};
  25446. dwTimeout: DWORD; out ppSectionList: ISectionList): HResult; stdcall;
  25447. function GetTable(pid: PID; tid: TID; pFilter: PMPEG2_FILTER {OPTIONAL};
  25448. dwTimeout: DWORD; out ppSectionList: ISectionList): HResult; stdcall;
  25449. function GetStreamOfSections(pid: PID; tid: TID; pFilter: PMPEG2_FILTER {OPTIONAL};
  25450. hDataReadyEvent: THandle; out ppMpegStream: IMpeg2Stream): HResult; stdcall;
  25451. end;
  25452. ////////////////////////////////////
  25453. //
  25454. // ISectionList Interface
  25455. //
  25456. ////////////////////////////////////
  25457. {$HPPEMIT 'typedef System::DelphiInterface<ISectionList> _di_ISectionList;'}
  25458. {$EXTERNALSYM ISectionList}
  25459. ISectionList = interface(IUnknown)
  25460. ['{AFEC1EB5-2A64-46c6-BF4B-AE3CCB6AFDB0}']
  25461. (*** ISectionList methods ***)
  25462. function Initialize(requestType: TMPEGRequestType; pMpeg2Data: IMpeg2Data;
  25463. pContext: PMPEG_CONTEXT; pid: PID; tid: TID; pFilter: PMPEG2_FILTER {OPTIONAL};
  25464. timeout: DWORD; hDoneEvent: THandle {OPTIONAL}): HResult; stdcall;
  25465. function InitializeWithRawSections(pmplSections: PMPEG_PACKET_LIST): HResult; stdcall;
  25466. function CancelPendingRequest: HResult; stdcall;
  25467. function GetNumberOfSections(out pCount: WORD): HResult; stdcall;
  25468. function GetSectionData(sectionNumber: WORD; out pdwRawPacketLength: DWORD;
  25469. out ppSection: PSECTION): HResult; stdcall;
  25470. function GetProgramIdentifier(pPid: PPID): HResult; stdcall;
  25471. function GetTableIdentifier(pTableId: PTID): HResult; stdcall;
  25472. end;
  25473. ////////////////////////////////////
  25474. //
  25475. // IMpeg2FilterControl Interface
  25476. //
  25477. ////////////////////////////////////
  25478. // Defined in DX9 RC0 but removed in RC1 ???
  25479. {$NODEFINE IMpeg2FilterControl}
  25480. IMpeg2FilterControl = interface(IUnknown)
  25481. ['{7066CCDA-5C09-4e4f-85BC-2A2D6E0E310D}']
  25482. (*** IMpeg2FilterControl methods ***)
  25483. function SetFilter(culFilterItems: ULONG; prgFilterCriteria: PMPEGStreamFilter;
  25484. MediaSampleContent: TMediaSampleContent; hEvent: THandle;
  25485. out pClientKey: ClientKey): HResult; stdcall;
  25486. function ClearFilter(clientKey: ClientKey): HResult; stdcall;
  25487. function GetData(pbDataBuffer: PBYTE; dwBufferSize: DWORD;
  25488. out pdwBytesWritten: DWORD; clientKey: ClientKey): HResult;
  25489. end;
  25490. ////////////////////////////////////
  25491. //
  25492. // IMpeg2Stream Interface
  25493. //
  25494. ////////////////////////////////////
  25495. {$HPPEMIT 'typedef System::DelphiInterface<IMpeg2Stream> _di_IMpeg2Stream;'}
  25496. {$EXTERNALSYM IMpeg2Stream}
  25497. IMpeg2Stream = interface(IUnknown)
  25498. ['{400CC286-32A0-4ce4-9041-39571125A635}']
  25499. (*** IMpeg2Stream methods ***)
  25500. function Initialize(requestType: TMPEGRequestType; pMpeg2Data: IMpeg2Data;
  25501. pContext: PMPEG_CONTEXT; pid: PID; tid: TID; pFilter: PMPEG2_FILTER {OPTIONAL};
  25502. hDataReadyEvent: THandle): HResult; stdcall;
  25503. function SupplyDataBuffer(pStreamBuffer: PMPEG_STREAM_BUFFER): HResult; stdcall;
  25504. end;
  25505. /////////////////////////////////////////////////////////////////////////////
  25506. //
  25507. // Copyright (c) Microsoft Corporation. All rights reserved.
  25508. //
  25509. // Module Name:
  25510. //
  25511. // MPEG2Error.h
  25512. //
  25513. // Abstract:
  25514. //
  25515. // Interface specific HResult error codes for MPEG-2 tables.
  25516. //
  25517. /////////////////////////////////////////////////////////////////////////////
  25518. // Interface specific SUCCESS and ERROR macros
  25519. const
  25520. // MPEG-2 base HResult code (must be at least 0x200)
  25521. MPEG2_BASE = Cardinal($200);
  25522. {$EXTERNALSYM MPEG2_BASE}
  25523. // MPEG-2 Success HRESULTs
  25524. MPEG2_S_MORE_DATA_AVAILABLE = HResult((SEVERITY_SUCCESS shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 0));
  25525. {$EXTERNALSYM MPEG2_S_MORE_DATA_AVAILABLE}
  25526. MPEG2_S_NO_MORE_DATA_AVAILABLE = HResult((SEVERITY_SUCCESS shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 1));
  25527. {$EXTERNALSYM MPEG2_S_NO_MORE_DATA_AVAILABLE}
  25528. MPEG2_S_SG_INFO_FOUND = HResult((SEVERITY_SUCCESS shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 2));
  25529. {$EXTERNALSYM MPEG2_S_SG_INFO_FOUND}
  25530. MPEG2_S_SG_INFO_NOT_FOUND = HResult((SEVERITY_SUCCESS shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 3));
  25531. {$EXTERNALSYM MPEG2_S_SG_INFO_NOT_FOUND}
  25532. MPEG2_S_MPE_INFO_FOUND = HResult((SEVERITY_SUCCESS shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 4));
  25533. {$EXTERNALSYM MPEG2_S_MPE_INFO_FOUND}
  25534. MPEG2_S_MPE_INFO_NOT_FOUND = HResult((SEVERITY_SUCCESS shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 5));
  25535. {$EXTERNALSYM MPEG2_S_MPE_INFO_NOT_FOUND}
  25536. MPEG2_S_NEW_MODULE_VERSION = HResult((SEVERITY_SUCCESS shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 6));
  25537. {$EXTERNALSYM MPEG2_S_NEW_MODULE_VERSION}
  25538. // MPEG-2 Error HRESULTs
  25539. MPEG2_E_UNINITIALIZED = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 0));
  25540. {$EXTERNALSYM MPEG2_E_UNINITIALIZED}
  25541. MPEG2_E_ALREADY_INITIALIZED = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 1));
  25542. {$EXTERNALSYM MPEG2_E_ALREADY_INITIALIZED}
  25543. MPEG2_E_OUT_OF_BOUNDS = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 2));
  25544. {$EXTERNALSYM MPEG2_E_OUT_OF_BOUNDS}
  25545. MPEG2_E_MALFORMED_TABLE = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 3));
  25546. {$EXTERNALSYM MPEG2_E_MALFORMED_TABLE}
  25547. MPEG2_E_UNDEFINED = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 4));
  25548. {$EXTERNALSYM MPEG2_E_UNDEFINED}
  25549. MPEG2_E_NOT_PRESENT = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 5));
  25550. {$EXTERNALSYM MPEG2_E_NOT_PRESENT}
  25551. MPEG2_E_SECTION_NOT_FOUND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 6));
  25552. {$EXTERNALSYM MPEG2_E_SECTION_NOT_FOUND}
  25553. MPEG2_E_TX_STREAM_UNAVAILABLE = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 7));
  25554. {$EXTERNALSYM MPEG2_E_TX_STREAM_UNAVAILABLE}
  25555. MPEG2_E_SERVICE_ID_NOT_FOUND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 8));
  25556. {$EXTERNALSYM MPEG2_E_SERVICE_ID_NOT_FOUND}
  25557. MPEG2_E_SERVICE_PMT_NOT_FOUND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 9));
  25558. {$EXTERNALSYM MPEG2_E_SERVICE_PMT_NOT_FOUND}
  25559. MPEG2_E_DSI_NOT_FOUND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 10));
  25560. {$EXTERNALSYM MPEG2_E_DSI_NOT_FOUND}
  25561. MPEG2_E_SERVER_UNAVAILABLE = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 11));
  25562. {$EXTERNALSYM MPEG2_E_SERVER_UNAVAILABLE}
  25563. MPEG2_E_INVALID_CAROUSEL_ID = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 12));
  25564. {$EXTERNALSYM MPEG2_E_INVALID_CAROUSEL_ID}
  25565. MPEG2_E_MALFORMED_DSMCC_MESSAGE = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 13));
  25566. {$EXTERNALSYM MPEG2_E_MALFORMED_DSMCC_MESSAGE}
  25567. MPEG2_E_INVALID_SG_OBJECT_KIND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 14));
  25568. {$EXTERNALSYM MPEG2_E_INVALID_SG_OBJECT_KIND}
  25569. MPEG2_E_OBJECT_NOT_FOUND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 15));
  25570. {$EXTERNALSYM MPEG2_E_OBJECT_NOT_FOUND}
  25571. MPEG2_E_OBJECT_KIND_NOT_A_DIRECTORY = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 16));
  25572. {$EXTERNALSYM MPEG2_E_OBJECT_KIND_NOT_A_DIRECTORY}
  25573. MPEG2_E_OBJECT_KIND_NOT_A_FILE = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 17));
  25574. {$EXTERNALSYM MPEG2_E_OBJECT_KIND_NOT_A_FILE}
  25575. MPEG2_E_FILE_OFFSET_TOO_BIG = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 18));
  25576. {$EXTERNALSYM MPEG2_E_FILE_OFFSET_TOO_BIG}
  25577. MPEG2_E_STREAM_STOPPED = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 19));
  25578. {$EXTERNALSYM MPEG2_E_STREAM_STOPPED}
  25579. MPEG2_E_REGISTRY_ACCESS_FAILED = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 20));
  25580. {$EXTERNALSYM MPEG2_E_REGISTRY_ACCESS_FAILED}
  25581. MPEG2_E_INVALID_UDP_PORT = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 21));
  25582. {$EXTERNALSYM MPEG2_E_INVALID_UDP_PORT}
  25583. MPEG2_E_DATA_SOURCE_FAILED = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 22));
  25584. {$EXTERNALSYM MPEG2_E_DATA_SOURCE_FAILED}
  25585. MPEG2_E_DII_NOT_FOUND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 23));
  25586. {$EXTERNALSYM MPEG2_E_DII_NOT_FOUND}
  25587. MPEG2_E_DSHOW_PIN_NOT_FOUND = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 24));
  25588. {$EXTERNALSYM MPEG2_E_DSHOW_PIN_NOT_FOUND}
  25589. MPEG2_E_BUFFER_TOO_SMALL = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 25));
  25590. {$EXTERNALSYM MPEG2_E_BUFFER_TOO_SMALL}
  25591. MPEG2_E_MISSING_SECTIONS = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 26));
  25592. {$EXTERNALSYM MPEG2_E_MISSING_SECTIONS}
  25593. MPEG2_E_TOO_MANY_SECTIONS = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 27));
  25594. {$EXTERNALSYM MPEG2_E_TOO_MANY_SECTIONS}
  25595. MPEG2_E_NEXT_TABLE_OPS_NOT_AVAILABLE = HResult((SEVERITY_ERROR shl 31) or (FACILITY_ITF shl 16) or (MPEG2_BASE + 28));
  25596. {$EXTERNALSYM MPEG2_E_NEXT_TABLE_OPS_NOT_AVAILABLE}
  25597. ////////////////////////////////////////////////////////////////////////////////
  25598. // Copyright (C) Microsoft Corporation, 1998 - 1999
  25599. //
  25600. // Module Name:
  25601. // EDevCtrl.h
  25602. //
  25603. // Abstract:
  25604. // This header contain structures and peroperty sets for
  25605. // interfacing to an external device, like a DV.
  25606. // The code is modeled after DirectShow's Vcrctrl Sample
  25607. // (VCR Control Filter). It contain IAMExtDevice,
  25608. // IAMExtTransport, and IAMTimecodeReader interfaces, and
  25609. // a new interface IAMAdvancedAVControl() is added
  25610. // for additional advanced device controls.
  25611. //
  25612. // Note: (From DShow DDK)
  25613. // The VCR control sample filter, Vcrctrl, is a simple
  25614. // implementation of the external device control interfaces
  25615. // that DirectShow provides. Vcrctrl provides basic transport
  25616. // control and SMPTE timecode-reading capabilities for certain
  25617. // Betacam and SVHS videocassette recorders with RS-422 or RS-232
  25618. // serial interfaces (see source code for specific machine types
  25619. // supported).
  25620. //
  25621. // Note: some methods in IAM* interfaces may not be
  25622. // used and will return not implemented.
  25623. //
  25624. // Created:
  25625. // September 23, 1998
  25626. // Yee J. Wu
  25627. //
  25628. // Revision: 0.6
  25629. //
  25630. ////////////////////////////////////////////////////////////////////////////////
  25631. type
  25632. // Device Capabilities
  25633. tagDEVCAPS = record
  25634. CanRecord : LongInt;
  25635. CanRecordStrobe : LongInt;
  25636. HasAudio : LongInt;
  25637. HasVideo : LongInt;
  25638. UsesFiles : LongInt;
  25639. CanSave : LongInt;
  25640. DeviceType : LongInt;
  25641. TCRead : LongInt;
  25642. TCWrite : LongInt;
  25643. CTLRead : LongInt;
  25644. IndexRead : LongInt;
  25645. Preroll : LongInt;
  25646. Postroll : LongInt;
  25647. SyncAcc : LongInt;
  25648. NormRate : LongInt;
  25649. CanPreview : LongInt;
  25650. CanMonitorSrc : LongInt;
  25651. CanTest : LongInt;
  25652. VideoIn : LongInt;
  25653. AudioIn : LongInt;
  25654. Calibrate : LongInt;
  25655. SeekType : LongInt;
  25656. SimulatedHardware : LongInt; // private
  25657. end;
  25658. {$EXTERNALSYM tagDEVCAPS}
  25659. DEVCAPS = tagDEVCAPS;
  25660. {$EXTERNALSYM DEVCAPS}
  25661. PDEVCAPS = ^DEVCAPS;
  25662. {$EXTERNALSYM PDEVCAPS}
  25663. TDevCaps = tagDEVCAPS;
  25664. // transport status
  25665. tagTRANSPORTSTATUS = record
  25666. Mode : LongInt;
  25667. LastError : LongInt;
  25668. RecordInhibit : LongInt;
  25669. ServoLock : LongInt;
  25670. MediaPresent : LongInt;
  25671. MediaLength : LongInt;
  25672. MediaSize : LongInt;
  25673. MediaTrackCount : LongInt;
  25674. MediaTrackLength : LongInt;
  25675. MediaTrackSide : LongInt;
  25676. MediaType : LongInt;
  25677. LinkMode : LongInt;
  25678. NotifyOn : LongInt;
  25679. end;
  25680. {$EXTERNALSYM tagTRANSPORTSTATUS}
  25681. TRANSPORTSTATUS = tagTRANSPORTSTATUS;
  25682. {$EXTERNALSYM TRANSPORTSTATUS}
  25683. PTRANSPORTSTATUS = ^TRANSPORTSTATUS;
  25684. {$EXTERNALSYM PTRANSPORTSTATUS}
  25685. TTransportStatus = tagTRANSPORTSTATUS;
  25686. // transport basic parameters
  25687. tagTRANSPORTBASICPARMS = record
  25688. TimeFormat : LongInt;
  25689. TimeReference : LongInt;
  25690. Superimpose : LongInt;
  25691. EndStopAction : LongInt;
  25692. RecordFormat : LongInt;
  25693. StepFrames : LongInt;
  25694. SetpField : LongInt;
  25695. Preroll : LongInt;
  25696. RecPreroll : LongInt;
  25697. Postroll : LongInt;
  25698. EditDelay : LongInt;
  25699. PlayTCDelay : LongInt;
  25700. RecTCDelay : LongInt;
  25701. EditField : LongInt;
  25702. FrameServo : LongInt;
  25703. ColorFrameServo : LongInt;
  25704. ServoRef : LongInt;
  25705. WarnGenlock : LongInt;
  25706. SetTracking : LongInt;
  25707. VolumeName: array[0..39] of Char;
  25708. Ballistic: array[0..19] of LongInt;
  25709. Speed : LongInt;
  25710. CounterFormat : LongInt;
  25711. TunerChannel : LongInt;
  25712. TunerNumber : LongInt;
  25713. TimerEvent : LongInt;
  25714. TimerStartDay : LongInt;
  25715. TimerStartTime : LongInt;
  25716. TimerStopDay : LongInt;
  25717. TimerStopTime : LongInt;
  25718. end;
  25719. {$EXTERNALSYM tagTRANSPORTBASICPARMS}
  25720. TRANSPORTBASICPARMS = tagTRANSPORTBASICPARMS;
  25721. {$EXTERNALSYM TRANSPORTBASICPARMS}
  25722. PTRANSPORTBASICPARMS = ^TRANSPORTBASICPARMS;
  25723. {$EXTERNALSYM PTRANSPORTBASICPARMS}
  25724. TTransportBasicParms = tagTRANSPORTBASICPARMS;
  25725. // transport video parameters
  25726. tagTRANSPORTVIDEOPARMS = record
  25727. OutputMode : LongInt;
  25728. Input : LongInt;
  25729. end;
  25730. {$EXTERNALSYM tagTRANSPORTVIDEOPARMS}
  25731. TRANSPORTVIDEOPARMS = tagTRANSPORTVIDEOPARMS;
  25732. {$EXTERNALSYM TRANSPORTVIDEOPARMS}
  25733. PTRANSPORTVIDEOPARMS = ^TRANSPORTVIDEOPARMS;
  25734. {$EXTERNALSYM PTRANSPORTVIDEOPARMS}
  25735. TTransportVideoParms = tagTRANSPORTVIDEOPARMS;
  25736. // transport audio parameters
  25737. tagTRANSPORTAUDIOPARMS = record
  25738. EnableOutput : LongInt;
  25739. EnableRecord : LongInt;
  25740. EnableSelsync : LongInt;
  25741. Input : LongInt;
  25742. MonitorSource : LongInt;
  25743. end;
  25744. {$EXTERNALSYM tagTRANSPORTAUDIOPARMS}
  25745. TRANSPORTAUDIOPARMS = tagTRANSPORTAUDIOPARMS;
  25746. {$EXTERNALSYM TRANSPORTAUDIOPARMS}
  25747. PTRANSPORTAUDIOPARMS = ^TRANSPORTAUDIOPARMS;
  25748. {$EXTERNALSYM PTRANSPORTAUDIOPARMS}
  25749. TTransportAudioParms = tagTRANSPORTAUDIOPARMS;
  25750. // low level machine status structure filled in after
  25751. // REQUEST_STATUS command from above. This structure would
  25752. // grow in a full implementation
  25753. tagVCRSTATUS = record
  25754. bCassetteOut : BOOL; // OATRUE means no cassette
  25755. bLocal : BOOL; // OATRUE means front panel switch in local
  25756. end;
  25757. {$NODEFINE tagVCRSTATUS}
  25758. VCRSTATUS = tagVCRSTATUS;
  25759. {$NODEFINE VCRSTATUS}
  25760. PVCRSTATUS = ^VCRSTATUS;
  25761. {$NODEFINE PVCRSTATUS}
  25762. TVCRStatus = tagVCRSTATUS;
  25763. {$NODEFINE TVCRStatus}
  25764. //---------------------------------------------------------
  25765. // STATIC_PROPSETID_VIDCAP_EXT_DEVICE
  25766. //---------------------------------------------------------
  25767. // This guid and interface is defined in strmif.h
  25768. const
  25769. PROPSETID_EXT_DEVICE : TGUID = '{B5730A90-1A2C-11cf-8C23-00AA006B6814}';
  25770. {$EXTERNALSYM PROPSETID_EXT_DEVICE}
  25771. type
  25772. // KS properties and structure for this interface
  25773. KSPROPERTY_EXTDEVICE = (
  25774. KSPROPERTY_EXTDEVICE_ID, // ID (such as Symbolic Lin) that can uniquely idenfy this device
  25775. KSPROPERTY_EXTDEVICE_VERSION, // Device model number and version (such AV/C VCR Subunit Spec. 2.01)
  25776. KSPROPERTY_EXTDEVICE_POWER_STATE, // Return current device power state.
  25777. KSPROPERTY_EXTDEVICE_PORT, // Can use this to return DEV_PORT_1394
  25778. KSPROPERTY_EXTDEVICE_CAPABILITIES // Device specific capabilities
  25779. );
  25780. {$EXTERNALSYM KSPROPERTY_EXTDEVICE}
  25781. TKSPropertyExtDevice = KSPROPERTY_EXTDEVICE;
  25782. PKSPropertyExtDeviceS = ^TKSPropertyExtDeviceS;
  25783. KSPROPERTY_EXTDEVICE_S = record
  25784. Property_ : KSPROPERTY;
  25785. // Client is responsible for allocating this.
  25786. case byte of
  25787. 0: (Capabilities: TDEVCAPS);
  25788. 1: (DevPort: ULONG);
  25789. 2: (PowerState: ULONG);
  25790. 3: (pawchString: array[0..MAX_PATH-1] of WideChar);
  25791. 4: (NodeUniqueID: array[0..1] of DWORD);
  25792. end;
  25793. {$EXTERNALSYM KSPROPERTY_EXTDEVICE_S}
  25794. PKSPROPERTY_EXTDEVICE_S = ^KSPROPERTY_EXTDEVICE_S;
  25795. {$EXTERNALSYM PKSPROPERTY_EXTDEVICE_S}
  25796. TKSPropertyExtDeviceS = KSPROPERTY_EXTDEVICE_S;
  25797. //---------------------------------------------------------
  25798. // STATIC_PROPSETID_VIDCAP_EXT_TRANSPORT
  25799. //---------------------------------------------------------
  25800. const
  25801. // This guid and interface is defined in strmif.h
  25802. PROPSETID_EXT_TRANSPORT : TGUID = '{A03CD5F0-3045-11cf-8C44-00AA006B6814}';
  25803. {$EXTERNALSYM PROPSETID_EXT_TRANSPORT}
  25804. type
  25805. // KS properties and structure for this interface
  25806. KSPROPERTY_EXTXPORT = (
  25807. KSPROPERTY_EXTXPORT_CAPABILITIES, // Transport specific capability
  25808. KSPROPERTY_EXTXPORT_INPUT_SIGNAL_MODE, // MPEG, D-VHS, Analog VHS etc.
  25809. KSPROPERTY_EXTXPORT_OUTPUT_SIGNAL_MODE, // MPEG, D-VHS, Analog VHS etc.
  25810. KSPROPERTY_EXTXPORT_LOAD_MEDIUM, // Eject, open tray, close tray
  25811. KSPROPERTY_EXTXPORT_MEDIUM_INFO, // cassettte_type and tape_grade_and_write_protect
  25812. KSPROPERTY_EXTXPORT_STATE, // Get/Set transport mode and state
  25813. KSPROPERTY_EXTXPORT_STATE_NOTIFY, // NOTIFY: Mode + State (Table 4-8)
  25814. KSPROPERTY_EXTXPORT_TIMECODE_SEARCH, // Request VCR subunit to search for a specific timecode on the medium
  25815. KSPROPERTY_EXTXPORT_ATN_SEARCH, // Request VCR subunit to search for a specific ATN on the medium
  25816. KSPROPERTY_EXTXPORT_RTC_SEARCH, // Request VCR subunit to search for a specific RelativeTimeCounter on the medium
  25817. // Implemented for testing purpose
  25818. // Will remove this later...
  25819. KSPROPERTY_RAW_AVC_CMD // Send/Rcv raw AVC commnad with a FCP packet.
  25820. );
  25821. {$EXTERNALSYM KSPROPERTY_EXTXPORT}
  25822. TKSPropertyExtXPort = KSPROPERTY_EXTXPORT;
  25823. PMediumInfo = ^TMediumInfo;
  25824. MEDIUM_INFO = record
  25825. MediaPresent : BOOL; // TRUE/FALSE
  25826. MediaType : ULONG; // DVCR standard, small, medium; VHS; VHS-C; unknown
  25827. RecordInhibit : BOOL; // TRUE/FALSE
  25828. end;
  25829. {$EXTERNALSYM MEDIUM_INFO}
  25830. PMEDIUM_INFO = ^MEDIUM_INFO;
  25831. {$EXTERNALSYM PMEDIUM_INFO}
  25832. TMediumInfo = MEDIUM_INFO;
  25833. PTransportState = ^TTransportState;
  25834. TRANSPORT_STATE = record
  25835. Mode : ULONG; // LOAD MEDIUM, RECORD, PLAY or WIND
  25836. State : ULONG; // Vary depend on mode (Table 4-8)
  25837. end;
  25838. {$EXTERNALSYM TRANSPORT_STATE}
  25839. PTRANSPORT_STATE = ^TRANSPORT_STATE;
  25840. {$EXTERNALSYM PTRANSPORT_STATE}
  25841. TTransportState = TRANSPORT_STATE;
  25842. PKSPropertyExtXPortS = ^TKSPropertyExtXPortS;
  25843. KSPROPERTY_EXTXPORT_S = record
  25844. Property_: KSPROPERTY;
  25845. case byte of
  25846. 0: (Capabilities: ULONG); // May need to expand on the existing structure
  25847. 1: (SignalMode: ULONG); // May need to expand on the existing structure
  25848. 2: (LoadMedium: ULONG); // MPEG, D-VHS, Analog VHS etc.
  25849. 3: (MediumInfo: TMediumInfo); // Eject, open tray, close tray
  25850. 4: (XPrtState: TTransportState);
  25851. 5: (Timecode: record
  25852. frame : BYTE;
  25853. second : BYTE;
  25854. minute : BYTE;
  25855. hour : BYTE;
  25856. end;
  25857. );
  25858. 6: (dwTimecode: DWORD); // hour:minute:second:frame
  25859. 7: (dwAbsTrackNumber: DWORD); // absolute track number
  25860. // Implemented for testing purpose
  25861. // Will remove this later or will keep this for
  25862. // packet specific command.
  25863. 8: (RawAVC: record
  25864. PayloadSize : ULONG;
  25865. Payload : array[0..511] of BYTE; // This is only for testing sending AVC command from User mode.
  25866. end;);
  25867. end;
  25868. {$EXTERNALSYM KSPROPERTY_EXTXPORT_S}
  25869. PKSPROPERTY_EXTXPORT_S = ^KSPROPERTY_EXTXPORT_S;
  25870. {$EXTERNALSYM PKSPROPERTY_EXTXPORT_S}
  25871. TKSPropertyExtXPortS = KSPROPERTY_EXTXPORT_S;
  25872. PKSPropertyExtxportNodeS = ^TKSPropertyExtxportNodeS;
  25873. KSPROPERTY_EXTXPORT_NODE_S = packed record
  25874. NodeProperty: KSP_NODE;
  25875. case byte of
  25876. 0: (Capabilities: ULONG);
  25877. 1: (SignalMode: ULONG);
  25878. 2: (LoadMedium: ULONG);
  25879. 3: (MediumInfo: MEDIUM_INFO);
  25880. 4: (XPrtState: TRANSPORT_STATE);
  25881. 5: (Timecode: record
  25882. frame: byte;
  25883. second: byte;
  25884. minute: byte;
  25885. hour: byte;
  25886. end);
  25887. 6: (dwTimecode: DWORD);
  25888. 7: (dwAbsTrackNumber: DWORD);
  25889. 8: (RawAVC: record
  25890. PayloadSize: ULONG;
  25891. Payload: array[0..511] of byte;
  25892. end);
  25893. end;
  25894. {$EXTERNALSYM KSPROPERTY_EXTXPORT_NODE_S}
  25895. PKSPROPERTY_EXTXPORT_NODE_S = KSPROPERTY_EXTXPORT_NODE_S;
  25896. {$EXTERNALSYM PKSPROPERTY_EXTXPORT_NODE_S}
  25897. TKSPropertyExtxportNodeS = KSPROPERTY_EXTXPORT_NODE_S;
  25898. //---------------------------------------------------------
  25899. // PROPSETID_TIMECODE
  25900. //---------------------------------------------------------
  25901. // This guid and interface is defined in strmif.h
  25902. const
  25903. PROPSETID_TIMECODE_READER : TGUID = '{9B496CE1-811B-11cf-8C77-00AA006B6814}';
  25904. {$EXTERNALSYM PROPSETID_TIMECODE_READER}
  25905. type
  25906. // KS properties and structure for this interface
  25907. KSPROPERTY_TIMECODE = (
  25908. KSPROPERTY_TIMECODE_READER, // Timecode for the current medium position
  25909. KSPROPERTY_ATN_READER, // Absolute track number the current medium position
  25910. KSPROPERTY_RTC_READER // Relative time counter for the current medium position
  25911. );
  25912. {$EXTERNALSYM KSPROPERTY_TIMECODE}
  25913. TKSPropertyTimeCode = KSPROPERTY_TIMECODE;
  25914. KSPROPERTY_TIMECODE_S = record
  25915. Property_: KSPROPERTY;
  25916. TimecodeSamp: TTimeCodeSample;
  25917. end;
  25918. {$EXTERNALSYM KSPROPERTY_TIMECODE_S}
  25919. PKSPROPERTY_TIMECODE_S = ^KSPROPERTY_TIMECODE_S;
  25920. {$EXTERNALSYM PKSPROPERTY_TIMECODE_S}
  25921. TKSPropertyTimeCodeS = KSPROPERTY_TIMECODE_S;
  25922. PKSPropertyTimecodeNodeS = ^TKSPropertyTimecodeNodeS;
  25923. KSPROPERTY_TIMECODE_NODE_S = packed record
  25924. NodeProperty: KSP_NODE;
  25925. TimecodeSamp: TIMECODE_SAMPLE;
  25926. end;
  25927. {$EXTERNALSYM KSPROPERTY_TIMECODE_NODE_S}
  25928. PKSPROPERTY_TIMECODE_NODE_S = ^KSPROPERTY_TIMECODE_NODE_S;
  25929. {$EXTERNALSYM PKSPROPERTY_TIMECODE_NODE_S}
  25930. TKSPropertyTimecodeNodeS = PKSPROPERTY_TIMECODE_NODE_S;
  25931. //---------------------------------------------------------
  25932. // External Device Command event notification
  25933. //---------------------------------------------------------
  25934. const
  25935. KSEVENTSETID_EXTDEV_Command : TGUID = '{109c7988-b3cb-11d2-b48e-006097b3391b}';
  25936. {$EXTERNALSYM KSEVENTSETID_EXTDEV_Command}
  25937. type
  25938. KSEVENT_DEVCMD = (
  25939. KSEVENT_EXTDEV_COMMAND_NOTIFY_INTERIM_READY,
  25940. KSEVENT_EXTDEV_COMMAND_CONTROL_INTERIM_READY,
  25941. KSEVENT_EXTDEV_COMMAND_BUSRESET,
  25942. KSEVENT_EXTDEV_TIMECODE_UPDATE,
  25943. KSEVENT_EXTDEV_OPERATION_MODE_UPDATE, // Notify mode of operation change (VCR,OFF,Camera)
  25944. KSEVENT_EXTDEV_TRANSPORT_STATE_UPDATE, // XPrt state change
  25945. KSEVENT_EXTDEV_NOTIFY_REMOVAL, // Notify device removal
  25946. KSEVENT_EXTDEV_NOTIFY_MEDIUM_CHANGE // Notify medium (tape) is removed or added
  25947. );
  25948. {$EXTERNALSYM KSEVENT_DEVCMD}
  25949. TKSEventDevCmd = KSEVENT_DEVCMD;
  25950. ////////////////////////////////////////////////////////////////////////////////
  25951. // Copyright (c) 2002 Microsoft Corporation
  25952. //
  25953. // Module Name:
  25954. //
  25955. // sbe.idl
  25956. //
  25957. // Abstract:
  25958. //
  25959. // This module the StreamBuffer interface definitions & CLSIDs, public
  25960. //
  25961. ////////////////////////////////////////////////////////////////////////////////
  25962. const
  25963. IID_IStreamBufferSink : TGUID = '{afd1f242-7efd-45ee-ba4e-407a25c9a77a}'; // get recording objects
  25964. {$EXTERNALSYM IID_IStreamBufferSink}
  25965. IID_IStreamBufferSource : TGUID = '{1c5bd776-6ced-4f44-8164-5eab0e98db12}'; // associates with IStreamBufferSink
  25966. {$EXTERNALSYM IID_IStreamBufferSource}
  25967. IID_IStreamBufferRecordControl : TGUID = '{ba9b6c99-f3c7-4ff2-92db-cfdd4851bf31}'; // recording control
  25968. {$EXTERNALSYM IID_IStreamBufferRecordControl}
  25969. IID_IStreamBufferRecComp : TGUID = '{9E259A9B-8815-42ae-B09F-221970B154FD}';
  25970. {$EXTERNALSYM IID_IStreamBufferRecComp}
  25971. IID_IStreamBufferRecordingAttribute : TGUID = '{16CA4E03-FE69-4705-BD41-5B7DFC0C95F3}'; // StreamBuffer attribute creation
  25972. {$EXTERNALSYM IID_IStreamBufferRecordingAttribute}
  25973. IID_IEnumStreamBufferRecordingAttrib : TGUID = '{C18A9162-1E82-4142-8C73-5690FA62FE33}'; // StreamBuffer attribute enumeration
  25974. {$EXTERNALSYM IID_IEnumStreamBufferRecordingAttrib}
  25975. IID_IStreamBufferConfigure : TGUID = '{ce14dfae-4098-4af7-bbf7-d6511f835414}'; // configuration interface
  25976. {$EXTERNALSYM IID_IStreamBufferConfigure}
  25977. IID_IStreamBufferMediaSeeking : TGUID = '{f61f5c26-863d-4afa-b0ba-2f81dc978596}'; // IMediaSeeking but with different GUID
  25978. {$EXTERNALSYM IID_IStreamBufferMediaSeeking}
  25979. IID_IStreamBufferInitialize : TGUID = '{9ce50f2d-6ba7-40fb-a034-50b1a674ec78}'; // allows 3rd party app to set HKEY
  25980. {$EXTERNALSYM IID_IStreamBufferInitialize}
  25981. // ??? IID_IStreamBufferPolicy : TGUID = '{}'; // StreamBuffer policies
  25982. type
  25983. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferInitialize> _di_IStreamBufferInitialize;'}
  25984. {$EXTERNALSYM IStreamBufferInitialize}
  25985. IStreamBufferInitialize = interface(IUnknown)
  25986. ['{9ce50f2d-6ba7-40fb-a034-50b1a674ec78}']
  25987. (*** IStreamBufferInitialize methods ***)
  25988. // Implemented on StreamBufferStreamSink and StreamBufferSource filters.
  25989. // Gives a hosting application the ability to specify HKEY root in
  25990. // registry. This method must called **early**: after the filter is
  25991. // instantiated, but before StreamBufferSource is locked (explicitly or
  25992. // implicitely) if calling the method on StreamBufferSource, or before
  25993. // a source is set (via IStreamBufferSource or IFileSourceFilter) if
  25994. // calling the method on StreamBufferStreamSource. If a call is made
  25995. // after either filter has been initialized internally, the call will
  25996. // fail with E_UNEXPECTED. The hosting application is responsible for
  25997. // ensuring that the HKEY passed in is writable & readable per the
  25998. // logged-on user privileges. The HKEY is duplicated internally,
  25999. // so the caller can close it after making this call.
  26000. function SetHKEY(hkeyRoot: HKEY): HResult; stdcall;
  26001. // Implemented on StreamBufferStreamSink and StreamBufferSource filters.
  26002. // Provides a way for the hosting application to specify security-level
  26003. // sharing between capture and render processes and contexts. By
  26004. // default security attributes are inherited from the hosting process,
  26005. // unless the application overrides the defaults and provides them via
  26006. // this method.
  26007. function SetSIDs(cSIDs: DWORD; var ppSID: PSID): HResult; stdcall;
  26008. end;
  26009. // ============================================================================
  26010. // ============================================================================
  26011. // IStreamBufferSink
  26012. //
  26013. // Stream Source interface;
  26014. // implemented on the StreamBufferSink filter;
  26015. // Only way to get a recorder object's IUnknown (object will subsequently
  26016. // be associated with this Sink)
  26017. const
  26018. RECORDING_TYPE_CONTENT = 0; // no post-recording or overlapped
  26019. {$EXTERNALSYM RECORDING_TYPE_CONTENT}
  26020. RECORDING_TYPE_REFERENCE = 1; // allows post-recording & overlapped
  26021. {$EXTERNALSYM RECORDING_TYPE_REFERENCE}
  26022. type
  26023. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferSink> _di_IStreamBufferSink;'}
  26024. {$EXTERNALSYM IStreamBufferSink}
  26025. IStreamBufferSink = interface(IUnknown)
  26026. ['{afd1f242-7efd-45ee-ba4e-407a25c9a77a}']
  26027. (*** IStreamBufferSink methods ***)
  26028. // 1. Locks the profile;
  26029. // 2. No *new* input pin connections will be accepted;
  26030. // 3. Existing pins that are, or have ever been, connected can be
  26031. // reconnected if the media type is exactly the same as the first
  26032. // successful connection;
  26033. // 4. Can be called multiple times safely with NULL parameter, but only
  26034. // once with non-NULL parameter; returns E_UNEXPECTED if called more
  26035. // than once with non-NULL param, or after the hosting filter has run;
  26036. // 5. Must be called before the filter that implements this interface is
  26037. // ever run; when it is run, it locks implicitely and this method has
  26038. // no effect if called with NULL parameters, or fails if called with
  26039. // non-NULL parameter for the reasons listed above;
  26040. // 6. Errors with VFW_E_UNSUPPORTED_STREAM if there are no streams in the
  26041. // profile;
  26042. // Parameter Detail
  26043. // ----------------
  26044. //
  26045. // pszStreamBufferFilename
  26046. //
  26047. // Is a NULL-terminated filename string. If the content written by
  26048. // this sink is to be shared cross-process, this parameter specifies a
  26049. // filename that will be opened by any reader(s) to read & render the
  26050. // content sent into the sink.
  26051. //
  26052. // Can be NULL (not specified)
  26053. //
  26054. // Must be a full-path filename; if no path is specified, the file is
  26055. // created in a "current" directory
  26056. //
  26057. // If the file already exists, the call fails
  26058. //
  26059. // Is opened with DELETE_ON_CLOSE flag, so is automatically deleted
  26060. // when the sink is unlocked, or when the hosting process terminates
  26061. function LockProfile(pszStreamBufferFilename: PWideChar): HResult; stdcall;
  26062. // 1. Returns a *new* recorder object's IUnknown;
  26063. // 2. Caller can call QueryInterface() on the returned pointer to get
  26064. // interface pointers to configure & control the recording;
  26065. // 3. Returned IUnknown pointer is ref'd & must be Release()'d by the
  26066. // caller
  26067. // 4. IStreamBufferSink interface must have been locked (explicitely or
  26068. // implicitely) prior to call
  26069. //
  26070. // To create an ordinary recording, specify RECORDING_TYPE_CONTENT for the
  26071. // dwRecordType parammeter. This will record the content directly into
  26072. // the specified file. These recording types only accept start and stop
  26073. // times that occur in the future.
  26074. //
  26075. // A recording of type RECORDING_TYPE_REFERENCE generates a small file
  26076. // that references content saved in temporary storage. Recordings of this
  26077. // type can have start and stop times that occurs in the past, and can
  26078. // overlap other same-type recordings.
  26079. //
  26080. // Reference recording *content* will be saved in the same subdirectory as
  26081. // the specified reference file, but with hidden and system attributes.
  26082. // The naming convention of the files will append a _1.sbe, _2.sbe, etc...
  26083. // to the filename (minus extension) specified in the call e.g. a
  26084. // "seinfeld01.sbe" reference file will have saved content in hidden
  26085. // and system files "seinfeld01_1.sbe", "seinfeld01_2.sbe", etc...
  26086. function CreateRecorder(pszFilename: PWideChar; dwRecordType: DWORD; // RECORDING_TYPE_CONTENT or RECORDING_TYPE_REFERENCE
  26087. out pRecordingIUnknown: IUnknown): HResult; stdcall;
  26088. // 1. Returns S_OK if the profile is locked and S_FALSE if it is not.
  26089. // 2. Returns E_FAIL on error.
  26090. function IsProfileLocked: HResult; stdcall;
  26091. end;
  26092. // ============================================================================
  26093. // ============================================================================
  26094. // IStreamBufferSource ()
  26095. //
  26096. // Stream Source reader interface;
  26097. // Implemented on the StreamBufferSource filter;
  26098. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferSource> _di_IStreamBufferSource;'}
  26099. {$EXTERNALSYM IStreamBufferSource}
  26100. IStreamBufferSource = interface(IUnknown)
  26101. ['{1c5bd776-6ced-4f44-8164-5eab0e98db12}']
  26102. (*** IStreamBufferSource methods ***)
  26103. //------------------------------------------------------------------------
  26104. // SetStreamSink ()
  26105. //
  26106. // 1. Sets the StreamBuffer Sink that streams from this Source;
  26107. // 2. IStreamBufferSink object must be in the same process as this object;
  26108. // 3. Interface is AddRef()'d if the call succeeds;
  26109. //
  26110. // Parameter Detail
  26111. // ----------------
  26112. //
  26113. // pIStreamBufferSink
  26114. // Sink that will stream to this Source
  26115. function SetStreamSink(pIStreamBufferSink: IStreamBufferSink): HResult; stdcall;
  26116. end;
  26117. // ============================================================================
  26118. // ============================================================================
  26119. // IStreamBufferRecordControl
  26120. //
  26121. // obtained by QIing IStreamBufferSink::CreateRecorder()-returned IUnknown *
  26122. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferRecordControl> _di_IStreamBufferRecordControl;'}
  26123. {$EXTERNALSYM IStreamBufferRecordControl}
  26124. IStreamBufferRecordControl = interface(IUnknown)
  26125. ['{ba9b6c99-f3c7-4ff2-92db-cfdd4851bf31}']
  26126. (*** IStreamBufferRecordControl methods ***)
  26127. // 1. Starts a recording;
  26128. // 2. Will save to the filename that is specified when this interface's
  26129. // IUnknown is requested (IStreamBufferSink::CreateRecorder());
  26130. //
  26131. // Parameter Detail
  26132. // ----------------
  26133. //
  26134. // rtStart
  26135. //
  26136. // Start time relative to "now;
  26137. //
  26138. // If the recording type is a content recording, can only refer to
  26139. // seconds in the future; allowed seconds are [0,5]
  26140. //
  26141. // If the recording type is a reference recording, can refer to any
  26142. // time that still has valid content i.e. content that has not yet
  26143. // become stale
  26144. //
  26145. // If the recording is a reference recording and (* prtStart) is
  26146. // earlier than the earliest still-valid content, the call will reset
  26147. // it to the earliest content; the value when the recording was
  26148. // actually started will be [out]
  26149. function Start(prtStart: PReferenceTime): HResult; stdcall;
  26150. // 1. Stops a recording;
  26151. // 2. Closes out the file;
  26152. //
  26153. // Parameter Detail
  26154. // ----------------
  26155. //
  26156. // rtStart
  26157. //
  26158. // Stop time relative to "now;
  26159. //
  26160. // If the recording type is a content recording, can only refer to
  26161. // seconds in the future; allowed seconds are [0,5]
  26162. //
  26163. // If the recording type is a reference recording, can refer to any
  26164. // time that still has valid content i.e. content that has not yet
  26165. // become stale; stop time cannot be <= start time
  26166. function Stop(rtStop: TReferenceTime): HResult; stdcall;
  26167. // 1. Retrieves the status of the recording
  26168. //
  26169. // Parameter Detail
  26170. // ----------------
  26171. //
  26172. // phResult
  26173. //
  26174. // The (current) status of writing or closing the recording file;
  26175. //
  26176. // Can be NULL;
  26177. //
  26178. // pbStarted
  26179. //
  26180. // If supplied, set to a non-zero value if the recording has been
  26181. // started
  26182. //
  26183. // Can be NULL;
  26184. //
  26185. // pbStopped
  26186. //
  26187. // If supplied, set to a non-zero value if the recording has been
  26188. // stopped;
  26189. //
  26190. // Can be NULL;
  26191. //
  26192. // NOTE: If the recording has never been started, it will not be flagged
  26193. // as stopped.
  26194. function GetRecordingStatus(phResult: PHRESULT; pbStarted, pbStopped: PBOOL): HResult; stdcall;
  26195. end;
  26196. // ============================================================================
  26197. // ============================================================================
  26198. // IStreamBufferRecComp
  26199. //
  26200. // CoCreateInstance CLSID_StreamBufferComposeRecording and QueryInterface for
  26201. // this interface; this interface allows the creation of a single target
  26202. // content recording which consists of a number of concatenated recordings
  26203. // (reference or content; can mix & match if desired)
  26204. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferRecComp> _di_IStreamBufferRecComp;'}
  26205. {$EXTERNALSYM IStreamBufferRecComp}
  26206. IStreamBufferRecComp = interface(IUnknown)
  26207. ['{9E259A9B-8815-42ae-B09F-221970B154FD}']
  26208. (*** IStreamBufferRecComp methods ***)
  26209. // 1. Initializes for a target recording
  26210. //
  26211. // Parameter Detail
  26212. // ----------------
  26213. //
  26214. // pszTargetFilename
  26215. //
  26216. // Sets the target filename
  26217. //
  26218. // Fails if the file already exists
  26219. //
  26220. // pszSBRecProfileRef
  26221. //
  26222. // Must be a completed, SBE-generated recording
  26223. //
  26224. // This recording's profile will be used to define the target profile
  26225. //
  26226. // Appended files must have exactly the same profile
  26227. function Initialize(pszTargetFilename, pszSBRecProfileRef: PWideChar): HResult; stdcall;
  26228. // 1. appends an entire recording
  26229. // 2. fails if the recording is live
  26230. function Append (pszSBRecording: PwideChar): HResult; stdcall;
  26231. // 1. appends the specified portion of the recording; the parameters must
  26232. // be accurate; the call will not readjust them within the boundaries
  26233. // 2. the time spread must be at least 2 seconds
  26234. // 3. fails if the recording is live
  26235. function AppendEx(pszSBRecording: PWideChar; rtStart, rtStop: TReferenceTime): HResult; stdcall;
  26236. // 1. returns the current length of the recording; updates as recordings
  26237. // are appended;
  26238. // 2. can be called repeatedly during a Append() call on another
  26239. // thread;
  26240. function GetCurrentLength(out pcSeconds: DWORD): HResult; stdcall;
  26241. // 1. explicitely closes the recording
  26242. // 2. final release of interface closes the recording as well
  26243. function Close: HResult; stdcall;
  26244. // 1. cancels an in-progress appending operation; has no effect otherwise
  26245. function Cancel: HResult; stdcall;
  26246. end;
  26247. // ============================================================================
  26248. // ============================================================================
  26249. // IStreamBufferRecordingAttribute
  26250. //
  26251. // obtained by calling QueryInterface on a recorder
  26252. //
  26253. // well-known attributes:
  26254. //
  26255. // NAME DESCRIPTION
  26256. // ------------------- ----------------------------------------------------
  26257. //
  26258. // Title String containing the content title.
  26259. //
  26260. // Author String containing the name of the content author.
  26261. //
  26262. // Description String containing a description of the content.
  26263. //
  26264. // Rating String containing a content rating.
  26265. //
  26266. // Copyright String containing a content copyright message.
  26267. //
  26268. // Duration Quadruple word value containing the playing duration
  26269. // of the file, in 100-nanosecond units.
  26270. //
  26271. // Bitrate Double word value containing the bit rate.
  26272. //
  26273. // Seekable Boolean value; true denoting that the content is
  26274. // seekable.
  26275. //
  26276. // Stridable Boolean value, true denoting that the content is
  26277. // stridable (fast forward and rewind are enabled).
  26278. //
  26279. // Broadcast Boolean value; true denoting that the content is not
  26280. // copyright-protected, and can be broadcast.
  26281. //
  26282. // Use_DRM reserved
  26283. //
  26284. // DRM_Flags reserved
  26285. //
  26286. // DRM_Level reserved
  26287. //
  26288. // Is_Protected reserved
  26289. //
  26290. // Is_Trusted reserved
  26291. //
  26292. // Signature_Name reserved
  26293. //
  26294. // HasAudio Boolean, true denoting the content includes an
  26295. // audio stream.
  26296. //
  26297. // HasImage Boolean, true denoting the content includes a still
  26298. // image stream (such as JPEG images).
  26299. //
  26300. // HasScript Boolean, true denoting the content includes a script
  26301. // stream.
  26302. //
  26303. // HasVideo Boolean, true denoting the content includes a video
  26304. // stream.
  26305. //
  26306. // CurrentBitrate Double word containing the current total bitrate,
  26307. // usually used for MEB (multi-bit rate) streams.
  26308. //
  26309. // OptimalBitrate Double word containing the minimum total bitrate
  26310. // recommended to stream the content and get
  26311. // maximum quality.
  26312. //
  26313. // WM/AlbumTitle String containing the album title.
  26314. //
  26315. // WM/Track Double word containing the track number.
  26316. //
  26317. // WM/PromotionURL String with a URL to an HTML page that contains
  26318. // information about products and events (such as
  26319. // concerts) that are related to this music.
  26320. //
  26321. // WM/AlbumCoverURL String with a URL to an HTML page that contains an
  26322. // image of the album cover and information about
  26323. // the album.
  26324. //
  26325. // WM/Genre String with the genre of the music.
  26326. //
  26327. // WM/Year String with the year of publication of the music.
  26328. //
  26329. // WM/GenreID
  26330. //
  26331. // WM/MCDI
  26332. //
  26333. // BannerImageType One member of the WMT_ATTR_IMAGETYPE enumeration
  26334. // type.
  26335. //
  26336. // BannerImageData The actual image data: a bitmap, JPEG, or GIF image.
  26337. //
  26338. //
  26339. // BannerImageURL If the banner image is clicked on then this URL is
  26340. // activated.
  26341. //
  26342. // CopyrightURL An URL to a copyright page.
  26343. //
  26344. // NSC_Name String containing the multicast station contact
  26345. // name (read-only).
  26346. //
  26347. // NSC_Address String containing the multicast station contact
  26348. // address (read-only).
  26349. //
  26350. // NSC_Phone String containing the multicast station contact
  26351. // phone number (read-only).
  26352. //
  26353. // NSC_Email String containing the multicast station contact
  26354. // email address (read-only).
  26355. //
  26356. // NSC_Description String containing the multicast station contact
  26357. // description (read-only).
  26358. ////////////////////////////////////////////////////////////////
  26359. //
  26360. // List of pre-defined attributes
  26361. const
  26362. g_wszStreamBufferRecordingDuration = WideString('Duration');
  26363. {$EXTERNALSYM g_wszStreamBufferRecordingDuration}
  26364. g_wszStreamBufferRecordingBitrate = WideString('Bitrate');
  26365. {$EXTERNALSYM g_wszStreamBufferRecordingBitrate}
  26366. g_wszStreamBufferRecordingSeekable = WideString('Seekable');
  26367. {$EXTERNALSYM g_wszStreamBufferRecordingSeekable}
  26368. g_wszStreamBufferRecordingStridable = WideString('Stridable');
  26369. {$EXTERNALSYM g_wszStreamBufferRecordingStridable}
  26370. g_wszStreamBufferRecordingBroadcast = WideString('Broadcast');
  26371. {$EXTERNALSYM g_wszStreamBufferRecordingBroadcast}
  26372. g_wszStreamBufferRecordingProtected = WideString('Is_Protected');
  26373. {$EXTERNALSYM g_wszStreamBufferRecordingProtected}
  26374. g_wszStreamBufferRecordingTrusted = WideString('Is_Trusted');
  26375. {$EXTERNALSYM g_wszStreamBufferRecordingTrusted}
  26376. g_wszStreamBufferRecordingSignature_Name = WideString('Signature_Name');
  26377. {$EXTERNALSYM g_wszStreamBufferRecordingSignature_Name}
  26378. g_wszStreamBufferRecordingHasAudio = WideString('HasAudio');
  26379. {$EXTERNALSYM g_wszStreamBufferRecordingHasAudio}
  26380. g_wszStreamBufferRecordingHasImage = WideString('HasImage');
  26381. {$EXTERNALSYM g_wszStreamBufferRecordingHasImage}
  26382. g_wszStreamBufferRecordingHasScript = WideString('HasScript');
  26383. {$EXTERNALSYM g_wszStreamBufferRecordingHasScript}
  26384. g_wszStreamBufferRecordingHasVideo = WideString('HasVideo');
  26385. {$EXTERNALSYM g_wszStreamBufferRecordingHasVideo}
  26386. g_wszStreamBufferRecordingCurrentBitrate = WideString('CurrentBitrate');
  26387. {$EXTERNALSYM g_wszStreamBufferRecordingCurrentBitrate}
  26388. g_wszStreamBufferRecordingOptimalBitrate = WideString('OptimalBitrate');
  26389. {$EXTERNALSYM g_wszStreamBufferRecordingOptimalBitrate}
  26390. g_wszStreamBufferRecordingHasAttachedImages = WideString('HasAttachedImages');
  26391. {$EXTERNALSYM g_wszStreamBufferRecordingHasAttachedImages}
  26392. g_wszStreamBufferRecordingSkipBackward = WideString('Can_Skip_Backward');
  26393. {$EXTERNALSYM g_wszStreamBufferRecordingSkipBackward}
  26394. g_wszStreamBufferRecordingSkipForward = WideString('Can_Skip_Forward');
  26395. {$EXTERNALSYM g_wszStreamBufferRecordingSkipForward}
  26396. g_wszStreamBufferRecordingNumberOfFrames = WideString('NumberOfFrames');
  26397. {$EXTERNALSYM g_wszStreamBufferRecordingNumberOfFrames}
  26398. g_wszStreamBufferRecordingFileSize = WideString('FileSize');
  26399. {$EXTERNALSYM g_wszStreamBufferRecordingFileSize}
  26400. g_wszStreamBufferRecordingHasArbitraryDataStream = WideString('HasArbitraryDataStream');
  26401. {$EXTERNALSYM g_wszStreamBufferRecordingHasArbitraryDataStream}
  26402. g_wszStreamBufferRecordingHasFileTransferStream = WideString('HasFileTransferStream');
  26403. {$EXTERNALSYM g_wszStreamBufferRecordingHasFileTransferStream}
  26404. ////////////////////////////////////////////////////////////////
  26405. //
  26406. // The content description object supports 5 basic attributes.
  26407. g_wszStreamBufferRecordingTitle = WideString('Title');
  26408. {$EXTERNALSYM g_wszStreamBufferRecordingTitle}
  26409. g_wszStreamBufferRecordingAuthor = WideString('Author');
  26410. {$EXTERNALSYM g_wszStreamBufferRecordingAuthor}
  26411. g_wszStreamBufferRecordingDescription = WideString('Description');
  26412. {$EXTERNALSYM g_wszStreamBufferRecordingDescription}
  26413. g_wszStreamBufferRecordingRating = WideString('Rating');
  26414. {$EXTERNALSYM g_wszStreamBufferRecordingRating}
  26415. g_wszStreamBufferRecordingCopyright = WideString('Copyright');
  26416. {$EXTERNALSYM g_wszStreamBufferRecordingCopyright}
  26417. ////////////////////////////////////////////////////////////////
  26418. //
  26419. // These attributes are used to configure DRM using IWMDRMWriter::SetDRMAttribute.
  26420. g_wszStreamBufferRecordingUse_DRM = WideString('Use_DRM');
  26421. {$EXTERNALSYM g_wszStreamBufferRecordingUse_DRM}
  26422. g_wszStreamBufferRecordingDRM_Flags = WideString('DRM_Flags');
  26423. {$EXTERNALSYM g_wszStreamBufferRecordingDRM_Flags}
  26424. g_wszStreamBufferRecordingDRM_Level = WideString('DRM_Level');
  26425. {$EXTERNALSYM g_wszStreamBufferRecordingDRM_Level}
  26426. ////////////////////////////////////////////////////////////////
  26427. //
  26428. // These are the additional attributes defined in the WM attribute
  26429. // namespace that give information about the content.
  26430. g_wszStreamBufferRecordingAlbumTitle = WideString('WM/AlbumTitle');
  26431. {$EXTERNALSYM g_wszStreamBufferRecordingAlbumTitle}
  26432. g_wszStreamBufferRecordingTrack = WideString('WM/Track');
  26433. {$EXTERNALSYM g_wszStreamBufferRecordingTrack}
  26434. g_wszStreamBufferRecordingPromotionURL = WideString('WM/PromotionURL');
  26435. {$EXTERNALSYM g_wszStreamBufferRecordingPromotionURL}
  26436. g_wszStreamBufferRecordingAlbumCoverURL = WideString('WM/AlbumCoverURL');
  26437. {$EXTERNALSYM g_wszStreamBufferRecordingAlbumCoverURL}
  26438. g_wszStreamBufferRecordingGenre = WideString('WM/Genre');
  26439. {$EXTERNALSYM g_wszStreamBufferRecordingGenre}
  26440. g_wszStreamBufferRecordingYear = WideString('WM/Year');
  26441. {$EXTERNALSYM g_wszStreamBufferRecordingYear}
  26442. g_wszStreamBufferRecordingGenreID = WideString('WM/GenreID');
  26443. {$EXTERNALSYM g_wszStreamBufferRecordingGenreID}
  26444. g_wszStreamBufferRecordingMCDI = WideString('WM/MCDI');
  26445. {$EXTERNALSYM g_wszStreamBufferRecordingMCDI}
  26446. g_wszStreamBufferRecordingComposer = WideString('WM/Composer');
  26447. {$EXTERNALSYM g_wszStreamBufferRecordingComposer}
  26448. g_wszStreamBufferRecordingLyrics = WideString('WM/Lyrics');
  26449. {$EXTERNALSYM g_wszStreamBufferRecordingLyrics}
  26450. g_wszStreamBufferRecordingTrackNumber = WideString('WM/TrackNumber');
  26451. {$EXTERNALSYM g_wszStreamBufferRecordingTrackNumber}
  26452. g_wszStreamBufferRecordingToolName = WideString('WM/ToolName');
  26453. {$EXTERNALSYM g_wszStreamBufferRecordingToolName}
  26454. g_wszStreamBufferRecordingToolVersion = WideString('WM/ToolVersion');
  26455. {$EXTERNALSYM g_wszStreamBufferRecordingToolVersion}
  26456. g_wszStreamBufferRecordingIsVBR = WideString('IsVBR');
  26457. {$EXTERNALSYM g_wszStreamBufferRecordingIsVBR}
  26458. // WM/AlbumArtist is a potentially different value than Author
  26459. g_wszStreamBufferRecordingAlbumArtist = WideString('WM/AlbumArtist');
  26460. {$EXTERNALSYM g_wszStreamBufferRecordingAlbumArtist}
  26461. ////////////////////////////////////////////////////////////////
  26462. //
  26463. // These optional attributes may be used to give information
  26464. // about the branding of the content.
  26465. g_wszStreamBufferRecordingBannerImageType = WideString('BannerImageType');
  26466. {$EXTERNALSYM g_wszStreamBufferRecordingBannerImageType}
  26467. g_wszStreamBufferRecordingBannerImageData = WideString('BannerImageData');
  26468. {$EXTERNALSYM g_wszStreamBufferRecordingBannerImageData}
  26469. g_wszStreamBufferRecordingBannerImageURL = WideString('BannerImageURL');
  26470. {$EXTERNALSYM g_wszStreamBufferRecordingBannerImageURL}
  26471. g_wszStreamBufferRecordingCopyrightURL = WideString('CopyrightURL');
  26472. {$EXTERNALSYM g_wszStreamBufferRecordingCopyrightURL}
  26473. ////////////////////////////////////////////////////////////////
  26474. //
  26475. // Optional attributes, used to give information
  26476. // about video stream properties.
  26477. g_wszStreamBufferRecordingAspectRatioX = WideString('AspectRatioX');
  26478. {$EXTERNALSYM g_wszStreamBufferRecordingAspectRatioX}
  26479. g_wszStreamBufferRecordingAspectRatioY = WideString('AspectRatioY');
  26480. {$EXTERNALSYM g_wszStreamBufferRecordingAspectRatioY}
  26481. ////////////////////////////////////////////////////////////////
  26482. //
  26483. // The NSC file supports the following attributes.
  26484. g_wszStreamBufferRecordingNSCName = WideString('NSC_Name');
  26485. {$EXTERNALSYM g_wszStreamBufferRecordingNSCName}
  26486. g_wszStreamBufferRecordingNSCAddress = WideString('NSC_Address');
  26487. {$EXTERNALSYM g_wszStreamBufferRecordingNSCAddress}
  26488. g_wszStreamBufferRecordingNSCPhone = WideString('NSC_Phone');
  26489. {$EXTERNALSYM g_wszStreamBufferRecordingNSCPhone}
  26490. g_wszStreamBufferRecordingNSCEmail = WideString('NSC_Email');
  26491. {$EXTERNALSYM g_wszStreamBufferRecordingNSCEmail}
  26492. g_wszStreamBufferRecordingNSCDescription = WideString('NSC_Description');
  26493. {$EXTERNALSYM g_wszStreamBufferRecordingNSCDescription}
  26494. type
  26495. // StreamBuffer Attribute datatypes;
  26496. STREAMBUFFER_ATTR_DATATYPE = (
  26497. STREAMBUFFER_TYPE_DWORD,
  26498. STREAMBUFFER_TYPE_STRING,
  26499. STREAMBUFFER_TYPE_BINARY,
  26500. STREAMBUFFER_TYPE_BOOL,
  26501. STREAMBUFFER_TYPE_QWORD,
  26502. STREAMBUFFER_TYPE_WORD,
  26503. STREAMBUFFER_TYPE_GUID
  26504. );
  26505. {$EXTERNALSYM STREAMBUFFER_ATTR_DATATYPE}
  26506. TStreamBufferAttrDataType = STREAMBUFFER_ATTR_DATATYPE;
  26507. IEnumStreamBufferRecordingAttrib = interface;
  26508. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferRecordingAttribute> _di_IStreamBufferRecordingAttribute;'}
  26509. {$EXTERNALSYM IStreamBufferRecordingAttribute}
  26510. IStreamBufferRecordingAttribute = interface(IUnknown)
  26511. ['{16CA4E03-FE69-4705-BD41-5B7DFC0C95F3}']
  26512. (*** IStreamBufferRecordingAttribute methods ***)
  26513. // 1. Sets an attribute on a recording object;
  26514. // 2. Fails if the IStreamBufferRecordControl::Start has already been successfully
  26515. // called;
  26516. // 3. If an attribute of the same name already exists, overwrites the old;
  26517. function SetAttribute(ulReserved: ULONG; pszAttributeName: PWideChar;
  26518. StreamBufferAttributeType: TStreamBufferAttrDataType; pbAttribute: PBYTE;
  26519. cbAttributeLength: WORD): HResult; stdcall;
  26520. // 1. Returns the count of attributes currently set;
  26521. function GetAttributeCount(ulReserved: ULONG; out pcAttributes: WORD): HResult; stdcall;
  26522. // 1. Given a name, returns the attribute data;
  26523. // 2. If the provided buffer is too small, returns VFW_E_BUFFER_OVERFLOW,
  26524. // and (* pcbLength) contains the minimum required length of the buffer
  26525. // 3. To learn the length of the attribute, pass in non-NULL pcbLength,
  26526. // and NULL pbAttribute parameter; [out] value will be the length of
  26527. // the attribute
  26528. function GetAttributeByName(pszAttributeName: PWideChar; pulReserved: PULONG;
  26529. out pStreamBufferAttributeType: TStreamBufferAttrDataType;
  26530. {out} pbAttribute: PBYTE; var pcbLength: WORD): HResult; stdcall;
  26531. // 1. Given an 0-based index, returns the attribute name and data
  26532. // 2. If either buffer is too small, returns VFW_E_BUFFER_OVERFLOW, and
  26533. // (* pcbLength) and (* pcchNameLength) contain the minimum required
  26534. // length of each buffer
  26535. // 3. The length returned by pcchNameLength includes the null-terminator
  26536. // 4. To learn the length of the name & attribute, pass in non-NULL
  26537. // pcchNameLength & pcbLength, and NULL pszAttributeName & pbAttribute
  26538. // parameters; [out] value of the non-NULL parameters will be the
  26539. // lengths of the name and attribute
  26540. function GetAttributeByIndex(wIndex: WORD; pulReserved: PULONG;
  26541. pszAttributeName: PWideChar; var pcchNameLength: WORD; // includes NULL-terminator; in BYTES
  26542. out pStreamBufferAttributeType: TStreamBufferAttrDataType;
  26543. pbAttribute: PBYTE; pcbLength: PWORD): HResult; stdcall;
  26544. // 1. Returns a StreamBuffer attribute enumeration object that snapshots
  26545. // the attributes at time-of-call
  26546. function EnumAttributes(out ppIEnumStreamBufferAttrib: IEnumStreamBufferRecordingAttrib): HResult; stdcall;
  26547. end;
  26548. // ============================================================================
  26549. // ============================================================================
  26550. // IEnumStreamBufferRecordingAttrib
  26551. //
  26552. // obtained by calling IStreamBufferRecordingAttribute::EnumAttributes, or
  26553. // calling clone on this interface
  26554. PStreamBufferAttribute = ^TStreamBufferAttribute;
  26555. STREAMBUFFER_ATTRIBUTE = record
  26556. pszName : PWideChar; // allocated by callee; freed by caller
  26557. StreamBufferAttributeType : TStreamBufferAttrDataType;
  26558. pbAttribute : PBYTE; // allocated by caller; freed by caller
  26559. cbLength : WORD;
  26560. end;
  26561. {$EXTERNALSYM STREAMBUFFER_ATTRIBUTE}
  26562. TStreamBufferAttribute = STREAMBUFFER_ATTRIBUTE;
  26563. {$HPPEMIT 'typedef System::DelphiInterface<IEnumStreamBufferRecordingAttrib> _di_IEnumStreamBufferRecordingAttrib;'}
  26564. {$EXTERNALSYM IEnumStreamBufferRecordingAttrib}
  26565. IEnumStreamBufferRecordingAttrib = interface(IUnknown)
  26566. ['{C18A9162-1E82-4142-8C73-5690FA62FE33}']
  26567. (*** IEnumStreamBufferRecordingAttrib methods ***)
  26568. function Next(cRequest: ULONG; pStreamBufferAttribute: PStreamBufferAttribute;
  26569. out pcReceived: ULONG): HResult; stdcall;
  26570. function Skip(cRecords: ULONG): HResult; stdcall;
  26571. function Reset: HResult; stdcall;
  26572. function Clone(out ppIEnumStreamBufferAttrib: IEnumStreamBufferRecordingAttrib): HResult; stdcall;
  26573. end;
  26574. // ============================================================================
  26575. // ============================================================================
  26576. // IStreamBufferConfigure
  26577. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferConfigure> _di_IStreamBufferConfigure;'}
  26578. {$EXTERNALSYM IStreamBufferConfigure}
  26579. IStreamBufferConfigure = interface(IUnknown)
  26580. ['{ce14dfae-4098-4af7-bbf7-d6511f835414}']
  26581. (*** IStreamBufferConfigure methods ***)
  26582. // 1. Sets the directory where all content is saved, ringbuffer &
  26583. // StreamBuffer;
  26584. // 2. Creates directory if necessary;
  26585. // 3. All TEMP files have hidden+system attributes
  26586. function SetDirectory(pszDirectoryName: PWideChar): HResult; stdcall;
  26587. // 1. Retrieves previously set backing store directory, or default
  26588. // location if none was specified
  26589. function GetDirectory(out ppszDirectoryName: PWideChar): HResult; stdcall;
  26590. // 1. Sets the number of backing files
  26591. // 2. valid values
  26592. //
  26593. // 4 <= min <= 100
  26594. // 6 <= max <= 102
  26595. // min max delta >= 2
  26596. function SetBackingFileCount(dwMin, dwMax: DWORD): HResult; stdcall;
  26597. // 1. Retrieves previously set backing file counts, or defaults if none
  26598. // have have been set
  26599. function GetBackingFileCount(out pdwMin, pdwMax: DWORD): HResult; stdcall;
  26600. // 1. Sets the seconds of content each backing file will hold
  26601. // 2. valid values:
  26602. // dwSeconds >= 15
  26603. function SetBackingFileDuration(dwSeconds: DWORD): HResult; stdcall;
  26604. // 1. Retrieves previously set backing file duration, or default of none
  26605. // is set
  26606. function GetBackingFileDuration(out pdwSeconds: DWORD): HResult; stdcall;
  26607. end;
  26608. // ============================================================================
  26609. // ============================================================================
  26610. // IStreamBufferMediaSeeking
  26611. //
  26612. // Implemented on the StreamBufferSource filter. Used to seek and set the
  26613. // playback rate.
  26614. {$HPPEMIT 'typedef System::DelphiInterface<IStreamBufferMediaSeeking> _di_IStreamBufferMediaSeeking;'}
  26615. {$EXTERNALSYM IStreamBufferMediaSeeking}
  26616. IStreamBufferMediaSeeking = interface(IMediaSeeking)
  26617. ['{f61f5c26-863d-4afa-b0ba-2f81dc978596}']
  26618. (*** IStreamBufferMediaSeeking methods ***)
  26619. // no additional methods have been added
  26620. end;
  26621. // ============================================================================
  26622. // ============================================================================
  26623. // events
  26624. // see evcode.h comment for range
  26625. // stream buffer engine (PVR) 0x0326 - 0x0350 (sbe.idl)
  26626. const
  26627. STREAMBUFFER_EC_BASE = $0326;
  26628. {$EXTERNALSYM STREAMBUFFER_EC_BASE}
  26629. // timehole event
  26630. // param1 = timehole stream offset ms
  26631. // param1 = timehole size ms
  26632. STREAMBUFFER_EC_TIMEHOLE = STREAMBUFFER_EC_BASE;
  26633. {$EXTERNALSYM STREAMBUFFER_EC_TIMEHOLE}
  26634. STREAMBUFFER_EC_STALE_DATA_READ = STREAMBUFFER_EC_TIMEHOLE + 1;
  26635. {$EXTERNALSYM STREAMBUFFER_EC_STALE_DATA_READ}
  26636. STREAMBUFFER_EC_STALE_FILE_DELETED = STREAMBUFFER_EC_STALE_DATA_READ + 1;
  26637. {$EXTERNALSYM STREAMBUFFER_EC_STALE_FILE_DELETED}
  26638. STREAMBUFFER_EC_CONTENT_BECOMING_STALE = STREAMBUFFER_EC_STALE_FILE_DELETED + 1;
  26639. {$EXTERNALSYM STREAMBUFFER_EC_CONTENT_BECOMING_STALE}
  26640. STREAMBUFFER_EC_WRITE_FAILURE = STREAMBUFFER_EC_CONTENT_BECOMING_STALE + 1;
  26641. {$EXTERNALSYM STREAMBUFFER_EC_WRITE_FAILURE}
  26642. // unexpected read failure
  26643. // param1 = HResult failure
  26644. // param2 = undefined
  26645. STREAMBUFFER_EC_READ_FAILURE = STREAMBUFFER_EC_WRITE_FAILURE + 1;
  26646. {$EXTERNALSYM STREAMBUFFER_EC_READ_FAILURE}
  26647. // playback rate change
  26648. // param1 = old_playback_rate * 10000 e.g. 2x is 20000
  26649. // param2 = new_playback_rate * 10000
  26650. STREAMBUFFER_EC_RATE_CHANGED = STREAMBUFFER_EC_READ_FAILURE + 1;
  26651. {$EXTERNALSYM STREAMBUFFER_EC_RATE_CHANGED}
  26652. ///////////////////////////////////////////////////////////////////////////////
  26653. //
  26654. // Public Interfaces for the DX9 Video Mixing Renderer DShow filter
  26655. //
  26656. // Copyright (c) 1999 - 2002, Microsoft Corporation. All rights reserved.
  26657. ///////////////////////////////////////////////////////////////////////////////
  26658. // public interfaces supported by the VMR9
  26659. const
  26660. IID_IVMRSurface9 : TGUID = '{dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc}';
  26661. {$EXTERNALSYM IID_IVMRSurface9}
  26662. IID_IVMRSurfaceAllocator9 : TGUID = '{8d5148ea-3f5d-46cf-9df1-d1b896eedb1f}';
  26663. {$EXTERNALSYM IID_IVMRSurfaceAllocator9}
  26664. IID_IVMRSurfaceAllocatorNotify9 : TGUID = '{dca3f5df-bb3a-4d03-bd81-84614bfbfa0c}';
  26665. {$EXTERNALSYM IID_IVMRSurfaceAllocatorNotify9}
  26666. IID_IVMRImagePresenter9 : TGUID = '{69188c61-12a3-40f0-8ffc-342e7b433fd7}';
  26667. {$EXTERNALSYM IID_IVMRImagePresenter9}
  26668. IID_IVMRImagePresenterConfig9 : TGUID = '{45c15cab-6e22-420a-8043-ae1f0ac02c7d}';
  26669. {$EXTERNALSYM IID_IVMRImagePresenterConfig9}
  26670. IID_IVMRMonitorConfig9 : TGUID = '{46c2e457-8ba0-4eef-b80b-0680f0978749}';
  26671. {$EXTERNALSYM IID_IVMRMonitorConfig9}
  26672. IID_IVMRWindowlessControl9 : TGUID = '{8f537d09-f85e-4414-b23b-502e54c79927}';
  26673. {$EXTERNALSYM IID_IVMRWindowlessControl9}
  26674. IID_IVMRMixerControl9 : TGUID = '{1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b}';
  26675. {$EXTERNALSYM IID_IVMRMixerControl9}
  26676. IID_IVMRImageCompositor9 : TGUID = '{4a5c89eb-df51-4654-ac2a-e48e02bbabf6}';
  26677. {$EXTERNALSYM IID_IVMRImageCompositor9}
  26678. IID_IVMRMixerBitmap9 : TGUID = '{ced175e5-1935-4820-81bd-ff6ad00c9108}';
  26679. {$EXTERNALSYM IID_IVMRMixerBitmap9}
  26680. IID_IVMRFilterConfig9 : TGUID = '{5a804648-4f66-4867-9c43-4f5c822cf1b8}';
  26681. {$EXTERNALSYM IID_IVMRFilterConfig9}
  26682. IID_IVMRAspectRatioControl9 : TGUID = '{00d96c29-bbde-4efc-9901-bb5036392146}';
  26683. {$EXTERNALSYM IID_IVMRAspectRatioControl9}
  26684. IID_IVMRVideoStreamControl9 : TGUID = '{d0cfe38b-93e7-4772-8957-0400c49a4485}';
  26685. {$EXTERNALSYM IID_IVMRVideoStreamControl9}
  26686. IID_IVMRDeinterlaceControl9 : TGUID = '{a215fb8d-13c2-4f7f-993c-003d6271a459}';
  26687. {$EXTERNALSYM IID_IVMRDeinterlaceControl9}
  26688. ///////////////////////////////////////////////////////////////////////////////
  26689. //
  26690. // Allocator Presenter interfaces
  26691. //
  26692. ///////////////////////////////////////////////////////////////////////////////
  26693. //=====================================================================
  26694. //
  26695. // IVMRImagePresenter9
  26696. //
  26697. //=====================================================================
  26698. type
  26699. VMR9PresentationFlags = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  26700. {$EXTERNALSYM VMR9PresentationFlags}
  26701. const
  26702. VMR9Sample_SyncPoint = $00000001;
  26703. {$EXTERNALSYM VMR9Sample_SyncPoint}
  26704. VMR9Sample_Preroll = $00000002;
  26705. {$EXTERNALSYM VMR9Sample_Preroll}
  26706. VMR9Sample_Discontinuity = $00000004;
  26707. {$EXTERNALSYM VMR9Sample_Discontinuity}
  26708. VMR9Sample_TimeValid = $00000008;
  26709. {$EXTERNALSYM VMR9Sample_TimeValid}
  26710. VMR9Sample_SrcDstRectsValid = $00000010;
  26711. {$EXTERNALSYM VMR9Sample_SrcDstRectsValid}
  26712. type
  26713. PVMR9PresentationInfo = ^TVMR9PresentationInfo;
  26714. VMR9PresentationInfo = record
  26715. dwFlags : DWORD;
  26716. lpSurf : IDirect3DSurface9;
  26717. rtStart : TReferenceTime;
  26718. rtEnd : TReferenceTime;
  26719. szAspectRatio : TSIZE;
  26720. rcSrc : TRECT;
  26721. rcDst : TRECT;
  26722. dwReserved1 : DWORD;
  26723. dwReserved2 : DWORD;
  26724. end;
  26725. {$EXTERNALSYM VMR9PresentationInfo}
  26726. TVMR9PresentationInfo = VMR9PresentationInfo;
  26727. {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenter9> _di_IVMRImagePresenter9;'}
  26728. {$EXTERNALSYM IVMRImagePresenter9}
  26729. IVMRImagePresenter9 = interface(IUnknown)
  26730. ['{69188c61-12a3-40f0-8ffc-342e7b433fd7}']
  26731. (*** IVMRImagePresenter9 methods ***)
  26732. function StartPresenting(dwUserID: DWORD): HResult; stdcall;
  26733. function StopPresenting(dwUserID: DWORD): HResult; stdcall;
  26734. function PresentImage(dwUserID: DWORD; lpPresInfo: PVMR9PresentationInfo): HResult; stdcall;
  26735. end;
  26736. //=====================================================================
  26737. //
  26738. // IVMRSurfaceAllocator
  26739. //
  26740. //=====================================================================
  26741. VMR9SurfaceAllocationFlags = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  26742. {$EXTERNALSYM VMR9SurfaceAllocationFlags}
  26743. const
  26744. // surface types/usage
  26745. VMR9AllocFlag_3DRenderTarget = $0001;
  26746. {$EXTERNALSYM VMR9AllocFlag_3DRenderTarget}
  26747. VMR9AllocFlag_DXVATarget = $0002;
  26748. {$EXTERNALSYM VMR9AllocFlag_DXVATarget}
  26749. // VMR9AllocFlag_TextureSurface can be combined with
  26750. // DXVATarget and 3DRenderTarget
  26751. VMR9AllocFlag_TextureSurface = $0004;
  26752. {$EXTERNALSYM VMR9AllocFlag_TextureSurface}
  26753. VMR9AllocFlag_OffscreenSurface = $0008;
  26754. {$EXTERNALSYM VMR9AllocFlag_OffscreenSurface}
  26755. VMR9AllocFlag_UsageReserved = $00F0;
  26756. {$EXTERNALSYM VMR9AllocFlag_UsageReserved}
  26757. VMR9AllocFlag_UsageMask = $00FF;
  26758. {$EXTERNALSYM VMR9AllocFlag_UsageMask}
  26759. type
  26760. PVMR9AllocationInfo = ^TVMR9AllocationInfo;
  26761. _VMR9AllocationInfo = record
  26762. dwFlags : DWORD; // see VMR9SurfaceAllocationFlags
  26763. dwWidth : DWORD;
  26764. dwHeight : DWORD;
  26765. Format : TD3DFORMAT; // 0 means use a format compatible with the display
  26766. Pool : TD3DPOOL;
  26767. MinBuffers : DWORD;
  26768. szAspectRatio : TSIZE;
  26769. szNativeSize : TSIZE;
  26770. end;
  26771. {$EXTERNALSYM _VMR9AllocationInfo}
  26772. VMR9AllocationInfo = _VMR9AllocationInfo;
  26773. {$EXTERNALSYM VMR9AllocationInfo}
  26774. TVMR9AllocationInfo = _VMR9AllocationInfo;
  26775. IVMRSurfaceAllocatorNotify9 = interface;
  26776. {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurfaceAllocator9> _di_IVMRSurfaceAllocator9;'}
  26777. {$EXTERNALSYM IVMRSurfaceAllocator9}
  26778. IVMRSurfaceAllocator9 = interface(IUnknown)
  26779. ['{8d5148ea-3f5d-46cf-9df1-d1b896eedb1f}']
  26780. (*** IVMRSurfaceAllocator9 methods ***)
  26781. function InitializeDevice(dwUserID: DWORD; lpAllocInfo: PVMR9AllocationInfo;
  26782. var lpNumBuffers: DWORD): HResult; stdcall;
  26783. function TerminateDevice(dwID: DWORD): HResult; stdcall;
  26784. function GetSurface(dwUserID: DWORD; SurfaceIndex: DWORD; SurfaceFlags: DWORD;
  26785. out lplpSurface: IDirect3DSurface9): HResult; stdcall;
  26786. function AdviseNotify(lpIVMRSurfAllocNotify: IVMRSurfaceAllocatorNotify9): HResult; stdcall;
  26787. end;
  26788. //=====================================================================
  26789. //
  26790. // IVMRSurfaceAllocatorNotify9
  26791. //
  26792. //=====================================================================
  26793. {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurfaceAllocatorNotify9> _di_IVMRSurfaceAllocatorNotify9;'}
  26794. {$EXTERNALSYM IVMRSurfaceAllocatorNotify9}
  26795. IVMRSurfaceAllocatorNotify9 = interface(IUnknown)
  26796. ['{dca3f5df-bb3a-4d03-bd81-84614bfbfa0c}']
  26797. (*** IVMRSurfaceAllocatorNotify9 methods ***)
  26798. function AdviseSurfaceAllocator(dwUserID: DWORD;
  26799. lpIVRMSurfaceAllocator: IVMRSurfaceAllocator9): HResult; stdcall;
  26800. function SetD3DDevice(lpD3DDevice: IDirect3DDevice9;
  26801. hMonitor: HMONITOR): HResult; stdcall;
  26802. function ChangeD3DDevice(lpD3DDevice: IDirect3DDevice9;
  26803. hMonitor: HMONITOR): HResult; stdcall;
  26804. function AllocateSurfaceHelper(lpAllocInfo: PVMR9AllocationInfo;
  26805. var lpNumBuffers: DWORD; out lplpSurface: IDirect3DSurface9): HResult; stdcall;
  26806. function NotifyEvent(EventCode: LongInt; Param1, Param2: LongInt): HResult; stdcall;
  26807. end;
  26808. ///////////////////////////////////////////////////////////////////////////////
  26809. //
  26810. // Application control and configuration interfaces
  26811. //
  26812. ///////////////////////////////////////////////////////////////////////////////
  26813. //=====================================================================
  26814. //
  26815. // IVMRWindowlessControl9
  26816. //
  26817. //=====================================================================
  26818. VMR9AspectRatioMode= (
  26819. VMR9ARMode_None,
  26820. VMR9ARMode_LetterBox
  26821. );
  26822. {$EXTERNALSYM VMR9AspectRatioMode}
  26823. TVMR9AspectRatioMode = VMR9AspectRatioMode;
  26824. {$HPPEMIT 'typedef System::DelphiInterface<IVMRWindowlessControl9> _di_IVMRWindowlessControl9;'}
  26825. {$EXTERNALSYM IVMRWindowlessControl9}
  26826. IVMRWindowlessControl9 = interface(IUnknown)
  26827. ['{8f537d09-f85e-4414-b23b-502e54c79927}']
  26828. (*** IVMRWindowlessControl9 methods ***)
  26829. //////////////////////////////////////////////////////////
  26830. // Video size and position information
  26831. //////////////////////////////////////////////////////////
  26832. function GetNativeVideoSize(out lpWidth, lpHeight, lpARWidth, lpARHeigh: LongInt): HResult; stdcall;
  26833. function GetMinIdealVideoSize(out lpWidth, lpHeight: LongInt): HResult; stdcall;
  26834. function GetMaxIdealVideoSize(out lpWidth, lpHeight: LongInt): HResult; stdcall;
  26835. function SetVideoPosition(lpSRCRect, lpDSTRect: PRECT): HResult; stdcall;
  26836. function GetVideoPosition(out lpSRCRect, lpDSTRect: TRECT): HResult; stdcall;
  26837. function GetAspectRatioMode(out lpAspectRatioMode: TVMR9AspectRatioMode): HResult; stdcall;
  26838. function SetAspectRatioMode(AspectRatioMode: TVMR9AspectRatioMode): HResult; stdcall;
  26839. //////////////////////////////////////////////////////////
  26840. // Display and clipping management
  26841. //////////////////////////////////////////////////////////
  26842. function SetVideoClippingWindow(hwnd: HWND): HResult; stdcall;
  26843. function RepaintVideo(hwnd: HWND; hdc: HDC): HResult; stdcall;
  26844. function DisplayModeChanged: HResult; stdcall;
  26845. //////////////////////////////////////////////////////////
  26846. // GetCurrentImage
  26847. //
  26848. // Returns the current image being displayed. This images
  26849. // is returned in the form of packed Windows DIB.
  26850. //
  26851. // GetCurrentImage can be called at any time, also
  26852. // the caller is responsible for free the returned memory
  26853. // by calling CoTaskMemFree.
  26854. //
  26855. // Excessive use of this function will degrade video
  26856. // playback performed.
  26857. //////////////////////////////////////////////////////////
  26858. function GetCurrentImage(out lpDib: PBYTE): HResult; stdcall;
  26859. //////////////////////////////////////////////////////////
  26860. // Border Color control
  26861. //
  26862. // The border color is color used to fill any area of the
  26863. // the destination rectangle that does not contain video.
  26864. // It is typically used in two instances. When the video
  26865. // straddles two monitors and when the VMR is trying
  26866. // to maintain the aspect ratio of the movies by letter
  26867. // boxing the video to fit within the specified destination
  26868. // rectangle. See SetAspectRatioMode above.
  26869. //////////////////////////////////////////////////////////
  26870. function SetBorderColor(Clr: COLORREF): HResult; stdcall;
  26871. function GetBorderColor(out lpClr: COLORREF): HResult; stdcall;
  26872. end;
  26873. //=====================================================================
  26874. //
  26875. // IVMRMixerControl9
  26876. //
  26877. //=====================================================================
  26878. VMR9MixerPrefs = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  26879. {$EXTERNALSYM VMR9MixerPrefs}
  26880. const
  26881. MixerPref9_NoDecimation = $00000001; // No decimation - full size
  26882. {$EXTERNALSYM MixerPref9_NoDecimation}
  26883. MixerPref9_DecimateOutput = $00000002; // decimate output by 2 in x & y
  26884. {$EXTERNALSYM MixerPref9_DecimateOutput}
  26885. MixerPref9_ARAdjustXorY = $00000004; // adjust the aspect ratio in x or y
  26886. {$EXTERNALSYM MixerPref9_ARAdjustXorY}
  26887. MixerPref9_NonSquareMixing = $00000008; // assume AP can handle non-square mixing, avoids intermediate scales
  26888. {$EXTERNALSYM MixerPref9_NonSquareMixing}
  26889. MixerPref9_DecimateMask = $0000000F;
  26890. {$EXTERNALSYM MixerPref9_DecimateMask}
  26891. MixerPref9_BiLinearFiltering = $00000010; // use bi-linear filtering
  26892. {$EXTERNALSYM MixerPref9_BiLinearFiltering}
  26893. MixerPref9_PointFiltering = $00000020; // use point filtering
  26894. {$EXTERNALSYM MixerPref9_PointFiltering}
  26895. MixerPref9_AnisotropicFiltering = $00000040; //
  26896. {$EXTERNALSYM MixerPref9_AnisotropicFiltering}
  26897. MixerPref9_PyramidalQuadFiltering = $00000080; // 4-sample tent
  26898. {$EXTERNALSYM MixerPref9_PyramidalQuadFiltering}
  26899. MixerPref9_GaussianQuadFiltering = $00000100; // 4-sample gaussian
  26900. {$EXTERNALSYM MixerPref9_GaussianQuadFiltering}
  26901. MixerPref9_FilteringReserved = $00000E00; // bits reserved for future use.
  26902. {$EXTERNALSYM MixerPref9_FilteringReserved}
  26903. MixerPref9_FilteringMask = $00000FF0; // OR of all above flags
  26904. {$EXTERNALSYM MixerPref9_FilteringMask}
  26905. MixerPref9_RenderTargetRGB = $00001000;
  26906. {$EXTERNALSYM MixerPref9_RenderTargetRGB}
  26907. MixerPref9_RenderTargetYUV = $00002000; // Uses DXVA to perform mixing
  26908. {$EXTERNALSYM MixerPref9_RenderTargetYUV}
  26909. MixerPref9_RenderTargetReserved = $000FC000; // bits reserved for future use.
  26910. {$EXTERNALSYM MixerPref9_RenderTargetReserved}
  26911. MixerPref9_RenderTargetMask = $000FF000; // OR of all above flags
  26912. {$EXTERNALSYM MixerPref9_RenderTargetMask}
  26913. //
  26914. // Dynamic changes that can be performed when the VMR's mixer is
  26915. // configured to use the YUV Render target (see MixerPref_RenderTargetYUV)
  26916. // These preferences can be applied while the graph is running and take effect
  26917. // when the next frame is composed by the mixer.
  26918. //
  26919. MixerPref9_DynamicSwitchToBOB = $00100000;
  26920. {$EXTERNALSYM MixerPref9_DynamicSwitchToBOB}
  26921. MixerPref9_DynamicDecimateBy2 = $00200000;
  26922. {$EXTERNALSYM MixerPref9_DynamicDecimateBy2}
  26923. MixerPref9_DynamicReserved = $00C00000;
  26924. {$EXTERNALSYM MixerPref9_DynamicReserved}
  26925. MixerPref9_DynamicMask = $00F00000;
  26926. {$EXTERNALSYM MixerPref9_DynamicMask}
  26927. type
  26928. // Normalized relative rectangle
  26929. // Coordinate ranges: x=[0...1) y=[0...1)
  26930. // Where the output window goes from 0,0 (closed inclusive lower bound)
  26931. // to 1,1 (open exclusive upper bound)
  26932. PVMR9NormalizedRect = ^TVMR9NormalizedRect;
  26933. _VMR9NormalizedRect = record
  26934. left : Single;
  26935. top : Single;
  26936. right : Single;
  26937. bottom : Single;
  26938. end;
  26939. {$EXTERNALSYM _VMR9NormalizedRect}
  26940. VMR9NormalizedRect = _VMR9NormalizedRect;
  26941. {$EXTERNALSYM VMR9NormalizedRect}
  26942. TVMR9NormalizedRect = _VMR9NormalizedRect;
  26943. VMR9ProcAmpControlFlags = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  26944. {$EXTERNALSYM VMR9ProcAmpControlFlags}
  26945. const
  26946. ProcAmpControl9_Brightness = $00000001;
  26947. {$EXTERNALSYM ProcAmpControl9_Brightness}
  26948. ProcAmpControl9_Contrast = $00000002;
  26949. {$EXTERNALSYM ProcAmpControl9_Contrast}
  26950. ProcAmpControl9_Hue = $00000004;
  26951. {$EXTERNALSYM ProcAmpControl9_Hue}
  26952. ProcAmpControl9_Saturation = $00000008;
  26953. {$EXTERNALSYM ProcAmpControl9_Saturation}
  26954. ProcAmpControl9_Mask = $0000000F;
  26955. {$EXTERNALSYM ProcAmpControl9_Mask}
  26956. type
  26957. PVMR9ProcAmpControl = ^TVMR9ProcAmpControl;
  26958. _VMR9ProcAmpControl = record
  26959. dwSize : DWORD;
  26960. dwFlags : DWORD;
  26961. Brightness : Single;
  26962. Contrast : Single;
  26963. Hue : Single;
  26964. Saturation : Single;
  26965. end;
  26966. {$EXTERNALSYM _VMR9ProcAmpControl}
  26967. VMR9ProcAmpControl = _VMR9ProcAmpControl;
  26968. {$EXTERNALSYM VMR9ProcAmpControl}
  26969. TVMR9ProcAmpControl = _VMR9ProcAmpControl;
  26970. PVMR9ProcAmpControlRange = ^TVMR9ProcAmpControlRange;
  26971. _VMR9ProcAmpControlRange = record
  26972. dwSize : DWORD;
  26973. dwProperty : VMR9ProcAmpControlFlags; // see VMR9ProcAmpControlFlags above;
  26974. MinValue : Single;
  26975. MaxValue : Single;
  26976. DefaultValue : Single;
  26977. StepSize : Single;
  26978. end;
  26979. {$EXTERNALSYM _VMR9ProcAmpControlRange}
  26980. VMR9ProcAmpControlRange = _VMR9ProcAmpControlRange;
  26981. {$EXTERNALSYM VMR9ProcAmpControlRange}
  26982. TVMR9ProcAmpControlRange = _VMR9ProcAmpControlRange;
  26983. {$HPPEMIT 'typedef System::DelphiInterface<IVMRMixerControl9> _di_IVMRMixerControl9;'}
  26984. {$EXTERNALSYM IVMRMixerControl9}
  26985. IVMRMixerControl9 = interface(IUnknown)
  26986. ['{1a777eaa-47c8-4930-b2c9-8fee1c1b0f3b}']
  26987. (*** IVMRMixerControl9 methods ***)
  26988. // Source alpha premultication factor (global alpha for source)
  26989. function SetAlpha(dwStreamID: DWORD; Alpha: Single): HResult; stdcall;
  26990. function GetAlpha(dwStreamID: DWORD; out pAlpha: Single): HResult; stdcall;
  26991. function SetZOrder(dwStreamID: DWORD; dwZ: DWORD): HResult; stdcall;
  26992. function GetZOrder(dwStreamID: DWORD; out pZ: DWORD): HResult; stdcall;
  26993. function SetOutputRect(dwStreamID: DWORD; pRect: PVMR9NormalizedRect): HResult; stdcall;
  26994. function GetOutputRect(dwStreamID: DWORD; {out} pRect: PVMR9NormalizedRect): HResult; stdcall;
  26995. function SetBackgroundClr(ClrBkg: COLORREF): HResult; stdcall;
  26996. function GetBackgroundClr(out lpClrBkg: COLORREF): HResult; stdcall;
  26997. // a combination of VMRMixingPrefFlags
  26998. function SetMixingPrefs(dwMixerPrefs: DWORD): HResult; stdcall;
  26999. function GetMixingPrefs(out pdwMixerPrefs: DWORD): HResult; stdcall;
  27000. function SetProcAmpControl(dwStreamID: DWORD; lpClrControl: PVMR9ProcAmpControl): HResult; stdcall;
  27001. function GetProcAmpControl(dwStreamID: DWORD; {in/out} lpClrControl: PVMR9ProcAmpControl): HResult; stdcall;
  27002. function GetProcAmpControlRange(dwStreamID: DWORD; {in/out} lpClrControl: PVMR9ProcAmpControlRange): HResult; stdcall;
  27003. end;
  27004. //=====================================================================
  27005. //
  27006. // IVMRMixerBitmap9
  27007. //
  27008. //=====================================================================
  27009. PVMR9AlphaBitmap = ^TVMR9AlphaBitmap;
  27010. _VMR9AlphaBitmap = record
  27011. dwFlags : DWORD; // flags word
  27012. hdc : HDC; // DC for the bitmap to copy
  27013. pDDS : IDirect3DSurface9; // D3D surface to copy
  27014. rSrc : TRECT; // rectangle to copy from the DC/DDS
  27015. rDest : TVMR9NormalizedRect; // output rectangle in composition space
  27016. fAlpha : Single; // opacity of the bitmap
  27017. clrSrcKey : COLORREF; // src color key
  27018. dwFilterMode : DWORD; // See "SetMixerPrefs"
  27019. end;
  27020. {$EXTERNALSYM _VMR9AlphaBitmap}
  27021. VMR9AlphaBitmap = _VMR9AlphaBitmap;
  27022. {$EXTERNALSYM VMR9AlphaBitmap}
  27023. TVMR9AlphaBitmap = _VMR9AlphaBitmap;
  27024. VMR9AlphaBitmapFlags = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  27025. {$EXTERNALSYM VMR9AlphaBitmapFlags}
  27026. const
  27027. // Disable the alpha bitmap for now
  27028. VMR9AlphaBitmap_Disable = $00000001;
  27029. {$EXTERNALSYM VMR9AlphaBitmap_Disable}
  27030. // Take the bitmap from the HDC rather than the DirectDraw surface
  27031. VMR9AlphaBitmap_hDC = $00000002;
  27032. {$EXTERNALSYM VMR9AlphaBitmap_hDC}
  27033. // Take the entire DDraw surface - rSrc is ignored
  27034. VMR9AlphaBitmap_EntireDDS = $00000004;
  27035. {$EXTERNALSYM VMR9AlphaBitmap_EntireDDS}
  27036. // Indicates that the clrTrans value is valid and should be
  27037. // used when blending
  27038. VMR9AlphaBitmap_SrcColorKey = $00000008;
  27039. {$EXTERNALSYM VMR9AlphaBitmap_SrcColorKey}
  27040. // Indicates that the rSrc rectangle is valid and specifies a
  27041. // sub-rectangle of the of original app image to be blended.
  27042. // Use of this parameter enables "Image Strips"
  27043. VMR9AlphaBitmap_SrcRect = $00000010;
  27044. {$EXTERNALSYM VMR9AlphaBitmap_SrcRect}
  27045. // Indicates that dwFilterMode parameter is valid and should be
  27046. // used to overide the default filtering method used by the VMR.
  27047. // MixerPref_PointFiltering is particulaly useful for images that
  27048. // contain text and do not need to be stretch prior to blending with
  27049. // the video content.
  27050. VMR9AlphaBitmap_FilterMode = $00000020;
  27051. {$EXTERNALSYM VMR9AlphaBitmap_FilterMode}
  27052. type
  27053. {$HPPEMIT 'typedef System::DelphiInterface<IVMRMixerBitmap9> _di_IVMRMixerBitmap9;'}
  27054. {$EXTERNALSYM IVMRMixerBitmap9}
  27055. IVMRMixerBitmap9 = interface(IUnknown)
  27056. ['{ced175e5-1935-4820-81bd-ff6ad00c9108}']
  27057. (*** IVMRMixerBitmap9 methods ***)
  27058. // Set bitmap, location to blend it, and blending value
  27059. function SetAlphaBitmap(pBmpParms: PVMR9AlphaBitmap): HResult; stdcall;
  27060. // Change bitmap location, size and blending value,
  27061. // graph must be running for change to take effect.
  27062. function UpdateAlphaBitmapParameters(pBmpParms: PVMR9AlphaBitmap): HResult; stdcall;
  27063. // Get bitmap, location to blend it, and blending value
  27064. function GetAlphaBitmapParameters(out pBmpParms: TVMR9AlphaBitmap): HResult; stdcall;
  27065. end;
  27066. //=====================================================================
  27067. //
  27068. // IVMRSurface9
  27069. //
  27070. //=====================================================================
  27071. {$HPPEMIT 'typedef System::DelphiInterface<IVMRSurface9> _di_IVMRSurface9;'}
  27072. {$EXTERNALSYM IVMRSurface9}
  27073. IVMRSurface9 = interface(IUnknown)
  27074. ['{dfc581a1-6e1f-4c3a-8d0a-5e9792ea2afc}']
  27075. (*** IVMRSurface9 methods ***)
  27076. function IsSurfaceLocked: HResult; stdcall;
  27077. function LockSurface(out lpSurface: PBYTE): HResult; stdcall;
  27078. function UnlockSurface: HResult; stdcall;
  27079. function GetSurface(out lplpSurface: IDirect3DSurface9): HResult; stdcall;
  27080. end;
  27081. //=====================================================================
  27082. //
  27083. // IID_IVMRImagePresenterConfig9 - this interface allows applications
  27084. // to configure the default Microsoft provided allocator-presenter
  27085. // inorder to simplify the implementation of their own
  27086. // allocator-presenter plug-in.
  27087. //
  27088. //=====================================================================
  27089. VMR9RenderPrefs = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  27090. {$EXTERNALSYM VMR9RenderPrefs}
  27091. const
  27092. RenderPrefs9_DoNotRenderBorder = $00000001; // app paints color keys
  27093. {$EXTERNALSYM RenderPrefs9_DoNotRenderBorder}
  27094. RenderPrefs9_Mask = $00000001; // OR of all above flags
  27095. {$EXTERNALSYM RenderPrefs9_Mask}
  27096. type
  27097. {$HPPEMIT 'typedef System::DelphiInterface<IVMRImagePresenterConfig9> _di_IVMRImagePresenterConfig9;'}
  27098. {$EXTERNALSYM IVMRImagePresenterConfig9}
  27099. IVMRImagePresenterConfig9 = interface(IUnknown)
  27100. ['{45c15cab-6e22-420a-8043-ae1f0ac02c7d}']
  27101. (*** IVMRImagePresenterConfig9 methods ***)
  27102. function SetRenderingPrefs(dwRenderFlags: DWORD): HResult; stdcall;
  27103. function GetRenderingPrefs(out dwRenderFlags: DWORD): HResult; stdcall;
  27104. end;
  27105. //=====================================================================
  27106. //
  27107. // IVMRDeinterlaceControl
  27108. //
  27109. // New interfaced introduced into the WindowsXP SP1 release of the VMR.
  27110. // This interface allows applications to control the DX-VA deinterlacing
  27111. // support provided by the VMR.
  27112. //
  27113. // The VMR needs to be set into "mixing" mode for this interface to work.
  27114. //
  27115. // SetDeinterlaceMode is only effective for new connections made to the
  27116. // VMR. It should be noted that the graphics device driver may refuse
  27117. // to use the specified deinterlace mode, in which case 3 fallback
  27118. // policies are offered by the VMR, these being:
  27119. //
  27120. // 1. Fallback to the next best mode offered by the driver.
  27121. // 2. Fallback to the BOB deinterlace mode.
  27122. // 3. Fallback to the WEAVE deinterlace mode (ie. turn deinterlacing off).
  27123. //
  27124. //=====================================================================
  27125. VMR9DeinterlacePrefs = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  27126. {$EXTERNALSYM VMR9DeinterlacePrefs}
  27127. const
  27128. DeinterlacePref9_NextBest = $01;
  27129. {$EXTERNALSYM DeinterlacePref9_NextBest}
  27130. DeinterlacePref9_BOB = $02;
  27131. {$EXTERNALSYM DeinterlacePref9_BOB}
  27132. DeinterlacePref9_Weave = $04;
  27133. {$EXTERNALSYM DeinterlacePref9_Weave}
  27134. DeinterlacePref9_Mask = $07;
  27135. {$EXTERNALSYM DeinterlacePref9_Mask}
  27136. type
  27137. VMR9DeinterlaceTech = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  27138. {$EXTERNALSYM VMR9DeinterlaceTech}
  27139. const
  27140. // the algorithm is unknown or proprietary
  27141. DeinterlaceTech9_Unknown = $0000;
  27142. {$EXTERNALSYM DeinterlaceTech9_Unknown}
  27143. // the algorithm creates the missing lines by repeating
  27144. // the line either above or below it - this method will look very jaggy and
  27145. // isn't recommended
  27146. DeinterlaceTech9_BOBLineReplicate = $0001;
  27147. {$EXTERNALSYM DeinterlaceTech9_BOBLineReplicate}
  27148. // the algorithm creates the missing lines by vertically stretching each
  27149. // video field by a factor of two, for example by averaging two lines or
  27150. // using a [-1, 9, 9, -1]/16 filter across four lines.
  27151. // Slight vertical adjustments are made to ensure that the resulting image
  27152. // does not "bob" up and down.
  27153. DeinterlaceTech9_BOBVerticalStretch = $0002;
  27154. {$EXTERNALSYM DeinterlaceTech9_BOBVerticalStretch}
  27155. // the pixels in the missing line are recreated by a median filtering operation
  27156. DeinterlaceTech9_MedianFiltering = $0004;
  27157. {$EXTERNALSYM DeinterlaceTech9_MedianFiltering}
  27158. // the pixels in the missing line are recreated by an edge filter.
  27159. // In this process, spatial directional filters are applied to determine
  27160. // the orientation of edges in the picture content, and missing
  27161. // pixels are created by filtering along (rather than across) the
  27162. // detected edges.
  27163. DeinterlaceTech9_EdgeFiltering = $0010;
  27164. {$EXTERNALSYM DeinterlaceTech9_EdgeFiltering}
  27165. // the pixels in the missing line are recreated by switching on a field by
  27166. // field basis between using either spatial or temporal interpolation
  27167. // depending on the amount of motion.
  27168. DeinterlaceTech9_FieldAdaptive = $0020;
  27169. {$EXTERNALSYM DeinterlaceTech9_FieldAdaptive}
  27170. // the pixels in the missing line are recreated by switching on a pixel by pixel
  27171. // basis between using either spatial or temporal interpolation depending on
  27172. // the amount of motion..
  27173. DeinterlaceTech9_PixelAdaptive = $0040;
  27174. {$EXTERNALSYM DeinterlaceTech9_PixelAdaptive}
  27175. // Motion Vector Steering identifies objects within a sequence of video
  27176. // fields. The missing pixels are recreated after first aligning the
  27177. // movement axes of the individual objects in the scene to make them
  27178. // parallel with the time axis.
  27179. DeinterlaceTech9_MotionVectorSteered = $0080;
  27180. {$EXTERNALSYM DeinterlaceTech9_MotionVectorSteered}
  27181. type
  27182. PVMR9Frequency = ^TVMR9Frequency;
  27183. _VMR9Frequency = record
  27184. dwNumerator : DWORD;
  27185. dwDenominator : DWORD;
  27186. end;
  27187. {$EXTERNALSYM _VMR9Frequency}
  27188. VMR9Frequency = _VMR9Frequency;
  27189. {$EXTERNALSYM VMR9Frequency}
  27190. TVMR9Frequency = _VMR9Frequency;
  27191. _VMR9_SampleFormat = (
  27192. {$IFNDEF COMPILER6_UP}
  27193. VMR9_Sample_INVALID_0,
  27194. VMR9_SampleReserved,
  27195. {$ELSE}
  27196. VMR9_SampleReserved = 1,
  27197. {$ENDIF}
  27198. VMR9_SampleProgressiveFrame,
  27199. VMR9_SampleFieldInterleavedEvenFirst,
  27200. VMR9_SampleFieldInterleavedOddFirst,
  27201. VMR9_SampleFieldSingleEven,
  27202. VMR9_SampleFieldSingleOdd
  27203. );
  27204. {$EXTERNALSYM _VMR9_SampleFormat}
  27205. VMR9_SampleFormat = _VMR9_SampleFormat;
  27206. {$EXTERNALSYM VMR9_SampleFormat}
  27207. TVMR9SampleFormat = _VMR9_SampleFormat;
  27208. PVMR9VideoDesc = ^TVMR9VideoDesc;
  27209. _VMR9VideoDesc = record
  27210. dwSize : DWORD;
  27211. dwSampleWidth : DWORD;
  27212. dwSampleHeight : DWORD;
  27213. SampleFormat : TVMR9SampleFormat;
  27214. dwFourCC : DWORD;
  27215. InputSampleFreq : TVMR9Frequency;
  27216. OutputFrameFreq : TVMR9Frequency;
  27217. end;
  27218. {$EXTERNALSYM _VMR9VideoDesc}
  27219. VMR9VideoDesc = _VMR9VideoDesc;
  27220. {$EXTERNALSYM VMR9VideoDesc}
  27221. TVMR9VideoDesc = _VMR9VideoDesc;
  27222. PVMR9DeinterlaceCaps = ^TVMR9DeinterlaceCaps;
  27223. _VMR9DeinterlaceCaps = record
  27224. dwSize : DWORD;
  27225. dwNumPreviousOutputFrames : DWORD;
  27226. dwNumForwardRefSamples : DWORD;
  27227. dwNumBackwardRefSamples : DWORD;
  27228. DeinterlaceTechnology : VMR9DeinterlaceTech;
  27229. end;
  27230. {$EXTERNALSYM _VMR9DeinterlaceCaps}
  27231. VMR9DeinterlaceCaps = _VMR9DeinterlaceCaps;
  27232. {$EXTERNALSYM VMR9DeinterlaceCaps}
  27233. TVMR9DeinterlaceCaps = _VMR9DeinterlaceCaps;
  27234. {$HPPEMIT 'typedef System::DelphiInterface<IVMRDeinterlaceControl9> _di_IVMRDeinterlaceControl9;'}
  27235. {$EXTERNALSYM IVMRDeinterlaceControl9}
  27236. IVMRDeinterlaceControl9 = interface(IUnknown)
  27237. ['{a215fb8d-13c2-4f7f-993c-003d6271a459}']
  27238. (*** IVMRDeinterlaceControl9 methods ***)
  27239. // For the specified video description returns the
  27240. // number of deinterlacing modes available to the VMR.
  27241. // The deinterlacing modes are returned in descending
  27242. // quality order ie. the best quality mode is at
  27243. // lpdwNumDeinterlaceModes[0], the next best at
  27244. // lpdwNumDeinterlaceModes[1] and so on.
  27245. //
  27246. // To determine how big an array of guids to pass to the
  27247. // GetNumberOfDeinterlaceModes method call
  27248. // GetNumberOfDeinterlaceModes(lpVideoDescription, &dwNumModes, NULL);
  27249. //
  27250. function GetNumberOfDeinterlaceModes(out lpVideoDescription: TVMR9VideoDesc;
  27251. var lpdwNumDeinterlaceModes: DWORD; lpDeinterlaceModes: PGUID): HResult; stdcall;
  27252. // For the given video description get the capabilities of the
  27253. // specified de-interlace mode.
  27254. function GetDeinterlaceModeCaps(const lpDeinterlaceMode: TGUID;
  27255. lpVideoDescription: PVMR9VideoDesc;
  27256. out lpDeinterlaceCaps: TVMR9DeinterlaceCaps): HResult; stdcall;
  27257. // Get/Set the deinterlace mode that you would like the
  27258. // VMR to use when de-interlacing the specified stream.
  27259. // It should be noted that the VMR may not actually be able
  27260. // to use the requested deinterlace mode, in which case the
  27261. // the VMR will fall back to other de-interlace modes as specified
  27262. // by the de-interlace preferences (see SetDeinterlacePrefs below).
  27263. function GetDeinterlaceMode(dwStreamID: DWORD;
  27264. out lpDeinterlaceMode: TGUID // returns GUID_NULL if SetDeinterlaceMode
  27265. ): HResult; stdcall; // has not been called yet.
  27266. function SetDeinterlaceMode(
  27267. dwStreamID: DWORD; // use 0xFFFFFFFF to set mode for all streams
  27268. const lpDeinterlaceMode: TGUID // GUID_NULL == turn deinterlacing off
  27269. ): HResult; stdcall;
  27270. function GetDeinterlacePrefs(out lpdwDeinterlacePrefs: DWORD): HResult; stdcall;
  27271. function SetDeinterlacePrefs(dwDeinterlacePrefs: DWORD): HResult; stdcall;
  27272. // Get the DeinterlaceMode currently in use for the specified
  27273. // video stream (ie. pin). The returned GUID will be NULL if
  27274. // the de-interlacing h/w has not been created by the VMR at the
  27275. // time the function is called, or if the VMR determines that
  27276. // this stream should not or can be de-interlaced.
  27277. function GetActualDeinterlaceMode(dwStreamID: DWORD;
  27278. out lpDeinterlaceMode: TGUID): HResult; stdcall;
  27279. end;
  27280. //=====================================================================
  27281. //
  27282. // IVMRImageCompositor9
  27283. //
  27284. //=====================================================================
  27285. PVMR9VideoStreamInfo = ^TVMR9VideoStreamInfo;
  27286. _VMR9VideoStreamInfo = record
  27287. pddsVideoSurface : IDirect3DSurface9;
  27288. dwWidth, dwHeight : DWORD;
  27289. dwStrmID : DWORD;
  27290. fAlpha : Single;
  27291. rNormal : TVMR9NormalizedRect;
  27292. rtStart : TReferenceTime;
  27293. rtEnd : TReferenceTime;
  27294. SampleFormat : TVMR9SampleFormat;
  27295. end;
  27296. {$EXTERNALSYM _VMR9VideoStreamInfo}
  27297. VMR9VideoStreamInfo = _VMR9VideoStreamInfo;
  27298. {$EXTERNALSYM VMR9VideoStreamInfo}
  27299. TVMR9VideoStreamInfo = _VMR9VideoStreamInfo;
  27300. {$HPPEMIT 'typedef System::DelphiInterface<IVMRImageCompositor9> _di_IVMRImageCompositor9;'}
  27301. {$EXTERNALSYM IVMRImageCompositor9}
  27302. IVMRImageCompositor9 = interface(IUnknown)
  27303. ['{4a5c89eb-df51-4654-ac2a-e48e02bbabf6}']
  27304. (*** IVMRImageCompositor9 methods ***)
  27305. function InitCompositionDevice(pD3DDevice: IUnknown): HResult; stdcall;
  27306. function TermCompositionDevice(pD3DDevice: IUnknown): HResult; stdcall;
  27307. function SetStreamMediaType(dwStrmID: DWORD; pmt: PAMMediaType;
  27308. fTexture: BOOL): HResult; stdcall;
  27309. function CompositeImage(pD3DDevice: IUnknown; pddsRenderTarget: IDirect3DSurface9;
  27310. pmtRenderTarget: PAMMediaType; rtStart, rtEnd: TReferenceTime;
  27311. dwClrBkGnd: TD3DCOLOR; pVideoStreamInfo: PVMR9VideoStreamInfo;
  27312. cStreams: UINT): HResult; stdcall;
  27313. end;
  27314. //=====================================================================
  27315. //
  27316. // IVMRVideoStreamControl9
  27317. //
  27318. //=====================================================================
  27319. {$HPPEMIT 'typedef System::DelphiInterface<IVMRVideoStreamControl9> _di_IVMRVideoStreamControl9;'}
  27320. {$EXTERNALSYM IVMRVideoStreamControl9}
  27321. IVMRVideoStreamControl9 = interface(IUnknown)
  27322. ['{d0cfe38b-93e7-4772-8957-0400c49a4485}']
  27323. (*** IVMRVideoStreamControl9 methods ***)
  27324. function SetStreamActiveState(fActive: BOOL): HResult; stdcall;
  27325. function GetStreamActiveState(out lpfActive: BOOL): HResult; stdcall;
  27326. end;
  27327. VMR9Mode = {$IFDEF TYPE_IDENTITY}type {$ENDIF} LongWord;
  27328. {$EXTERNALSYM VMR9Mode}
  27329. const
  27330. VMR9Mode_Windowed = $00000001;
  27331. {$EXTERNALSYM VMR9Mode_Windowed}
  27332. VMR9Mode_Windowless = $00000002;
  27333. {$EXTERNALSYM VMR9Mode_Windowless}
  27334. VMR9Mode_Renderless = $00000004;
  27335. {$EXTERNALSYM VMR9Mode_Renderless}
  27336. // not a valid value to pass to SetRenderMode
  27337. VMR9Mode_Mask = $00000007; // OR of all above flags
  27338. {$EXTERNALSYM VMR9Mode_Mask}
  27339. type
  27340. {$HPPEMIT 'typedef System::DelphiInterface<IVMRFilterConfig9> _di_IVMRFilterConfig9;'}
  27341. {$EXTERNALSYM IVMRFilterConfig9}
  27342. IVMRFilterConfig9 = interface(IUnknown)
  27343. ['{5a804648-4f66-4867-9c43-4f5c822cf1b8}']
  27344. (*** IVMRFilterConfig9 methods ***)
  27345. function SetImageCompositor(lpVMRImgCompositor: IVMRImageCompositor9): HResult; stdcall;
  27346. function SetNumberOfStreams(dwMaxStreams: DWORD): HResult; stdcall;
  27347. function GetNumberOfStreams(out pdwMaxStreams: DWORD): HResult; stdcall;
  27348. function SetRenderingPrefs(dwRenderFlags: DWORD): HResult; stdcall;
  27349. function GetRenderingPrefs(out pdwRenderFlags: DWORD): HResult; stdcall;
  27350. function SetRenderingMode(Mode: DWORD): HResult; stdcall;
  27351. function GetRenderingMode(out pMode: DWORD): HResult; stdcall;
  27352. end;
  27353. //=====================================================================
  27354. //
  27355. // IVMRAspectRatioControl9
  27356. //
  27357. //=====================================================================
  27358. {$HPPEMIT 'typedef System::DelphiInterface<IVMRAspectRatioControl9> _di_IVMRAspectRatioControl9;'}
  27359. {$EXTERNALSYM IVMRAspectRatioControl9}
  27360. IVMRAspectRatioControl9 = interface(IUnknown)
  27361. ['{00d96c29-bbde-4efc-9901-bb5036392146}']
  27362. (*** IVMRAspectRatioControl9 methods ***)
  27363. function GetAspectRatioMode(out lpdwARMode: TVMRAspectRatioMode): HResult; stdcall;
  27364. function SetAspectRatioMode(dwARMode: TVMRAspectRatioMode): HResult; stdcall;
  27365. end;
  27366. ///////////////////////////////////////////////////////////////////////////////
  27367. //
  27368. // VMR Multimon configuration interface
  27369. //
  27370. ///////////////////////////////////////////////////////////////////////////////
  27371. const
  27372. VMR9DEVICENAMELEN = 32;
  27373. {$EXTERNALSYM VMR9DEVICENAMELEN}
  27374. VMR9DEVICEDESCRIPTIONLEN = 512;
  27375. {$EXTERNALSYM VMR9DEVICEDESCRIPTIONLEN}
  27376. type
  27377. PVMR9MonitorInfo = ^TVMR9MonitorInfo;
  27378. _VMR9MonitorInfo = record
  27379. uDevID : UINT;
  27380. rcMonitor : TRECT;
  27381. hMon : HMONITOR;
  27382. dwFlags : DWORD; // described in MONITORINFOEX, currently only MONITORINFOF_PRIMARY
  27383. szDevice: array[0..VMR9DEVICENAMELEN-1]of WideChar;
  27384. szDescription: array[0..VMR9DEVICEDESCRIPTIONLEN-1] of WideChar;
  27385. liDriverVersion : LARGE_INTEGER;
  27386. dwVendorId : DWORD;
  27387. dwDeviceId : DWORD;
  27388. dwSubSysId : DWORD;
  27389. dwRevision : DWORD;
  27390. end;
  27391. {$EXTERNALSYM _VMR9MonitorInfo}
  27392. VMR9MonitorInfo = _VMR9MonitorInfo;
  27393. {$EXTERNALSYM VMR9MonitorInfo}
  27394. TVMR9MonitorInfo = _VMR9MonitorInfo;
  27395. {$HPPEMIT 'typedef System::DelphiInterface<IVMRMonitorConfig9> _di_IVMRMonitorConfig9;'}
  27396. {$EXTERNALSYM IVMRMonitorConfig9}
  27397. IVMRMonitorConfig9 = interface(IUnknown)
  27398. ['{46c2e457-8ba0-4eef-b80b-0680f0978749}']
  27399. (*** IVMRMonitorConfig9 methods ***)
  27400. // Use this method on a Multi-Monitor system to specify to the
  27401. // mixer filter which Direct Draw driver should be used when connecting
  27402. // to an upstream decoder filter.
  27403. function SetMonitor(uDev: UINT): HResult; stdcall;
  27404. // Use this method to determine the direct draw object that will be used when
  27405. // connecting the mixer filter to an upstream decoder filter.
  27406. function GetMonitor(out puDev: UINT): HResult; stdcall;
  27407. // Use this method on a multi-monitor system to specify to the
  27408. // mixer filter the default Direct Draw device to use when
  27409. // connecting to an upstream filter. The default direct draw device
  27410. // can be overriden for a particular connection by SetMonitor method
  27411. // described above.
  27412. function SetDefaultMonitor(uDev: UINT): HResult; stdcall;
  27413. // Use this method on a multi-monitor system to determine which
  27414. // is the default direct draw device the overlay mixer filter
  27415. // will use when connecting to an upstream filter.
  27416. function GetDefaultMonitor(out puDev: UINT): HResult; stdcall;
  27417. // Use this method to get a list of Direct Draw device GUIDs and thier
  27418. // associated monitor information that the mixer can use when
  27419. // connecting to an upstream decoder filter. Passing down a NULL pInfo
  27420. // parameter allows the app to determine the required array size (returned
  27421. // in pdwNumDevices). Otherwise, dwNumDevices returns the actual
  27422. // number of devices retrieved.
  27423. function GetAvailableMonitors(
  27424. {out} pInfo: PVMR9MonitorInfo;
  27425. dwMaxInfoArraySize: DWORD; // in array members
  27426. out pdwNumDevices: DWORD // actual number of devices retrieved
  27427. ): HResult; stdcall;
  27428. end;
  27429. //------------------------------------------------------------------------------
  27430. // File: DMOImpl.h
  27431. //
  27432. // Desc: Classes to implement a DMO.
  27433. //
  27434. // Copyright (c) 2000, Microsoft Corporation. All rights reserved.
  27435. //------------------------------------------------------------------------------
  27436. {$IFDEF DELPHI4_UP}
  27437. type
  27438. TMOinplIOInfo = record
  27439. fTypeSet : DWORD; //:1;
  27440. fIncomplete : DWORD; //:1;
  27441. CurrentMediaType: TDMOMediaType;
  27442. end;
  27443. // Class to implement a DMO
  27444. //
  27445. //
  27446. // Assumes the number of input and output streams is fixed
  27447. // (these are template parameters)
  27448. //
  27449. // Provides following services:
  27450. //
  27451. // Basic parameter checking and locking
  27452. // Fully implements :
  27453. // GetStreamCount
  27454. // SetInputType
  27455. // SetOutputType
  27456. // GetCurrentInputType
  27457. // GetCurrentOutputType
  27458. //
  27459. // Checks if all types are set before streaming
  27460. // Automatically calls AllocateStreamingResources before streaming
  27461. // if it's not been called already
  27462. // Prevents streaming until the types on all non-optional streams
  27463. // have been set
  27464. //
  27465. //
  27466. // Derived class implements the following methods :
  27467. //
  27468. {
  27469. HResult InternalGetInputStreamInfo(DWORD dwInputStreamIndex, DWORD *pdwFlags);
  27470. HResult InternalGetOutputStreamInfo(DWORD dwOutputStreamIndex, DWORD *pdwFlags);
  27471. HResult InternalCheckInputType(DWORD dwInputStreamIndex, const DMO_MEDIA_TYPE *pmt);
  27472. HResult InternalCheckOutputType(DWORD dwOutputStreamIndex, const DMO_MEDIA_TYPE *pmt);
  27473. HResult InternalGetInputType(DWORD dwInputStreamIndex, DWORD dwTypeIndex,
  27474. DMO_MEDIA_TYPE *pmt);
  27475. HResult InternalGetOutputType(DWORD dwOutputStreamIndex, DWORD dwTypeIndex,
  27476. DMO_MEDIA_TYPE *pmt);
  27477. HResult InternalGetInputSizeInfo(DWORD dwInputStreamIndex, DWORD *pcbSize,
  27478. DWORD *pcbMaxLookahead, DWORD *pcbAlignment);
  27479. HResult InternalGetOutputSizeInfo(DWORD dwOutputStreamIndex, DWORD *pcbSize,
  27480. DWORD *pcbAlignment);
  27481. HResult InternalGetInputMaxLatency(DWORD dwInputStreamIndex, REFERENCE_TIME *prtMaxLatency);
  27482. HResult InternalSetInputMaxLatency(DWORD dwInputStreamIndex, REFERENCE_TIME rtMaxLatency);
  27483. HResult InternalFlush();
  27484. HResult InternalDiscontinuity(DWORD dwInputStreamIndex);
  27485. HResult InternalAllocateStreamingResources();
  27486. HResult InternalFreeStreamingResources();
  27487. HResult InternalProcessInput(DWORD dwInputStreamIndex, IMediaBuffer *pBuffer,
  27488. DWORD dwFlags, REFERENCE_TIME rtTimestamp,
  27489. REFERENCE_TIME rtTimelength);
  27490. HResult InternalProcessOutput(DWORD dwFlags, DWORD cOutputBufferCount,
  27491. DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
  27492. DWORD *pdwStatus);
  27493. HResult InternalAcceptingInput(DWORD dwInputStreamIndex);
  27494. void Lock();
  27495. void Unlock();
  27496. Notes:
  27497. The derived class is meant to do most work to initialize streaming
  27498. in AllocateStreamingResources rather than when types are set.
  27499. This centralizes the work to one
  27500. clear place based on the types set for all streams.
  27501. The derived class implements locking.
  27502. The derived class implements the IUnknown methods
  27503. Usage example (1 input and 1 output) :
  27504. class CMyDMO : public IMediaObjectImpl<CMyDmo, 1, 1>,
  27505. ...
  27506. }
  27507. //////////////////////////////////////////////////////////////////////
  27508. ///// Translator comments /////
  27509. //////////////////////////////////////////////////////////////////////
  27510. {
  27511. Delphi class tries to follow C++ template class as much as possible.
  27512. But in addition to original C++ template it's already implements
  27513. multi-threading support due to:
  27514. 1) AddRef, Release - realized as thread safe in TComObject
  27515. 2) Lock(), Unlock() - uses critical section.
  27516. If you do not need support for thread-safe processing you can save some
  27517. system resources by not calling Windows functions (InterlockedInclerent,
  27518. InterlockedDecrement, EnterCriticalSection, LeaveCriticalSection). This
  27519. can be don by overriding these funtions in derived class:
  27520. ObjAddRef, ObjRelease, Lock(), Unlock()
  27521. }
  27522. TMediaObjectImpl = class(TComObject, IMediaObject)
  27523. private
  27524. m_fTypesSet : Boolean;
  27525. m_fFlushed : Boolean;
  27526. m_fResourcesAllocated: Boolean;
  27527. // Syncronizing
  27528. fCritSection: TCriticalSection;
  27529. protected
  27530. // init this variables !!
  27531. NUMBEROFINPUTS : DWORD;
  27532. NUMBEROFOUTPUTS : DWORD;
  27533. // Member variables
  27534. m_InputInfo : array of TMOinplIOInfo;// [0..NUMBEROFINPUTS-1]
  27535. m_OutputInfo : array of TMOinplIOInfo;// [0..NUMBEROFOUTPUTS-1]
  27536. // Implement these functions !!!
  27537. function InternalGetInputStreamInfo(dwInputStreamIndex: DWORD; out pdwFlags: DWORD): HResult; virtual; abstract;
  27538. function InternalGetOutputStreamInfo(dwOutputStreamIndex: DWORD; out pdwFlags: DWORD): HResult; virtual; abstract;
  27539. function InternalCheckInputType(dwInputStreamIndex: DWORD; const pmt: PDMOMediaType): HResult; virtual; abstract;
  27540. function InternalCheckOutputType(dwOutputStreamIndex: DWORD; const pmt: PDMOMediaType): HResult; virtual; abstract;
  27541. function InternalGetInputType(dwInputStreamIndex, dwTypeIndex: DWORD; out pmt: TDMOMediaType): HResult; virtual; abstract;
  27542. function InternalGetOutputType(dwOutputStreamIndex, dwTypeIndex:DWORD; out pmt: TDMOMediaType): HResult; virtual; abstract;
  27543. function InternalGetInputSizeInfo(dwInputStreamIndex: DWORD; out pcbSize, pcbMaxLookahead, pcbAlignment: DWORD): HResult; virtual; abstract;
  27544. function InternalGetOutputSizeInfo(dwOutputStreamIndex: DWORD; out pcbSize, pcbAlignment: DWORD): HResult; virtual; abstract;
  27545. function InternalGetInputMaxLatency(dwInputStreamIndex: DWORD; out prtMaxLatency: TReferenceTime): HResult; virtual; abstract;
  27546. function InternalSetInputMaxLatency(dwInputStreamIndex: DWORD; rtMaxLatency: TReferenceTime): HResult; virtual; abstract;
  27547. function InternalFlush: HResult; virtual; abstract;
  27548. function InternalDiscontinuity(dwInputStreamIndex: DWORD): HResult; virtual; abstract;
  27549. function InternalAllocateStreamingResources: HResult; virtual; abstract;
  27550. function InternalFreeStreamingResources: HResult; virtual; abstract;
  27551. function InternalProcessInput(dwInputStreamIndex: DWORD; pBuffer: IMediaBuffer; dwFlags: DWORD; rtTimestamp, rtTimelength: TReferenceTime): HResult; virtual; abstract;
  27552. function InternalProcessOutput(dwFlags, cOutputBufferCount: DWORD; var pOutputBuffers: TDMOOutputDataBufferArray; out pdwStatus: DWORD): HResult; virtual; abstract;
  27553. function InternalAcceptingInput(dwInputStreamIndex: DWORD): HResult; virtual; abstract;
  27554. procedure Lock; overload; virtual;
  27555. procedure Unlock; virtual;
  27556. // Helpers
  27557. function InputTypeSet(ulInputStreamIndex: DWORD): BOOL; // const
  27558. function OutputTypeSet(ulOutputStreamIndex: DWORD): BOOL; // const
  27559. function InputType(ulInputStreamIndex: DWORD): PDMOMediaType;// const
  27560. function OutputType(ulOutputStreamIndex: DWORD): PDMOMediaType; // const
  27561. function CheckTypesSet: bool;
  27562. public
  27563. destructor Destroy; override;
  27564. procedure Initialize; override;
  27565. function GetStreamCount(out pulNumberOfInputStreams, pulNumberOfOutputStreams: DWORD): HResult; stdcall;
  27566. function GetInputStreamInfo(ulStreamIndex: DWORD; out pdwFlags: DWORD): HResult; stdcall;
  27567. function GetOutputStreamInfo(ulStreamIndex: DWORD; out pdwFlags: DWORD): HResult; stdcall;
  27568. function GetInputType(ulStreamIndex, ulTypeIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  27569. function GetOutputType(ulStreamIndex, ulTypeIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  27570. function GetInputCurrentType(ulStreamIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  27571. function GetOutputCurrentType(ulStreamIndex: DWORD; out pmt: TDMOMediaType): HResult; stdcall;
  27572. function GetInputSizeInfo(ulStreamIndex: DWORD; out pcbSize, pcbMaxLookahead, pcbAlignment: DWORD): HResult; stdcall;
  27573. function GetOutputSizeInfo(ulStreamIndex: DWORD; out pcbSize, pcbAlignment: DWORD): HResult; stdcall;
  27574. function SetInputType(ulStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult; stdcall;
  27575. function SetOutputType(ulStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult; stdcall;
  27576. function GetInputStatus(ulStreamIndex: DWORD; out pdwStatus: DWORD): HResult; stdcall;
  27577. function GetInputMaxLatency(ulStreamIndex: DWORD; out prtLatency: TReferenceTime): HResult; stdcall;
  27578. function SetInputMaxLatency(ulStreamIndex: DWORD; rtLatency: TReferenceTime): HResult; stdcall;
  27579. function Flush: HResult; stdcall;
  27580. function Discontinuity(ulStreamIndex: DWORD): HResult; stdcall;
  27581. function AllocateStreamingResources: HResult; stdcall;
  27582. function FreeStreamingResources: HResult; stdcall;
  27583. function ProcessInput(ulStreamIndex: DWORD; pBuffer: IMediaBuffer; dwFlags: DWORD; rtTimestamp, rtTimelength: TReferenceTime): HResult; stdcall;
  27584. function ProcessOutput(dwFlags, cOutputBufferCount: DWORD; var pOutputBuffers: TDMOOutputDataBufferArray; out pdwStatus: DWORD): HResult; stdcall;
  27585. function Lock(bLock: Longint): HResult; overload; stdcall;
  27586. end;
  27587. {$ENDIF}
  27588. //------------------------------------------------------------------------------
  27589. // File: iwstdec.h
  27590. //
  27591. // Desc: WST Decoder related definitions and interfaces for ActiveMovie
  27592. //
  27593. // Copyright (c) 1999 - 2001, Microsoft Corporation. All rights reserved.
  27594. //------------------------------------------------------------------------------
  27595. //
  27596. type
  27597. PAM_WST_PAGE = ^TAM_WST_PAGE;
  27598. _AM_WST_PAGE = record
  27599. dwPageNr : DWORD;
  27600. dwSubPageNr : DWORD;
  27601. pucPageData : PByte;
  27602. end;
  27603. {$EXTERNALSYM _AM_WST_PAGE}
  27604. AM_WST_PAGE = _AM_WST_PAGE;
  27605. {$EXTERNALSYM AM_WST_PAGE}
  27606. TAM_WST_PAGE = _AM_WST_PAGE;
  27607. PAM_WST_LEVEL = ^TAM_WST_LEVEL;
  27608. _AM_WST_LEVEL = (
  27609. AM_WST_LEVEL_1_5
  27610. );
  27611. {$EXTERNALSYM _AM_WST_PAGE}
  27612. AM_WST_LEVEL = _AM_WST_LEVEL;
  27613. {$EXTERNALSYM AM_WST_LEVEL}
  27614. TAM_WST_LEVEL = _AM_WST_LEVEL;
  27615. PAM_WST_SERVICE = ^TAM_WST_SERVICE;
  27616. _AM_WST_SERVICE = (
  27617. AM_WST_SERVICE_None,
  27618. AM_WST_SERVICE_Text,
  27619. AM_WST_SERVICE_IDS,
  27620. AM_WST_SERVICE_Invalid
  27621. );
  27622. {$EXTERNALSYM _AM_WST_SERVICE}
  27623. AM_WST_SERVICE = _AM_WST_SERVICE;
  27624. {$EXTERNALSYM AM_WST_SERVICE}
  27625. TAM_WST_SERVICE = _AM_WST_SERVICE;
  27626. PAM_WST_STATE = ^TAM_WST_STATE;
  27627. _AM_WST_STATE = (
  27628. AM_WST_STATE_Off,
  27629. AM_WST_STATE_On
  27630. );
  27631. {$EXTERNALSYM _AM_WST_STATE}
  27632. AM_WST_STATE = _AM_WST_STATE;
  27633. {$EXTERNALSYM AM_WST_STATE}
  27634. TAM_WST_STATE = _AM_WST_STATE;
  27635. PAM_WST_STYLE = ^TAM_WST_STYLE;
  27636. _AM_WST_STYLE = (
  27637. AM_WST_STYLE_None,
  27638. AM_WST_STYLE_Invers
  27639. );
  27640. {$EXTERNALSYM _AM_WST_STYLE}
  27641. AM_WST_STYLE = _AM_WST_STYLE;
  27642. {$EXTERNALSYM AM_WST_STYLE}
  27643. TAM_WST_STYLE = _AM_WST_STYLE;
  27644. PAM_WST_DRAWBGMODE = ^TAM_WST_DRAWBGMODE;
  27645. _AM_WST_DRAWBGMODE = (
  27646. AM_WST_DRAWBGMODE_Opaque,
  27647. AM_WST_DRAWBGMODE_Transparent
  27648. );
  27649. {$EXTERNALSYM _AM_WST_DRAWBGMODE}
  27650. AM_WST_DRAWBGMODE = _AM_WST_DRAWBGMODE;
  27651. {$EXTERNALSYM AM_WST_DRAWBGMODE}
  27652. TAM_WST_DRAWBGMODE = _AM_WST_DRAWBGMODE;
  27653. //
  27654. // WST Decoder standard COM interface
  27655. //
  27656. {$HPPEMIT 'typedef System::DelphiInterface<IAMWstDecoder> _di_IAMWstDecoder;'}
  27657. {$EXTERNALSYM IAMWstDecoder}
  27658. IAMWstDecoder = interface(IUnknown)
  27659. ['{C056DE21-75C2-11d3-A184-00105AEF9F33}']
  27660. // Decoder options to be used by apps
  27661. // What is the decoder's level
  27662. function GetDecoderLevel(out lpLevel : TAM_WST_LEVEL) : HRESULT; stdcall;
  27663. // function SetDecoderLevel(Level : TAM_WST_LEVEL) : HRESULT; stdcall;
  27664. // Which of the services is being currently used
  27665. function GetCurrentService(out lpService : TAM_WST_SERVICE) : HRESULT; stdcall;
  27666. // function SetCurrentService(Service : AM_WST_SERVICE) : HRESULT; stdcall;
  27667. // Query/Set the service state (On/Off)
  27668. // supported state values are AM_WSTState_On and AM_WSTState_Off
  27669. function GetServiceState(out lpState : TAM_WST_STATE) : HRESULT; stdcall;
  27670. function SetServiceState(State : TAM_WST_STATE) : HRESULT; stdcall;
  27671. //
  27672. // Output options to be used by downstream filters
  27673. //
  27674. // What size, bitdepth etc should the output video be
  27675. function GetOutputFormat(out lpbmih : TBITMAPINFOHEADER) : HRESULT; stdcall;
  27676. // GetOutputFormat() method, if successful, returns
  27677. // 1. S_FALSE if no output format has so far been defined by downstream filters
  27678. // 2. S_OK if an output format has already been defined by downstream filters
  27679. function SetOutputFormat(lpbmi : PBITMAPINFO) : HRESULT; stdcall;
  27680. // Specify physical color to be used in colorkeying the background
  27681. // for overlay mixing
  27682. function GetBackgroundColor(out pdwPhysColor : DWORD) : HRESULT; stdcall;
  27683. function SetBackgroundColor(dwPhysColor : DWORD) : HRESULT; stdcall;
  27684. // Specify if whole output bitmap should be redrawn for each sample
  27685. function GetRedrawAlways(out lpbOption : BOOL) : HRESULT; stdcall;
  27686. function SetRedrawAlways(bOption : BOOL) : HRESULT; stdcall;
  27687. // Specify if the caption text background should be opaque/transparent
  27688. function GetDrawBackgroundMode(out lpMode : TAM_WST_DRAWBGMODE) : HRESULT; stdcall;
  27689. function SetDrawBackgroundMode(Mode : TAM_WST_DRAWBGMODE) : HRESULT; stdcall;
  27690. // supported mode values are AM_WST_DrawBGMode_Opaque and
  27691. // AM_WST_DrawBGMode_Transparent
  27692. function SetAnswerMode(bAnswer : BOOL) : HRESULT; stdcall;
  27693. function GetAnswerMode(out pbAnswer : BOOL) : HRESULT; stdcall;
  27694. function SetHoldPage(bHoldPage : BOOL) : HRESULT; stdcall;
  27695. function GetHoldPage(out pbHoldPage : BOOL) : HRESULT; stdcall;
  27696. function GetCurrentPage(out pWstPage : TAM_WST_PAGE) : HRESULT; stdcall;
  27697. function SetCurrentPage(WstPage : AM_WST_PAGE) : HRESULT; stdcall;
  27698. end;
  27699. implementation
  27700. const
  27701. Ole32 = 'ole32.dll';
  27702. Quartz = 'quartz.dll';
  27703. MSDmo = 'msdmo.dll';
  27704. ksUser = 'Ksuser.dll';
  27705. ksProxy = 'Ksproxy.ax';
  27706. {$IFDEF DIRECTSHOW9_DYNAMIC_LINK}
  27707. var
  27708. Ole32Lib : THandle = 0;
  27709. QuartzLib : THandle = 0;
  27710. MSDmoLib : THandle = 0;
  27711. ksUserLib : THandle = 0;
  27712. ksProxyLib : THandle = 0;
  27713. { Ole32 }
  27714. _QzInitialize : function(pvReserved: Pointer): HResult; stdcall;
  27715. _QzUninitialize : procedure; stdcall;
  27716. _QzFreeUnusedLibraries : procedure; stdcall;
  27717. _QzGetMalloc : function(dwMemContext: Longint; out malloc: IMalloc): HResult; stdcall;
  27718. _QzTaskMemAlloc : function(cb: Longint): Pointer; stdcall;
  27719. _QzTaskMemRealloc : function(pv: Pointer; cb: Longint): Pointer; stdcall;
  27720. _QzTaskMemFree : procedure(pv: Pointer); stdcall;
  27721. _QzCreateFilterObject : function(const clsid: TCLSID; unkOuter: IUnknown; dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
  27722. _QzCLSIDFromString : function(psz: POleStr; out clsid: TCLSID): HResult; stdcall;
  27723. _QzStringFromGUID2 : function(const guid: TGUID; psz: POleStr; cbMax: Integer): Integer; stdcall;
  27724. { Quartz }
  27725. _AMGetErrorTextA: function(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  27726. _AMGetErrorTextW: function(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  27727. // [pjh, 2003-07-14] ANSI and UNICODE declaration exchange
  27728. {$IFDEF UNICODE}
  27729. _AMGetErrorText: function(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  27730. {$ELSE}
  27731. _AMGetErrorText: function(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  27732. {$ENDIF}
  27733. { MSDmo }
  27734. _DMORegister : function(szName: PWideChar; const clsidDMO, guidCategory: TGUID; dwFlags: DWORD; cInTypes: DWORD; const pInTypes: PDMO_PARTIAL_MEDIATYPE; cOutTypes: DWORD; const pOutTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  27735. _DMOUnregister : function(const clsidDMO, guidCategory: TGUID): HResult; stdcall;
  27736. _DMOEnum : function(const guidCategory: TGUID; dwFlags: DWORD; cInTypes: DWORD; pInTypes: PDMO_PARTIAL_MEDIATYPE; cOutTypes: DWORD; pOutTypes: PDMO_PARTIAL_MEDIATYPE; out ppEnum: IEnumDMO): HResult; stdcall;
  27737. _DMOGetTypes : function(const clsidDMO: TGUID; ulInputTypesRequested: ULONG; pulInputTypesSupplied: PULONG; pInputTypes: PDMO_PARTIAL_MEDIATYPE; ulOutputTypesRequested: ULONG; pulOutputTypesSupplied: PULONG; pOutputTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  27738. _DMOGetName : function(const clsidDMO: TGUID; szName: TDMOName): HResult; stdcall;
  27739. _MoInitMediaType : function(pmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  27740. _MoFreeMediaType : function(pmt: PDMOMediaType): HResult; stdcall;
  27741. _MoCopyMediaType : function(out pmtDest: TDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  27742. _MoCreateMediaType : function(out ppmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  27743. _MoDeleteMediaType : function(pmt: PDMOMediaType): HResult; stdcall;
  27744. _MoDuplicateMediaType : function(out ppmtDest: PDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  27745. { KsUser }
  27746. _KsCreateAllocator : function(ConnectionHandle: THandle; AllocatorFraming: PKSAllocatorFraming; out AllocatorHandle: PHandle): DWORD; stdcall;
  27747. _KsCreateClock : function(ConnectionHandle: THandle; ClockCreate: PKSClockCreate; out ClockHandle: PHandle): DWORD; stdcall;
  27748. _KsCreatePin : function(FilterHandle: THandle; Connect: PKSPinConnect; DesiredAccess: ACCESS_MASK; out ConnectionHandle: PHandle): DWORD; stdcall;
  27749. _KsCreateTopologyNode : function(ParentHandle: THandle; NodeCreate: PKSNodeCreate; DesiredAccess: ACCESS_MASK; out NodeHandle: PHandle): DWORD; stdcall;
  27750. { KsProxy }
  27751. _KsResolveRequiredAttributes : function(DataRange: PKSDATARANGE; Attributes: PKSMULTIPLE_ITEM): HResult; stdcall;
  27752. _KsOpenDefaultDevice : function(Category: TGUID; Access: ACCESS_MASK; DeviceHandle: PHANDLE): HResult; stdcall;
  27753. _KsSynchronousDeviceControl : function(Handle: THandle; IoControl: ULONG; InBuffer: Pointer; InLength: ULONG; OutBuffer: Pointer; OutLength: ULONG; BytesReturned: PULONG): HResult; stdcall;
  27754. _KsGetMultiplePinFactoryItems : function(FilterHandle: THandle; PinFactoryId: ULONG; PropertyId: ULONG; Items: Pointer): HResult; stdcall;
  27755. _KsGetMediaTypeCount : function(FilterHandle: THandle; PinFactoryId: ULONG; out MediaTypeCount: ULONG): HResult; stdcall;
  27756. _KsGetMediaType : function(Position: integer; out AmMediaType: TAMMediaType; FilterHandle: THandle; PinFactoryId: ULONG): HResult; stdcall;
  27757. { Ole32 }
  27758. function Ole32Loaded: Boolean;
  27759. begin
  27760. Result := ole32Lib <> 0;
  27761. end;
  27762. function UnLoadOle32: Boolean;
  27763. begin
  27764. Result:= True;
  27765. if Ole32Loaded then
  27766. begin
  27767. Result := FreeLibrary(Ole32Lib);
  27768. _QzInitialize := nil;
  27769. _QzUninitialize := nil;
  27770. _QzFreeUnusedLibraries := nil;
  27771. _QzGetMalloc := nil;
  27772. _QzTaskMemAlloc := nil;
  27773. _QzTaskMemRealloc := nil;
  27774. _QzTaskMemFree := nil;
  27775. _QzCreateFilterObject := nil;
  27776. _QzCLSIDFromString := nil;
  27777. _QzStringFromGUID2 := nil;
  27778. Ole32Lib := 0;
  27779. end;
  27780. end;
  27781. function LoadOle32: Boolean;
  27782. begin
  27783. Result := Ole32Loaded;
  27784. if (not Result) then
  27785. begin
  27786. Ole32Lib := LoadLibrary(Ole32);
  27787. if Ole32Loaded then
  27788. begin
  27789. _QzInitialize := GetProcAddress(Ole32Lib, 'CoInitialize');
  27790. _QzUninitialize := GetProcAddress(Ole32Lib, 'CoUninitialize');
  27791. _QzFreeUnusedLibraries := GetProcAddress(Ole32Lib, 'CoFreeUnusedLibraries');
  27792. _QzGetMalloc := GetProcAddress(Ole32Lib, 'CoGetMalloc');
  27793. _QzTaskMemAlloc := GetProcAddress(Ole32Lib, 'CoTaskMemAlloc');
  27794. _QzTaskMemRealloc := GetProcAddress(Ole32Lib, 'CoTaskMemRealloc');
  27795. _QzTaskMemFree := GetProcAddress(Ole32Lib, 'CoTaskMemFree');
  27796. _QzCreateFilterObject := GetProcAddress(Ole32Lib, 'CoCreateInstance');
  27797. _QzCLSIDFromString := GetProcAddress(Ole32Lib, 'CLSIDFromString');
  27798. _QzStringFromGUID2 := GetProcAddress(Ole32Lib, 'StringFromGUID2');
  27799. Result:= Assigned(_QzInitialize) and Assigned(_QzUninitialize) and
  27800. Assigned(_QzFreeUnusedLibraries) and Assigned(_QzGetMalloc) and
  27801. Assigned(_QzTaskMemAlloc) and Assigned(_QzTaskMemRealloc) and
  27802. Assigned(_QzTaskMemFree) and Assigned(_QzCreateFilterObject) and
  27803. Assigned(_QzCLSIDFromString) and Assigned(_QzStringFromGUID2);
  27804. if not Result then UnLoadOle32;
  27805. end;
  27806. end;
  27807. end;
  27808. function QzInitialize(pvReserved: Pointer): HResult; stdcall;
  27809. begin
  27810. LoadOle32;
  27811. Result := _QzInitialize(pvReserved);
  27812. end;
  27813. procedure QzUninitialize; stdcall;
  27814. begin
  27815. LoadOle32;
  27816. _QzUninitialize;
  27817. end;
  27818. procedure QzFreeUnusedLibraries; stdcall;
  27819. begin
  27820. LoadOle32;
  27821. _QzFreeUnusedLibraries;
  27822. end;
  27823. function QzGetMalloc(dwMemContext: Longint; out malloc: IMalloc): HResult; stdcall;
  27824. begin
  27825. LoadOle32;
  27826. Result := _QzGetMalloc(dwMemContext, malloc);
  27827. end;
  27828. function QzTaskMemAlloc(cb: Longint): Pointer; stdcall;
  27829. begin
  27830. LoadOle32;
  27831. Result := _QzTaskMemAlloc(cb);
  27832. end;
  27833. function QzTaskMemRealloc(pv: Pointer; cb: Longint): Pointer; stdcall;
  27834. begin
  27835. LoadOle32;
  27836. Result := _QzTaskMemRealloc(pv, cb);
  27837. end;
  27838. procedure QzTaskMemFree(pv: Pointer); stdcall;
  27839. begin
  27840. LoadOle32;
  27841. _QzTaskMemFree(pv);
  27842. end;
  27843. function QzCreateFilterObject(const clsid: TCLSID; unkOuter: IUnknown;
  27844. dwClsContext: Longint; const iid: TIID; out pv): HResult; stdcall;
  27845. begin
  27846. LoadOle32;
  27847. Result := _QzCreateFilterObject(clsid, unkOuter, dwClsContext, iid, pv);
  27848. end;
  27849. function QzCLSIDFromString(psz: POleStr; out clsid: TCLSID): HResult; stdcall;
  27850. begin
  27851. LoadOle32;
  27852. Result := _QzCLSIDFromString(psz, clsid);
  27853. end;
  27854. function QzStringFromGUID2(const guid: TGUID; psz: POleStr; cbMax: Integer): Integer; stdcall;
  27855. begin
  27856. LoadOle32;
  27857. Result := _QzStringFromGUID2(guid, psz, cbMax);
  27858. end;
  27859. { Quartz }
  27860. function QuartzLoaded: Boolean;
  27861. begin
  27862. Result := QuartzLib <> 0;
  27863. end;
  27864. function UnLoadQuartz: Boolean;
  27865. begin
  27866. Result:= True;
  27867. if QuartzLoaded then
  27868. begin
  27869. Result := FreeLibrary(QuartzLib);
  27870. _AMGetErrorTextA := nil;
  27871. _AMGetErrorTextW := nil;
  27872. _AMGetErrorText := nil;
  27873. QuartzLib := 0;
  27874. end;
  27875. end;
  27876. function LoadQuartz: Boolean;
  27877. begin
  27878. Result := QuartzLoaded;
  27879. if (not Result) then
  27880. begin
  27881. QuartzLib := LoadLibrary(Quartz);
  27882. if QuartzLoaded then
  27883. begin
  27884. _AMGetErrorTextA := GetProcAddress(QuartzLib, 'AMGetErrorTextA');
  27885. _AMGetErrorTextW := GetProcAddress(QuartzLib, 'AMGetErrorTextW');
  27886. // [pjh, 2003-07-14] ANSI and UNICODE declaration exchange
  27887. {$IFDEF UNICODE}
  27888. _AMGetErrorText := _AMGetErrorTextW;
  27889. {$ELSE}
  27890. _AMGetErrorText := _AMGetErrorTextA;
  27891. {$ENDIF}
  27892. Result:= Assigned(_AMGetErrorTextA) and Assigned(_AMGetErrorTextW);
  27893. if not Result then UnLoadQuartz;
  27894. end;
  27895. end;
  27896. end;
  27897. function AMGetErrorTextA(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  27898. begin
  27899. LoadQuartz;
  27900. Result := _AMGetErrorTextA(hr, pbuffer, MaxLen);
  27901. end;
  27902. function AMGetErrorTextW(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  27903. begin
  27904. LoadQuartz;
  27905. Result := _AMGetErrorTextW(hr, pbuffer, MaxLen);
  27906. end;
  27907. // [pjh, 2003-07-14] ANSI and UNICODE declaration exchange
  27908. {$IFDEF UNICODE}
  27909. function AMGetErrorText(hr: HResult; pbuffer: PWideChar; MaxLen: DWORD): DWORD; stdcall;
  27910. {$ELSE}
  27911. function AMGetErrorText(hr: HResult; pbuffer: PChar; MaxLen: DWORD): DWORD; stdcall;
  27912. {$ENDIF}
  27913. begin
  27914. LoadQuartz;
  27915. Result := _AMGetErrorText(hr, pbuffer, MaxLen);
  27916. end;
  27917. { MSDmo }
  27918. function MSDmoLoaded: Boolean;
  27919. begin
  27920. Result := MSDmoLib <> 0;
  27921. end;
  27922. function UnLoadMSDmo: Boolean;
  27923. begin
  27924. Result:= True;
  27925. if MSDmoLoaded then
  27926. begin
  27927. Result := FreeLibrary(MSDmoLib);
  27928. _DMORegister := nil;
  27929. _DMOEnum := nil;
  27930. _DMOUnregister := nil;
  27931. _DMOGetTypes := nil;
  27932. _DMOGetName := nil;
  27933. _MoInitMediaType := nil;
  27934. _MoFreeMediaType := nil;
  27935. _MoCopyMediaType := nil;
  27936. _MoCreateMediaType := nil;
  27937. _MoDeleteMediaType := nil;
  27938. _MoDuplicateMediaType := nil;
  27939. MSDmoLib := 0;
  27940. end;
  27941. end;
  27942. function LoadMSDmo: Boolean;
  27943. begin
  27944. Result := MSDmoLoaded;
  27945. if (not Result) then
  27946. begin
  27947. MSDmoLib := LoadLibrary(MSDmo);
  27948. if MSDmoLoaded then
  27949. begin
  27950. _DMORegister := GetProcAddress(MSDmoLib, 'DMORegister');
  27951. _DMOEnum := GetProcAddress(MSDmoLib, 'DMOEnum');
  27952. _DMOUnregister := GetProcAddress(MSDmoLib, 'DMOUnregister');
  27953. _DMOGetTypes := GetProcAddress(MSDmoLib, 'DMOGetTypes');
  27954. _DMOGetName := GetProcAddress(MSDmoLib, 'DMOGetName');
  27955. _MoInitMediaType := GetProcAddress(MSDmoLib, 'MoInitMediaType');
  27956. _MoFreeMediaType := GetProcAddress(MSDmoLib, 'MoFreeMediaType');
  27957. _MoCopyMediaType := GetProcAddress(MSDmoLib, 'MoCopyMediaType');
  27958. _MoCreateMediaType := GetProcAddress(MSDmoLib, 'MoCreateMediaType');
  27959. _MoDeleteMediaType := GetProcAddress(MSDmoLib, 'MoDeleteMediaType');
  27960. _MoDuplicateMediaType := GetProcAddress(MSDmoLib, 'MoDuplicateMediaType');
  27961. Result:= Assigned(_DMORegister) and Assigned(_DMOEnum) and
  27962. Assigned(_DMOUnregister) and Assigned(_DMOGetTypes) and
  27963. Assigned(_DMOGetName) and Assigned(_MoInitMediaType) and
  27964. Assigned(_MoFreeMediaType) and Assigned(_MoCopyMediaType) and
  27965. Assigned(_MoCreateMediaType) and Assigned(_MoDeleteMediaType) and
  27966. Assigned(_MoDuplicateMediaType);
  27967. if not Result then UnLoadMSDmo;
  27968. end;
  27969. end;
  27970. end;
  27971. function DMORegister(szName: PWideChar; const clsidDMO, guidCategory: TGUID; dwFlags: DWORD;
  27972. cInTypes: DWORD; const pInTypes: PDMO_PARTIAL_MEDIATYPE; cOutTypes: DWORD;
  27973. const pOutTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  27974. begin
  27975. LoadMSDmo;
  27976. Result := _DMORegister(szName, clsidDMO, guidCategory, dwFlags, cInTypes,
  27977. pInTypes, cOutTypes, pOutTypes);
  27978. end;
  27979. function DMOUnregister(const clsidDMO, guidCategory: TGUID): HResult; stdcall;
  27980. begin
  27981. LoadMSDmo;
  27982. Result := _DMOUnregister(clsidDMO, guidCategory);
  27983. end;
  27984. function DMOEnum(const guidCategory: TGUID; dwFlags: DWORD; cInTypes: DWORD;
  27985. pInTypes: PDMO_PARTIAL_MEDIATYPE; cOutTypes: DWORD;
  27986. pOutTypes: PDMO_PARTIAL_MEDIATYPE; out ppEnum: IEnumDMO): HResult; stdcall;
  27987. begin
  27988. LoadMSDmo;
  27989. Result := _DMOEnum(guidCategory, dwFlags, cInTypes, pInTypes, cOutTypes, pOutTypes, ppEnum);
  27990. end;
  27991. function DMOGetTypes(const clsidDMO: TGUID; ulInputTypesRequested: ULONG;
  27992. pulInputTypesSupplied: PULONG; pInputTypes: PDMO_PARTIAL_MEDIATYPE;
  27993. ulOutputTypesRequested: ULONG; pulOutputTypesSupplied: PULONG;
  27994. pOutputTypes: PDMO_PARTIAL_MEDIATYPE): HResult; stdcall;
  27995. begin
  27996. LoadMSDmo;
  27997. Result := _DMOGetTypes(clsidDMO, ulInputTypesRequested, pulInputTypesSupplied,
  27998. pInputTypes, ulOutputTypesRequested, pulOutputTypesSupplied, pOutputTypes);
  27999. end;
  28000. function DMOGetName(const clsidDMO: TGUID; szName: TDMOName): HResult; stdcall;
  28001. begin
  28002. LoadMSDmo;
  28003. Result := _DMOGetName(clsidDMO, szName);
  28004. end;
  28005. function MoInitMediaType(pmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  28006. begin
  28007. LoadMSDmo;
  28008. Result := _MoInitMediaType(pmt, cbFormat);
  28009. end;
  28010. function MoFreeMediaType(pmt: PDMOMediaType): HResult; stdcall;
  28011. begin
  28012. LoadMSDmo;
  28013. Result := _MoFreeMediaType(pmt);
  28014. end;
  28015. function MoCopyMediaType(out pmtDest: TDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  28016. begin
  28017. LoadMSDmo;
  28018. Result := _MoCopyMediaType(pmtDest, pmtSrc);
  28019. end;
  28020. function MoCreateMediaType(out ppmt: PDMOMediaType; cbFormat: DWORD): HResult; stdcall;
  28021. begin
  28022. LoadMSDmo;
  28023. Result := _MoCreateMediaType(ppmt, cbFormat);
  28024. end;
  28025. function MoDeleteMediaType(pmt: PDMOMediaType): HResult; stdcall;
  28026. begin
  28027. LoadMSDmo;
  28028. Result := _MoDeleteMediaType(pmt);
  28029. end;
  28030. function MoDuplicateMediaType(out ppmtDest: PDMOMediaType; const pmtSrc: PDMOMediaType): HResult; stdcall;
  28031. begin
  28032. LoadMSDmo;
  28033. Result := _MoDuplicateMediaType(ppmtDest, pmtSrc);
  28034. end;
  28035. { ksUser }
  28036. function ksUserLoaded: Boolean;
  28037. begin
  28038. Result := ksUserLib <> 0;
  28039. end;
  28040. function UnLoadksUser: Boolean;
  28041. begin
  28042. Result:= True;
  28043. if ksUserLoaded then
  28044. begin
  28045. Result := FreeLibrary(ksUserLib);
  28046. _KsCreateAllocator := nil;
  28047. _KsCreateClock := nil;
  28048. _KsCreatePin := nil;
  28049. _KsCreateTopologyNode := nil;
  28050. ksUserLib := 0;
  28051. end;
  28052. end;
  28053. function LoadksUser: Boolean;
  28054. begin
  28055. Result := ksUserLoaded;
  28056. if (not Result) then
  28057. begin
  28058. ksUserLib := LoadLibrary(ksUser);
  28059. if ksUserLoaded then
  28060. begin
  28061. _KsCreateAllocator := GetProcAddress(ksUserLib, 'KsCreateAllocator');
  28062. _KsCreateClock := GetProcAddress(ksUserLib, 'KsCreateClock');
  28063. _KsCreatePin := GetProcAddress(ksUserLib, 'KsCreatePin');
  28064. _KsCreateTopologyNode := GetProcAddress(ksUserLib, 'KsCreateTopologyNode');
  28065. Result:=
  28066. Assigned(_KsCreateAllocator) and Assigned(_KsCreateClock) and
  28067. Assigned(_KsCreatePin) and Assigned(_KsCreateTopologyNode);
  28068. if not Result then UnLoadksUser;
  28069. end;
  28070. end;
  28071. end;
  28072. function KsCreateAllocator(ConnectionHandle: THandle; AllocatorFraming: PKSAllocatorFraming; out AllocatorHandle: PHandle): DWORD; stdcall;
  28073. begin
  28074. LoadksUser;
  28075. Result := _KsCreateAllocator(ConnectionHandle, AllocatorFraming, AllocatorHandle);
  28076. end;
  28077. function KsCreateClock(ConnectionHandle: THandle; ClockCreate: PKSClockCreate; out ClockHandle: PHandle): DWORD; stdcall;
  28078. begin
  28079. LoadksUser;
  28080. Result := _KsCreateClock(ConnectionHandle, ClockCreate, ClockHandle);
  28081. end;
  28082. function KsCreatePin(FilterHandle: THandle; Connect: PKSPinConnect; DesiredAccess: ACCESS_MASK; out ConnectionHandle: PHandle): DWORD; stdcall;
  28083. begin
  28084. LoadksUser;
  28085. Result := _KsCreatePin(FilterHandle, Connect, DesiredAccess, ConnectionHandle);
  28086. end;
  28087. function KsCreateTopologyNode(ParentHandle: THandle; NodeCreate: PKSNodeCreate; DesiredAccess: ACCESS_MASK; out NodeHandle: PHandle): DWORD; stdcall;
  28088. begin
  28089. LoadksUser;
  28090. Result := _KsCreateTopologyNode(ParentHandle, NodeCreate, DesiredAccess, NodeHandle);
  28091. end;
  28092. { KsProxy }
  28093. function KsProxyLoaded: Boolean;
  28094. begin
  28095. Result := ksProxyLib <> 0;
  28096. end;
  28097. function UnLoadKsProxy: Boolean;
  28098. begin
  28099. Result:= True;
  28100. if KsProxyLoaded then
  28101. begin
  28102. Result := FreeLibrary(KsProxyLib);
  28103. _KsResolveRequiredAttributes := nil;
  28104. _KsOpenDefaultDevice := nil;
  28105. _KsSynchronousDeviceControl := nil;
  28106. _KsGetMultiplePinFactoryItems := nil;
  28107. _KsGetMediaTypeCount := nil;
  28108. _KsGetMediaType := nil;
  28109. KsProxyLib := 0;
  28110. end;
  28111. end;
  28112. function LoadKsProxy: Boolean;
  28113. begin
  28114. Result := KsProxyLoaded;
  28115. if (not Result) then
  28116. begin
  28117. KsProxyLib := LoadLibrary(KsProxy);
  28118. if KsProxyLoaded then
  28119. begin
  28120. _KsResolveRequiredAttributes := GetProcAddress(KsProxyLib, 'KsResolveRequiredAttributes');
  28121. _KsOpenDefaultDevice := GetProcAddress(KsProxyLib, 'KsOpenDefaultDevice');
  28122. _KsSynchronousDeviceControl := GetProcAddress(KsProxyLib, 'KsSynchronousDeviceControl');
  28123. _KsGetMultiplePinFactoryItems := GetProcAddress(KsProxyLib, 'KsGetMultiplePinFactoryItems');
  28124. _KsGetMediaTypeCount := GetProcAddress(KsProxyLib, 'KsGetMediaTypeCount');
  28125. _KsGetMediaType := GetProcAddress(KsProxyLib, 'KsGetMediaType');
  28126. Result:= Assigned(_KsResolveRequiredAttributes) and Assigned(_KsOpenDefaultDevice) and
  28127. Assigned(_KsSynchronousDeviceControl) and Assigned(_KsGetMultiplePinFactoryItems) and
  28128. Assigned(_KsGetMediaTypeCount) and Assigned(_KsGetMediaType);
  28129. if not Result then UnLoadKsProxy;
  28130. end;
  28131. end;
  28132. end;
  28133. function KsResolveRequiredAttributes(DataRange: PKSDATARANGE; Attributes: PKSMULTIPLE_ITEM): HResult; stdcall;
  28134. begin
  28135. LoadKsProxy;
  28136. Result := _KsResolveRequiredAttributes(DataRange, Attributes);
  28137. end;
  28138. function KsOpenDefaultDevice(Category: TGUID; Access: ACCESS_MASK; DeviceHandle: PHANDLE): HResult; stdcall;
  28139. begin
  28140. LoadKsProxy;
  28141. Result := _KsOpenDefaultDevice(Category, Access, DeviceHandle);
  28142. end;
  28143. function KsSynchronousDeviceControl(Handle: THandle; IoControl: ULONG; InBuffer: Pointer; InLength: ULONG; OutBuffer: Pointer; OutLength: ULONG; BytesReturned: PULONG): HResult; stdcall;
  28144. begin
  28145. LoadKsProxy;
  28146. Result := _KsSynchronousDeviceControl(Handle, IoControl, InBuffer, InLength, OutBuffer, OutLength, BytesReturned);
  28147. end;
  28148. function KsGetMultiplePinFactoryItems(FilterHandle: THandle; PinFactoryId: ULONG; PropertyId: ULONG; Items: Pointer): HResult; stdcall;
  28149. begin
  28150. LoadKsProxy;
  28151. Result := _KsGetMultiplePinFactoryItems(FilterHandle, PinFactoryId, PropertyId, Items);
  28152. end;
  28153. function KsGetMediaTypeCount(FilterHandle: THandle; PinFactoryId: ULONG; out MediaTypeCount: ULONG): HResult; stdcall;
  28154. begin
  28155. LoadKsProxy;
  28156. Result := _KsGetMediaTypeCount(FilterHandle, PinFactoryId, MediaTypeCount);
  28157. end;
  28158. function KsGetMediaType(Position: integer; out AmMediaType: TAMMediaType; FilterHandle: THandle; PinFactoryId: ULONG): HResult; stdcall;
  28159. begin
  28160. LoadKsProxy;
  28161. Result := _KsGetMediaType(Position, AmMediaType, FilterHandle, PinFactoryId);
  28162. end;
  28163. {$ELSE}
  28164. function QzInitialize; external ole32 name 'CoInitialize';
  28165. procedure QzUninitialize; external ole32 name 'CoUninitialize';
  28166. procedure QzFreeUnusedLibraries; external ole32 name 'CoFreeUnusedLibraries';
  28167. function QzGetMalloc; external ole32 name 'CoGetMalloc';
  28168. function QzTaskMemAlloc; external ole32 name 'CoTaskMemAlloc';
  28169. function QzTaskMemRealloc; external ole32 name 'CoTaskMemRealloc';
  28170. procedure QzTaskMemFree; external ole32 name 'CoTaskMemFree';
  28171. function QzCreateFilterObject; external ole32 name 'CoCreateInstance';
  28172. function QzCLSIDFromString; external ole32 name 'CLSIDFromString';
  28173. function QzStringFromGUID2; external ole32 name 'StringFromGUID2';
  28174. function AMGetErrorTextA; external quartz name 'AMGetErrorTextA';
  28175. function AMGetErrorTextW; external quartz name 'AMGetErrorTextW';
  28176. function AMGetErrorText; external quartz name {$IFDEF UNICODE}'AMGetErrorTextW'{$ELSE}'AMGetErrorTextA'{$ENDIF};
  28177. function DMORegister ; external msdmo name 'DMORegister';
  28178. function DMOUnregister ; external msdmo name 'DMOUnregister';
  28179. function DMOEnum ; external msdmo name 'DMOEnum';
  28180. function DMOGetTypes ; external msdmo name 'DMOGetTypes';
  28181. function DMOGetName ; external msdmo name 'DMOGetName';
  28182. function MoInitMediaType ; external msdmo name 'MoInitMediaType';
  28183. function MoFreeMediaType ; external msdmo name 'MoFreeMediaType';
  28184. function MoCopyMediaType ; external msdmo name 'MoCopyMediaType';
  28185. function MoCreateMediaType ; external msdmo name 'MoCreateMediaType';
  28186. function MoDeleteMediaType ; external msdmo name 'MoDeleteMediaType';
  28187. function MoDuplicateMediaType; external msdmo name 'MoDuplicateMediaType';
  28188. function KsCreateAllocator ; external ksuser name 'KsCreateAllocator';
  28189. function KsCreateClock ; external ksuser name 'KsCreateClock';
  28190. function KsCreatePin ; external ksuser name 'KsCreatePin';
  28191. function KsCreateTopologyNode; external ksuser name 'KsCreateTopologyNode';
  28192. function KsGetMediaType ; external ksproxy name 'KsGetMediaType';
  28193. function KsGetMediaTypeCount ; external ksproxy name 'KsGetMediaTypeCount';
  28194. function KsGetMultiplePinFactoryItems; external ksproxy name 'KsGetMultiplePinFactoryItems';
  28195. function KsOpenDefaultDevice ; external ksproxy name 'KsOpenDefaultDevice';
  28196. function KsResolveRequiredAttributes ; external ksproxy name 'KsResolveRequiredAttributes';
  28197. function KsSynchronousDeviceControl ; external ksproxy name 'KsSynchronousDeviceControl';
  28198. {$ENDIF}
  28199. {$IFDEF DELPHI4_UP}
  28200. ////////////////////////////////////////////////////////////////////////////////
  28201. //
  28202. // TMediaObjectImpl
  28203. //
  28204. ///////////////////////////////////////////////////////////////////////////////
  28205. type
  28206. ILockIt = interface
  28207. end;
  28208. TLockIt = class(TInterfacedObject, ILockIt)
  28209. private
  28210. FMOI: TMediaObjectImpl;
  28211. public
  28212. constructor Create(MOI: TMediaObjectImpl);
  28213. destructor Destroy; override;
  28214. end;
  28215. constructor TLockIt.Create(MOI: TMediaObjectImpl);
  28216. begin
  28217. FMOI := MOI;
  28218. FMOI.Lock;
  28219. end;
  28220. destructor TLockIt.Destroy;
  28221. begin
  28222. FMOI.Unlock;
  28223. FMOI := nil;
  28224. end;
  28225. //===================================================================
  28226. // Helpers
  28227. function TMediaObjectImpl.InputTypeSet(ulInputStreamIndex: DWORD): BOOL;
  28228. begin
  28229. ASSERT(ulInputStreamIndex < NUMBEROFINPUTS);
  28230. Result := (0 <> m_InputInfo[ulInputStreamIndex].fTypeSet);
  28231. end;
  28232. function TMediaObjectImpl.OutputTypeSet(ulOutputStreamIndex: DWORD): BOOL;
  28233. begin
  28234. ASSERT(ulOutputStreamIndex < NUMBEROFOUTPUTS);
  28235. Result := (0 <> m_OutputInfo[ulOutputStreamIndex].fTypeSet);
  28236. end;
  28237. function TMediaObjectImpl.InputType(ulInputStreamIndex: DWORD): PDMOMediaType;
  28238. begin
  28239. if (not InputTypeSet(ulInputStreamIndex)) then Result := nil
  28240. else Result := @m_InputInfo[ulInputStreamIndex].CurrentMediaType;
  28241. end;
  28242. function TMediaObjectImpl.OutputType(ulOutputStreamIndex: DWORD): PDMOMediaType;
  28243. begin
  28244. if (not OutputTypeSet(ulOutputStreamIndex)) then Result := nil
  28245. else Result := @m_OutputInfo[ulOutputStreamIndex].CurrentMediaType;
  28246. end;
  28247. function TMediaObjectImpl.CheckTypesSet: bool;
  28248. var
  28249. dw: Integer;
  28250. dwFlags: DWORD;
  28251. begin
  28252. m_fTypesSet := False;
  28253. for dw := 0 to (NUMBEROFINPUTS - 1) do
  28254. begin
  28255. if (not InputTypeSet(dw)) then
  28256. begin
  28257. Result := False;
  28258. Exit;
  28259. end;
  28260. end;
  28261. for dw := 0 to (NUMBEROFOUTPUTS - 1) do
  28262. begin
  28263. if (not OutputTypeSet(dw)) then
  28264. begin
  28265. // Check if it's optional
  28266. {$IFDEF DEBUG}
  28267. dwFlags := $FFFFFFFF;
  28268. {$ENDIF}
  28269. InternalGetOutputStreamInfo(dw, dwFlags);
  28270. ASSERT(0 = (dwFlags and not (DMO_OUTPUT_STREAMF_WHOLE_SAMPLES or
  28271. DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER or
  28272. DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE or
  28273. DMO_OUTPUT_STREAMF_DISCARDABLE or
  28274. DMO_OUTPUT_STREAMF_OPTIONAL)));
  28275. if not ((dwFlags and DMO_OUTPUT_STREAMF_OPTIONAL) <> 0) then
  28276. begin
  28277. Result := False;
  28278. Exit;
  28279. end;
  28280. end;
  28281. end;
  28282. m_fTypesSet := True;
  28283. Result := True;
  28284. end;
  28285. procedure TMediaObjectImpl.Initialize;
  28286. begin
  28287. inherited;
  28288. Assert((NUMBEROFINPUTS <> 0) or (NUMBEROFOUTPUTS <> 0),'NUMBEROFINPUTS or NUMBEROFOUTPUTS = 0');
  28289. m_fTypesSet := False;
  28290. m_fFlushed := True;
  28291. m_fResourcesAllocated := False;
  28292. SetLength(m_InputInfo, NUMBEROFINPUTS);
  28293. SetLength(m_OutputInfo, NUMBEROFOUTPUTS);
  28294. ZeroMemory(m_InputInfo, SizeOf(TMOinplIOInfo)*NUMBEROFINPUTS);
  28295. ZeroMemory(m_OutputInfo, SizeOf(TMOinplIOInfo)*NUMBEROFOUTPUTS);
  28296. fCritSection:= TCriticalSection.Create;
  28297. end;
  28298. destructor TMediaObjectImpl.Destroy;
  28299. var
  28300. dwCurrentType: Integer;
  28301. begin
  28302. for dwCurrentType := 0 to (NUMBEROFINPUTS - 1) do
  28303. begin
  28304. if (InputTypeSet(dwCurrentType)) then
  28305. MoFreeMediaType(@m_InputInfo[dwCurrentType].CurrentMediaType);
  28306. end;
  28307. for dwCurrentType := 0 to (NUMBEROFOUTPUTS - 1) do
  28308. begin
  28309. if (OutputTypeSet(dwCurrentType)) then
  28310. MoFreeMediaType(@m_OutputInfo[dwCurrentType].CurrentMediaType);
  28311. end;
  28312. fCritSection.Free;
  28313. inherited Destroy;
  28314. end;
  28315. //
  28316. // IMediaObject methods
  28317. //
  28318. function TMediaObjectImpl.GetStreamCount(out pulNumberOfInputStreams, pulNumberOfOutputStreams: DWORD): HResult;
  28319. var
  28320. lck: ILockIt;
  28321. begin
  28322. lck := TLockIt.Create(Self);
  28323. pulNumberOfInputStreams := NUMBEROFINPUTS;
  28324. pulNumberOfOutputStreams := NUMBEROFOUTPUTS;
  28325. Result := S_OK;
  28326. end;
  28327. function TMediaObjectImpl.GetInputStreamInfo(ulStreamIndex: DWORD; out pdwFlags: DWORD): HResult;
  28328. var
  28329. lck: ILockIt;
  28330. begin
  28331. lck := TLockIt.Create(Self);
  28332. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28333. begin
  28334. {$IFDEF VER120}
  28335. Result := DMO_E_INVALIDSTREAMINDEX;
  28336. {$ELSE}
  28337. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28338. {$ENDIF}
  28339. Exit;
  28340. end;
  28341. if (@pdwFlags = nil) then
  28342. begin
  28343. Result := E_POINTER;
  28344. Exit;
  28345. end;
  28346. Result := InternalGetInputStreamInfo(ulStreamIndex, pdwFlags);
  28347. ASSERT(0 = (pdwFlags and not (DMO_INPUT_STREAMF_WHOLE_SAMPLES or
  28348. DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER or
  28349. DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE or
  28350. DMO_INPUT_STREAMF_HOLDS_BUFFERS)));
  28351. end;
  28352. function TMediaObjectImpl.GetOutputStreamInfo(ulStreamIndex: DWORD; out pdwFlags: DWORD): HResult;
  28353. var
  28354. lck: ILockIt;
  28355. begin
  28356. lck:= TLockIt.Create(Self);
  28357. if (ulStreamIndex >= NUMBEROFOUTPUTS) then
  28358. begin
  28359. {$IFDEF VER120}
  28360. Result := DMO_E_INVALIDSTREAMINDEX;
  28361. {$ELSE}
  28362. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28363. {$ENDIF}
  28364. Exit;
  28365. end;
  28366. if (@pdwFlags = nil) then
  28367. begin
  28368. Result := E_POINTER;
  28369. Exit;
  28370. end;
  28371. Result := InternalGetOutputStreamInfo(ulStreamIndex, pdwFlags);
  28372. ASSERT(0 = (pdwFlags and not(DMO_OUTPUT_STREAMF_WHOLE_SAMPLES or
  28373. DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER or
  28374. DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE or
  28375. DMO_OUTPUT_STREAMF_DISCARDABLE or
  28376. DMO_OUTPUT_STREAMF_OPTIONAL)));
  28377. end;
  28378. function TMediaObjectImpl.GetInputType(ulStreamIndex, ulTypeIndex: DWORD;
  28379. out pmt: TDMOMediaType): HResult;
  28380. var
  28381. lck: ILockIt;
  28382. begin
  28383. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28384. begin
  28385. {$IFDEF VER120}
  28386. Result := DMO_E_INVALIDSTREAMINDEX;
  28387. {$ELSE}
  28388. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28389. {$ENDIF}
  28390. Exit;
  28391. end;
  28392. lck:= TLockIt.Create(Self);
  28393. Result := InternalGetInputType(ulStreamIndex, ulTypeIndex, pmt);
  28394. end;
  28395. function TMediaObjectImpl.GetOutputType(ulStreamIndex, ulTypeIndex: DWORD;
  28396. out pmt: TDMOMediaType): HResult; stdcall;
  28397. var
  28398. lck: ILockIt;
  28399. begin
  28400. if (ulStreamIndex >= NUMBEROFOUTPUTS) then
  28401. begin
  28402. {$IFDEF VER120}
  28403. Result := DMO_E_INVALIDSTREAMINDEX;
  28404. {$ELSE}
  28405. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28406. {$ENDIF}
  28407. Exit;
  28408. end;
  28409. lck := TLockIt.Create(Self);
  28410. Result := InternalGetOutputType(ulStreamIndex, ulTypeIndex, pmt);
  28411. end;
  28412. function TMediaObjectImpl.GetInputCurrentType(ulStreamIndex: DWORD;
  28413. out pmt: TDMOMediaType): HResult; stdcall;
  28414. var
  28415. lck: ILockIt;
  28416. begin
  28417. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28418. begin
  28419. {$IFDEF VER120}
  28420. Result := DMO_E_INVALIDSTREAMINDEX;
  28421. {$ELSE}
  28422. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28423. {$ENDIF}
  28424. Exit;
  28425. end;
  28426. if (nil = @pmt) then
  28427. begin
  28428. Result:= E_POINTER;
  28429. Exit;
  28430. end;
  28431. lck := TLockIt.Create(Self);
  28432. if (InputTypeSet(ulStreamIndex))
  28433. then Result := MoCopyMediaType(pmt, @m_InputInfo[ulStreamIndex].CurrentMediaType)
  28434. else
  28435. {$IFDEF VER120}
  28436. Result := DMO_E_TYPE_NOT_SET;
  28437. {$ELSE}
  28438. Result := Longint(DMO_E_TYPE_NOT_SET);
  28439. {$ENDIF}
  28440. end;
  28441. function TMediaObjectImpl.GetOutputCurrentType(ulStreamIndex: DWORD;
  28442. out pmt: TDMOMediaType): HResult;
  28443. var
  28444. lck: ILockIt;
  28445. begin
  28446. if (ulStreamIndex >= NUMBEROFOUTPUTS) then
  28447. begin
  28448. {$IFDEF VER120}
  28449. Result := DMO_E_INVALIDSTREAMINDEX;
  28450. {$ELSE}
  28451. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28452. {$ENDIF}
  28453. Exit;
  28454. end;
  28455. if (nil = @pmt) then
  28456. begin
  28457. Result:= E_POINTER;
  28458. Exit;
  28459. end;
  28460. lck := TLockIt.Create(Self);
  28461. if (OutputTypeSet(ulStreamIndex))
  28462. then Result := MoCopyMediaType(pmt, @m_OutputInfo[ulStreamIndex].CurrentMediaType)
  28463. {$IFDEF VER120}
  28464. else Result := DMO_E_TYPE_NOT_SET;
  28465. {$ELSE}
  28466. else Result := Longint(DMO_E_TYPE_NOT_SET);
  28467. {$ENDIF}
  28468. end;
  28469. function TMediaObjectImpl.GetInputSizeInfo(ulStreamIndex: DWORD; out pcbSize, pcbMaxLookahead, pcbAlignment: DWORD): HResult;
  28470. var
  28471. lck: ILockIt;
  28472. begin
  28473. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28474. begin
  28475. {$IFDEF VER120}
  28476. Result := DMO_E_INVALIDSTREAMINDEX;
  28477. {$ELSE}
  28478. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28479. {$ENDIF}
  28480. Exit;
  28481. end;
  28482. if (nil = @pcbSize) or (nil = @pcbMaxLookahead) or (nil = @pcbAlignment) then
  28483. begin
  28484. Result:= E_POINTER;
  28485. Exit;
  28486. end;
  28487. lck := TLockIt.Create(Self);
  28488. if (not InputTypeSet(ulStreamIndex)) then
  28489. begin
  28490. {$IFDEF VER120}
  28491. Result := DMO_E_TYPE_NOT_SET;
  28492. {$ELSE}
  28493. Result := Longint(DMO_E_TYPE_NOT_SET);
  28494. {$ENDIF}
  28495. Exit;
  28496. end;
  28497. Result := InternalGetInputSizeInfo(ulStreamIndex, pcbSize, pcbMaxLookahead, pcbAlignment);
  28498. end;
  28499. function TMediaObjectImpl.GetOutputSizeInfo(ulStreamIndex: DWORD; out pcbSize, pcbAlignment: DWORD): HResult;
  28500. var
  28501. lck: ILockIt;
  28502. begin
  28503. if (ulStreamIndex >= NUMBEROFOUTPUTS) then
  28504. begin
  28505. {$IFDEF VER120}
  28506. Result := DMO_E_INVALIDSTREAMINDEX;
  28507. {$ELSE}
  28508. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28509. {$ENDIF}
  28510. Exit;
  28511. end;
  28512. if (nil = @pcbSize) or (nil = @pcbAlignment) then
  28513. begin
  28514. Result:= E_POINTER;
  28515. Exit;
  28516. end;
  28517. lck := TLockIt.Create(Self);
  28518. if ((not m_fTypesSet) or (not OutputTypeSet(ulStreamIndex))) then
  28519. begin
  28520. {$IFDEF VER120}
  28521. Result := DMO_E_TYPE_NOT_SET;
  28522. {$ELSE}
  28523. Result := Longint(DMO_E_TYPE_NOT_SET);
  28524. {$ENDIF}
  28525. Exit;
  28526. end;
  28527. Result := InternalGetOutputSizeInfo(ulStreamIndex, pcbSize, pcbAlignment);
  28528. end;
  28529. function TMediaObjectImpl.SetInputType(ulStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult;
  28530. var
  28531. lck: ILockIt;
  28532. mtTemp: TDMOMediaType;
  28533. begin
  28534. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28535. begin
  28536. {$IFDEF VER120}
  28537. Result := DMO_E_INVALIDSTREAMINDEX;
  28538. {$ELSE}
  28539. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28540. {$ENDIF}
  28541. Exit;
  28542. end;
  28543. if ((dwFlags and not(DMO_SET_TYPEF_CLEAR or DMO_SET_TYPEF_TEST_ONLY)) <> 0) then
  28544. begin
  28545. Result := E_INVALIDARG;
  28546. Exit;
  28547. end;
  28548. lck := TLockIt.Create(Self);
  28549. if ((dwFlags and DMO_SET_TYPEF_CLEAR) <> 0) then
  28550. begin
  28551. MoFreeMediaType(@m_InputInfo[ulStreamIndex].CurrentMediaType);
  28552. m_InputInfo[ulStreamIndex].fTypeSet := Integer(False);
  28553. if (not CheckTypesSet) then
  28554. begin
  28555. Flush;
  28556. FreeStreamingResources;
  28557. end;
  28558. Result := NOERROR;
  28559. Exit;
  28560. end;
  28561. if (nil = pmt) then
  28562. begin
  28563. Result := E_POINTER;
  28564. Exit;
  28565. end;
  28566. Result := InternalCheckInputType(ulStreamIndex, pmt); // DMO_E_TYPE_NOT_ACCEPTED, S_FALSE
  28567. if FAILED(Result) or (Result = S_FALSE) then Exit;
  28568. if ((dwFlags and DMO_SET_TYPEF_TEST_ONLY) <> 0) then
  28569. begin
  28570. Result := NOERROR;
  28571. Exit;
  28572. end;
  28573. // actually set the type
  28574. if (S_OK = MoCopyMediaType(mtTemp, pmt)) then
  28575. begin
  28576. // Free any previous mediatype
  28577. if (InputTypeSet(ulStreamIndex)) then
  28578. MoFreeMediaType(@m_InputInfo[ulStreamIndex].CurrentMediaType);
  28579. m_InputInfo[ulStreamIndex].CurrentMediaType := mtTemp;
  28580. m_InputInfo[ulStreamIndex].fTypeSet := Integer(True);
  28581. CheckTypesSet;
  28582. end else
  28583. begin
  28584. Result := E_OUTOFMEMORY;
  28585. Exit;
  28586. end;
  28587. Result := NOERROR;
  28588. end;
  28589. function TMediaObjectImpl.SetOutputType(ulStreamIndex: DWORD; const pmt: PDMOMediaType; dwFlags: DWORD): HResult;
  28590. var
  28591. lck: ILockIt;
  28592. mtTemp: TDMOMediaType;
  28593. begin
  28594. if (ulStreamIndex >= NUMBEROFOUTPUTS) then
  28595. begin
  28596. {$IFDEF VER120}
  28597. Result := DMO_E_INVALIDSTREAMINDEX;
  28598. {$ELSE}
  28599. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28600. {$ENDIF}
  28601. Exit;
  28602. end;
  28603. if (dwFlags and not(DMO_SET_TYPEF_CLEAR or DMO_SET_TYPEF_TEST_ONLY) <> 0) then
  28604. begin
  28605. Result := E_INVALIDARG;
  28606. Exit;
  28607. end;
  28608. lck := TLockIt.Create(Self);
  28609. if ((dwFlags and DMO_SET_TYPEF_CLEAR) <> 0) then
  28610. begin
  28611. MoFreeMediaType(@m_OutputInfo[ulStreamIndex].CurrentMediaType);
  28612. m_OutputInfo[ulStreamIndex].fTypeSet := 0;
  28613. if (not CheckTypesSet) then
  28614. begin
  28615. Flush;
  28616. FreeStreamingResources;
  28617. end;
  28618. Result := NOERROR;
  28619. Exit;
  28620. end;
  28621. if (nil = pmt) then
  28622. begin
  28623. Result := E_POINTER;
  28624. Exit;
  28625. end;
  28626. Result := InternalCheckOutputType(ulStreamIndex, pmt);
  28627. if FAILED(Result) or (Result = S_FALSE) then Exit;
  28628. if ((dwFlags and DMO_SET_TYPEF_TEST_ONLY) <> 0) then
  28629. begin
  28630. Result := NOERROR;
  28631. Exit;
  28632. end;
  28633. // actually set the type
  28634. if (S_OK = MoCopyMediaType(mtTemp, pmt)) then
  28635. begin
  28636. // Free any previous mediatype
  28637. if (OutputTypeSet(ulStreamIndex)) then
  28638. MoFreeMediaType(@m_OutputInfo[ulStreamIndex].CurrentMediaType);
  28639. m_OutputInfo[ulStreamIndex].CurrentMediaType := mtTemp;
  28640. m_OutputInfo[ulStreamIndex].fTypeSet := Integer(True);
  28641. CheckTypesSet;
  28642. end
  28643. else
  28644. begin
  28645. Result := E_OUTOFMEMORY;
  28646. Exit;
  28647. end;
  28648. Result := NOERROR;
  28649. end;
  28650. function TMediaObjectImpl.GetInputStatus(ulStreamIndex: DWORD; out pdwStatus: DWORD): HResult;
  28651. var
  28652. lck: ILockIt;
  28653. begin
  28654. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28655. begin
  28656. {$IFDEF VER120}
  28657. Result := DMO_E_INVALIDSTREAMINDEX;
  28658. {$ELSE}
  28659. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28660. {$ENDIF}
  28661. Exit;
  28662. end;
  28663. if (nil = @pdwStatus) then
  28664. begin
  28665. Result := E_POINTER;
  28666. Exit;
  28667. end;
  28668. pdwStatus := 0;
  28669. lck := TLockIt.Create(Self);
  28670. if (not m_fTypesSet) then
  28671. begin
  28672. {$IFDEF VER120}
  28673. Result := DMO_E_TYPE_NOT_SET;
  28674. {$ELSE}
  28675. Result := Longint(DMO_E_TYPE_NOT_SET);
  28676. {$ENDIF}
  28677. Exit;
  28678. end;
  28679. if (InternalAcceptingInput(ulStreamIndex) = S_OK) then
  28680. pdwStatus := pdwStatus or DMO_INPUT_STATUSF_ACCEPT_DATA;
  28681. Result := NOERROR;
  28682. end;
  28683. function TMediaObjectImpl.GetInputMaxLatency(ulStreamIndex: DWORD; out prtLatency: TReferenceTime): HResult;
  28684. var
  28685. lck: ILockIt;
  28686. begin
  28687. if (@prtLatency = nil) then
  28688. begin
  28689. Result := E_POINTER;
  28690. Exit;
  28691. end;
  28692. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28693. begin
  28694. {$IFDEF VER120}
  28695. Result := DMO_E_INVALIDSTREAMINDEX;
  28696. {$ELSE}
  28697. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28698. {$ENDIF}
  28699. Exit;
  28700. end;
  28701. lck := TLockIt.Create(Self);
  28702. Result := InternalGetInputMaxLatency(ulStreamIndex, prtLatency);
  28703. end;
  28704. function TMediaObjectImpl.SetInputMaxLatency(ulStreamIndex: DWORD; rtLatency: TReferenceTime): HResult;
  28705. var
  28706. lck: ILockIt;
  28707. begin
  28708. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28709. begin
  28710. {$IFDEF VER120}
  28711. Result := DMO_E_INVALIDSTREAMINDEX;
  28712. {$ELSE}
  28713. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28714. {$ENDIF}
  28715. Exit;
  28716. end;
  28717. lck := TLockIt.Create(Self);
  28718. Result := InternalSetInputMaxLatency(ulStreamIndex, rtLatency);
  28719. end;
  28720. function TMediaObjectImpl.Discontinuity(ulStreamIndex: DWORD): HResult;
  28721. var
  28722. lck: ILockIt;
  28723. begin
  28724. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28725. begin
  28726. {$IFDEF VER120}
  28727. Result := DMO_E_INVALIDSTREAMINDEX;
  28728. {$ELSE}
  28729. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28730. {$ENDIF}
  28731. Exit;
  28732. end;
  28733. lck := TLockIt.Create(Self);
  28734. if (not m_fTypesSet) then
  28735. begin
  28736. {$IFDEF VER120}
  28737. Result := DMO_E_TYPE_NOT_SET;
  28738. {$ELSE}
  28739. Result := Longint(DMO_E_TYPE_NOT_SET);
  28740. {$ENDIF}
  28741. Exit;
  28742. end;
  28743. if (S_OK <> InternalAcceptingInput(ulStreamIndex)) then
  28744. begin
  28745. {$IFDEF VER120}
  28746. Result := DMO_E_NOTACCEPTING;
  28747. {$ELSE}
  28748. Result := Longint(DMO_E_NOTACCEPTING);
  28749. {$ENDIF}
  28750. Exit;
  28751. end;
  28752. Result := InternalDiscontinuity(ulStreamIndex);
  28753. end;
  28754. function TMediaObjectImpl.Flush: HResult;
  28755. var
  28756. lck: ILockIt;
  28757. begin
  28758. lck := TLockIt.Create(Self);
  28759. if (not m_fTypesSet) then
  28760. begin
  28761. Result := S_OK;
  28762. Exit;
  28763. end;
  28764. if (m_fFlushed) then
  28765. begin
  28766. Result := S_OK;
  28767. Exit;
  28768. end;
  28769. Result := InternalFlush;
  28770. m_fFlushed := True;
  28771. end;
  28772. function TMediaObjectImpl.AllocateStreamingResources: HResult;
  28773. var
  28774. lck: ILockIt;
  28775. begin
  28776. lck := TLockIt.Create(Self);
  28777. if (not m_fTypesSet) then
  28778. begin
  28779. {$IFDEF VER120}
  28780. Result := DMO_E_TYPE_NOT_SET;
  28781. {$ELSE}
  28782. Result := Longint(DMO_E_TYPE_NOT_SET);
  28783. {$ENDIF}
  28784. Exit;
  28785. end;
  28786. if (m_fResourcesAllocated) then
  28787. begin
  28788. Result := S_OK;
  28789. Exit;
  28790. end;
  28791. Result := InternalAllocateStreamingResources;
  28792. if SUCCEEDED(Result) then m_fResourcesAllocated := True;
  28793. end;
  28794. function TMediaObjectImpl.FreeStreamingResources: HResult;
  28795. var
  28796. lck: ILockIt;
  28797. begin
  28798. lck := TLockIt.Create(Self);
  28799. if (m_fResourcesAllocated) then
  28800. begin
  28801. m_fResourcesAllocated := False;
  28802. InternalFlush;
  28803. Result := InternalFreeStreamingResources;
  28804. Exit;
  28805. end;
  28806. Result := S_OK;
  28807. end;
  28808. //
  28809. // Processing methods - public entry points
  28810. //
  28811. function TMediaObjectImpl.ProcessInput(ulStreamIndex: DWORD; pBuffer: IMediaBuffer; dwFlags: DWORD;
  28812. rtTimestamp, rtTimelength: TReferenceTime): HResult; stdcall;
  28813. var
  28814. lck: ILockIt;
  28815. begin
  28816. if (nil = pBuffer) then
  28817. begin
  28818. Result := E_POINTER;
  28819. Exit;
  28820. end;
  28821. if (ulStreamIndex >= NUMBEROFINPUTS) then
  28822. begin
  28823. {$IFDEF VER120}
  28824. Result := DMO_E_INVALIDSTREAMINDEX;
  28825. {$ELSE}
  28826. Result := Longint(DMO_E_INVALIDSTREAMINDEX);
  28827. {$ENDIF}
  28828. Exit;
  28829. end;
  28830. if ((dwFlags and not (DMO_INPUT_DATA_BUFFERF_SYNCPOINT or
  28831. DMO_INPUT_DATA_BUFFERF_TIME or
  28832. DMO_INPUT_DATA_BUFFERF_TIMELENGTH)) <> 0) then
  28833. begin
  28834. Result := E_INVALIDARG;
  28835. Exit;
  28836. end;
  28837. lck := TLockIt.Create(Self);
  28838. // Make sure all streams have media types set and resources are allocated
  28839. Result := AllocateStreamingResources;
  28840. if FAILED(Result) then Exit;
  28841. if (InternalAcceptingInput(ulStreamIndex) <> S_OK) then
  28842. begin
  28843. {$IFDEF VER120}
  28844. Result := DMO_E_NOTACCEPTING;
  28845. {$ELSE}
  28846. Result := Longint(DMO_E_NOTACCEPTING);
  28847. {$ENDIF}
  28848. Exit;
  28849. end;
  28850. m_fFlushed := False;
  28851. Result := InternalProcessInput(ulStreamIndex, pBuffer, dwFlags, rtTimestamp, rtTimelength);
  28852. end;
  28853. function TMediaObjectImpl.ProcessOutput(dwFlags, cOutputBufferCount: DWORD; var pOutputBuffers: TDMOOutputDataBufferArray;
  28854. out pdwStatus: DWORD): HResult; stdcall;
  28855. var
  28856. dw: Integer;
  28857. lck: ILockIt;
  28858. begin
  28859. if (@pdwStatus = nil) then
  28860. begin
  28861. Result:= E_POINTER;
  28862. Exit;
  28863. end;
  28864. if (cOutputBufferCount <> NUMBEROFOUTPUTS) or
  28865. ((dwFlags and not DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER) <> 0) then
  28866. begin
  28867. Result := E_INVALIDARG;
  28868. Exit;
  28869. end;
  28870. if ((NUMBEROFOUTPUTS <> 0) and (@pOutputBuffers = nil)) then
  28871. begin
  28872. Result := E_POINTER;
  28873. Exit;
  28874. end;
  28875. pdwStatus := 0;
  28876. lck := TLockIt.Create(Self);
  28877. Result := AllocateStreamingResources;
  28878. if (FAILED(Result)) then Exit;
  28879. for dw := 0 to NUMBEROFOUTPUTS - 1 do pOutputBuffers[dw].dwStatus := 0;
  28880. Result := InternalProcessOutput(dwFlags, cOutputBufferCount, pOutputBuffers, pdwStatus);
  28881. // remember the DMO's incomplete status
  28882. for dw := 0 to NUMBEROFOUTPUTS - 1 do
  28883. begin
  28884. if ((pOutputBuffers[dw].dwStatus and DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE) <> 0)
  28885. then m_OutputInfo[dw].fIncomplete := Integer(True)
  28886. else m_OutputInfo[dw].fIncomplete := Integer(False);
  28887. end;
  28888. end;
  28889. function TMediaObjectImpl.Lock(bLock: Longint): HResult; stdcall;
  28890. begin
  28891. if (bLock <> 0) then Lock else Unlock;
  28892. Result := S_Ok;
  28893. end;
  28894. procedure TMediaObjectImpl.Lock;
  28895. begin
  28896. fCritSection.Enter;
  28897. end;
  28898. procedure TMediaObjectImpl.Unlock;
  28899. begin
  28900. fCritSection.Leave;
  28901. end;
  28902. {$ENDIF}
  28903. initialization
  28904. {$IFDEF DIRECTSHOW9_DYNAMIC_LINK}
  28905. _QzInitialize := nil;
  28906. _QzUninitialize := nil;
  28907. _QzFreeUnusedLibraries := nil;
  28908. _QzGetMalloc := nil;
  28909. _QzTaskMemAlloc := nil;
  28910. _QzTaskMemRealloc := nil;
  28911. _QzTaskMemFree := nil;
  28912. _QzCreateFilterObject := nil;
  28913. _QzCLSIDFromString := nil;
  28914. _QzStringFromGUID2 := nil;
  28915. {$ENDIF}
  28916. finalization
  28917. {$IFDEF DIRECTSHOW9_DYNAMIC_LINK}
  28918. UnLoadOle32;
  28919. UnLoadQuartz;
  28920. UnLoadMSDmo;
  28921. UnLoadksUser;
  28922. UnLoadKsProxy;
  28923. {$ENDIF}
  28924. end.