GstBase-1.0.gir 498 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096
  1. <?xml version="1.0"?>
  2. <!-- This file was automatically generated from C sources - DO NOT EDIT!
  3. To affect the contents of this file, edit the original C definitions,
  4. and/or use gtk-doc annotations. -->
  5. <repository version="1.2"
  6. xmlns="http://www.gtk.org/introspection/core/1.0"
  7. xmlns:c="http://www.gtk.org/introspection/c/1.0"
  8. xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
  9. <include name="Gst" version="1.0"/>
  10. <package name="gstreamer-base-1.0"/>
  11. <c:include name="gst/base/base.h"/>
  12. <namespace name="GstBase"
  13. version="1.0"
  14. shared-library="libgstbase-1.0.so.0"
  15. c:identifier-prefixes="Gst"
  16. c:symbol-prefixes="gst">
  17. <class name="Adapter"
  18. c:symbol-prefix="adapter"
  19. c:type="GstAdapter"
  20. parent="GObject.Object"
  21. glib:type-name="GstAdapter"
  22. glib:get-type="gst_adapter_get_type"
  23. glib:type-struct="AdapterClass">
  24. <doc xml:space="preserve">This class is for elements that receive buffers in an undesired size.
  25. While for example raw video contains one image per buffer, the same is not
  26. true for a lot of other formats, especially those that come directly from
  27. a file. So if you have undefined buffer sizes and require a specific size,
  28. this object is for you.
  29. An adapter is created with gst_adapter_new(). It can be freed again with
  30. g_object_unref().
  31. The theory of operation is like this: All buffers received are put
  32. into the adapter using gst_adapter_push() and the data is then read back
  33. in chunks of the desired size using gst_adapter_map()/gst_adapter_unmap()
  34. and/or gst_adapter_copy(). After the data has been processed, it is freed
  35. using gst_adapter_unmap().
  36. Other methods such as gst_adapter_take() and gst_adapter_take_buffer()
  37. combine gst_adapter_map() and gst_adapter_unmap() in one method and are
  38. potentially more convenient for some use cases.
  39. For example, a sink pad's chain function that needs to pass data to a library
  40. in 512-byte chunks could be implemented like this:
  41. |[&lt;!-- language="C" --&gt;
  42. static GstFlowReturn
  43. sink_pad_chain (GstPad *pad, GstObject *parent, GstBuffer *buffer)
  44. {
  45. MyElement *this;
  46. GstAdapter *adapter;
  47. GstFlowReturn ret = GST_FLOW_OK;
  48. this = MY_ELEMENT (parent);
  49. adapter = this-&gt;adapter;
  50. // put buffer into adapter
  51. gst_adapter_push (adapter, buffer);
  52. // while we can read out 512 bytes, process them
  53. while (gst_adapter_available (adapter) &gt;= 512 &amp;&amp; ret == GST_FLOW_OK) {
  54. const guint8 *data = gst_adapter_map (adapter, 512);
  55. // use flowreturn as an error value
  56. ret = my_library_foo (data);
  57. gst_adapter_unmap (adapter);
  58. gst_adapter_flush (adapter, 512);
  59. }
  60. return ret;
  61. }
  62. ]|
  63. For another example, a simple element inside GStreamer that uses #GstAdapter
  64. is the libvisual element.
  65. An element using #GstAdapter in its sink pad chain function should ensure that
  66. when the FLUSH_STOP event is received, that any queued data is cleared using
  67. gst_adapter_clear(). Data should also be cleared or processed on EOS and
  68. when changing state from %GST_STATE_PAUSED to %GST_STATE_READY.
  69. Also check the GST_BUFFER_FLAG_DISCONT flag on the buffer. Some elements might
  70. need to clear the adapter after a discontinuity.
  71. The adapter will keep track of the timestamps of the buffers
  72. that were pushed. The last seen timestamp before the current position
  73. can be queried with gst_adapter_prev_pts(). This function can
  74. optionally return the number of bytes between the start of the buffer that
  75. carried the timestamp and the current adapter position. The distance is
  76. useful when dealing with, for example, raw audio samples because it allows
  77. you to calculate the timestamp of the current adapter position by using the
  78. last seen timestamp and the amount of bytes since. Additionally, the
  79. gst_adapter_prev_pts_at_offset() can be used to determine the last
  80. seen timestamp at a particular offset in the adapter.
  81. A last thing to note is that while #GstAdapter is pretty optimized,
  82. merging buffers still might be an operation that requires a malloc() and
  83. memcpy() operation, and these operations are not the fastest. Because of
  84. this, some functions like gst_adapter_available_fast() are provided to help
  85. speed up such cases should you want to. To avoid repeated memory allocations,
  86. gst_adapter_copy() can be used to copy data into a (statically allocated)
  87. user provided buffer.
  88. #GstAdapter is not MT safe. All operations on an adapter must be serialized by
  89. the caller. This is not normally a problem, however, as the normal use case
  90. of #GstAdapter is inside one pad's chain function, in which case access is
  91. serialized via the pad's STREAM_LOCK.
  92. Note that gst_adapter_push() takes ownership of the buffer passed. Use
  93. gst_buffer_ref() before pushing it into the adapter if you still want to
  94. access the buffer later. The adapter will never modify the data in the
  95. buffer pushed in it.</doc>
  96. <constructor name="new" c:identifier="gst_adapter_new">
  97. <doc xml:space="preserve">Creates a new #GstAdapter. Free with g_object_unref().</doc>
  98. <return-value transfer-ownership="full">
  99. <doc xml:space="preserve">a new #GstAdapter</doc>
  100. <type name="Adapter" c:type="GstAdapter*"/>
  101. </return-value>
  102. </constructor>
  103. <method name="available" c:identifier="gst_adapter_available">
  104. <doc xml:space="preserve">Gets the maximum amount of bytes available, that is it returns the maximum
  105. value that can be supplied to gst_adapter_map() without that function
  106. returning %NULL.</doc>
  107. <return-value transfer-ownership="none">
  108. <doc xml:space="preserve">number of bytes available in @adapter</doc>
  109. <type name="gsize" c:type="gsize"/>
  110. </return-value>
  111. <parameters>
  112. <instance-parameter name="adapter" transfer-ownership="none">
  113. <doc xml:space="preserve">a #GstAdapter</doc>
  114. <type name="Adapter" c:type="GstAdapter*"/>
  115. </instance-parameter>
  116. </parameters>
  117. </method>
  118. <method name="available_fast" c:identifier="gst_adapter_available_fast">
  119. <doc xml:space="preserve">Gets the maximum number of bytes that are immediately available without
  120. requiring any expensive operations (like copying the data into a
  121. temporary buffer).</doc>
  122. <return-value transfer-ownership="none">
  123. <doc xml:space="preserve">number of bytes that are available in @adapter without expensive
  124. operations</doc>
  125. <type name="gsize" c:type="gsize"/>
  126. </return-value>
  127. <parameters>
  128. <instance-parameter name="adapter" transfer-ownership="none">
  129. <doc xml:space="preserve">a #GstAdapter</doc>
  130. <type name="Adapter" c:type="GstAdapter*"/>
  131. </instance-parameter>
  132. </parameters>
  133. </method>
  134. <method name="clear" c:identifier="gst_adapter_clear">
  135. <doc xml:space="preserve">Removes all buffers from @adapter.</doc>
  136. <return-value transfer-ownership="none">
  137. <type name="none" c:type="void"/>
  138. </return-value>
  139. <parameters>
  140. <instance-parameter name="adapter" transfer-ownership="none">
  141. <doc xml:space="preserve">a #GstAdapter</doc>
  142. <type name="Adapter" c:type="GstAdapter*"/>
  143. </instance-parameter>
  144. </parameters>
  145. </method>
  146. <method name="copy"
  147. c:identifier="gst_adapter_copy"
  148. shadowed-by="copy_bytes"
  149. introspectable="0">
  150. <doc xml:space="preserve">Copies @size bytes of data starting at @offset out of the buffers
  151. contained in #GstAdapter into an array @dest provided by the caller.
  152. The array @dest should be large enough to contain @size bytes.
  153. The user should check that the adapter has (@offset + @size) bytes
  154. available before calling this function.</doc>
  155. <return-value transfer-ownership="none">
  156. <type name="none" c:type="void"/>
  157. </return-value>
  158. <parameters>
  159. <instance-parameter name="adapter" transfer-ownership="none">
  160. <doc xml:space="preserve">a #GstAdapter</doc>
  161. <type name="Adapter" c:type="GstAdapter*"/>
  162. </instance-parameter>
  163. <parameter name="dest"
  164. direction="out"
  165. caller-allocates="1"
  166. transfer-ownership="none">
  167. <doc xml:space="preserve">
  168. the memory to copy into</doc>
  169. <array length="2" zero-terminated="0" c:type="gpointer">
  170. <type name="guint8"/>
  171. </array>
  172. </parameter>
  173. <parameter name="offset" transfer-ownership="none">
  174. <doc xml:space="preserve">the bytes offset in the adapter to start from</doc>
  175. <type name="gsize" c:type="gsize"/>
  176. </parameter>
  177. <parameter name="size"
  178. direction="out"
  179. caller-allocates="0"
  180. transfer-ownership="full">
  181. <doc xml:space="preserve">the number of bytes to copy</doc>
  182. <type name="gsize" c:type="gsize"/>
  183. </parameter>
  184. </parameters>
  185. </method>
  186. <method name="copy_bytes"
  187. c:identifier="gst_adapter_copy_bytes"
  188. shadows="copy"
  189. version="1.4">
  190. <doc xml:space="preserve">Similar to gst_adapter_copy, but more suitable for language bindings. @size
  191. bytes of data starting at @offset will be copied out of the buffers contained
  192. in @adapter and into a new #GBytes structure which is returned. Depending on
  193. the value of the @size argument an empty #GBytes structure may be returned.</doc>
  194. <return-value transfer-ownership="full">
  195. <doc xml:space="preserve">A new #GBytes structure containing the copied data.</doc>
  196. <type name="GLib.Bytes" c:type="GBytes*"/>
  197. </return-value>
  198. <parameters>
  199. <instance-parameter name="adapter" transfer-ownership="none">
  200. <doc xml:space="preserve">a #GstAdapter</doc>
  201. <type name="Adapter" c:type="GstAdapter*"/>
  202. </instance-parameter>
  203. <parameter name="offset" transfer-ownership="none">
  204. <doc xml:space="preserve">the bytes offset in the adapter to start from</doc>
  205. <type name="gsize" c:type="gsize"/>
  206. </parameter>
  207. <parameter name="size" transfer-ownership="none">
  208. <doc xml:space="preserve">the number of bytes to copy</doc>
  209. <type name="gsize" c:type="gsize"/>
  210. </parameter>
  211. </parameters>
  212. </method>
  213. <method name="flush" c:identifier="gst_adapter_flush">
  214. <doc xml:space="preserve">Flushes the first @flush bytes in the @adapter. The caller must ensure that
  215. at least this many bytes are available.
  216. See also: gst_adapter_map(), gst_adapter_unmap()</doc>
  217. <return-value transfer-ownership="none">
  218. <type name="none" c:type="void"/>
  219. </return-value>
  220. <parameters>
  221. <instance-parameter name="adapter" transfer-ownership="none">
  222. <doc xml:space="preserve">a #GstAdapter</doc>
  223. <type name="Adapter" c:type="GstAdapter*"/>
  224. </instance-parameter>
  225. <parameter name="flush" transfer-ownership="none">
  226. <doc xml:space="preserve">the number of bytes to flush</doc>
  227. <type name="gsize" c:type="gsize"/>
  228. </parameter>
  229. </parameters>
  230. </method>
  231. <method name="get_buffer"
  232. c:identifier="gst_adapter_get_buffer"
  233. version="1.6">
  234. <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter, but
  235. does not flush them from the adapter. See gst_adapter_take_buffer()
  236. for details.
  237. Caller owns a reference to the returned buffer. gst_buffer_unref() after
  238. usage.
  239. Free-function: gst_buffer_unref</doc>
  240. <return-value transfer-ownership="full" nullable="1">
  241. <doc xml:space="preserve">a #GstBuffer containing the first
  242. @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
  243. gst_buffer_unref() when no longer needed.</doc>
  244. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  245. </return-value>
  246. <parameters>
  247. <instance-parameter name="adapter" transfer-ownership="none">
  248. <doc xml:space="preserve">a #GstAdapter</doc>
  249. <type name="Adapter" c:type="GstAdapter*"/>
  250. </instance-parameter>
  251. <parameter name="nbytes" transfer-ownership="none">
  252. <doc xml:space="preserve">the number of bytes to get</doc>
  253. <type name="gsize" c:type="gsize"/>
  254. </parameter>
  255. </parameters>
  256. </method>
  257. <method name="get_buffer_fast"
  258. c:identifier="gst_adapter_get_buffer_fast"
  259. version="1.6">
  260. <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter, but
  261. does not flush them from the adapter. See gst_adapter_take_buffer_fast()
  262. for details.
  263. Caller owns a reference to the returned buffer. gst_buffer_unref() after
  264. usage.
  265. Free-function: gst_buffer_unref</doc>
  266. <return-value transfer-ownership="full" nullable="1">
  267. <doc xml:space="preserve">a #GstBuffer containing the first
  268. @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
  269. gst_buffer_unref() when no longer needed.</doc>
  270. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  271. </return-value>
  272. <parameters>
  273. <instance-parameter name="adapter" transfer-ownership="none">
  274. <doc xml:space="preserve">a #GstAdapter</doc>
  275. <type name="Adapter" c:type="GstAdapter*"/>
  276. </instance-parameter>
  277. <parameter name="nbytes" transfer-ownership="none">
  278. <doc xml:space="preserve">the number of bytes to get</doc>
  279. <type name="gsize" c:type="gsize"/>
  280. </parameter>
  281. </parameters>
  282. </method>
  283. <method name="get_buffer_list"
  284. c:identifier="gst_adapter_get_buffer_list"
  285. version="1.6">
  286. <doc xml:space="preserve">Returns a #GstBufferList of buffers containing the first @nbytes bytes of
  287. the @adapter but does not flush them from the adapter. See
  288. gst_adapter_take_buffer_list() for details.
  289. Caller owns the returned list. Call gst_buffer_list_unref() to free
  290. the list after usage.</doc>
  291. <return-value transfer-ownership="full" nullable="1">
  292. <doc xml:space="preserve">a #GstBufferList of buffers containing
  293. the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
  294. available</doc>
  295. <type name="Gst.BufferList" c:type="GstBufferList*"/>
  296. </return-value>
  297. <parameters>
  298. <instance-parameter name="adapter" transfer-ownership="none">
  299. <doc xml:space="preserve">a #GstAdapter</doc>
  300. <type name="Adapter" c:type="GstAdapter*"/>
  301. </instance-parameter>
  302. <parameter name="nbytes" transfer-ownership="none">
  303. <doc xml:space="preserve">the number of bytes to get</doc>
  304. <type name="gsize" c:type="gsize"/>
  305. </parameter>
  306. </parameters>
  307. </method>
  308. <method name="get_list"
  309. c:identifier="gst_adapter_get_list"
  310. version="1.6">
  311. <doc xml:space="preserve">Returns a #GList of buffers containing the first @nbytes bytes of the
  312. @adapter, but does not flush them from the adapter. See
  313. gst_adapter_take_list() for details.
  314. Caller owns returned list and contained buffers. gst_buffer_unref() each
  315. buffer in the list before freeing the list after usage.</doc>
  316. <return-value transfer-ownership="full" nullable="1">
  317. <doc xml:space="preserve">a #GList of
  318. buffers containing the first @nbytes of the adapter, or %NULL if @nbytes
  319. bytes are not available</doc>
  320. <type name="GLib.List" c:type="GList*">
  321. <type name="Gst.Buffer"/>
  322. </type>
  323. </return-value>
  324. <parameters>
  325. <instance-parameter name="adapter" transfer-ownership="none">
  326. <doc xml:space="preserve">a #GstAdapter</doc>
  327. <type name="Adapter" c:type="GstAdapter*"/>
  328. </instance-parameter>
  329. <parameter name="nbytes" transfer-ownership="none">
  330. <doc xml:space="preserve">the number of bytes to get</doc>
  331. <type name="gsize" c:type="gsize"/>
  332. </parameter>
  333. </parameters>
  334. </method>
  335. <method name="map" c:identifier="gst_adapter_map">
  336. <doc xml:space="preserve">Gets the first @size bytes stored in the @adapter. The returned pointer is
  337. valid until the next function is called on the adapter.
  338. Note that setting the returned pointer as the data of a #GstBuffer is
  339. incorrect for general-purpose plugins. The reason is that if a downstream
  340. element stores the buffer so that it has access to it outside of the bounds
  341. of its chain function, the buffer will have an invalid data pointer after
  342. your element flushes the bytes. In that case you should use
  343. gst_adapter_take(), which returns a freshly-allocated buffer that you can set
  344. as #GstBuffer memory or the potentially more performant
  345. gst_adapter_take_buffer().
  346. Returns %NULL if @size bytes are not available.</doc>
  347. <return-value transfer-ownership="none" nullable="1">
  348. <doc xml:space="preserve">
  349. a pointer to the first @size bytes of data, or %NULL</doc>
  350. <array length="0" zero-terminated="0" c:type="gconstpointer">
  351. <type name="guint8"/>
  352. </array>
  353. </return-value>
  354. <parameters>
  355. <instance-parameter name="adapter" transfer-ownership="none">
  356. <doc xml:space="preserve">a #GstAdapter</doc>
  357. <type name="Adapter" c:type="GstAdapter*"/>
  358. </instance-parameter>
  359. <parameter name="size"
  360. direction="out"
  361. caller-allocates="0"
  362. transfer-ownership="full">
  363. <doc xml:space="preserve">the number of bytes to map/peek</doc>
  364. <type name="gsize" c:type="gsize"/>
  365. </parameter>
  366. </parameters>
  367. </method>
  368. <method name="masked_scan_uint32"
  369. c:identifier="gst_adapter_masked_scan_uint32">
  370. <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
  371. starting from offset @offset.
  372. The bytes in @pattern and @mask are interpreted left-to-right, regardless
  373. of endianness. All four bytes of the pattern must be present in the
  374. adapter for it to match, even if the first or last bytes are masked out.
  375. It is an error to call this function without making sure that there is
  376. enough data (offset+size bytes) in the adapter.
  377. This function calls gst_adapter_masked_scan_uint32_peek() passing %NULL
  378. for value.</doc>
  379. <return-value transfer-ownership="none">
  380. <doc xml:space="preserve">offset of the first match, or -1 if no match was found.
  381. Example:
  382. &lt;programlisting&gt;
  383. // Assume the adapter contains 0x00 0x01 0x02 ... 0xfe 0xff
  384. gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 0, 256);
  385. // -&gt; returns 0
  386. gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 1, 255);
  387. // -&gt; returns -1
  388. gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x01020304, 1, 255);
  389. // -&gt; returns 1
  390. gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0001, 0, 256);
  391. // -&gt; returns -1
  392. gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0203, 0, 256);
  393. // -&gt; returns 0
  394. gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 256);
  395. // -&gt; returns 2
  396. gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4);
  397. // -&gt; returns -1
  398. &lt;/programlisting&gt;</doc>
  399. <type name="gssize" c:type="gssize"/>
  400. </return-value>
  401. <parameters>
  402. <instance-parameter name="adapter" transfer-ownership="none">
  403. <doc xml:space="preserve">a #GstAdapter</doc>
  404. <type name="Adapter" c:type="GstAdapter*"/>
  405. </instance-parameter>
  406. <parameter name="mask" transfer-ownership="none">
  407. <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
  408. <type name="guint32" c:type="guint32"/>
  409. </parameter>
  410. <parameter name="pattern" transfer-ownership="none">
  411. <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
  412. <type name="guint32" c:type="guint32"/>
  413. </parameter>
  414. <parameter name="offset" transfer-ownership="none">
  415. <doc xml:space="preserve">offset into the adapter data from which to start scanning, returns
  416. the last scanned position.</doc>
  417. <type name="gsize" c:type="gsize"/>
  418. </parameter>
  419. <parameter name="size" transfer-ownership="none">
  420. <doc xml:space="preserve">number of bytes to scan from offset</doc>
  421. <type name="gsize" c:type="gsize"/>
  422. </parameter>
  423. </parameters>
  424. </method>
  425. <method name="masked_scan_uint32_peek"
  426. c:identifier="gst_adapter_masked_scan_uint32_peek">
  427. <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
  428. starting from offset @offset. If a match is found, the value that matched
  429. is returned through @value, otherwise @value is left untouched.
  430. The bytes in @pattern and @mask are interpreted left-to-right, regardless
  431. of endianness. All four bytes of the pattern must be present in the
  432. adapter for it to match, even if the first or last bytes are masked out.
  433. It is an error to call this function without making sure that there is
  434. enough data (offset+size bytes) in the adapter.</doc>
  435. <return-value transfer-ownership="none">
  436. <doc xml:space="preserve">offset of the first match, or -1 if no match was found.</doc>
  437. <type name="gssize" c:type="gssize"/>
  438. </return-value>
  439. <parameters>
  440. <instance-parameter name="adapter" transfer-ownership="none">
  441. <doc xml:space="preserve">a #GstAdapter</doc>
  442. <type name="Adapter" c:type="GstAdapter*"/>
  443. </instance-parameter>
  444. <parameter name="mask" transfer-ownership="none">
  445. <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
  446. <type name="guint32" c:type="guint32"/>
  447. </parameter>
  448. <parameter name="pattern" transfer-ownership="none">
  449. <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
  450. <type name="guint32" c:type="guint32"/>
  451. </parameter>
  452. <parameter name="offset" transfer-ownership="none">
  453. <doc xml:space="preserve">offset into the adapter data from which to start scanning, returns
  454. the last scanned position.</doc>
  455. <type name="gsize" c:type="gsize"/>
  456. </parameter>
  457. <parameter name="size" transfer-ownership="none">
  458. <doc xml:space="preserve">number of bytes to scan from offset</doc>
  459. <type name="gsize" c:type="gsize"/>
  460. </parameter>
  461. <parameter name="value"
  462. direction="out"
  463. caller-allocates="0"
  464. transfer-ownership="full"
  465. optional="1"
  466. allow-none="1">
  467. <doc xml:space="preserve">pointer to uint32 to return matching data</doc>
  468. <type name="guint32" c:type="guint32*"/>
  469. </parameter>
  470. </parameters>
  471. </method>
  472. <method name="prev_dts" c:identifier="gst_adapter_prev_dts">
  473. <doc xml:space="preserve">Get the dts that was before the current byte in the adapter. When
  474. @distance is given, the amount of bytes between the dts and the current
  475. position is returned.
  476. The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
  477. the adapter is first created or when it is cleared. This also means that before
  478. the first byte with a dts is removed from the adapter, the dts
  479. and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
  480. <return-value transfer-ownership="none">
  481. <doc xml:space="preserve">The previously seen dts.</doc>
  482. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  483. </return-value>
  484. <parameters>
  485. <instance-parameter name="adapter" transfer-ownership="none">
  486. <doc xml:space="preserve">a #GstAdapter</doc>
  487. <type name="Adapter" c:type="GstAdapter*"/>
  488. </instance-parameter>
  489. <parameter name="distance"
  490. direction="out"
  491. caller-allocates="0"
  492. transfer-ownership="full"
  493. optional="1"
  494. allow-none="1">
  495. <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
  496. <type name="guint64" c:type="guint64*"/>
  497. </parameter>
  498. </parameters>
  499. </method>
  500. <method name="prev_dts_at_offset"
  501. c:identifier="gst_adapter_prev_dts_at_offset"
  502. version="1.2">
  503. <doc xml:space="preserve">Get the dts that was before the byte at offset @offset in the adapter. When
  504. @distance is given, the amount of bytes between the dts and the current
  505. position is returned.
  506. The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
  507. the adapter is first created or when it is cleared. This also means that before
  508. the first byte with a dts is removed from the adapter, the dts
  509. and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
  510. <return-value transfer-ownership="none">
  511. <doc xml:space="preserve">The previously seen dts at given offset.</doc>
  512. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  513. </return-value>
  514. <parameters>
  515. <instance-parameter name="adapter" transfer-ownership="none">
  516. <doc xml:space="preserve">a #GstAdapter</doc>
  517. <type name="Adapter" c:type="GstAdapter*"/>
  518. </instance-parameter>
  519. <parameter name="offset" transfer-ownership="none">
  520. <doc xml:space="preserve">the offset in the adapter at which to get timestamp</doc>
  521. <type name="gsize" c:type="gsize"/>
  522. </parameter>
  523. <parameter name="distance"
  524. direction="out"
  525. caller-allocates="0"
  526. transfer-ownership="full"
  527. optional="1"
  528. allow-none="1">
  529. <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
  530. <type name="guint64" c:type="guint64*"/>
  531. </parameter>
  532. </parameters>
  533. </method>
  534. <method name="prev_pts" c:identifier="gst_adapter_prev_pts">
  535. <doc xml:space="preserve">Get the pts that was before the current byte in the adapter. When
  536. @distance is given, the amount of bytes between the pts and the current
  537. position is returned.
  538. The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
  539. the adapter is first created or when it is cleared. This also means that before
  540. the first byte with a pts is removed from the adapter, the pts
  541. and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
  542. <return-value transfer-ownership="none">
  543. <doc xml:space="preserve">The previously seen pts.</doc>
  544. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  545. </return-value>
  546. <parameters>
  547. <instance-parameter name="adapter" transfer-ownership="none">
  548. <doc xml:space="preserve">a #GstAdapter</doc>
  549. <type name="Adapter" c:type="GstAdapter*"/>
  550. </instance-parameter>
  551. <parameter name="distance"
  552. direction="out"
  553. caller-allocates="0"
  554. transfer-ownership="full"
  555. optional="1"
  556. allow-none="1">
  557. <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
  558. <type name="guint64" c:type="guint64*"/>
  559. </parameter>
  560. </parameters>
  561. </method>
  562. <method name="prev_pts_at_offset"
  563. c:identifier="gst_adapter_prev_pts_at_offset"
  564. version="1.2">
  565. <doc xml:space="preserve">Get the pts that was before the byte at offset @offset in the adapter. When
  566. @distance is given, the amount of bytes between the pts and the current
  567. position is returned.
  568. The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
  569. the adapter is first created or when it is cleared. This also means that before
  570. the first byte with a pts is removed from the adapter, the pts
  571. and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
  572. <return-value transfer-ownership="none">
  573. <doc xml:space="preserve">The previously seen pts at given offset.</doc>
  574. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  575. </return-value>
  576. <parameters>
  577. <instance-parameter name="adapter" transfer-ownership="none">
  578. <doc xml:space="preserve">a #GstAdapter</doc>
  579. <type name="Adapter" c:type="GstAdapter*"/>
  580. </instance-parameter>
  581. <parameter name="offset" transfer-ownership="none">
  582. <doc xml:space="preserve">the offset in the adapter at which to get timestamp</doc>
  583. <type name="gsize" c:type="gsize"/>
  584. </parameter>
  585. <parameter name="distance"
  586. direction="out"
  587. caller-allocates="0"
  588. transfer-ownership="full"
  589. optional="1"
  590. allow-none="1">
  591. <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
  592. <type name="guint64" c:type="guint64*"/>
  593. </parameter>
  594. </parameters>
  595. </method>
  596. <method name="push" c:identifier="gst_adapter_push">
  597. <doc xml:space="preserve">Adds the data from @buf to the data stored inside @adapter and takes
  598. ownership of the buffer.</doc>
  599. <return-value transfer-ownership="none">
  600. <type name="none" c:type="void"/>
  601. </return-value>
  602. <parameters>
  603. <instance-parameter name="adapter" transfer-ownership="none">
  604. <doc xml:space="preserve">a #GstAdapter</doc>
  605. <type name="Adapter" c:type="GstAdapter*"/>
  606. </instance-parameter>
  607. <parameter name="buf" transfer-ownership="full">
  608. <doc xml:space="preserve">a #GstBuffer to add to queue in the adapter</doc>
  609. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  610. </parameter>
  611. </parameters>
  612. </method>
  613. <method name="take" c:identifier="gst_adapter_take">
  614. <doc xml:space="preserve">Returns a freshly allocated buffer containing the first @nbytes bytes of the
  615. @adapter. The returned bytes will be flushed from the adapter.
  616. Caller owns returned value. g_free after usage.
  617. Free-function: g_free</doc>
  618. <return-value transfer-ownership="full" nullable="1">
  619. <doc xml:space="preserve">
  620. oven-fresh hot data, or %NULL if @nbytes bytes are not available</doc>
  621. <array length="0" zero-terminated="0" c:type="gpointer">
  622. <type name="guint8"/>
  623. </array>
  624. </return-value>
  625. <parameters>
  626. <instance-parameter name="adapter" transfer-ownership="none">
  627. <doc xml:space="preserve">a #GstAdapter</doc>
  628. <type name="Adapter" c:type="GstAdapter*"/>
  629. </instance-parameter>
  630. <parameter name="nbytes"
  631. direction="out"
  632. caller-allocates="0"
  633. transfer-ownership="full">
  634. <doc xml:space="preserve">the number of bytes to take</doc>
  635. <type name="gsize" c:type="gsize"/>
  636. </parameter>
  637. </parameters>
  638. </method>
  639. <method name="take_buffer" c:identifier="gst_adapter_take_buffer">
  640. <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes bytes of the
  641. @adapter. The returned bytes will be flushed from the adapter.
  642. This function is potentially more performant than
  643. gst_adapter_take() since it can reuse the memory in pushed buffers
  644. by subbuffering or merging. This function will always return a
  645. buffer with a single memory region.
  646. Note that no assumptions should be made as to whether certain buffer
  647. flags such as the DISCONT flag are set on the returned buffer, or not.
  648. The caller needs to explicitly set or unset flags that should be set or
  649. unset.
  650. Since 1.6 this will also copy over all GstMeta of the input buffers except
  651. for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
  652. Caller owns a reference to the returned buffer. gst_buffer_unref() after
  653. usage.
  654. Free-function: gst_buffer_unref</doc>
  655. <return-value transfer-ownership="full" nullable="1">
  656. <doc xml:space="preserve">a #GstBuffer containing the first
  657. @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
  658. gst_buffer_unref() when no longer needed.</doc>
  659. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  660. </return-value>
  661. <parameters>
  662. <instance-parameter name="adapter" transfer-ownership="none">
  663. <doc xml:space="preserve">a #GstAdapter</doc>
  664. <type name="Adapter" c:type="GstAdapter*"/>
  665. </instance-parameter>
  666. <parameter name="nbytes" transfer-ownership="none">
  667. <doc xml:space="preserve">the number of bytes to take</doc>
  668. <type name="gsize" c:type="gsize"/>
  669. </parameter>
  670. </parameters>
  671. </method>
  672. <method name="take_buffer_fast"
  673. c:identifier="gst_adapter_take_buffer_fast"
  674. version="1.2">
  675. <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter.
  676. The returned bytes will be flushed from the adapter. This function
  677. is potentially more performant than gst_adapter_take_buffer() since
  678. it can reuse the memory in pushed buffers by subbuffering or
  679. merging. Unlike gst_adapter_take_buffer(), the returned buffer may
  680. be composed of multiple non-contiguous #GstMemory objects, no
  681. copies are made.
  682. Note that no assumptions should be made as to whether certain buffer
  683. flags such as the DISCONT flag are set on the returned buffer, or not.
  684. The caller needs to explicitly set or unset flags that should be set or
  685. unset.
  686. This will also copy over all GstMeta of the input buffers except
  687. for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
  688. This function can return buffer up to the return value of
  689. gst_adapter_available() without making copies if possible.
  690. Caller owns a reference to the returned buffer. gst_buffer_unref() after
  691. usage.
  692. Free-function: gst_buffer_unref</doc>
  693. <return-value transfer-ownership="full" nullable="1">
  694. <doc xml:space="preserve">a #GstBuffer containing the first
  695. @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
  696. gst_buffer_unref() when no longer needed.</doc>
  697. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  698. </return-value>
  699. <parameters>
  700. <instance-parameter name="adapter" transfer-ownership="none">
  701. <doc xml:space="preserve">a #GstAdapter</doc>
  702. <type name="Adapter" c:type="GstAdapter*"/>
  703. </instance-parameter>
  704. <parameter name="nbytes" transfer-ownership="none">
  705. <doc xml:space="preserve">the number of bytes to take</doc>
  706. <type name="gsize" c:type="gsize"/>
  707. </parameter>
  708. </parameters>
  709. </method>
  710. <method name="take_buffer_list"
  711. c:identifier="gst_adapter_take_buffer_list"
  712. version="1.6">
  713. <doc xml:space="preserve">Returns a #GstBufferList of buffers containing the first @nbytes bytes of
  714. the @adapter. The returned bytes will be flushed from the adapter.
  715. When the caller can deal with individual buffers, this function is more
  716. performant because no memory should be copied.
  717. Caller owns the returned list. Call gst_buffer_list_unref() to free
  718. the list after usage.</doc>
  719. <return-value transfer-ownership="full" nullable="1">
  720. <doc xml:space="preserve">a #GstBufferList of buffers containing
  721. the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
  722. available</doc>
  723. <type name="Gst.BufferList" c:type="GstBufferList*"/>
  724. </return-value>
  725. <parameters>
  726. <instance-parameter name="adapter" transfer-ownership="none">
  727. <doc xml:space="preserve">a #GstAdapter</doc>
  728. <type name="Adapter" c:type="GstAdapter*"/>
  729. </instance-parameter>
  730. <parameter name="nbytes" transfer-ownership="none">
  731. <doc xml:space="preserve">the number of bytes to take</doc>
  732. <type name="gsize" c:type="gsize"/>
  733. </parameter>
  734. </parameters>
  735. </method>
  736. <method name="take_list" c:identifier="gst_adapter_take_list">
  737. <doc xml:space="preserve">Returns a #GList of buffers containing the first @nbytes bytes of the
  738. @adapter. The returned bytes will be flushed from the adapter.
  739. When the caller can deal with individual buffers, this function is more
  740. performant because no memory should be copied.
  741. Caller owns returned list and contained buffers. gst_buffer_unref() each
  742. buffer in the list before freeing the list after usage.</doc>
  743. <return-value transfer-ownership="full" nullable="1">
  744. <doc xml:space="preserve">a #GList of
  745. buffers containing the first @nbytes of the adapter, or %NULL if @nbytes
  746. bytes are not available</doc>
  747. <type name="GLib.List" c:type="GList*">
  748. <type name="Gst.Buffer"/>
  749. </type>
  750. </return-value>
  751. <parameters>
  752. <instance-parameter name="adapter" transfer-ownership="none">
  753. <doc xml:space="preserve">a #GstAdapter</doc>
  754. <type name="Adapter" c:type="GstAdapter*"/>
  755. </instance-parameter>
  756. <parameter name="nbytes" transfer-ownership="none">
  757. <doc xml:space="preserve">the number of bytes to take</doc>
  758. <type name="gsize" c:type="gsize"/>
  759. </parameter>
  760. </parameters>
  761. </method>
  762. <method name="unmap" c:identifier="gst_adapter_unmap">
  763. <doc xml:space="preserve">Releases the memory obtained with the last gst_adapter_map().</doc>
  764. <return-value transfer-ownership="none">
  765. <type name="none" c:type="void"/>
  766. </return-value>
  767. <parameters>
  768. <instance-parameter name="adapter" transfer-ownership="none">
  769. <doc xml:space="preserve">a #GstAdapter</doc>
  770. <type name="Adapter" c:type="GstAdapter*"/>
  771. </instance-parameter>
  772. </parameters>
  773. </method>
  774. </class>
  775. <record name="AdapterClass"
  776. c:type="GstAdapterClass"
  777. disguised="1"
  778. glib:is-gtype-struct-for="Adapter">
  779. </record>
  780. <constant name="BASE_PARSE_FLAG_DRAINING"
  781. value="2"
  782. c:type="GST_BASE_PARSE_FLAG_DRAINING">
  783. <type name="gint" c:type="gint"/>
  784. </constant>
  785. <constant name="BASE_PARSE_FLAG_LOST_SYNC"
  786. value="1"
  787. c:type="GST_BASE_PARSE_FLAG_LOST_SYNC">
  788. <type name="gint" c:type="gint"/>
  789. </constant>
  790. <constant name="BASE_TRANSFORM_SINK_NAME"
  791. value="sink"
  792. c:type="GST_BASE_TRANSFORM_SINK_NAME">
  793. <doc xml:space="preserve">The name of the templates for the sink pad.</doc>
  794. <type name="utf8" c:type="gchar*"/>
  795. </constant>
  796. <constant name="BASE_TRANSFORM_SRC_NAME"
  797. value="src"
  798. c:type="GST_BASE_TRANSFORM_SRC_NAME">
  799. <doc xml:space="preserve">The name of the templates for the source pad.</doc>
  800. <type name="utf8" c:type="gchar*"/>
  801. </constant>
  802. <class name="BaseParse"
  803. c:symbol-prefix="base_parse"
  804. c:type="GstBaseParse"
  805. parent="Gst.Element"
  806. abstract="1"
  807. glib:type-name="GstBaseParse"
  808. glib:get-type="gst_base_parse_get_type"
  809. glib:type-struct="BaseParseClass">
  810. <doc xml:space="preserve">This base class is for parser elements that process data and splits it
  811. into separate audio/video/whatever frames.
  812. It provides for:
  813. &lt;itemizedlist&gt;
  814. &lt;listitem&gt;&lt;para&gt;provides one sink pad and one source pad&lt;/para&gt;&lt;/listitem&gt;
  815. &lt;listitem&gt;&lt;para&gt;handles state changes&lt;/para&gt;&lt;/listitem&gt;
  816. &lt;listitem&gt;&lt;para&gt;can operate in pull mode or push mode&lt;/para&gt;&lt;/listitem&gt;
  817. &lt;listitem&gt;&lt;para&gt;handles seeking in both modes&lt;/para&gt;&lt;/listitem&gt;
  818. &lt;listitem&gt;&lt;para&gt;handles events (SEGMENT/EOS/FLUSH)&lt;/para&gt;&lt;/listitem&gt;
  819. &lt;listitem&gt;&lt;para&gt;
  820. handles queries (POSITION/DURATION/SEEKING/FORMAT/CONVERT)
  821. &lt;/para&gt;&lt;/listitem&gt;
  822. &lt;listitem&gt;&lt;para&gt;handles flushing&lt;/para&gt;&lt;/listitem&gt;
  823. &lt;/itemizedlist&gt;
  824. The purpose of this base class is to provide the basic functionality of
  825. a parser and share a lot of rather complex code.
  826. Description of the parsing mechanism:
  827. &lt;orderedlist&gt;
  828. &lt;listitem&gt;
  829. &lt;itemizedlist&gt;&lt;title&gt;Set-up phase&lt;/title&gt;
  830. &lt;listitem&gt;&lt;para&gt;
  831. #GstBaseParse calls @start to inform subclass that data processing is
  832. about to start now.
  833. &lt;/para&gt;&lt;/listitem&gt;
  834. &lt;listitem&gt;&lt;para&gt;
  835. #GstBaseParse class calls @set_sink_caps to inform the subclass about
  836. incoming sinkpad caps. Subclass could already set the srcpad caps
  837. accordingly, but this might be delayed until calling
  838. gst_base_parse_finish_frame() with a non-queued frame.
  839. &lt;/para&gt;&lt;/listitem&gt;
  840. &lt;listitem&gt;&lt;para&gt;
  841. At least at this point subclass needs to tell the #GstBaseParse class
  842. how big data chunks it wants to receive (min_frame_size). It can do
  843. this with gst_base_parse_set_min_frame_size().
  844. &lt;/para&gt;&lt;/listitem&gt;
  845. &lt;listitem&gt;&lt;para&gt;
  846. #GstBaseParse class sets up appropriate data passing mode (pull/push)
  847. and starts to process the data.
  848. &lt;/para&gt;&lt;/listitem&gt;
  849. &lt;/itemizedlist&gt;
  850. &lt;/listitem&gt;
  851. &lt;listitem&gt;
  852. &lt;itemizedlist&gt;
  853. &lt;title&gt;Parsing phase&lt;/title&gt;
  854. &lt;listitem&gt;&lt;para&gt;
  855. #GstBaseParse gathers at least min_frame_size bytes of data either
  856. by pulling it from upstream or collecting buffers in an internal
  857. #GstAdapter.
  858. &lt;/para&gt;&lt;/listitem&gt;
  859. &lt;listitem&gt;&lt;para&gt;
  860. A buffer of (at least) min_frame_size bytes is passed to subclass with
  861. @handle_frame. Subclass checks the contents and can optionally
  862. return GST_FLOW_OK along with an amount of data to be skipped to find
  863. a valid frame (which will result in a subsequent DISCONT).
  864. If, otherwise, the buffer does not hold a complete frame,
  865. @handle_frame can merely return and will be called again when additional
  866. data is available. In push mode this amounts to an
  867. additional input buffer (thus minimal additional latency), in pull mode
  868. this amounts to some arbitrary reasonable buffer size increase.
  869. Of course, gst_base_parse_set_min_frame_size() could also be used if a
  870. very specific known amount of additional data is required.
  871. If, however, the buffer holds a complete valid frame, it can pass
  872. the size of this frame to gst_base_parse_finish_frame().
  873. If acting as a converter, it can also merely indicate consumed input data
  874. while simultaneously providing custom output data.
  875. Note that baseclass performs some processing (such as tracking
  876. overall consumed data rate versus duration) for each finished frame,
  877. but other state is only updated upon each call to @handle_frame
  878. (such as tracking upstream input timestamp).
  879. &lt;/para&gt;&lt;para&gt;
  880. Subclass is also responsible for setting the buffer metadata
  881. (e.g. buffer timestamp and duration, or keyframe if applicable).
  882. (although the latter can also be done by #GstBaseParse if it is
  883. appropriately configured, see below). Frame is provided with
  884. timestamp derived from upstream (as much as generally possible),
  885. duration obtained from configuration (see below), and offset
  886. if meaningful (in pull mode).
  887. &lt;/para&gt;&lt;para&gt;
  888. Note that @check_valid_frame might receive any small
  889. amount of input data when leftover data is being drained (e.g. at EOS).
  890. &lt;/para&gt;&lt;/listitem&gt;
  891. &lt;listitem&gt;&lt;para&gt;
  892. As part of finish frame processing,
  893. just prior to actually pushing the buffer in question,
  894. it is passed to @pre_push_frame which gives subclass yet one
  895. last chance to examine buffer metadata, or to send some custom (tag)
  896. events, or to perform custom (segment) filtering.
  897. &lt;/para&gt;&lt;/listitem&gt;
  898. &lt;listitem&gt;&lt;para&gt;
  899. During the parsing process #GstBaseParseClass will handle both srcpad
  900. and sinkpad events. They will be passed to subclass if @event or
  901. @src_event callbacks have been provided.
  902. &lt;/para&gt;&lt;/listitem&gt;
  903. &lt;/itemizedlist&gt;
  904. &lt;/listitem&gt;
  905. &lt;listitem&gt;
  906. &lt;itemizedlist&gt;&lt;title&gt;Shutdown phase&lt;/title&gt;
  907. &lt;listitem&gt;&lt;para&gt;
  908. #GstBaseParse class calls @stop to inform the subclass that data
  909. parsing will be stopped.
  910. &lt;/para&gt;&lt;/listitem&gt;
  911. &lt;/itemizedlist&gt;
  912. &lt;/listitem&gt;
  913. &lt;/orderedlist&gt;
  914. Subclass is responsible for providing pad template caps for
  915. source and sink pads. The pads need to be named "sink" and "src". It also
  916. needs to set the fixed caps on srcpad, when the format is ensured (e.g.
  917. when base class calls subclass' @set_sink_caps function).
  918. This base class uses %GST_FORMAT_DEFAULT as a meaning of frames. So,
  919. subclass conversion routine needs to know that conversion from
  920. %GST_FORMAT_TIME to %GST_FORMAT_DEFAULT must return the
  921. frame number that can be found from the given byte position.
  922. #GstBaseParse uses subclasses conversion methods also for seeking (or
  923. otherwise uses its own default one, see also below).
  924. Subclass @start and @stop functions will be called to inform the beginning
  925. and end of data processing.
  926. Things that subclass need to take care of:
  927. &lt;itemizedlist&gt;
  928. &lt;listitem&gt;&lt;para&gt;Provide pad templates&lt;/para&gt;&lt;/listitem&gt;
  929. &lt;listitem&gt;&lt;para&gt;
  930. Fixate the source pad caps when appropriate
  931. &lt;/para&gt;&lt;/listitem&gt;
  932. &lt;listitem&gt;&lt;para&gt;
  933. Inform base class how big data chunks should be retrieved. This is
  934. done with gst_base_parse_set_min_frame_size() function.
  935. &lt;/para&gt;&lt;/listitem&gt;
  936. &lt;listitem&gt;&lt;para&gt;
  937. Examine data chunks passed to subclass with @handle_frame and pass
  938. proper frame(s) to gst_base_parse_finish_frame(), and setting src pad
  939. caps and timestamps on frame.
  940. &lt;/para&gt;&lt;/listitem&gt;
  941. &lt;listitem&gt;&lt;para&gt;Provide conversion functions&lt;/para&gt;&lt;/listitem&gt;
  942. &lt;listitem&gt;&lt;para&gt;
  943. Update the duration information with gst_base_parse_set_duration()
  944. &lt;/para&gt;&lt;/listitem&gt;
  945. &lt;listitem&gt;&lt;para&gt;
  946. Optionally passthrough using gst_base_parse_set_passthrough()
  947. &lt;/para&gt;&lt;/listitem&gt;
  948. &lt;listitem&gt;&lt;para&gt;
  949. Configure various baseparse parameters using
  950. gst_base_parse_set_average_bitrate(), gst_base_parse_set_syncable()
  951. and gst_base_parse_set_frame_rate().
  952. &lt;/para&gt;&lt;/listitem&gt;
  953. &lt;listitem&gt;&lt;para&gt;
  954. In particular, if subclass is unable to determine a duration, but
  955. parsing (or specs) yields a frames per seconds rate, then this can be
  956. provided to #GstBaseParse to enable it to cater for
  957. buffer time metadata (which will be taken from upstream as much as
  958. possible). Internally keeping track of frame durations and respective
  959. sizes that have been pushed provides #GstBaseParse with an estimated
  960. bitrate. A default @convert (used if not overridden) will then use these
  961. rates to perform obvious conversions. These rates are also used to
  962. update (estimated) duration at regular frame intervals.
  963. &lt;/para&gt;&lt;/listitem&gt;
  964. &lt;/itemizedlist&gt;</doc>
  965. <virtual-method name="convert">
  966. <return-value transfer-ownership="none">
  967. <type name="gboolean" c:type="gboolean"/>
  968. </return-value>
  969. <parameters>
  970. <instance-parameter name="parse" transfer-ownership="none">
  971. <type name="BaseParse" c:type="GstBaseParse*"/>
  972. </instance-parameter>
  973. <parameter name="src_format" transfer-ownership="none">
  974. <type name="Gst.Format" c:type="GstFormat"/>
  975. </parameter>
  976. <parameter name="src_value" transfer-ownership="none">
  977. <type name="gint64" c:type="gint64"/>
  978. </parameter>
  979. <parameter name="dest_format" transfer-ownership="none">
  980. <type name="Gst.Format" c:type="GstFormat"/>
  981. </parameter>
  982. <parameter name="dest_value" transfer-ownership="none">
  983. <type name="gint64" c:type="gint64*"/>
  984. </parameter>
  985. </parameters>
  986. </virtual-method>
  987. <virtual-method name="detect">
  988. <return-value transfer-ownership="none">
  989. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  990. </return-value>
  991. <parameters>
  992. <instance-parameter name="parse" transfer-ownership="none">
  993. <type name="BaseParse" c:type="GstBaseParse*"/>
  994. </instance-parameter>
  995. <parameter name="buffer" transfer-ownership="none">
  996. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  997. </parameter>
  998. </parameters>
  999. </virtual-method>
  1000. <virtual-method name="get_sink_caps">
  1001. <return-value transfer-ownership="full">
  1002. <type name="Gst.Caps" c:type="GstCaps*"/>
  1003. </return-value>
  1004. <parameters>
  1005. <instance-parameter name="parse" transfer-ownership="none">
  1006. <type name="BaseParse" c:type="GstBaseParse*"/>
  1007. </instance-parameter>
  1008. <parameter name="filter" transfer-ownership="none">
  1009. <type name="Gst.Caps" c:type="GstCaps*"/>
  1010. </parameter>
  1011. </parameters>
  1012. </virtual-method>
  1013. <virtual-method name="handle_frame">
  1014. <return-value transfer-ownership="none">
  1015. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  1016. </return-value>
  1017. <parameters>
  1018. <instance-parameter name="parse" transfer-ownership="none">
  1019. <type name="BaseParse" c:type="GstBaseParse*"/>
  1020. </instance-parameter>
  1021. <parameter name="frame" transfer-ownership="none">
  1022. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1023. </parameter>
  1024. <parameter name="skipsize" transfer-ownership="none">
  1025. <type name="gint" c:type="gint*"/>
  1026. </parameter>
  1027. </parameters>
  1028. </virtual-method>
  1029. <virtual-method name="pre_push_frame">
  1030. <return-value transfer-ownership="none">
  1031. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  1032. </return-value>
  1033. <parameters>
  1034. <instance-parameter name="parse" transfer-ownership="none">
  1035. <type name="BaseParse" c:type="GstBaseParse*"/>
  1036. </instance-parameter>
  1037. <parameter name="frame" transfer-ownership="none">
  1038. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1039. </parameter>
  1040. </parameters>
  1041. </virtual-method>
  1042. <virtual-method name="set_sink_caps">
  1043. <return-value transfer-ownership="none">
  1044. <type name="gboolean" c:type="gboolean"/>
  1045. </return-value>
  1046. <parameters>
  1047. <instance-parameter name="parse" transfer-ownership="none">
  1048. <type name="BaseParse" c:type="GstBaseParse*"/>
  1049. </instance-parameter>
  1050. <parameter name="caps" transfer-ownership="none">
  1051. <type name="Gst.Caps" c:type="GstCaps*"/>
  1052. </parameter>
  1053. </parameters>
  1054. </virtual-method>
  1055. <virtual-method name="sink_event">
  1056. <return-value transfer-ownership="none">
  1057. <type name="gboolean" c:type="gboolean"/>
  1058. </return-value>
  1059. <parameters>
  1060. <instance-parameter name="parse" transfer-ownership="none">
  1061. <type name="BaseParse" c:type="GstBaseParse*"/>
  1062. </instance-parameter>
  1063. <parameter name="event" transfer-ownership="none">
  1064. <type name="Gst.Event" c:type="GstEvent*"/>
  1065. </parameter>
  1066. </parameters>
  1067. </virtual-method>
  1068. <virtual-method name="sink_query">
  1069. <return-value transfer-ownership="none">
  1070. <type name="gboolean" c:type="gboolean"/>
  1071. </return-value>
  1072. <parameters>
  1073. <instance-parameter name="parse" transfer-ownership="none">
  1074. <type name="BaseParse" c:type="GstBaseParse*"/>
  1075. </instance-parameter>
  1076. <parameter name="query" transfer-ownership="none">
  1077. <type name="Gst.Query" c:type="GstQuery*"/>
  1078. </parameter>
  1079. </parameters>
  1080. </virtual-method>
  1081. <virtual-method name="src_event">
  1082. <return-value transfer-ownership="none">
  1083. <type name="gboolean" c:type="gboolean"/>
  1084. </return-value>
  1085. <parameters>
  1086. <instance-parameter name="parse" transfer-ownership="none">
  1087. <type name="BaseParse" c:type="GstBaseParse*"/>
  1088. </instance-parameter>
  1089. <parameter name="event" transfer-ownership="none">
  1090. <type name="Gst.Event" c:type="GstEvent*"/>
  1091. </parameter>
  1092. </parameters>
  1093. </virtual-method>
  1094. <virtual-method name="src_query">
  1095. <return-value transfer-ownership="none">
  1096. <type name="gboolean" c:type="gboolean"/>
  1097. </return-value>
  1098. <parameters>
  1099. <instance-parameter name="parse" transfer-ownership="none">
  1100. <type name="BaseParse" c:type="GstBaseParse*"/>
  1101. </instance-parameter>
  1102. <parameter name="query" transfer-ownership="none">
  1103. <type name="Gst.Query" c:type="GstQuery*"/>
  1104. </parameter>
  1105. </parameters>
  1106. </virtual-method>
  1107. <virtual-method name="start">
  1108. <return-value transfer-ownership="none">
  1109. <type name="gboolean" c:type="gboolean"/>
  1110. </return-value>
  1111. <parameters>
  1112. <instance-parameter name="parse" transfer-ownership="none">
  1113. <type name="BaseParse" c:type="GstBaseParse*"/>
  1114. </instance-parameter>
  1115. </parameters>
  1116. </virtual-method>
  1117. <virtual-method name="stop">
  1118. <return-value transfer-ownership="none">
  1119. <type name="gboolean" c:type="gboolean"/>
  1120. </return-value>
  1121. <parameters>
  1122. <instance-parameter name="parse" transfer-ownership="none">
  1123. <type name="BaseParse" c:type="GstBaseParse*"/>
  1124. </instance-parameter>
  1125. </parameters>
  1126. </virtual-method>
  1127. <method name="add_index_entry"
  1128. c:identifier="gst_base_parse_add_index_entry">
  1129. <doc xml:space="preserve">Adds an entry to the index associating @offset to @ts. It is recommended
  1130. to only add keyframe entries. @force allows to bypass checks, such as
  1131. whether the stream is (upstream) seekable, another entry is already "close"
  1132. to the new entry, etc.</doc>
  1133. <return-value transfer-ownership="none">
  1134. <doc xml:space="preserve">#gboolean indicating whether entry was added</doc>
  1135. <type name="gboolean" c:type="gboolean"/>
  1136. </return-value>
  1137. <parameters>
  1138. <instance-parameter name="parse" transfer-ownership="none">
  1139. <doc xml:space="preserve">#GstBaseParse.</doc>
  1140. <type name="BaseParse" c:type="GstBaseParse*"/>
  1141. </instance-parameter>
  1142. <parameter name="offset" transfer-ownership="none">
  1143. <doc xml:space="preserve">offset of entry</doc>
  1144. <type name="guint64" c:type="guint64"/>
  1145. </parameter>
  1146. <parameter name="ts" transfer-ownership="none">
  1147. <doc xml:space="preserve">timestamp associated with offset</doc>
  1148. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  1149. </parameter>
  1150. <parameter name="key" transfer-ownership="none">
  1151. <doc xml:space="preserve">whether entry refers to keyframe</doc>
  1152. <type name="gboolean" c:type="gboolean"/>
  1153. </parameter>
  1154. <parameter name="force" transfer-ownership="none">
  1155. <doc xml:space="preserve">add entry disregarding sanity checks</doc>
  1156. <type name="gboolean" c:type="gboolean"/>
  1157. </parameter>
  1158. </parameters>
  1159. </method>
  1160. <method name="convert_default"
  1161. c:identifier="gst_base_parse_convert_default">
  1162. <doc xml:space="preserve">Default implementation of "convert" vmethod in #GstBaseParse class.</doc>
  1163. <return-value transfer-ownership="none">
  1164. <doc xml:space="preserve">%TRUE if conversion was successful.</doc>
  1165. <type name="gboolean" c:type="gboolean"/>
  1166. </return-value>
  1167. <parameters>
  1168. <instance-parameter name="parse" transfer-ownership="none">
  1169. <doc xml:space="preserve">#GstBaseParse.</doc>
  1170. <type name="BaseParse" c:type="GstBaseParse*"/>
  1171. </instance-parameter>
  1172. <parameter name="src_format" transfer-ownership="none">
  1173. <doc xml:space="preserve">#GstFormat describing the source format.</doc>
  1174. <type name="Gst.Format" c:type="GstFormat"/>
  1175. </parameter>
  1176. <parameter name="src_value" transfer-ownership="none">
  1177. <doc xml:space="preserve">Source value to be converted.</doc>
  1178. <type name="gint64" c:type="gint64"/>
  1179. </parameter>
  1180. <parameter name="dest_format" transfer-ownership="none">
  1181. <doc xml:space="preserve">#GstFormat defining the converted format.</doc>
  1182. <type name="Gst.Format" c:type="GstFormat"/>
  1183. </parameter>
  1184. <parameter name="dest_value" transfer-ownership="none">
  1185. <doc xml:space="preserve">Pointer where the conversion result will be put.</doc>
  1186. <type name="gint64" c:type="gint64*"/>
  1187. </parameter>
  1188. </parameters>
  1189. </method>
  1190. <method name="finish_frame" c:identifier="gst_base_parse_finish_frame">
  1191. <doc xml:space="preserve">Collects parsed data and pushes this downstream.
  1192. Source pad caps must be set when this is called.
  1193. If @frame's out_buffer is set, that will be used as subsequent frame data.
  1194. Otherwise, @size samples will be taken from the input and used for output,
  1195. and the output's metadata (timestamps etc) will be taken as (optionally)
  1196. set by the subclass on @frame's (input) buffer (which is otherwise
  1197. ignored for any but the above purpose/information).
  1198. Note that the latter buffer is invalidated by this call, whereas the
  1199. caller retains ownership of @frame.</doc>
  1200. <return-value transfer-ownership="none">
  1201. <doc xml:space="preserve">a #GstFlowReturn that should be escalated to caller (of caller)</doc>
  1202. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  1203. </return-value>
  1204. <parameters>
  1205. <instance-parameter name="parse" transfer-ownership="none">
  1206. <doc xml:space="preserve">a #GstBaseParse</doc>
  1207. <type name="BaseParse" c:type="GstBaseParse*"/>
  1208. </instance-parameter>
  1209. <parameter name="frame" transfer-ownership="none">
  1210. <doc xml:space="preserve">a #GstBaseParseFrame</doc>
  1211. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1212. </parameter>
  1213. <parameter name="size" transfer-ownership="none">
  1214. <doc xml:space="preserve">consumed input data represented by frame</doc>
  1215. <type name="gint" c:type="gint"/>
  1216. </parameter>
  1217. </parameters>
  1218. </method>
  1219. <method name="merge_tags"
  1220. c:identifier="gst_base_parse_merge_tags"
  1221. version="1.6">
  1222. <doc xml:space="preserve">Sets the parser subclass's tags and how they should be merged with any
  1223. upstream stream tags. This will override any tags previously-set
  1224. with gst_base_parse_merge_tags().
  1225. Note that this is provided for convenience, and the subclass is
  1226. not required to use this and can still do tag handling on its own.</doc>
  1227. <return-value transfer-ownership="none">
  1228. <type name="none" c:type="void"/>
  1229. </return-value>
  1230. <parameters>
  1231. <instance-parameter name="parse" transfer-ownership="none">
  1232. <doc xml:space="preserve">a #GstBaseParse</doc>
  1233. <type name="BaseParse" c:type="GstBaseParse*"/>
  1234. </instance-parameter>
  1235. <parameter name="tags"
  1236. transfer-ownership="none"
  1237. nullable="1"
  1238. allow-none="1">
  1239. <doc xml:space="preserve">a #GstTagList to merge, or NULL to unset
  1240. previously-set tags</doc>
  1241. <type name="Gst.TagList" c:type="GstTagList*"/>
  1242. </parameter>
  1243. <parameter name="mode" transfer-ownership="none">
  1244. <doc xml:space="preserve">the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE</doc>
  1245. <type name="Gst.TagMergeMode" c:type="GstTagMergeMode"/>
  1246. </parameter>
  1247. </parameters>
  1248. </method>
  1249. <method name="push_frame" c:identifier="gst_base_parse_push_frame">
  1250. <doc xml:space="preserve">Pushes the frame's buffer downstream, sends any pending events and
  1251. does some timestamp and segment handling. Takes ownership of
  1252. frame's buffer, though caller retains ownership of @frame.
  1253. This must be called with sinkpad STREAM_LOCK held.</doc>
  1254. <return-value transfer-ownership="none">
  1255. <doc xml:space="preserve">#GstFlowReturn</doc>
  1256. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  1257. </return-value>
  1258. <parameters>
  1259. <instance-parameter name="parse" transfer-ownership="none">
  1260. <doc xml:space="preserve">#GstBaseParse.</doc>
  1261. <type name="BaseParse" c:type="GstBaseParse*"/>
  1262. </instance-parameter>
  1263. <parameter name="frame" transfer-ownership="none">
  1264. <doc xml:space="preserve">a #GstBaseParseFrame</doc>
  1265. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1266. </parameter>
  1267. </parameters>
  1268. </method>
  1269. <method name="set_average_bitrate"
  1270. c:identifier="gst_base_parse_set_average_bitrate">
  1271. <doc xml:space="preserve">Optionally sets the average bitrate detected in media (if non-zero),
  1272. e.g. based on metadata, as it will be posted to the application.
  1273. By default, announced average bitrate is estimated. The average bitrate
  1274. is used to estimate the total duration of the stream and to estimate
  1275. a seek position, if there's no index and the format is syncable
  1276. (see gst_base_parse_set_syncable()).</doc>
  1277. <return-value transfer-ownership="none">
  1278. <type name="none" c:type="void"/>
  1279. </return-value>
  1280. <parameters>
  1281. <instance-parameter name="parse" transfer-ownership="none">
  1282. <doc xml:space="preserve">#GstBaseParse.</doc>
  1283. <type name="BaseParse" c:type="GstBaseParse*"/>
  1284. </instance-parameter>
  1285. <parameter name="bitrate" transfer-ownership="none">
  1286. <doc xml:space="preserve">average bitrate in bits/second</doc>
  1287. <type name="guint" c:type="guint"/>
  1288. </parameter>
  1289. </parameters>
  1290. </method>
  1291. <method name="set_duration" c:identifier="gst_base_parse_set_duration">
  1292. <doc xml:space="preserve">Sets the duration of the currently playing media. Subclass can use this
  1293. when it is able to determine duration and/or notices a change in the media
  1294. duration. Alternatively, if @interval is non-zero (default), then stream
  1295. duration is determined based on estimated bitrate, and updated every @interval
  1296. frames.</doc>
  1297. <return-value transfer-ownership="none">
  1298. <type name="none" c:type="void"/>
  1299. </return-value>
  1300. <parameters>
  1301. <instance-parameter name="parse" transfer-ownership="none">
  1302. <doc xml:space="preserve">#GstBaseParse.</doc>
  1303. <type name="BaseParse" c:type="GstBaseParse*"/>
  1304. </instance-parameter>
  1305. <parameter name="fmt" transfer-ownership="none">
  1306. <doc xml:space="preserve">#GstFormat.</doc>
  1307. <type name="Gst.Format" c:type="GstFormat"/>
  1308. </parameter>
  1309. <parameter name="duration" transfer-ownership="none">
  1310. <doc xml:space="preserve">duration value.</doc>
  1311. <type name="gint64" c:type="gint64"/>
  1312. </parameter>
  1313. <parameter name="interval" transfer-ownership="none">
  1314. <doc xml:space="preserve">how often to update the duration estimate based on bitrate, or 0.</doc>
  1315. <type name="gint" c:type="gint"/>
  1316. </parameter>
  1317. </parameters>
  1318. </method>
  1319. <method name="set_frame_rate"
  1320. c:identifier="gst_base_parse_set_frame_rate">
  1321. <doc xml:space="preserve">If frames per second is configured, parser can take care of buffer duration
  1322. and timestamping. When performing segment clipping, or seeking to a specific
  1323. location, a corresponding decoder might need an initial @lead_in and a
  1324. following @lead_out number of frames to ensure the desired segment is
  1325. entirely filled upon decoding.</doc>
  1326. <return-value transfer-ownership="none">
  1327. <type name="none" c:type="void"/>
  1328. </return-value>
  1329. <parameters>
  1330. <instance-parameter name="parse" transfer-ownership="none">
  1331. <doc xml:space="preserve">the #GstBaseParse to set</doc>
  1332. <type name="BaseParse" c:type="GstBaseParse*"/>
  1333. </instance-parameter>
  1334. <parameter name="fps_num" transfer-ownership="none">
  1335. <doc xml:space="preserve">frames per second (numerator).</doc>
  1336. <type name="guint" c:type="guint"/>
  1337. </parameter>
  1338. <parameter name="fps_den" transfer-ownership="none">
  1339. <doc xml:space="preserve">frames per second (denominator).</doc>
  1340. <type name="guint" c:type="guint"/>
  1341. </parameter>
  1342. <parameter name="lead_in" transfer-ownership="none">
  1343. <doc xml:space="preserve">frames needed before a segment for subsequent decode</doc>
  1344. <type name="guint" c:type="guint"/>
  1345. </parameter>
  1346. <parameter name="lead_out" transfer-ownership="none">
  1347. <doc xml:space="preserve">frames needed after a segment</doc>
  1348. <type name="guint" c:type="guint"/>
  1349. </parameter>
  1350. </parameters>
  1351. </method>
  1352. <method name="set_has_timing_info"
  1353. c:identifier="gst_base_parse_set_has_timing_info">
  1354. <doc xml:space="preserve">Set if frames carry timing information which the subclass can (generally)
  1355. parse and provide. In particular, intrinsic (rather than estimated) time
  1356. can be obtained following a seek.</doc>
  1357. <return-value transfer-ownership="none">
  1358. <type name="none" c:type="void"/>
  1359. </return-value>
  1360. <parameters>
  1361. <instance-parameter name="parse" transfer-ownership="none">
  1362. <doc xml:space="preserve">a #GstBaseParse</doc>
  1363. <type name="BaseParse" c:type="GstBaseParse*"/>
  1364. </instance-parameter>
  1365. <parameter name="has_timing" transfer-ownership="none">
  1366. <doc xml:space="preserve">whether frames carry timing information</doc>
  1367. <type name="gboolean" c:type="gboolean"/>
  1368. </parameter>
  1369. </parameters>
  1370. </method>
  1371. <method name="set_infer_ts" c:identifier="gst_base_parse_set_infer_ts">
  1372. <doc xml:space="preserve">By default, the base class might try to infer PTS from DTS and vice
  1373. versa. While this is generally correct for audio data, it may not
  1374. be otherwise. Sub-classes implementing such formats should disable
  1375. timestamp inferring.</doc>
  1376. <return-value transfer-ownership="none">
  1377. <type name="none" c:type="void"/>
  1378. </return-value>
  1379. <parameters>
  1380. <instance-parameter name="parse" transfer-ownership="none">
  1381. <doc xml:space="preserve">a #GstBaseParse</doc>
  1382. <type name="BaseParse" c:type="GstBaseParse*"/>
  1383. </instance-parameter>
  1384. <parameter name="infer_ts" transfer-ownership="none">
  1385. <doc xml:space="preserve">%TRUE if parser should infer DTS/PTS from each other</doc>
  1386. <type name="gboolean" c:type="gboolean"/>
  1387. </parameter>
  1388. </parameters>
  1389. </method>
  1390. <method name="set_latency" c:identifier="gst_base_parse_set_latency">
  1391. <doc xml:space="preserve">Sets the minimum and maximum (which may likely be equal) latency introduced
  1392. by the parsing process. If there is such a latency, which depends on the
  1393. particular parsing of the format, it typically corresponds to 1 frame duration.</doc>
  1394. <return-value transfer-ownership="none">
  1395. <type name="none" c:type="void"/>
  1396. </return-value>
  1397. <parameters>
  1398. <instance-parameter name="parse" transfer-ownership="none">
  1399. <doc xml:space="preserve">a #GstBaseParse</doc>
  1400. <type name="BaseParse" c:type="GstBaseParse*"/>
  1401. </instance-parameter>
  1402. <parameter name="min_latency" transfer-ownership="none">
  1403. <doc xml:space="preserve">minimum parse latency</doc>
  1404. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  1405. </parameter>
  1406. <parameter name="max_latency" transfer-ownership="none">
  1407. <doc xml:space="preserve">maximum parse latency</doc>
  1408. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  1409. </parameter>
  1410. </parameters>
  1411. </method>
  1412. <method name="set_min_frame_size"
  1413. c:identifier="gst_base_parse_set_min_frame_size">
  1414. <doc xml:space="preserve">Subclass can use this function to tell the base class that it needs to
  1415. give at least #min_size buffers.</doc>
  1416. <return-value transfer-ownership="none">
  1417. <type name="none" c:type="void"/>
  1418. </return-value>
  1419. <parameters>
  1420. <instance-parameter name="parse" transfer-ownership="none">
  1421. <doc xml:space="preserve">#GstBaseParse.</doc>
  1422. <type name="BaseParse" c:type="GstBaseParse*"/>
  1423. </instance-parameter>
  1424. <parameter name="min_size" transfer-ownership="none">
  1425. <doc xml:space="preserve">Minimum size of the data that this base class should give to
  1426. subclass.</doc>
  1427. <type name="guint" c:type="guint"/>
  1428. </parameter>
  1429. </parameters>
  1430. </method>
  1431. <method name="set_passthrough"
  1432. c:identifier="gst_base_parse_set_passthrough">
  1433. <doc xml:space="preserve">Set if the nature of the format or configuration does not allow (much)
  1434. parsing, and the parser should operate in passthrough mode (which only
  1435. applies when operating in push mode). That is, incoming buffers are
  1436. pushed through unmodified, i.e. no @check_valid_frame or @parse_frame
  1437. callbacks will be invoked, but @pre_push_frame will still be invoked,
  1438. so subclass can perform as much or as little is appropriate for
  1439. passthrough semantics in @pre_push_frame.</doc>
  1440. <return-value transfer-ownership="none">
  1441. <type name="none" c:type="void"/>
  1442. </return-value>
  1443. <parameters>
  1444. <instance-parameter name="parse" transfer-ownership="none">
  1445. <doc xml:space="preserve">a #GstBaseParse</doc>
  1446. <type name="BaseParse" c:type="GstBaseParse*"/>
  1447. </instance-parameter>
  1448. <parameter name="passthrough" transfer-ownership="none">
  1449. <doc xml:space="preserve">%TRUE if parser should run in passthrough mode</doc>
  1450. <type name="gboolean" c:type="gboolean"/>
  1451. </parameter>
  1452. </parameters>
  1453. </method>
  1454. <method name="set_pts_interpolation"
  1455. c:identifier="gst_base_parse_set_pts_interpolation">
  1456. <doc xml:space="preserve">By default, the base class will guess PTS timestamps using a simple
  1457. interpolation (previous timestamp + duration), which is incorrect for
  1458. data streams with reordering, where PTS can go backward. Sub-classes
  1459. implementing such formats should disable PTS interpolation.</doc>
  1460. <return-value transfer-ownership="none">
  1461. <type name="none" c:type="void"/>
  1462. </return-value>
  1463. <parameters>
  1464. <instance-parameter name="parse" transfer-ownership="none">
  1465. <doc xml:space="preserve">a #GstBaseParse</doc>
  1466. <type name="BaseParse" c:type="GstBaseParse*"/>
  1467. </instance-parameter>
  1468. <parameter name="pts_interpolate" transfer-ownership="none">
  1469. <doc xml:space="preserve">%TRUE if parser should interpolate PTS timestamps</doc>
  1470. <type name="gboolean" c:type="gboolean"/>
  1471. </parameter>
  1472. </parameters>
  1473. </method>
  1474. <method name="set_syncable" c:identifier="gst_base_parse_set_syncable">
  1475. <doc xml:space="preserve">Set if frame starts can be identified. This is set by default and
  1476. determines whether seeking based on bitrate averages
  1477. is possible for a format/stream.</doc>
  1478. <return-value transfer-ownership="none">
  1479. <type name="none" c:type="void"/>
  1480. </return-value>
  1481. <parameters>
  1482. <instance-parameter name="parse" transfer-ownership="none">
  1483. <doc xml:space="preserve">a #GstBaseParse</doc>
  1484. <type name="BaseParse" c:type="GstBaseParse*"/>
  1485. </instance-parameter>
  1486. <parameter name="syncable" transfer-ownership="none">
  1487. <doc xml:space="preserve">set if frame starts can be identified</doc>
  1488. <type name="gboolean" c:type="gboolean"/>
  1489. </parameter>
  1490. </parameters>
  1491. </method>
  1492. <method name="set_ts_at_offset"
  1493. c:identifier="gst_base_parse_set_ts_at_offset"
  1494. version="1.2">
  1495. <doc xml:space="preserve">This function should only be called from a @handle_frame implementation.
  1496. #GstBaseParse creates initial timestamps for frames by using the last
  1497. timestamp seen in the stream before the frame starts. In certain
  1498. cases, the correct timestamps will occur in the stream after the
  1499. start of the frame, but before the start of the actual picture data.
  1500. This function can be used to set the timestamps based on the offset
  1501. into the frame data that the picture starts.</doc>
  1502. <return-value transfer-ownership="none">
  1503. <type name="none" c:type="void"/>
  1504. </return-value>
  1505. <parameters>
  1506. <instance-parameter name="parse" transfer-ownership="none">
  1507. <doc xml:space="preserve">a #GstBaseParse</doc>
  1508. <type name="BaseParse" c:type="GstBaseParse*"/>
  1509. </instance-parameter>
  1510. <parameter name="offset" transfer-ownership="none">
  1511. <doc xml:space="preserve">offset into current buffer</doc>
  1512. <type name="gsize" c:type="gsize"/>
  1513. </parameter>
  1514. </parameters>
  1515. </method>
  1516. <property name="disable-passthrough"
  1517. writable="1"
  1518. transfer-ownership="none">
  1519. <doc xml:space="preserve">If set to %TRUE, baseparse will unconditionally force parsing of the
  1520. incoming data. This can be required in the rare cases where the incoming
  1521. side-data (caps, pts, dts, ...) is not trusted by the user and wants to
  1522. force validation and parsing of the incoming data.
  1523. If set to %FALSE, decision of whether to parse the data or not is up to
  1524. the implementation (standard behaviour).</doc>
  1525. <type name="gboolean" c:type="gboolean"/>
  1526. </property>
  1527. <field name="element">
  1528. <doc xml:space="preserve">the parent element.</doc>
  1529. <type name="Gst.Element" c:type="GstElement"/>
  1530. </field>
  1531. <field name="sinkpad">
  1532. <type name="Gst.Pad" c:type="GstPad*"/>
  1533. </field>
  1534. <field name="srcpad">
  1535. <type name="Gst.Pad" c:type="GstPad*"/>
  1536. </field>
  1537. <field name="flags">
  1538. <type name="guint" c:type="guint"/>
  1539. </field>
  1540. <field name="segment">
  1541. <type name="Gst.Segment" c:type="GstSegment"/>
  1542. </field>
  1543. <field name="_gst_reserved" readable="0" private="1">
  1544. <array zero-terminated="0" c:type="gpointer" fixed-size="20">
  1545. <type name="gpointer" c:type="gpointer"/>
  1546. </array>
  1547. </field>
  1548. <field name="priv" readable="0" private="1">
  1549. <type name="BaseParsePrivate" c:type="GstBaseParsePrivate*"/>
  1550. </field>
  1551. </class>
  1552. <record name="BaseParseClass"
  1553. c:type="GstBaseParseClass"
  1554. glib:is-gtype-struct-for="BaseParse">
  1555. <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
  1556. needed. At minimum @handle_frame needs to be overridden.</doc>
  1557. <field name="parent_class">
  1558. <doc xml:space="preserve">the parent class</doc>
  1559. <type name="Gst.ElementClass" c:type="GstElementClass"/>
  1560. </field>
  1561. <field name="start">
  1562. <callback name="start">
  1563. <return-value transfer-ownership="none">
  1564. <type name="gboolean" c:type="gboolean"/>
  1565. </return-value>
  1566. <parameters>
  1567. <parameter name="parse" transfer-ownership="none">
  1568. <type name="BaseParse" c:type="GstBaseParse*"/>
  1569. </parameter>
  1570. </parameters>
  1571. </callback>
  1572. </field>
  1573. <field name="stop">
  1574. <callback name="stop">
  1575. <return-value transfer-ownership="none">
  1576. <type name="gboolean" c:type="gboolean"/>
  1577. </return-value>
  1578. <parameters>
  1579. <parameter name="parse" transfer-ownership="none">
  1580. <type name="BaseParse" c:type="GstBaseParse*"/>
  1581. </parameter>
  1582. </parameters>
  1583. </callback>
  1584. </field>
  1585. <field name="set_sink_caps">
  1586. <callback name="set_sink_caps">
  1587. <return-value transfer-ownership="none">
  1588. <type name="gboolean" c:type="gboolean"/>
  1589. </return-value>
  1590. <parameters>
  1591. <parameter name="parse" transfer-ownership="none">
  1592. <type name="BaseParse" c:type="GstBaseParse*"/>
  1593. </parameter>
  1594. <parameter name="caps" transfer-ownership="none">
  1595. <type name="Gst.Caps" c:type="GstCaps*"/>
  1596. </parameter>
  1597. </parameters>
  1598. </callback>
  1599. </field>
  1600. <field name="handle_frame">
  1601. <callback name="handle_frame">
  1602. <return-value transfer-ownership="none">
  1603. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  1604. </return-value>
  1605. <parameters>
  1606. <parameter name="parse" transfer-ownership="none">
  1607. <type name="BaseParse" c:type="GstBaseParse*"/>
  1608. </parameter>
  1609. <parameter name="frame" transfer-ownership="none">
  1610. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1611. </parameter>
  1612. <parameter name="skipsize" transfer-ownership="none">
  1613. <type name="gint" c:type="gint*"/>
  1614. </parameter>
  1615. </parameters>
  1616. </callback>
  1617. </field>
  1618. <field name="pre_push_frame">
  1619. <callback name="pre_push_frame">
  1620. <return-value transfer-ownership="none">
  1621. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  1622. </return-value>
  1623. <parameters>
  1624. <parameter name="parse" transfer-ownership="none">
  1625. <type name="BaseParse" c:type="GstBaseParse*"/>
  1626. </parameter>
  1627. <parameter name="frame" transfer-ownership="none">
  1628. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1629. </parameter>
  1630. </parameters>
  1631. </callback>
  1632. </field>
  1633. <field name="convert">
  1634. <callback name="convert">
  1635. <return-value transfer-ownership="none">
  1636. <type name="gboolean" c:type="gboolean"/>
  1637. </return-value>
  1638. <parameters>
  1639. <parameter name="parse" transfer-ownership="none">
  1640. <type name="BaseParse" c:type="GstBaseParse*"/>
  1641. </parameter>
  1642. <parameter name="src_format" transfer-ownership="none">
  1643. <type name="Gst.Format" c:type="GstFormat"/>
  1644. </parameter>
  1645. <parameter name="src_value" transfer-ownership="none">
  1646. <type name="gint64" c:type="gint64"/>
  1647. </parameter>
  1648. <parameter name="dest_format" transfer-ownership="none">
  1649. <type name="Gst.Format" c:type="GstFormat"/>
  1650. </parameter>
  1651. <parameter name="dest_value" transfer-ownership="none">
  1652. <type name="gint64" c:type="gint64*"/>
  1653. </parameter>
  1654. </parameters>
  1655. </callback>
  1656. </field>
  1657. <field name="sink_event">
  1658. <callback name="sink_event">
  1659. <return-value transfer-ownership="none">
  1660. <type name="gboolean" c:type="gboolean"/>
  1661. </return-value>
  1662. <parameters>
  1663. <parameter name="parse" transfer-ownership="none">
  1664. <type name="BaseParse" c:type="GstBaseParse*"/>
  1665. </parameter>
  1666. <parameter name="event" transfer-ownership="none">
  1667. <type name="Gst.Event" c:type="GstEvent*"/>
  1668. </parameter>
  1669. </parameters>
  1670. </callback>
  1671. </field>
  1672. <field name="src_event">
  1673. <callback name="src_event">
  1674. <return-value transfer-ownership="none">
  1675. <type name="gboolean" c:type="gboolean"/>
  1676. </return-value>
  1677. <parameters>
  1678. <parameter name="parse" transfer-ownership="none">
  1679. <type name="BaseParse" c:type="GstBaseParse*"/>
  1680. </parameter>
  1681. <parameter name="event" transfer-ownership="none">
  1682. <type name="Gst.Event" c:type="GstEvent*"/>
  1683. </parameter>
  1684. </parameters>
  1685. </callback>
  1686. </field>
  1687. <field name="get_sink_caps">
  1688. <callback name="get_sink_caps">
  1689. <return-value transfer-ownership="full">
  1690. <type name="Gst.Caps" c:type="GstCaps*"/>
  1691. </return-value>
  1692. <parameters>
  1693. <parameter name="parse" transfer-ownership="none">
  1694. <type name="BaseParse" c:type="GstBaseParse*"/>
  1695. </parameter>
  1696. <parameter name="filter" transfer-ownership="none">
  1697. <type name="Gst.Caps" c:type="GstCaps*"/>
  1698. </parameter>
  1699. </parameters>
  1700. </callback>
  1701. </field>
  1702. <field name="detect">
  1703. <callback name="detect">
  1704. <return-value transfer-ownership="none">
  1705. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  1706. </return-value>
  1707. <parameters>
  1708. <parameter name="parse" transfer-ownership="none">
  1709. <type name="BaseParse" c:type="GstBaseParse*"/>
  1710. </parameter>
  1711. <parameter name="buffer" transfer-ownership="none">
  1712. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  1713. </parameter>
  1714. </parameters>
  1715. </callback>
  1716. </field>
  1717. <field name="sink_query">
  1718. <callback name="sink_query">
  1719. <return-value transfer-ownership="none">
  1720. <type name="gboolean" c:type="gboolean"/>
  1721. </return-value>
  1722. <parameters>
  1723. <parameter name="parse" transfer-ownership="none">
  1724. <type name="BaseParse" c:type="GstBaseParse*"/>
  1725. </parameter>
  1726. <parameter name="query" transfer-ownership="none">
  1727. <type name="Gst.Query" c:type="GstQuery*"/>
  1728. </parameter>
  1729. </parameters>
  1730. </callback>
  1731. </field>
  1732. <field name="src_query">
  1733. <callback name="src_query">
  1734. <return-value transfer-ownership="none">
  1735. <type name="gboolean" c:type="gboolean"/>
  1736. </return-value>
  1737. <parameters>
  1738. <parameter name="parse" transfer-ownership="none">
  1739. <type name="BaseParse" c:type="GstBaseParse*"/>
  1740. </parameter>
  1741. <parameter name="query" transfer-ownership="none">
  1742. <type name="Gst.Query" c:type="GstQuery*"/>
  1743. </parameter>
  1744. </parameters>
  1745. </callback>
  1746. </field>
  1747. <field name="_gst_reserved" readable="0" private="1">
  1748. <array zero-terminated="0" c:type="gpointer" fixed-size="18">
  1749. <type name="gpointer" c:type="gpointer"/>
  1750. </array>
  1751. </field>
  1752. </record>
  1753. <record name="BaseParseFrame"
  1754. c:type="GstBaseParseFrame"
  1755. glib:type-name="GstBaseParseFrame"
  1756. glib:get-type="gst_base_parse_frame_get_type"
  1757. c:symbol-prefix="base_parse_frame">
  1758. <doc xml:space="preserve">Frame (context) data passed to each frame parsing virtual methods. In
  1759. addition to providing the data to be checked for a valid frame or an already
  1760. identified frame, it conveys additional metadata or control information
  1761. from and to the subclass w.r.t. the particular frame in question (rather
  1762. than global parameters). Some of these may apply to each parsing stage, others
  1763. only to some a particular one. These parameters are effectively zeroed at start
  1764. of each frame's processing, i.e. parsing virtual method invocation sequence.</doc>
  1765. <field name="buffer" writable="1">
  1766. <doc xml:space="preserve">input data to be parsed for frames.</doc>
  1767. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  1768. </field>
  1769. <field name="out_buffer" writable="1">
  1770. <doc xml:space="preserve">output data.</doc>
  1771. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  1772. </field>
  1773. <field name="flags" writable="1">
  1774. <doc xml:space="preserve">a combination of input and output #GstBaseParseFrameFlags that
  1775. convey additional context to subclass or allow subclass to tune
  1776. subsequent #GstBaseParse actions.</doc>
  1777. <type name="guint" c:type="guint"/>
  1778. </field>
  1779. <field name="offset" writable="1">
  1780. <doc xml:space="preserve">media specific offset of input frame
  1781. Note that a converter may have a different one on the frame's buffer.</doc>
  1782. <type name="guint64" c:type="guint64"/>
  1783. </field>
  1784. <field name="overhead" writable="1">
  1785. <doc xml:space="preserve">subclass can set this to indicates the metadata overhead
  1786. for the given frame, which is then used to enable more accurate bitrate
  1787. computations. If this is -1, it is assumed that this frame should be
  1788. skipped in bitrate calculation.</doc>
  1789. <type name="gint" c:type="gint"/>
  1790. </field>
  1791. <field name="size" readable="0" private="1">
  1792. <type name="gint" c:type="gint"/>
  1793. </field>
  1794. <field name="_gst_reserved_i" readable="0" private="1">
  1795. <array zero-terminated="0" c:type="guint" fixed-size="2">
  1796. <type name="guint" c:type="guint"/>
  1797. </array>
  1798. </field>
  1799. <field name="_gst_reserved_p" readable="0" private="1">
  1800. <array zero-terminated="0" c:type="gpointer" fixed-size="2">
  1801. <type name="gpointer" c:type="gpointer"/>
  1802. </array>
  1803. </field>
  1804. <field name="_private_flags" readable="0" private="1">
  1805. <type name="guint" c:type="guint"/>
  1806. </field>
  1807. <constructor name="new" c:identifier="gst_base_parse_frame_new">
  1808. <doc xml:space="preserve">Allocates a new #GstBaseParseFrame. This function is mainly for bindings,
  1809. elements written in C should usually allocate the frame on the stack and
  1810. then use gst_base_parse_frame_init() to initialise it.</doc>
  1811. <return-value transfer-ownership="full">
  1812. <doc xml:space="preserve">a newly-allocated #GstBaseParseFrame. Free with
  1813. gst_base_parse_frame_free() when no longer needed.</doc>
  1814. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1815. </return-value>
  1816. <parameters>
  1817. <parameter name="buffer" transfer-ownership="none">
  1818. <doc xml:space="preserve">a #GstBuffer</doc>
  1819. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  1820. </parameter>
  1821. <parameter name="flags" transfer-ownership="none">
  1822. <doc xml:space="preserve">the flags</doc>
  1823. <type name="BaseParseFrameFlags" c:type="GstBaseParseFrameFlags"/>
  1824. </parameter>
  1825. <parameter name="overhead" transfer-ownership="none">
  1826. <doc xml:space="preserve">number of bytes in this frame which should be counted as
  1827. metadata overhead, ie. not used to calculate the average bitrate.
  1828. Set to -1 to mark the entire frame as metadata. If in doubt, set to 0.</doc>
  1829. <type name="gint" c:type="gint"/>
  1830. </parameter>
  1831. </parameters>
  1832. </constructor>
  1833. <method name="free" c:identifier="gst_base_parse_frame_free">
  1834. <return-value transfer-ownership="none">
  1835. <type name="none" c:type="void"/>
  1836. </return-value>
  1837. <parameters>
  1838. <instance-parameter name="frame" transfer-ownership="none">
  1839. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1840. </instance-parameter>
  1841. </parameters>
  1842. </method>
  1843. <method name="init" c:identifier="gst_base_parse_frame_init">
  1844. <doc xml:space="preserve">Sets a #GstBaseParseFrame to initial state. Currently this means
  1845. all public fields are zero-ed and a private flag is set to make
  1846. sure gst_base_parse_frame_free() only frees the contents but not
  1847. the actual frame. Use this function to initialise a #GstBaseParseFrame
  1848. allocated on the stack.</doc>
  1849. <return-value transfer-ownership="none">
  1850. <type name="none" c:type="void"/>
  1851. </return-value>
  1852. <parameters>
  1853. <instance-parameter name="frame" transfer-ownership="none">
  1854. <doc xml:space="preserve">#GstBaseParseFrame.</doc>
  1855. <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
  1856. </instance-parameter>
  1857. </parameters>
  1858. </method>
  1859. </record>
  1860. <bitfield name="BaseParseFrameFlags" c:type="GstBaseParseFrameFlags">
  1861. <doc xml:space="preserve">Flags to be used in a #GstBaseParseFrame.</doc>
  1862. <member name="none"
  1863. value="0"
  1864. c:identifier="GST_BASE_PARSE_FRAME_FLAG_NONE">
  1865. <doc xml:space="preserve">no flag</doc>
  1866. </member>
  1867. <member name="new_frame"
  1868. value="1"
  1869. c:identifier="GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME">
  1870. <doc xml:space="preserve">set by baseclass if current frame
  1871. is passed for processing to the subclass for the first time
  1872. (and not set on subsequent calls with same data).</doc>
  1873. </member>
  1874. <member name="no_frame"
  1875. value="2"
  1876. c:identifier="GST_BASE_PARSE_FRAME_FLAG_NO_FRAME">
  1877. <doc xml:space="preserve">set to indicate this buffer should not be
  1878. counted as frame, e.g. if this frame is dependent on a previous one.
  1879. As it is not counted as a frame, bitrate increases but frame to time
  1880. conversions are maintained.</doc>
  1881. </member>
  1882. <member name="clip"
  1883. value="4"
  1884. c:identifier="GST_BASE_PARSE_FRAME_FLAG_CLIP">
  1885. <doc xml:space="preserve">@pre_push_frame can set this to indicate
  1886. that regular segment clipping can still be performed (as opposed to
  1887. any custom one having been done).</doc>
  1888. </member>
  1889. <member name="drop"
  1890. value="8"
  1891. c:identifier="GST_BASE_PARSE_FRAME_FLAG_DROP">
  1892. <doc xml:space="preserve">indicates to @finish_frame that the
  1893. the frame should be dropped (and might be handled internally by subclass)</doc>
  1894. </member>
  1895. <member name="queue"
  1896. value="16"
  1897. c:identifier="GST_BASE_PARSE_FRAME_FLAG_QUEUE">
  1898. <doc xml:space="preserve">indicates to @finish_frame that the
  1899. the frame should be queued for now and processed fully later
  1900. when the first non-queued frame is finished</doc>
  1901. </member>
  1902. </bitfield>
  1903. <record name="BaseParsePrivate" c:type="GstBaseParsePrivate" disguised="1">
  1904. </record>
  1905. <class name="BaseSink"
  1906. c:symbol-prefix="base_sink"
  1907. c:type="GstBaseSink"
  1908. parent="Gst.Element"
  1909. abstract="1"
  1910. glib:type-name="GstBaseSink"
  1911. glib:get-type="gst_base_sink_get_type"
  1912. glib:type-struct="BaseSinkClass">
  1913. <doc xml:space="preserve">#GstBaseSink is the base class for sink elements in GStreamer, such as
  1914. xvimagesink or filesink. It is a layer on top of #GstElement that provides a
  1915. simplified interface to plugin writers. #GstBaseSink handles many details
  1916. for you, for example: preroll, clock synchronization, state changes,
  1917. activation in push or pull mode, and queries.
  1918. In most cases, when writing sink elements, there is no need to implement
  1919. class methods from #GstElement or to set functions on pads, because the
  1920. #GstBaseSink infrastructure should be sufficient.
  1921. #GstBaseSink provides support for exactly one sink pad, which should be
  1922. named "sink". A sink implementation (subclass of #GstBaseSink) should
  1923. install a pad template in its class_init function, like so:
  1924. |[&lt;!-- language="C" --&gt;
  1925. static void
  1926. my_element_class_init (GstMyElementClass *klass)
  1927. {
  1928. GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
  1929. // sinktemplate should be a #GstStaticPadTemplate with direction
  1930. // %GST_PAD_SINK and name "sink"
  1931. gst_element_class_add_pad_template (gstelement_class,
  1932. gst_static_pad_template_get (&amp;amp;sinktemplate));
  1933. gst_element_class_set_static_metadata (gstelement_class,
  1934. "Sink name",
  1935. "Sink",
  1936. "My Sink element",
  1937. "The author &amp;lt;my.sink@my.email&amp;gt;");
  1938. }
  1939. ]|
  1940. #GstBaseSink will handle the prerolling correctly. This means that it will
  1941. return %GST_STATE_CHANGE_ASYNC from a state change to PAUSED until the first
  1942. buffer arrives in this element. The base class will call the
  1943. #GstBaseSinkClass.preroll() vmethod with this preroll buffer and will then
  1944. commit the state change to the next asynchronously pending state.
  1945. When the element is set to PLAYING, #GstBaseSink will synchronise on the
  1946. clock using the times returned from #GstBaseSinkClass.get_times(). If this
  1947. function returns %GST_CLOCK_TIME_NONE for the start time, no synchronisation
  1948. will be done. Synchronisation can be disabled entirely by setting the object
  1949. #GstBaseSink:sync property to %FALSE.
  1950. After synchronisation the virtual method #GstBaseSinkClass.render() will be
  1951. called. Subclasses should minimally implement this method.
  1952. Subclasses that synchronise on the clock in the #GstBaseSinkClass.render()
  1953. method are supported as well. These classes typically receive a buffer in
  1954. the render method and can then potentially block on the clock while
  1955. rendering. A typical example is an audiosink.
  1956. These subclasses can use gst_base_sink_wait_preroll() to perform the
  1957. blocking wait.
  1958. Upon receiving the EOS event in the PLAYING state, #GstBaseSink will wait
  1959. for the clock to reach the time indicated by the stop time of the last
  1960. #GstBaseSinkClass.get_times() call before posting an EOS message. When the
  1961. element receives EOS in PAUSED, preroll completes, the event is queued and an
  1962. EOS message is posted when going to PLAYING.
  1963. #GstBaseSink will internally use the %GST_EVENT_SEGMENT events to schedule
  1964. synchronisation and clipping of buffers. Buffers that fall completely outside
  1965. of the current segment are dropped. Buffers that fall partially in the
  1966. segment are rendered (and prerolled). Subclasses should do any subbuffer
  1967. clipping themselves when needed.
  1968. #GstBaseSink will by default report the current playback position in
  1969. %GST_FORMAT_TIME based on the current clock time and segment information.
  1970. If no clock has been set on the element, the query will be forwarded
  1971. upstream.
  1972. The #GstBaseSinkClass.set_caps() function will be called when the subclass
  1973. should configure itself to process a specific media type.
  1974. The #GstBaseSinkClass.start() and #GstBaseSinkClass.stop() virtual methods
  1975. will be called when resources should be allocated. Any
  1976. #GstBaseSinkClass.preroll(), #GstBaseSinkClass.render() and
  1977. #GstBaseSinkClass.set_caps() function will be called between the
  1978. #GstBaseSinkClass.start() and #GstBaseSinkClass.stop() calls.
  1979. The #GstBaseSinkClass.event() virtual method will be called when an event is
  1980. received by #GstBaseSink. Normally this method should only be overridden by
  1981. very specific elements (such as file sinks) which need to handle the
  1982. newsegment event specially.
  1983. The #GstBaseSinkClass.unlock() method is called when the elements should
  1984. unblock any blocking operations they perform in the
  1985. #GstBaseSinkClass.render() method. This is mostly useful when the
  1986. #GstBaseSinkClass.render() method performs a blocking write on a file
  1987. descriptor, for example.
  1988. The #GstBaseSink:max-lateness property affects how the sink deals with
  1989. buffers that arrive too late in the sink. A buffer arrives too late in the
  1990. sink when the presentation time (as a combination of the last segment, buffer
  1991. timestamp and element base_time) plus the duration is before the current
  1992. time of the clock.
  1993. If the frame is later than max-lateness, the sink will drop the buffer
  1994. without calling the render method.
  1995. This feature is disabled if sync is disabled, the
  1996. #GstBaseSinkClass.get_times() method does not return a valid start time or
  1997. max-lateness is set to -1 (the default).
  1998. Subclasses can use gst_base_sink_set_max_lateness() to configure the
  1999. max-lateness value.
  2000. The #GstBaseSink:qos property will enable the quality-of-service features of
  2001. the basesink which gather statistics about the real-time performance of the
  2002. clock synchronisation. For each buffer received in the sink, statistics are
  2003. gathered and a QOS event is sent upstream with these numbers. This
  2004. information can then be used by upstream elements to reduce their processing
  2005. rate, for example.
  2006. The #GstBaseSink:async property can be used to instruct the sink to never
  2007. perform an ASYNC state change. This feature is mostly usable when dealing
  2008. with non-synchronized streams or sparse streams.</doc>
  2009. <virtual-method name="activate_pull">
  2010. <return-value transfer-ownership="none">
  2011. <type name="gboolean" c:type="gboolean"/>
  2012. </return-value>
  2013. <parameters>
  2014. <instance-parameter name="sink" transfer-ownership="none">
  2015. <type name="BaseSink" c:type="GstBaseSink*"/>
  2016. </instance-parameter>
  2017. <parameter name="active" transfer-ownership="none">
  2018. <type name="gboolean" c:type="gboolean"/>
  2019. </parameter>
  2020. </parameters>
  2021. </virtual-method>
  2022. <virtual-method name="event">
  2023. <return-value transfer-ownership="none">
  2024. <type name="gboolean" c:type="gboolean"/>
  2025. </return-value>
  2026. <parameters>
  2027. <instance-parameter name="sink" transfer-ownership="none">
  2028. <type name="BaseSink" c:type="GstBaseSink*"/>
  2029. </instance-parameter>
  2030. <parameter name="event" transfer-ownership="none">
  2031. <type name="Gst.Event" c:type="GstEvent*"/>
  2032. </parameter>
  2033. </parameters>
  2034. </virtual-method>
  2035. <virtual-method name="fixate">
  2036. <return-value transfer-ownership="full">
  2037. <type name="Gst.Caps" c:type="GstCaps*"/>
  2038. </return-value>
  2039. <parameters>
  2040. <instance-parameter name="sink" transfer-ownership="none">
  2041. <type name="BaseSink" c:type="GstBaseSink*"/>
  2042. </instance-parameter>
  2043. <parameter name="caps" transfer-ownership="none">
  2044. <type name="Gst.Caps" c:type="GstCaps*"/>
  2045. </parameter>
  2046. </parameters>
  2047. </virtual-method>
  2048. <virtual-method name="get_caps">
  2049. <return-value transfer-ownership="full">
  2050. <type name="Gst.Caps" c:type="GstCaps*"/>
  2051. </return-value>
  2052. <parameters>
  2053. <instance-parameter name="sink" transfer-ownership="none">
  2054. <type name="BaseSink" c:type="GstBaseSink*"/>
  2055. </instance-parameter>
  2056. <parameter name="filter" transfer-ownership="none">
  2057. <type name="Gst.Caps" c:type="GstCaps*"/>
  2058. </parameter>
  2059. </parameters>
  2060. </virtual-method>
  2061. <virtual-method name="get_times">
  2062. <return-value transfer-ownership="none">
  2063. <type name="none" c:type="void"/>
  2064. </return-value>
  2065. <parameters>
  2066. <instance-parameter name="sink" transfer-ownership="none">
  2067. <type name="BaseSink" c:type="GstBaseSink*"/>
  2068. </instance-parameter>
  2069. <parameter name="buffer" transfer-ownership="none">
  2070. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  2071. </parameter>
  2072. <parameter name="start" transfer-ownership="none">
  2073. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  2074. </parameter>
  2075. <parameter name="end" transfer-ownership="none">
  2076. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  2077. </parameter>
  2078. </parameters>
  2079. </virtual-method>
  2080. <virtual-method name="prepare">
  2081. <return-value transfer-ownership="none">
  2082. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2083. </return-value>
  2084. <parameters>
  2085. <instance-parameter name="sink" transfer-ownership="none">
  2086. <type name="BaseSink" c:type="GstBaseSink*"/>
  2087. </instance-parameter>
  2088. <parameter name="buffer" transfer-ownership="none">
  2089. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  2090. </parameter>
  2091. </parameters>
  2092. </virtual-method>
  2093. <virtual-method name="prepare_list">
  2094. <return-value transfer-ownership="none">
  2095. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2096. </return-value>
  2097. <parameters>
  2098. <instance-parameter name="sink" transfer-ownership="none">
  2099. <type name="BaseSink" c:type="GstBaseSink*"/>
  2100. </instance-parameter>
  2101. <parameter name="buffer_list" transfer-ownership="none">
  2102. <type name="Gst.BufferList" c:type="GstBufferList*"/>
  2103. </parameter>
  2104. </parameters>
  2105. </virtual-method>
  2106. <virtual-method name="preroll">
  2107. <return-value transfer-ownership="none">
  2108. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2109. </return-value>
  2110. <parameters>
  2111. <instance-parameter name="sink" transfer-ownership="none">
  2112. <type name="BaseSink" c:type="GstBaseSink*"/>
  2113. </instance-parameter>
  2114. <parameter name="buffer" transfer-ownership="none">
  2115. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  2116. </parameter>
  2117. </parameters>
  2118. </virtual-method>
  2119. <virtual-method name="propose_allocation">
  2120. <return-value transfer-ownership="none">
  2121. <type name="gboolean" c:type="gboolean"/>
  2122. </return-value>
  2123. <parameters>
  2124. <instance-parameter name="sink" transfer-ownership="none">
  2125. <type name="BaseSink" c:type="GstBaseSink*"/>
  2126. </instance-parameter>
  2127. <parameter name="query" transfer-ownership="none">
  2128. <type name="Gst.Query" c:type="GstQuery*"/>
  2129. </parameter>
  2130. </parameters>
  2131. </virtual-method>
  2132. <virtual-method name="query">
  2133. <return-value transfer-ownership="none">
  2134. <type name="gboolean" c:type="gboolean"/>
  2135. </return-value>
  2136. <parameters>
  2137. <instance-parameter name="sink" transfer-ownership="none">
  2138. <type name="BaseSink" c:type="GstBaseSink*"/>
  2139. </instance-parameter>
  2140. <parameter name="query" transfer-ownership="none">
  2141. <type name="Gst.Query" c:type="GstQuery*"/>
  2142. </parameter>
  2143. </parameters>
  2144. </virtual-method>
  2145. <virtual-method name="render">
  2146. <return-value transfer-ownership="none">
  2147. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2148. </return-value>
  2149. <parameters>
  2150. <instance-parameter name="sink" transfer-ownership="none">
  2151. <type name="BaseSink" c:type="GstBaseSink*"/>
  2152. </instance-parameter>
  2153. <parameter name="buffer" transfer-ownership="none">
  2154. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  2155. </parameter>
  2156. </parameters>
  2157. </virtual-method>
  2158. <virtual-method name="render_list">
  2159. <return-value transfer-ownership="none">
  2160. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2161. </return-value>
  2162. <parameters>
  2163. <instance-parameter name="sink" transfer-ownership="none">
  2164. <type name="BaseSink" c:type="GstBaseSink*"/>
  2165. </instance-parameter>
  2166. <parameter name="buffer_list" transfer-ownership="none">
  2167. <type name="Gst.BufferList" c:type="GstBufferList*"/>
  2168. </parameter>
  2169. </parameters>
  2170. </virtual-method>
  2171. <virtual-method name="set_caps">
  2172. <return-value transfer-ownership="none">
  2173. <type name="gboolean" c:type="gboolean"/>
  2174. </return-value>
  2175. <parameters>
  2176. <instance-parameter name="sink" transfer-ownership="none">
  2177. <type name="BaseSink" c:type="GstBaseSink*"/>
  2178. </instance-parameter>
  2179. <parameter name="caps" transfer-ownership="none">
  2180. <type name="Gst.Caps" c:type="GstCaps*"/>
  2181. </parameter>
  2182. </parameters>
  2183. </virtual-method>
  2184. <virtual-method name="start">
  2185. <return-value transfer-ownership="none">
  2186. <type name="gboolean" c:type="gboolean"/>
  2187. </return-value>
  2188. <parameters>
  2189. <instance-parameter name="sink" transfer-ownership="none">
  2190. <type name="BaseSink" c:type="GstBaseSink*"/>
  2191. </instance-parameter>
  2192. </parameters>
  2193. </virtual-method>
  2194. <virtual-method name="stop">
  2195. <return-value transfer-ownership="none">
  2196. <type name="gboolean" c:type="gboolean"/>
  2197. </return-value>
  2198. <parameters>
  2199. <instance-parameter name="sink" transfer-ownership="none">
  2200. <type name="BaseSink" c:type="GstBaseSink*"/>
  2201. </instance-parameter>
  2202. </parameters>
  2203. </virtual-method>
  2204. <virtual-method name="unlock">
  2205. <return-value transfer-ownership="none">
  2206. <type name="gboolean" c:type="gboolean"/>
  2207. </return-value>
  2208. <parameters>
  2209. <instance-parameter name="sink" transfer-ownership="none">
  2210. <type name="BaseSink" c:type="GstBaseSink*"/>
  2211. </instance-parameter>
  2212. </parameters>
  2213. </virtual-method>
  2214. <virtual-method name="unlock_stop">
  2215. <return-value transfer-ownership="none">
  2216. <type name="gboolean" c:type="gboolean"/>
  2217. </return-value>
  2218. <parameters>
  2219. <instance-parameter name="sink" transfer-ownership="none">
  2220. <type name="BaseSink" c:type="GstBaseSink*"/>
  2221. </instance-parameter>
  2222. </parameters>
  2223. </virtual-method>
  2224. <virtual-method name="wait_event">
  2225. <return-value transfer-ownership="none">
  2226. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2227. </return-value>
  2228. <parameters>
  2229. <instance-parameter name="sink" transfer-ownership="none">
  2230. <type name="BaseSink" c:type="GstBaseSink*"/>
  2231. </instance-parameter>
  2232. <parameter name="event" transfer-ownership="none">
  2233. <type name="Gst.Event" c:type="GstEvent*"/>
  2234. </parameter>
  2235. </parameters>
  2236. </virtual-method>
  2237. <method name="do_preroll" c:identifier="gst_base_sink_do_preroll">
  2238. <doc xml:space="preserve">If the @sink spawns its own thread for pulling buffers from upstream it
  2239. should call this method after it has pulled a buffer. If the element needed
  2240. to preroll, this function will perform the preroll and will then block
  2241. until the element state is changed.
  2242. This function should be called with the PREROLL_LOCK held.</doc>
  2243. <return-value transfer-ownership="none">
  2244. <doc xml:space="preserve">%GST_FLOW_OK if the preroll completed and processing can
  2245. continue. Any other return value should be returned from the render vmethod.</doc>
  2246. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2247. </return-value>
  2248. <parameters>
  2249. <instance-parameter name="sink" transfer-ownership="none">
  2250. <doc xml:space="preserve">the sink</doc>
  2251. <type name="BaseSink" c:type="GstBaseSink*"/>
  2252. </instance-parameter>
  2253. <parameter name="obj" transfer-ownership="none">
  2254. <doc xml:space="preserve">the mini object that caused the preroll</doc>
  2255. <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
  2256. </parameter>
  2257. </parameters>
  2258. </method>
  2259. <method name="get_blocksize" c:identifier="gst_base_sink_get_blocksize">
  2260. <doc xml:space="preserve">Get the number of bytes that the sink will pull when it is operating in pull
  2261. mode.</doc>
  2262. <return-value transfer-ownership="none">
  2263. <doc xml:space="preserve">the number of bytes @sink will pull in pull mode.</doc>
  2264. <type name="guint" c:type="guint"/>
  2265. </return-value>
  2266. <parameters>
  2267. <instance-parameter name="sink" transfer-ownership="none">
  2268. <doc xml:space="preserve">a #GstBaseSink</doc>
  2269. <type name="BaseSink" c:type="GstBaseSink*"/>
  2270. </instance-parameter>
  2271. </parameters>
  2272. </method>
  2273. <method name="get_last_sample"
  2274. c:identifier="gst_base_sink_get_last_sample">
  2275. <doc xml:space="preserve">Get the last sample that arrived in the sink and was used for preroll or for
  2276. rendering. This property can be used to generate thumbnails.
  2277. The #GstCaps on the sample can be used to determine the type of the buffer.
  2278. Free-function: gst_sample_unref</doc>
  2279. <return-value transfer-ownership="full" nullable="1">
  2280. <doc xml:space="preserve">a #GstSample. gst_sample_unref() after
  2281. usage. This function returns %NULL when no buffer has arrived in the
  2282. sink yet or when the sink is not in PAUSED or PLAYING.</doc>
  2283. <type name="Gst.Sample" c:type="GstSample*"/>
  2284. </return-value>
  2285. <parameters>
  2286. <instance-parameter name="sink" transfer-ownership="none">
  2287. <doc xml:space="preserve">the sink</doc>
  2288. <type name="BaseSink" c:type="GstBaseSink*"/>
  2289. </instance-parameter>
  2290. </parameters>
  2291. </method>
  2292. <method name="get_latency" c:identifier="gst_base_sink_get_latency">
  2293. <doc xml:space="preserve">Get the currently configured latency.</doc>
  2294. <return-value transfer-ownership="none">
  2295. <doc xml:space="preserve">The configured latency.</doc>
  2296. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  2297. </return-value>
  2298. <parameters>
  2299. <instance-parameter name="sink" transfer-ownership="none">
  2300. <doc xml:space="preserve">the sink</doc>
  2301. <type name="BaseSink" c:type="GstBaseSink*"/>
  2302. </instance-parameter>
  2303. </parameters>
  2304. </method>
  2305. <method name="get_max_bitrate"
  2306. c:identifier="gst_base_sink_get_max_bitrate"
  2307. version="1.2">
  2308. <doc xml:space="preserve">Get the maximum amount of bits per second that the sink will render.</doc>
  2309. <return-value transfer-ownership="none">
  2310. <doc xml:space="preserve">the maximum number of bits per second @sink will render.</doc>
  2311. <type name="guint64" c:type="guint64"/>
  2312. </return-value>
  2313. <parameters>
  2314. <instance-parameter name="sink" transfer-ownership="none">
  2315. <doc xml:space="preserve">a #GstBaseSink</doc>
  2316. <type name="BaseSink" c:type="GstBaseSink*"/>
  2317. </instance-parameter>
  2318. </parameters>
  2319. </method>
  2320. <method name="get_max_lateness"
  2321. c:identifier="gst_base_sink_get_max_lateness">
  2322. <doc xml:space="preserve">Gets the max lateness value. See gst_base_sink_set_max_lateness for
  2323. more details.</doc>
  2324. <return-value transfer-ownership="none">
  2325. <doc xml:space="preserve">The maximum time in nanoseconds that a buffer can be late
  2326. before it is dropped and not rendered. A value of -1 means an
  2327. unlimited time.</doc>
  2328. <type name="gint64" c:type="gint64"/>
  2329. </return-value>
  2330. <parameters>
  2331. <instance-parameter name="sink" transfer-ownership="none">
  2332. <doc xml:space="preserve">the sink</doc>
  2333. <type name="BaseSink" c:type="GstBaseSink*"/>
  2334. </instance-parameter>
  2335. </parameters>
  2336. </method>
  2337. <method name="get_render_delay"
  2338. c:identifier="gst_base_sink_get_render_delay">
  2339. <doc xml:space="preserve">Get the render delay of @sink. see gst_base_sink_set_render_delay() for more
  2340. information about the render delay.</doc>
  2341. <return-value transfer-ownership="none">
  2342. <doc xml:space="preserve">the render delay of @sink.</doc>
  2343. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  2344. </return-value>
  2345. <parameters>
  2346. <instance-parameter name="sink" transfer-ownership="none">
  2347. <doc xml:space="preserve">a #GstBaseSink</doc>
  2348. <type name="BaseSink" c:type="GstBaseSink*"/>
  2349. </instance-parameter>
  2350. </parameters>
  2351. </method>
  2352. <method name="get_sync" c:identifier="gst_base_sink_get_sync">
  2353. <doc xml:space="preserve">Checks if @sink is currently configured to synchronize against the
  2354. clock.</doc>
  2355. <return-value transfer-ownership="none">
  2356. <doc xml:space="preserve">%TRUE if the sink is configured to synchronize against the clock.</doc>
  2357. <type name="gboolean" c:type="gboolean"/>
  2358. </return-value>
  2359. <parameters>
  2360. <instance-parameter name="sink" transfer-ownership="none">
  2361. <doc xml:space="preserve">the sink</doc>
  2362. <type name="BaseSink" c:type="GstBaseSink*"/>
  2363. </instance-parameter>
  2364. </parameters>
  2365. </method>
  2366. <method name="get_throttle_time"
  2367. c:identifier="gst_base_sink_get_throttle_time">
  2368. <doc xml:space="preserve">Get the time that will be inserted between frames to control the
  2369. maximum buffers per second.</doc>
  2370. <return-value transfer-ownership="none">
  2371. <doc xml:space="preserve">the number of nanoseconds @sink will put between frames.</doc>
  2372. <type name="guint64" c:type="guint64"/>
  2373. </return-value>
  2374. <parameters>
  2375. <instance-parameter name="sink" transfer-ownership="none">
  2376. <doc xml:space="preserve">a #GstBaseSink</doc>
  2377. <type name="BaseSink" c:type="GstBaseSink*"/>
  2378. </instance-parameter>
  2379. </parameters>
  2380. </method>
  2381. <method name="get_ts_offset" c:identifier="gst_base_sink_get_ts_offset">
  2382. <doc xml:space="preserve">Get the synchronisation offset of @sink.</doc>
  2383. <return-value transfer-ownership="none">
  2384. <doc xml:space="preserve">The synchronisation offset.</doc>
  2385. <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
  2386. </return-value>
  2387. <parameters>
  2388. <instance-parameter name="sink" transfer-ownership="none">
  2389. <doc xml:space="preserve">the sink</doc>
  2390. <type name="BaseSink" c:type="GstBaseSink*"/>
  2391. </instance-parameter>
  2392. </parameters>
  2393. </method>
  2394. <method name="is_async_enabled"
  2395. c:identifier="gst_base_sink_is_async_enabled">
  2396. <doc xml:space="preserve">Checks if @sink is currently configured to perform asynchronous state
  2397. changes to PAUSED.</doc>
  2398. <return-value transfer-ownership="none">
  2399. <doc xml:space="preserve">%TRUE if the sink is configured to perform asynchronous state
  2400. changes.</doc>
  2401. <type name="gboolean" c:type="gboolean"/>
  2402. </return-value>
  2403. <parameters>
  2404. <instance-parameter name="sink" transfer-ownership="none">
  2405. <doc xml:space="preserve">the sink</doc>
  2406. <type name="BaseSink" c:type="GstBaseSink*"/>
  2407. </instance-parameter>
  2408. </parameters>
  2409. </method>
  2410. <method name="is_last_sample_enabled"
  2411. c:identifier="gst_base_sink_is_last_sample_enabled">
  2412. <doc xml:space="preserve">Checks if @sink is currently configured to store the last received sample in
  2413. the last-sample property.</doc>
  2414. <return-value transfer-ownership="none">
  2415. <doc xml:space="preserve">%TRUE if the sink is configured to store the last received sample.</doc>
  2416. <type name="gboolean" c:type="gboolean"/>
  2417. </return-value>
  2418. <parameters>
  2419. <instance-parameter name="sink" transfer-ownership="none">
  2420. <doc xml:space="preserve">the sink</doc>
  2421. <type name="BaseSink" c:type="GstBaseSink*"/>
  2422. </instance-parameter>
  2423. </parameters>
  2424. </method>
  2425. <method name="is_qos_enabled"
  2426. c:identifier="gst_base_sink_is_qos_enabled">
  2427. <doc xml:space="preserve">Checks if @sink is currently configured to send Quality-of-Service events
  2428. upstream.</doc>
  2429. <return-value transfer-ownership="none">
  2430. <doc xml:space="preserve">%TRUE if the sink is configured to perform Quality-of-Service.</doc>
  2431. <type name="gboolean" c:type="gboolean"/>
  2432. </return-value>
  2433. <parameters>
  2434. <instance-parameter name="sink" transfer-ownership="none">
  2435. <doc xml:space="preserve">the sink</doc>
  2436. <type name="BaseSink" c:type="GstBaseSink*"/>
  2437. </instance-parameter>
  2438. </parameters>
  2439. </method>
  2440. <method name="query_latency" c:identifier="gst_base_sink_query_latency">
  2441. <doc xml:space="preserve">Query the sink for the latency parameters. The latency will be queried from
  2442. the upstream elements. @live will be %TRUE if @sink is configured to
  2443. synchronize against the clock. @upstream_live will be %TRUE if an upstream
  2444. element is live.
  2445. If both @live and @upstream_live are %TRUE, the sink will want to compensate
  2446. for the latency introduced by the upstream elements by setting the
  2447. @min_latency to a strictly positive value.
  2448. This function is mostly used by subclasses.</doc>
  2449. <return-value transfer-ownership="none">
  2450. <doc xml:space="preserve">%TRUE if the query succeeded.</doc>
  2451. <type name="gboolean" c:type="gboolean"/>
  2452. </return-value>
  2453. <parameters>
  2454. <instance-parameter name="sink" transfer-ownership="none">
  2455. <doc xml:space="preserve">the sink</doc>
  2456. <type name="BaseSink" c:type="GstBaseSink*"/>
  2457. </instance-parameter>
  2458. <parameter name="live"
  2459. direction="out"
  2460. caller-allocates="0"
  2461. transfer-ownership="full"
  2462. optional="1"
  2463. allow-none="1">
  2464. <doc xml:space="preserve">if the sink is live</doc>
  2465. <type name="gboolean" c:type="gboolean*"/>
  2466. </parameter>
  2467. <parameter name="upstream_live"
  2468. direction="out"
  2469. caller-allocates="0"
  2470. transfer-ownership="full"
  2471. optional="1"
  2472. allow-none="1">
  2473. <doc xml:space="preserve">if an upstream element is live</doc>
  2474. <type name="gboolean" c:type="gboolean*"/>
  2475. </parameter>
  2476. <parameter name="min_latency"
  2477. direction="out"
  2478. caller-allocates="0"
  2479. transfer-ownership="full"
  2480. optional="1"
  2481. allow-none="1">
  2482. <doc xml:space="preserve">the min latency of the upstream elements</doc>
  2483. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  2484. </parameter>
  2485. <parameter name="max_latency"
  2486. direction="out"
  2487. caller-allocates="0"
  2488. transfer-ownership="full"
  2489. optional="1"
  2490. allow-none="1">
  2491. <doc xml:space="preserve">the max latency of the upstream elements</doc>
  2492. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  2493. </parameter>
  2494. </parameters>
  2495. </method>
  2496. <method name="set_async_enabled"
  2497. c:identifier="gst_base_sink_set_async_enabled">
  2498. <doc xml:space="preserve">Configures @sink to perform all state changes asynchronously. When async is
  2499. disabled, the sink will immediately go to PAUSED instead of waiting for a
  2500. preroll buffer. This feature is useful if the sink does not synchronize
  2501. against the clock or when it is dealing with sparse streams.</doc>
  2502. <return-value transfer-ownership="none">
  2503. <type name="none" c:type="void"/>
  2504. </return-value>
  2505. <parameters>
  2506. <instance-parameter name="sink" transfer-ownership="none">
  2507. <doc xml:space="preserve">the sink</doc>
  2508. <type name="BaseSink" c:type="GstBaseSink*"/>
  2509. </instance-parameter>
  2510. <parameter name="enabled" transfer-ownership="none">
  2511. <doc xml:space="preserve">the new async value.</doc>
  2512. <type name="gboolean" c:type="gboolean"/>
  2513. </parameter>
  2514. </parameters>
  2515. </method>
  2516. <method name="set_blocksize" c:identifier="gst_base_sink_set_blocksize">
  2517. <doc xml:space="preserve">Set the number of bytes that the sink will pull when it is operating in pull
  2518. mode.</doc>
  2519. <return-value transfer-ownership="none">
  2520. <type name="none" c:type="void"/>
  2521. </return-value>
  2522. <parameters>
  2523. <instance-parameter name="sink" transfer-ownership="none">
  2524. <doc xml:space="preserve">a #GstBaseSink</doc>
  2525. <type name="BaseSink" c:type="GstBaseSink*"/>
  2526. </instance-parameter>
  2527. <parameter name="blocksize" transfer-ownership="none">
  2528. <doc xml:space="preserve">the blocksize in bytes</doc>
  2529. <type name="guint" c:type="guint"/>
  2530. </parameter>
  2531. </parameters>
  2532. </method>
  2533. <method name="set_last_sample_enabled"
  2534. c:identifier="gst_base_sink_set_last_sample_enabled">
  2535. <doc xml:space="preserve">Configures @sink to store the last received sample in the last-sample
  2536. property.</doc>
  2537. <return-value transfer-ownership="none">
  2538. <type name="none" c:type="void"/>
  2539. </return-value>
  2540. <parameters>
  2541. <instance-parameter name="sink" transfer-ownership="none">
  2542. <doc xml:space="preserve">the sink</doc>
  2543. <type name="BaseSink" c:type="GstBaseSink*"/>
  2544. </instance-parameter>
  2545. <parameter name="enabled" transfer-ownership="none">
  2546. <doc xml:space="preserve">the new enable-last-sample value.</doc>
  2547. <type name="gboolean" c:type="gboolean"/>
  2548. </parameter>
  2549. </parameters>
  2550. </method>
  2551. <method name="set_max_bitrate"
  2552. c:identifier="gst_base_sink_set_max_bitrate"
  2553. version="1.2">
  2554. <doc xml:space="preserve">Set the maximum amount of bits per second that the sink will render.</doc>
  2555. <return-value transfer-ownership="none">
  2556. <type name="none" c:type="void"/>
  2557. </return-value>
  2558. <parameters>
  2559. <instance-parameter name="sink" transfer-ownership="none">
  2560. <doc xml:space="preserve">a #GstBaseSink</doc>
  2561. <type name="BaseSink" c:type="GstBaseSink*"/>
  2562. </instance-parameter>
  2563. <parameter name="max_bitrate" transfer-ownership="none">
  2564. <doc xml:space="preserve">the max_bitrate in bits per second</doc>
  2565. <type name="guint64" c:type="guint64"/>
  2566. </parameter>
  2567. </parameters>
  2568. </method>
  2569. <method name="set_max_lateness"
  2570. c:identifier="gst_base_sink_set_max_lateness">
  2571. <doc xml:space="preserve">Sets the new max lateness value to @max_lateness. This value is
  2572. used to decide if a buffer should be dropped or not based on the
  2573. buffer timestamp and the current clock time. A value of -1 means
  2574. an unlimited time.</doc>
  2575. <return-value transfer-ownership="none">
  2576. <type name="none" c:type="void"/>
  2577. </return-value>
  2578. <parameters>
  2579. <instance-parameter name="sink" transfer-ownership="none">
  2580. <doc xml:space="preserve">the sink</doc>
  2581. <type name="BaseSink" c:type="GstBaseSink*"/>
  2582. </instance-parameter>
  2583. <parameter name="max_lateness" transfer-ownership="none">
  2584. <doc xml:space="preserve">the new max lateness value.</doc>
  2585. <type name="gint64" c:type="gint64"/>
  2586. </parameter>
  2587. </parameters>
  2588. </method>
  2589. <method name="set_qos_enabled"
  2590. c:identifier="gst_base_sink_set_qos_enabled">
  2591. <doc xml:space="preserve">Configures @sink to send Quality-of-Service events upstream.</doc>
  2592. <return-value transfer-ownership="none">
  2593. <type name="none" c:type="void"/>
  2594. </return-value>
  2595. <parameters>
  2596. <instance-parameter name="sink" transfer-ownership="none">
  2597. <doc xml:space="preserve">the sink</doc>
  2598. <type name="BaseSink" c:type="GstBaseSink*"/>
  2599. </instance-parameter>
  2600. <parameter name="enabled" transfer-ownership="none">
  2601. <doc xml:space="preserve">the new qos value.</doc>
  2602. <type name="gboolean" c:type="gboolean"/>
  2603. </parameter>
  2604. </parameters>
  2605. </method>
  2606. <method name="set_render_delay"
  2607. c:identifier="gst_base_sink_set_render_delay">
  2608. <doc xml:space="preserve">Set the render delay in @sink to @delay. The render delay is the time
  2609. between actual rendering of a buffer and its synchronisation time. Some
  2610. devices might delay media rendering which can be compensated for with this
  2611. function.
  2612. After calling this function, this sink will report additional latency and
  2613. other sinks will adjust their latency to delay the rendering of their media.
  2614. This function is usually called by subclasses.</doc>
  2615. <return-value transfer-ownership="none">
  2616. <type name="none" c:type="void"/>
  2617. </return-value>
  2618. <parameters>
  2619. <instance-parameter name="sink" transfer-ownership="none">
  2620. <doc xml:space="preserve">a #GstBaseSink</doc>
  2621. <type name="BaseSink" c:type="GstBaseSink*"/>
  2622. </instance-parameter>
  2623. <parameter name="delay" transfer-ownership="none">
  2624. <doc xml:space="preserve">the new delay</doc>
  2625. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  2626. </parameter>
  2627. </parameters>
  2628. </method>
  2629. <method name="set_sync" c:identifier="gst_base_sink_set_sync">
  2630. <doc xml:space="preserve">Configures @sink to synchronize on the clock or not. When
  2631. @sync is %FALSE, incoming samples will be played as fast as
  2632. possible. If @sync is %TRUE, the timestamps of the incoming
  2633. buffers will be used to schedule the exact render time of its
  2634. contents.</doc>
  2635. <return-value transfer-ownership="none">
  2636. <type name="none" c:type="void"/>
  2637. </return-value>
  2638. <parameters>
  2639. <instance-parameter name="sink" transfer-ownership="none">
  2640. <doc xml:space="preserve">the sink</doc>
  2641. <type name="BaseSink" c:type="GstBaseSink*"/>
  2642. </instance-parameter>
  2643. <parameter name="sync" transfer-ownership="none">
  2644. <doc xml:space="preserve">the new sync value.</doc>
  2645. <type name="gboolean" c:type="gboolean"/>
  2646. </parameter>
  2647. </parameters>
  2648. </method>
  2649. <method name="set_throttle_time"
  2650. c:identifier="gst_base_sink_set_throttle_time">
  2651. <doc xml:space="preserve">Set the time that will be inserted between rendered buffers. This
  2652. can be used to control the maximum buffers per second that the sink
  2653. will render.</doc>
  2654. <return-value transfer-ownership="none">
  2655. <type name="none" c:type="void"/>
  2656. </return-value>
  2657. <parameters>
  2658. <instance-parameter name="sink" transfer-ownership="none">
  2659. <doc xml:space="preserve">a #GstBaseSink</doc>
  2660. <type name="BaseSink" c:type="GstBaseSink*"/>
  2661. </instance-parameter>
  2662. <parameter name="throttle" transfer-ownership="none">
  2663. <doc xml:space="preserve">the throttle time in nanoseconds</doc>
  2664. <type name="guint64" c:type="guint64"/>
  2665. </parameter>
  2666. </parameters>
  2667. </method>
  2668. <method name="set_ts_offset" c:identifier="gst_base_sink_set_ts_offset">
  2669. <doc xml:space="preserve">Adjust the synchronisation of @sink with @offset. A negative value will
  2670. render buffers earlier than their timestamp. A positive value will delay
  2671. rendering. This function can be used to fix playback of badly timestamped
  2672. buffers.</doc>
  2673. <return-value transfer-ownership="none">
  2674. <type name="none" c:type="void"/>
  2675. </return-value>
  2676. <parameters>
  2677. <instance-parameter name="sink" transfer-ownership="none">
  2678. <doc xml:space="preserve">the sink</doc>
  2679. <type name="BaseSink" c:type="GstBaseSink*"/>
  2680. </instance-parameter>
  2681. <parameter name="offset" transfer-ownership="none">
  2682. <doc xml:space="preserve">the new offset</doc>
  2683. <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
  2684. </parameter>
  2685. </parameters>
  2686. </method>
  2687. <method name="wait" c:identifier="gst_base_sink_wait">
  2688. <doc xml:space="preserve">This function will wait for preroll to complete and will then block until @time
  2689. is reached. It is usually called by subclasses that use their own internal
  2690. synchronisation but want to let some synchronization (like EOS) be handled
  2691. by the base class.
  2692. This function should only be called with the PREROLL_LOCK held (like when
  2693. receiving an EOS event in the ::event vmethod or when handling buffers in
  2694. ::render).
  2695. The @time argument should be the running_time of when the timeout should happen
  2696. and will be adjusted with any latency and offset configured in the sink.</doc>
  2697. <return-value transfer-ownership="none">
  2698. <doc xml:space="preserve">#GstFlowReturn</doc>
  2699. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2700. </return-value>
  2701. <parameters>
  2702. <instance-parameter name="sink" transfer-ownership="none">
  2703. <doc xml:space="preserve">the sink</doc>
  2704. <type name="BaseSink" c:type="GstBaseSink*"/>
  2705. </instance-parameter>
  2706. <parameter name="time" transfer-ownership="none">
  2707. <doc xml:space="preserve">the running_time to be reached</doc>
  2708. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  2709. </parameter>
  2710. <parameter name="jitter"
  2711. direction="out"
  2712. caller-allocates="0"
  2713. transfer-ownership="full"
  2714. optional="1"
  2715. allow-none="1">
  2716. <doc xml:space="preserve">the jitter to be filled with time diff, or %NULL</doc>
  2717. <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
  2718. </parameter>
  2719. </parameters>
  2720. </method>
  2721. <method name="wait_clock" c:identifier="gst_base_sink_wait_clock">
  2722. <doc xml:space="preserve">This function will block until @time is reached. It is usually called by
  2723. subclasses that use their own internal synchronisation.
  2724. If @time is not valid, no synchronisation is done and %GST_CLOCK_BADTIME is
  2725. returned. Likewise, if synchronisation is disabled in the element or there
  2726. is no clock, no synchronisation is done and %GST_CLOCK_BADTIME is returned.
  2727. This function should only be called with the PREROLL_LOCK held, like when
  2728. receiving an EOS event in the #GstBaseSinkClass.event() vmethod or when
  2729. receiving a buffer in
  2730. the #GstBaseSinkClass.render() vmethod.
  2731. The @time argument should be the running_time of when this method should
  2732. return and is not adjusted with any latency or offset configured in the
  2733. sink.</doc>
  2734. <return-value transfer-ownership="none">
  2735. <doc xml:space="preserve">#GstClockReturn</doc>
  2736. <type name="Gst.ClockReturn" c:type="GstClockReturn"/>
  2737. </return-value>
  2738. <parameters>
  2739. <instance-parameter name="sink" transfer-ownership="none">
  2740. <doc xml:space="preserve">the sink</doc>
  2741. <type name="BaseSink" c:type="GstBaseSink*"/>
  2742. </instance-parameter>
  2743. <parameter name="time" transfer-ownership="none">
  2744. <doc xml:space="preserve">the running_time to be reached</doc>
  2745. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  2746. </parameter>
  2747. <parameter name="jitter"
  2748. direction="out"
  2749. caller-allocates="0"
  2750. transfer-ownership="full"
  2751. optional="1"
  2752. allow-none="1">
  2753. <doc xml:space="preserve">the jitter to be filled with time diff, or %NULL</doc>
  2754. <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
  2755. </parameter>
  2756. </parameters>
  2757. </method>
  2758. <method name="wait_preroll" c:identifier="gst_base_sink_wait_preroll">
  2759. <doc xml:space="preserve">If the #GstBaseSinkClass.render() method performs its own synchronisation
  2760. against the clock it must unblock when going from PLAYING to the PAUSED state
  2761. and call this method before continuing to render the remaining data.
  2762. This function will block until a state change to PLAYING happens (in which
  2763. case this function returns %GST_FLOW_OK) or the processing must be stopped due
  2764. to a state change to READY or a FLUSH event (in which case this function
  2765. returns %GST_FLOW_FLUSHING).
  2766. This function should only be called with the PREROLL_LOCK held, like in the
  2767. render function.</doc>
  2768. <return-value transfer-ownership="none">
  2769. <doc xml:space="preserve">%GST_FLOW_OK if the preroll completed and processing can
  2770. continue. Any other return value should be returned from the render vmethod.</doc>
  2771. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  2772. </return-value>
  2773. <parameters>
  2774. <instance-parameter name="sink" transfer-ownership="none">
  2775. <doc xml:space="preserve">the sink</doc>
  2776. <type name="BaseSink" c:type="GstBaseSink*"/>
  2777. </instance-parameter>
  2778. </parameters>
  2779. </method>
  2780. <property name="async" writable="1" transfer-ownership="none">
  2781. <doc xml:space="preserve">If set to %TRUE, the basesink will perform asynchronous state changes.
  2782. When set to %FALSE, the sink will not signal the parent when it prerolls.
  2783. Use this option when dealing with sparse streams or when synchronisation is
  2784. not required.</doc>
  2785. <type name="gboolean" c:type="gboolean"/>
  2786. </property>
  2787. <property name="blocksize" writable="1" transfer-ownership="none">
  2788. <doc xml:space="preserve">The amount of bytes to pull when operating in pull mode.</doc>
  2789. <type name="guint" c:type="guint"/>
  2790. </property>
  2791. <property name="enable-last-sample"
  2792. writable="1"
  2793. transfer-ownership="none">
  2794. <doc xml:space="preserve">Enable the last-sample property. If %FALSE, basesink doesn't keep a
  2795. reference to the last buffer arrived and the last-sample property is always
  2796. set to %NULL. This can be useful if you need buffers to be released as soon
  2797. as possible, eg. if you're using a buffer pool.</doc>
  2798. <type name="gboolean" c:type="gboolean"/>
  2799. </property>
  2800. <property name="last-sample" transfer-ownership="none">
  2801. <doc xml:space="preserve">The last buffer that arrived in the sink and was used for preroll or for
  2802. rendering. This property can be used to generate thumbnails. This property
  2803. can be %NULL when the sink has not yet received a buffer.</doc>
  2804. <type name="Gst.Sample"/>
  2805. </property>
  2806. <property name="max-bitrate"
  2807. version="1.2"
  2808. writable="1"
  2809. transfer-ownership="none">
  2810. <doc xml:space="preserve">Control the maximum amount of bits that will be rendered per second.
  2811. Setting this property to a value bigger than 0 will make the sink delay
  2812. rendering of the buffers when it would exceed to max-bitrate.</doc>
  2813. <type name="guint64" c:type="guint64"/>
  2814. </property>
  2815. <property name="max-lateness" writable="1" transfer-ownership="none">
  2816. <type name="gint64" c:type="gint64"/>
  2817. </property>
  2818. <property name="qos" writable="1" transfer-ownership="none">
  2819. <type name="gboolean" c:type="gboolean"/>
  2820. </property>
  2821. <property name="render-delay" writable="1" transfer-ownership="none">
  2822. <doc xml:space="preserve">The additional delay between synchronisation and actual rendering of the
  2823. media. This property will add additional latency to the device in order to
  2824. make other sinks compensate for the delay.</doc>
  2825. <type name="guint64" c:type="guint64"/>
  2826. </property>
  2827. <property name="sync" writable="1" transfer-ownership="none">
  2828. <type name="gboolean" c:type="gboolean"/>
  2829. </property>
  2830. <property name="throttle-time" writable="1" transfer-ownership="none">
  2831. <doc xml:space="preserve">The time to insert between buffers. This property can be used to control
  2832. the maximum amount of buffers per second to render. Setting this property
  2833. to a value bigger than 0 will make the sink create THROTTLE QoS events.</doc>
  2834. <type name="guint64" c:type="guint64"/>
  2835. </property>
  2836. <property name="ts-offset" writable="1" transfer-ownership="none">
  2837. <doc xml:space="preserve">Controls the final synchronisation, a negative value will render the buffer
  2838. earlier while a positive value delays playback. This property can be
  2839. used to fix synchronisation in bad files.</doc>
  2840. <type name="gint64" c:type="gint64"/>
  2841. </property>
  2842. <field name="element">
  2843. <type name="Gst.Element" c:type="GstElement"/>
  2844. </field>
  2845. <field name="sinkpad">
  2846. <type name="Gst.Pad" c:type="GstPad*"/>
  2847. </field>
  2848. <field name="pad_mode">
  2849. <type name="Gst.PadMode" c:type="GstPadMode"/>
  2850. </field>
  2851. <field name="offset">
  2852. <type name="guint64" c:type="guint64"/>
  2853. </field>
  2854. <field name="can_activate_pull">
  2855. <type name="gboolean" c:type="gboolean"/>
  2856. </field>
  2857. <field name="can_activate_push">
  2858. <type name="gboolean" c:type="gboolean"/>
  2859. </field>
  2860. <field name="preroll_lock">
  2861. <type name="GLib.Mutex" c:type="GMutex"/>
  2862. </field>
  2863. <field name="preroll_cond">
  2864. <type name="GLib.Cond" c:type="GCond"/>
  2865. </field>
  2866. <field name="eos">
  2867. <type name="gboolean" c:type="gboolean"/>
  2868. </field>
  2869. <field name="need_preroll">
  2870. <type name="gboolean" c:type="gboolean"/>
  2871. </field>
  2872. <field name="have_preroll">
  2873. <type name="gboolean" c:type="gboolean"/>
  2874. </field>
  2875. <field name="playing_async">
  2876. <type name="gboolean" c:type="gboolean"/>
  2877. </field>
  2878. <field name="have_newsegment">
  2879. <type name="gboolean" c:type="gboolean"/>
  2880. </field>
  2881. <field name="segment">
  2882. <type name="Gst.Segment" c:type="GstSegment"/>
  2883. </field>
  2884. <field name="clock_id" readable="0" private="1">
  2885. <type name="Gst.ClockID" c:type="GstClockID"/>
  2886. </field>
  2887. <field name="sync" readable="0" private="1">
  2888. <type name="gboolean" c:type="gboolean"/>
  2889. </field>
  2890. <field name="flushing" readable="0" private="1">
  2891. <type name="gboolean" c:type="gboolean"/>
  2892. </field>
  2893. <field name="running" readable="0" private="1">
  2894. <type name="gboolean" c:type="gboolean"/>
  2895. </field>
  2896. <field name="max_lateness" readable="0" private="1">
  2897. <type name="gint64" c:type="gint64"/>
  2898. </field>
  2899. <field name="priv" readable="0" private="1">
  2900. <type name="BaseSinkPrivate" c:type="GstBaseSinkPrivate*"/>
  2901. </field>
  2902. <field name="_gst_reserved" readable="0" private="1">
  2903. <array zero-terminated="0" c:type="gpointer" fixed-size="20">
  2904. <type name="gpointer" c:type="gpointer"/>
  2905. </array>
  2906. </field>
  2907. </class>
  2908. <record name="BaseSinkClass"
  2909. c:type="GstBaseSinkClass"
  2910. glib:is-gtype-struct-for="BaseSink">
  2911. <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
  2912. needed. At the minimum, the @render method should be overridden to
  2913. output/present buffers.</doc>
  2914. <field name="parent_class">
  2915. <doc xml:space="preserve">Element parent class</doc>
  2916. <type name="Gst.ElementClass" c:type="GstElementClass"/>
  2917. </field>
  2918. <field name="get_caps">
  2919. <callback name="get_caps">
  2920. <return-value transfer-ownership="full">
  2921. <type name="Gst.Caps" c:type="GstCaps*"/>
  2922. </return-value>
  2923. <parameters>
  2924. <parameter name="sink" transfer-ownership="none">
  2925. <type name="BaseSink" c:type="GstBaseSink*"/>
  2926. </parameter>
  2927. <parameter name="filter" transfer-ownership="none">
  2928. <type name="Gst.Caps" c:type="GstCaps*"/>
  2929. </parameter>
  2930. </parameters>
  2931. </callback>
  2932. </field>
  2933. <field name="set_caps">
  2934. <callback name="set_caps">
  2935. <return-value transfer-ownership="none">
  2936. <type name="gboolean" c:type="gboolean"/>
  2937. </return-value>
  2938. <parameters>
  2939. <parameter name="sink" transfer-ownership="none">
  2940. <type name="BaseSink" c:type="GstBaseSink*"/>
  2941. </parameter>
  2942. <parameter name="caps" transfer-ownership="none">
  2943. <type name="Gst.Caps" c:type="GstCaps*"/>
  2944. </parameter>
  2945. </parameters>
  2946. </callback>
  2947. </field>
  2948. <field name="fixate">
  2949. <callback name="fixate">
  2950. <return-value transfer-ownership="full">
  2951. <type name="Gst.Caps" c:type="GstCaps*"/>
  2952. </return-value>
  2953. <parameters>
  2954. <parameter name="sink" transfer-ownership="none">
  2955. <type name="BaseSink" c:type="GstBaseSink*"/>
  2956. </parameter>
  2957. <parameter name="caps" transfer-ownership="none">
  2958. <type name="Gst.Caps" c:type="GstCaps*"/>
  2959. </parameter>
  2960. </parameters>
  2961. </callback>
  2962. </field>
  2963. <field name="activate_pull">
  2964. <callback name="activate_pull">
  2965. <return-value transfer-ownership="none">
  2966. <type name="gboolean" c:type="gboolean"/>
  2967. </return-value>
  2968. <parameters>
  2969. <parameter name="sink" transfer-ownership="none">
  2970. <type name="BaseSink" c:type="GstBaseSink*"/>
  2971. </parameter>
  2972. <parameter name="active" transfer-ownership="none">
  2973. <type name="gboolean" c:type="gboolean"/>
  2974. </parameter>
  2975. </parameters>
  2976. </callback>
  2977. </field>
  2978. <field name="get_times">
  2979. <callback name="get_times">
  2980. <return-value transfer-ownership="none">
  2981. <type name="none" c:type="void"/>
  2982. </return-value>
  2983. <parameters>
  2984. <parameter name="sink" transfer-ownership="none">
  2985. <type name="BaseSink" c:type="GstBaseSink*"/>
  2986. </parameter>
  2987. <parameter name="buffer" transfer-ownership="none">
  2988. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  2989. </parameter>
  2990. <parameter name="start" transfer-ownership="none">
  2991. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  2992. </parameter>
  2993. <parameter name="end" transfer-ownership="none">
  2994. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  2995. </parameter>
  2996. </parameters>
  2997. </callback>
  2998. </field>
  2999. <field name="propose_allocation">
  3000. <callback name="propose_allocation">
  3001. <return-value transfer-ownership="none">
  3002. <type name="gboolean" c:type="gboolean"/>
  3003. </return-value>
  3004. <parameters>
  3005. <parameter name="sink" transfer-ownership="none">
  3006. <type name="BaseSink" c:type="GstBaseSink*"/>
  3007. </parameter>
  3008. <parameter name="query" transfer-ownership="none">
  3009. <type name="Gst.Query" c:type="GstQuery*"/>
  3010. </parameter>
  3011. </parameters>
  3012. </callback>
  3013. </field>
  3014. <field name="start">
  3015. <callback name="start">
  3016. <return-value transfer-ownership="none">
  3017. <type name="gboolean" c:type="gboolean"/>
  3018. </return-value>
  3019. <parameters>
  3020. <parameter name="sink" transfer-ownership="none">
  3021. <type name="BaseSink" c:type="GstBaseSink*"/>
  3022. </parameter>
  3023. </parameters>
  3024. </callback>
  3025. </field>
  3026. <field name="stop">
  3027. <callback name="stop">
  3028. <return-value transfer-ownership="none">
  3029. <type name="gboolean" c:type="gboolean"/>
  3030. </return-value>
  3031. <parameters>
  3032. <parameter name="sink" transfer-ownership="none">
  3033. <type name="BaseSink" c:type="GstBaseSink*"/>
  3034. </parameter>
  3035. </parameters>
  3036. </callback>
  3037. </field>
  3038. <field name="unlock">
  3039. <callback name="unlock">
  3040. <return-value transfer-ownership="none">
  3041. <type name="gboolean" c:type="gboolean"/>
  3042. </return-value>
  3043. <parameters>
  3044. <parameter name="sink" transfer-ownership="none">
  3045. <type name="BaseSink" c:type="GstBaseSink*"/>
  3046. </parameter>
  3047. </parameters>
  3048. </callback>
  3049. </field>
  3050. <field name="unlock_stop">
  3051. <callback name="unlock_stop">
  3052. <return-value transfer-ownership="none">
  3053. <type name="gboolean" c:type="gboolean"/>
  3054. </return-value>
  3055. <parameters>
  3056. <parameter name="sink" transfer-ownership="none">
  3057. <type name="BaseSink" c:type="GstBaseSink*"/>
  3058. </parameter>
  3059. </parameters>
  3060. </callback>
  3061. </field>
  3062. <field name="query">
  3063. <callback name="query">
  3064. <return-value transfer-ownership="none">
  3065. <type name="gboolean" c:type="gboolean"/>
  3066. </return-value>
  3067. <parameters>
  3068. <parameter name="sink" transfer-ownership="none">
  3069. <type name="BaseSink" c:type="GstBaseSink*"/>
  3070. </parameter>
  3071. <parameter name="query" transfer-ownership="none">
  3072. <type name="Gst.Query" c:type="GstQuery*"/>
  3073. </parameter>
  3074. </parameters>
  3075. </callback>
  3076. </field>
  3077. <field name="event">
  3078. <callback name="event">
  3079. <return-value transfer-ownership="none">
  3080. <type name="gboolean" c:type="gboolean"/>
  3081. </return-value>
  3082. <parameters>
  3083. <parameter name="sink" transfer-ownership="none">
  3084. <type name="BaseSink" c:type="GstBaseSink*"/>
  3085. </parameter>
  3086. <parameter name="event" transfer-ownership="none">
  3087. <type name="Gst.Event" c:type="GstEvent*"/>
  3088. </parameter>
  3089. </parameters>
  3090. </callback>
  3091. </field>
  3092. <field name="wait_event">
  3093. <callback name="wait_event">
  3094. <return-value transfer-ownership="none">
  3095. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3096. </return-value>
  3097. <parameters>
  3098. <parameter name="sink" transfer-ownership="none">
  3099. <type name="BaseSink" c:type="GstBaseSink*"/>
  3100. </parameter>
  3101. <parameter name="event" transfer-ownership="none">
  3102. <type name="Gst.Event" c:type="GstEvent*"/>
  3103. </parameter>
  3104. </parameters>
  3105. </callback>
  3106. </field>
  3107. <field name="prepare">
  3108. <callback name="prepare">
  3109. <return-value transfer-ownership="none">
  3110. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3111. </return-value>
  3112. <parameters>
  3113. <parameter name="sink" transfer-ownership="none">
  3114. <type name="BaseSink" c:type="GstBaseSink*"/>
  3115. </parameter>
  3116. <parameter name="buffer" transfer-ownership="none">
  3117. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  3118. </parameter>
  3119. </parameters>
  3120. </callback>
  3121. </field>
  3122. <field name="prepare_list">
  3123. <callback name="prepare_list">
  3124. <return-value transfer-ownership="none">
  3125. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3126. </return-value>
  3127. <parameters>
  3128. <parameter name="sink" transfer-ownership="none">
  3129. <type name="BaseSink" c:type="GstBaseSink*"/>
  3130. </parameter>
  3131. <parameter name="buffer_list" transfer-ownership="none">
  3132. <type name="Gst.BufferList" c:type="GstBufferList*"/>
  3133. </parameter>
  3134. </parameters>
  3135. </callback>
  3136. </field>
  3137. <field name="preroll">
  3138. <callback name="preroll">
  3139. <return-value transfer-ownership="none">
  3140. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3141. </return-value>
  3142. <parameters>
  3143. <parameter name="sink" transfer-ownership="none">
  3144. <type name="BaseSink" c:type="GstBaseSink*"/>
  3145. </parameter>
  3146. <parameter name="buffer" transfer-ownership="none">
  3147. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  3148. </parameter>
  3149. </parameters>
  3150. </callback>
  3151. </field>
  3152. <field name="render">
  3153. <callback name="render">
  3154. <return-value transfer-ownership="none">
  3155. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3156. </return-value>
  3157. <parameters>
  3158. <parameter name="sink" transfer-ownership="none">
  3159. <type name="BaseSink" c:type="GstBaseSink*"/>
  3160. </parameter>
  3161. <parameter name="buffer" transfer-ownership="none">
  3162. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  3163. </parameter>
  3164. </parameters>
  3165. </callback>
  3166. </field>
  3167. <field name="render_list">
  3168. <callback name="render_list">
  3169. <return-value transfer-ownership="none">
  3170. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3171. </return-value>
  3172. <parameters>
  3173. <parameter name="sink" transfer-ownership="none">
  3174. <type name="BaseSink" c:type="GstBaseSink*"/>
  3175. </parameter>
  3176. <parameter name="buffer_list" transfer-ownership="none">
  3177. <type name="Gst.BufferList" c:type="GstBufferList*"/>
  3178. </parameter>
  3179. </parameters>
  3180. </callback>
  3181. </field>
  3182. <field name="_gst_reserved" readable="0" private="1">
  3183. <array zero-terminated="0" c:type="gpointer" fixed-size="20">
  3184. <type name="gpointer" c:type="gpointer"/>
  3185. </array>
  3186. </field>
  3187. </record>
  3188. <record name="BaseSinkPrivate" c:type="GstBaseSinkPrivate" disguised="1">
  3189. </record>
  3190. <class name="BaseSrc"
  3191. c:symbol-prefix="base_src"
  3192. c:type="GstBaseSrc"
  3193. parent="Gst.Element"
  3194. abstract="1"
  3195. glib:type-name="GstBaseSrc"
  3196. glib:get-type="gst_base_src_get_type"
  3197. glib:type-struct="BaseSrcClass">
  3198. <doc xml:space="preserve">This is a generic base class for source elements. The following
  3199. types of sources are supported:
  3200. &lt;itemizedlist&gt;
  3201. &lt;listitem&gt;&lt;para&gt;random access sources like files&lt;/para&gt;&lt;/listitem&gt;
  3202. &lt;listitem&gt;&lt;para&gt;seekable sources&lt;/para&gt;&lt;/listitem&gt;
  3203. &lt;listitem&gt;&lt;para&gt;live sources&lt;/para&gt;&lt;/listitem&gt;
  3204. &lt;/itemizedlist&gt;
  3205. The source can be configured to operate in any #GstFormat with the
  3206. gst_base_src_set_format() method. The currently set format determines
  3207. the format of the internal #GstSegment and any %GST_EVENT_SEGMENT
  3208. events. The default format for #GstBaseSrc is %GST_FORMAT_BYTES.
  3209. #GstBaseSrc always supports push mode scheduling. If the following
  3210. conditions are met, it also supports pull mode scheduling:
  3211. &lt;itemizedlist&gt;
  3212. &lt;listitem&gt;&lt;para&gt;The format is set to %GST_FORMAT_BYTES (default).&lt;/para&gt;
  3213. &lt;/listitem&gt;
  3214. &lt;listitem&gt;&lt;para&gt;#GstBaseSrcClass.is_seekable() returns %TRUE.&lt;/para&gt;
  3215. &lt;/listitem&gt;
  3216. &lt;/itemizedlist&gt;
  3217. If all the conditions are met for operating in pull mode, #GstBaseSrc is
  3218. automatically seekable in push mode as well. The following conditions must
  3219. be met to make the element seekable in push mode when the format is not
  3220. %GST_FORMAT_BYTES:
  3221. &lt;itemizedlist&gt;
  3222. &lt;listitem&gt;&lt;para&gt;
  3223. #GstBaseSrcClass.is_seekable() returns %TRUE.
  3224. &lt;/para&gt;&lt;/listitem&gt;
  3225. &lt;listitem&gt;&lt;para&gt;
  3226. #GstBaseSrcClass.query() can convert all supported seek formats to the
  3227. internal format as set with gst_base_src_set_format().
  3228. &lt;/para&gt;&lt;/listitem&gt;
  3229. &lt;listitem&gt;&lt;para&gt;
  3230. #GstBaseSrcClass.do_seek() is implemented, performs the seek and returns
  3231. %TRUE.
  3232. &lt;/para&gt;&lt;/listitem&gt;
  3233. &lt;/itemizedlist&gt;
  3234. When the element does not meet the requirements to operate in pull mode, the
  3235. offset and length in the #GstBaseSrcClass.create() method should be ignored.
  3236. It is recommended to subclass #GstPushSrc instead, in this situation. If the
  3237. element can operate in pull mode but only with specific offsets and
  3238. lengths, it is allowed to generate an error when the wrong values are passed
  3239. to the #GstBaseSrcClass.create() function.
  3240. #GstBaseSrc has support for live sources. Live sources are sources that when
  3241. paused discard data, such as audio or video capture devices. A typical live
  3242. source also produces data at a fixed rate and thus provides a clock to publish
  3243. this rate.
  3244. Use gst_base_src_set_live() to activate the live source mode.
  3245. A live source does not produce data in the PAUSED state. This means that the
  3246. #GstBaseSrcClass.create() method will not be called in PAUSED but only in
  3247. PLAYING. To signal the pipeline that the element will not produce data, the
  3248. return value from the READY to PAUSED state will be
  3249. %GST_STATE_CHANGE_NO_PREROLL.
  3250. A typical live source will timestamp the buffers it creates with the
  3251. current running time of the pipeline. This is one reason why a live source
  3252. can only produce data in the PLAYING state, when the clock is actually
  3253. distributed and running.
  3254. Live sources that synchronize and block on the clock (an audio source, for
  3255. example) can use gst_base_src_wait_playing() when the
  3256. #GstBaseSrcClass.create() function was interrupted by a state change to
  3257. PAUSED.
  3258. The #GstBaseSrcClass.get_times() method can be used to implement pseudo-live
  3259. sources. It only makes sense to implement the #GstBaseSrcClass.get_times()
  3260. function if the source is a live source. The #GstBaseSrcClass.get_times()
  3261. function should return timestamps starting from 0, as if it were a non-live
  3262. source. The base class will make sure that the timestamps are transformed
  3263. into the current running_time. The base source will then wait for the
  3264. calculated running_time before pushing out the buffer.
  3265. For live sources, the base class will by default report a latency of 0.
  3266. For pseudo live sources, the base class will by default measure the difference
  3267. between the first buffer timestamp and the start time of get_times and will
  3268. report this value as the latency.
  3269. Subclasses should override the query function when this behaviour is not
  3270. acceptable.
  3271. There is only support in #GstBaseSrc for exactly one source pad, which
  3272. should be named "src". A source implementation (subclass of #GstBaseSrc)
  3273. should install a pad template in its class_init function, like so:
  3274. |[&lt;!-- language="C" --&gt;
  3275. static void
  3276. my_element_class_init (GstMyElementClass *klass)
  3277. {
  3278. GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
  3279. // srctemplate should be a #GstStaticPadTemplate with direction
  3280. // %GST_PAD_SRC and name "src"
  3281. gst_element_class_add_pad_template (gstelement_class,
  3282. gst_static_pad_template_get (&amp;amp;srctemplate));
  3283. gst_element_class_set_static_metadata (gstelement_class,
  3284. "Source name",
  3285. "Source",
  3286. "My Source element",
  3287. "The author &amp;lt;my.sink@my.email&amp;gt;");
  3288. }
  3289. ]|
  3290. &lt;refsect2&gt;
  3291. &lt;title&gt;Controlled shutdown of live sources in applications&lt;/title&gt;
  3292. &lt;para&gt;
  3293. Applications that record from a live source may want to stop recording
  3294. in a controlled way, so that the recording is stopped, but the data
  3295. already in the pipeline is processed to the end (remember that many live
  3296. sources would go on recording forever otherwise). For that to happen the
  3297. application needs to make the source stop recording and send an EOS
  3298. event down the pipeline. The application would then wait for an
  3299. EOS message posted on the pipeline's bus to know when all data has
  3300. been processed and the pipeline can safely be stopped.
  3301. An application may send an EOS event to a source element to make it
  3302. perform the EOS logic (send EOS event downstream or post a
  3303. %GST_MESSAGE_SEGMENT_DONE on the bus). This can typically be done
  3304. with the gst_element_send_event() function on the element or its parent bin.
  3305. After the EOS has been sent to the element, the application should wait for
  3306. an EOS message to be posted on the pipeline's bus. Once this EOS message is
  3307. received, it may safely shut down the entire pipeline.
  3308. &lt;/para&gt;
  3309. &lt;/refsect2&gt;</doc>
  3310. <virtual-method name="alloc">
  3311. <return-value transfer-ownership="none">
  3312. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3313. </return-value>
  3314. <parameters>
  3315. <instance-parameter name="src" transfer-ownership="none">
  3316. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3317. </instance-parameter>
  3318. <parameter name="offset" transfer-ownership="none">
  3319. <type name="guint64" c:type="guint64"/>
  3320. </parameter>
  3321. <parameter name="size" transfer-ownership="none">
  3322. <type name="guint" c:type="guint"/>
  3323. </parameter>
  3324. <parameter name="buf" transfer-ownership="none">
  3325. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  3326. </parameter>
  3327. </parameters>
  3328. </virtual-method>
  3329. <virtual-method name="create">
  3330. <return-value transfer-ownership="none">
  3331. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3332. </return-value>
  3333. <parameters>
  3334. <instance-parameter name="src" transfer-ownership="none">
  3335. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3336. </instance-parameter>
  3337. <parameter name="offset" transfer-ownership="none">
  3338. <type name="guint64" c:type="guint64"/>
  3339. </parameter>
  3340. <parameter name="size" transfer-ownership="none">
  3341. <type name="guint" c:type="guint"/>
  3342. </parameter>
  3343. <parameter name="buf" transfer-ownership="none">
  3344. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  3345. </parameter>
  3346. </parameters>
  3347. </virtual-method>
  3348. <virtual-method name="decide_allocation">
  3349. <return-value transfer-ownership="none">
  3350. <type name="gboolean" c:type="gboolean"/>
  3351. </return-value>
  3352. <parameters>
  3353. <instance-parameter name="src" transfer-ownership="none">
  3354. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3355. </instance-parameter>
  3356. <parameter name="query" transfer-ownership="none">
  3357. <type name="Gst.Query" c:type="GstQuery*"/>
  3358. </parameter>
  3359. </parameters>
  3360. </virtual-method>
  3361. <virtual-method name="do_seek">
  3362. <return-value transfer-ownership="none">
  3363. <type name="gboolean" c:type="gboolean"/>
  3364. </return-value>
  3365. <parameters>
  3366. <instance-parameter name="src" transfer-ownership="none">
  3367. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3368. </instance-parameter>
  3369. <parameter name="segment" transfer-ownership="none">
  3370. <type name="Gst.Segment" c:type="GstSegment*"/>
  3371. </parameter>
  3372. </parameters>
  3373. </virtual-method>
  3374. <virtual-method name="event">
  3375. <return-value transfer-ownership="none">
  3376. <type name="gboolean" c:type="gboolean"/>
  3377. </return-value>
  3378. <parameters>
  3379. <instance-parameter name="src" transfer-ownership="none">
  3380. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3381. </instance-parameter>
  3382. <parameter name="event" transfer-ownership="none">
  3383. <type name="Gst.Event" c:type="GstEvent*"/>
  3384. </parameter>
  3385. </parameters>
  3386. </virtual-method>
  3387. <virtual-method name="fill">
  3388. <return-value transfer-ownership="none">
  3389. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3390. </return-value>
  3391. <parameters>
  3392. <instance-parameter name="src" transfer-ownership="none">
  3393. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3394. </instance-parameter>
  3395. <parameter name="offset" transfer-ownership="none">
  3396. <type name="guint64" c:type="guint64"/>
  3397. </parameter>
  3398. <parameter name="size" transfer-ownership="none">
  3399. <type name="guint" c:type="guint"/>
  3400. </parameter>
  3401. <parameter name="buf" transfer-ownership="none">
  3402. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  3403. </parameter>
  3404. </parameters>
  3405. </virtual-method>
  3406. <virtual-method name="fixate">
  3407. <return-value transfer-ownership="full">
  3408. <type name="Gst.Caps" c:type="GstCaps*"/>
  3409. </return-value>
  3410. <parameters>
  3411. <instance-parameter name="src" transfer-ownership="none">
  3412. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3413. </instance-parameter>
  3414. <parameter name="caps" transfer-ownership="none">
  3415. <type name="Gst.Caps" c:type="GstCaps*"/>
  3416. </parameter>
  3417. </parameters>
  3418. </virtual-method>
  3419. <virtual-method name="get_caps">
  3420. <return-value transfer-ownership="full">
  3421. <type name="Gst.Caps" c:type="GstCaps*"/>
  3422. </return-value>
  3423. <parameters>
  3424. <instance-parameter name="src" transfer-ownership="none">
  3425. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3426. </instance-parameter>
  3427. <parameter name="filter" transfer-ownership="none">
  3428. <type name="Gst.Caps" c:type="GstCaps*"/>
  3429. </parameter>
  3430. </parameters>
  3431. </virtual-method>
  3432. <virtual-method name="get_size">
  3433. <return-value transfer-ownership="none">
  3434. <type name="gboolean" c:type="gboolean"/>
  3435. </return-value>
  3436. <parameters>
  3437. <instance-parameter name="src" transfer-ownership="none">
  3438. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3439. </instance-parameter>
  3440. <parameter name="size" transfer-ownership="none">
  3441. <type name="guint64" c:type="guint64*"/>
  3442. </parameter>
  3443. </parameters>
  3444. </virtual-method>
  3445. <virtual-method name="get_times">
  3446. <return-value transfer-ownership="none">
  3447. <type name="none" c:type="void"/>
  3448. </return-value>
  3449. <parameters>
  3450. <instance-parameter name="src" transfer-ownership="none">
  3451. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3452. </instance-parameter>
  3453. <parameter name="buffer" transfer-ownership="none">
  3454. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  3455. </parameter>
  3456. <parameter name="start" transfer-ownership="none">
  3457. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  3458. </parameter>
  3459. <parameter name="end" transfer-ownership="none">
  3460. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  3461. </parameter>
  3462. </parameters>
  3463. </virtual-method>
  3464. <virtual-method name="is_seekable">
  3465. <return-value transfer-ownership="none">
  3466. <type name="gboolean" c:type="gboolean"/>
  3467. </return-value>
  3468. <parameters>
  3469. <instance-parameter name="src" transfer-ownership="none">
  3470. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3471. </instance-parameter>
  3472. </parameters>
  3473. </virtual-method>
  3474. <virtual-method name="negotiate">
  3475. <return-value transfer-ownership="none">
  3476. <type name="gboolean" c:type="gboolean"/>
  3477. </return-value>
  3478. <parameters>
  3479. <instance-parameter name="src" transfer-ownership="none">
  3480. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3481. </instance-parameter>
  3482. </parameters>
  3483. </virtual-method>
  3484. <virtual-method name="prepare_seek_segment">
  3485. <return-value transfer-ownership="none">
  3486. <type name="gboolean" c:type="gboolean"/>
  3487. </return-value>
  3488. <parameters>
  3489. <instance-parameter name="src" transfer-ownership="none">
  3490. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3491. </instance-parameter>
  3492. <parameter name="seek" transfer-ownership="none">
  3493. <type name="Gst.Event" c:type="GstEvent*"/>
  3494. </parameter>
  3495. <parameter name="segment" transfer-ownership="none">
  3496. <type name="Gst.Segment" c:type="GstSegment*"/>
  3497. </parameter>
  3498. </parameters>
  3499. </virtual-method>
  3500. <virtual-method name="query">
  3501. <return-value transfer-ownership="none">
  3502. <type name="gboolean" c:type="gboolean"/>
  3503. </return-value>
  3504. <parameters>
  3505. <instance-parameter name="src" transfer-ownership="none">
  3506. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3507. </instance-parameter>
  3508. <parameter name="query" transfer-ownership="none">
  3509. <type name="Gst.Query" c:type="GstQuery*"/>
  3510. </parameter>
  3511. </parameters>
  3512. </virtual-method>
  3513. <virtual-method name="set_caps" invoker="set_caps">
  3514. <doc xml:space="preserve">Set new caps on the basesrc source pad.</doc>
  3515. <return-value transfer-ownership="none">
  3516. <doc xml:space="preserve">%TRUE if the caps could be set</doc>
  3517. <type name="gboolean" c:type="gboolean"/>
  3518. </return-value>
  3519. <parameters>
  3520. <instance-parameter name="src" transfer-ownership="none">
  3521. <doc xml:space="preserve">a #GstBaseSrc</doc>
  3522. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3523. </instance-parameter>
  3524. <parameter name="caps" transfer-ownership="none">
  3525. <doc xml:space="preserve">a #GstCaps</doc>
  3526. <type name="Gst.Caps" c:type="GstCaps*"/>
  3527. </parameter>
  3528. </parameters>
  3529. </virtual-method>
  3530. <virtual-method name="start">
  3531. <return-value transfer-ownership="none">
  3532. <type name="gboolean" c:type="gboolean"/>
  3533. </return-value>
  3534. <parameters>
  3535. <instance-parameter name="src" transfer-ownership="none">
  3536. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3537. </instance-parameter>
  3538. </parameters>
  3539. </virtual-method>
  3540. <virtual-method name="stop">
  3541. <return-value transfer-ownership="none">
  3542. <type name="gboolean" c:type="gboolean"/>
  3543. </return-value>
  3544. <parameters>
  3545. <instance-parameter name="src" transfer-ownership="none">
  3546. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3547. </instance-parameter>
  3548. </parameters>
  3549. </virtual-method>
  3550. <virtual-method name="unlock">
  3551. <return-value transfer-ownership="none">
  3552. <type name="gboolean" c:type="gboolean"/>
  3553. </return-value>
  3554. <parameters>
  3555. <instance-parameter name="src" transfer-ownership="none">
  3556. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3557. </instance-parameter>
  3558. </parameters>
  3559. </virtual-method>
  3560. <virtual-method name="unlock_stop">
  3561. <return-value transfer-ownership="none">
  3562. <type name="gboolean" c:type="gboolean"/>
  3563. </return-value>
  3564. <parameters>
  3565. <instance-parameter name="src" transfer-ownership="none">
  3566. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3567. </instance-parameter>
  3568. </parameters>
  3569. </virtual-method>
  3570. <method name="get_allocator" c:identifier="gst_base_src_get_allocator">
  3571. <doc xml:space="preserve">Lets #GstBaseSrc sub-classes to know the memory @allocator
  3572. used by the base class and its @params.
  3573. Unref the @allocator after usage.</doc>
  3574. <return-value transfer-ownership="none">
  3575. <type name="none" c:type="void"/>
  3576. </return-value>
  3577. <parameters>
  3578. <instance-parameter name="src" transfer-ownership="none">
  3579. <doc xml:space="preserve">a #GstBaseSrc</doc>
  3580. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3581. </instance-parameter>
  3582. <parameter name="allocator"
  3583. direction="out"
  3584. caller-allocates="0"
  3585. transfer-ownership="full"
  3586. optional="1"
  3587. allow-none="1">
  3588. <doc xml:space="preserve">the #GstAllocator
  3589. used</doc>
  3590. <type name="Gst.Allocator" c:type="GstAllocator**"/>
  3591. </parameter>
  3592. <parameter name="params"
  3593. direction="out"
  3594. caller-allocates="1"
  3595. transfer-ownership="full"
  3596. optional="1"
  3597. allow-none="1">
  3598. <doc xml:space="preserve">the
  3599. #GstAllocationParams of @allocator</doc>
  3600. <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
  3601. </parameter>
  3602. </parameters>
  3603. </method>
  3604. <method name="get_blocksize" c:identifier="gst_base_src_get_blocksize">
  3605. <doc xml:space="preserve">Get the number of bytes that @src will push out with each buffer.</doc>
  3606. <return-value transfer-ownership="none">
  3607. <doc xml:space="preserve">the number of bytes pushed with each buffer.</doc>
  3608. <type name="guint" c:type="guint"/>
  3609. </return-value>
  3610. <parameters>
  3611. <instance-parameter name="src" transfer-ownership="none">
  3612. <doc xml:space="preserve">the source</doc>
  3613. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3614. </instance-parameter>
  3615. </parameters>
  3616. </method>
  3617. <method name="get_buffer_pool"
  3618. c:identifier="gst_base_src_get_buffer_pool">
  3619. <return-value transfer-ownership="full">
  3620. <doc xml:space="preserve">the instance of the #GstBufferPool used
  3621. by the src; unref it after usage.</doc>
  3622. <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
  3623. </return-value>
  3624. <parameters>
  3625. <instance-parameter name="src" transfer-ownership="none">
  3626. <doc xml:space="preserve">a #GstBaseSrc</doc>
  3627. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3628. </instance-parameter>
  3629. </parameters>
  3630. </method>
  3631. <method name="get_do_timestamp"
  3632. c:identifier="gst_base_src_get_do_timestamp">
  3633. <doc xml:space="preserve">Query if @src timestamps outgoing buffers based on the current running_time.</doc>
  3634. <return-value transfer-ownership="none">
  3635. <doc xml:space="preserve">%TRUE if the base class will automatically timestamp outgoing buffers.</doc>
  3636. <type name="gboolean" c:type="gboolean"/>
  3637. </return-value>
  3638. <parameters>
  3639. <instance-parameter name="src" transfer-ownership="none">
  3640. <doc xml:space="preserve">the source</doc>
  3641. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3642. </instance-parameter>
  3643. </parameters>
  3644. </method>
  3645. <method name="is_async" c:identifier="gst_base_src_is_async">
  3646. <doc xml:space="preserve">Get the current async behaviour of @src. See also gst_base_src_set_async().</doc>
  3647. <return-value transfer-ownership="none">
  3648. <doc xml:space="preserve">%TRUE if @src is operating in async mode.</doc>
  3649. <type name="gboolean" c:type="gboolean"/>
  3650. </return-value>
  3651. <parameters>
  3652. <instance-parameter name="src" transfer-ownership="none">
  3653. <doc xml:space="preserve">base source instance</doc>
  3654. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3655. </instance-parameter>
  3656. </parameters>
  3657. </method>
  3658. <method name="is_live" c:identifier="gst_base_src_is_live">
  3659. <doc xml:space="preserve">Check if an element is in live mode.</doc>
  3660. <return-value transfer-ownership="none">
  3661. <doc xml:space="preserve">%TRUE if element is in live mode.</doc>
  3662. <type name="gboolean" c:type="gboolean"/>
  3663. </return-value>
  3664. <parameters>
  3665. <instance-parameter name="src" transfer-ownership="none">
  3666. <doc xml:space="preserve">base source instance</doc>
  3667. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3668. </instance-parameter>
  3669. </parameters>
  3670. </method>
  3671. <method name="new_seamless_segment"
  3672. c:identifier="gst_base_src_new_seamless_segment">
  3673. <doc xml:space="preserve">Prepare a new seamless segment for emission downstream. This function must
  3674. only be called by derived sub-classes, and only from the create() function,
  3675. as the stream-lock needs to be held.
  3676. The format for the new segment will be the current format of the source, as
  3677. configured with gst_base_src_set_format()</doc>
  3678. <return-value transfer-ownership="none">
  3679. <doc xml:space="preserve">%TRUE if preparation of the seamless segment succeeded.</doc>
  3680. <type name="gboolean" c:type="gboolean"/>
  3681. </return-value>
  3682. <parameters>
  3683. <instance-parameter name="src" transfer-ownership="none">
  3684. <doc xml:space="preserve">The source</doc>
  3685. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3686. </instance-parameter>
  3687. <parameter name="start" transfer-ownership="none">
  3688. <doc xml:space="preserve">The new start value for the segment</doc>
  3689. <type name="gint64" c:type="gint64"/>
  3690. </parameter>
  3691. <parameter name="stop" transfer-ownership="none">
  3692. <doc xml:space="preserve">Stop value for the new segment</doc>
  3693. <type name="gint64" c:type="gint64"/>
  3694. </parameter>
  3695. <parameter name="time" transfer-ownership="none">
  3696. <doc xml:space="preserve">The new time value for the start of the new segment</doc>
  3697. <type name="gint64" c:type="gint64"/>
  3698. </parameter>
  3699. </parameters>
  3700. </method>
  3701. <method name="query_latency" c:identifier="gst_base_src_query_latency">
  3702. <doc xml:space="preserve">Query the source for the latency parameters. @live will be %TRUE when @src is
  3703. configured as a live source. @min_latency and @max_latency will be set
  3704. to the difference between the running time and the timestamp of the first
  3705. buffer.
  3706. This function is mostly used by subclasses.</doc>
  3707. <return-value transfer-ownership="none">
  3708. <doc xml:space="preserve">%TRUE if the query succeeded.</doc>
  3709. <type name="gboolean" c:type="gboolean"/>
  3710. </return-value>
  3711. <parameters>
  3712. <instance-parameter name="src" transfer-ownership="none">
  3713. <doc xml:space="preserve">the source</doc>
  3714. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3715. </instance-parameter>
  3716. <parameter name="live"
  3717. direction="out"
  3718. caller-allocates="0"
  3719. transfer-ownership="full"
  3720. optional="1"
  3721. allow-none="1">
  3722. <doc xml:space="preserve">if the source is live</doc>
  3723. <type name="gboolean" c:type="gboolean*"/>
  3724. </parameter>
  3725. <parameter name="min_latency"
  3726. direction="out"
  3727. caller-allocates="0"
  3728. transfer-ownership="full"
  3729. optional="1"
  3730. allow-none="1">
  3731. <doc xml:space="preserve">the min latency of the source</doc>
  3732. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  3733. </parameter>
  3734. <parameter name="max_latency"
  3735. direction="out"
  3736. caller-allocates="0"
  3737. transfer-ownership="full"
  3738. optional="1"
  3739. allow-none="1">
  3740. <doc xml:space="preserve">the max latency of the source</doc>
  3741. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  3742. </parameter>
  3743. </parameters>
  3744. </method>
  3745. <method name="set_async" c:identifier="gst_base_src_set_async">
  3746. <doc xml:space="preserve">Configure async behaviour in @src, no state change will block. The open,
  3747. close, start, stop, play and pause virtual methods will be executed in a
  3748. different thread and are thus allowed to perform blocking operations. Any
  3749. blocking operation should be unblocked with the unlock vmethod.</doc>
  3750. <return-value transfer-ownership="none">
  3751. <type name="none" c:type="void"/>
  3752. </return-value>
  3753. <parameters>
  3754. <instance-parameter name="src" transfer-ownership="none">
  3755. <doc xml:space="preserve">base source instance</doc>
  3756. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3757. </instance-parameter>
  3758. <parameter name="async" transfer-ownership="none">
  3759. <doc xml:space="preserve">new async mode</doc>
  3760. <type name="gboolean" c:type="gboolean"/>
  3761. </parameter>
  3762. </parameters>
  3763. </method>
  3764. <method name="set_automatic_eos"
  3765. c:identifier="gst_base_src_set_automatic_eos"
  3766. version="1.4">
  3767. <doc xml:space="preserve">If @automatic_eos is %TRUE, @src will automatically go EOS if a buffer
  3768. after the total size is returned. By default this is %TRUE but sources
  3769. that can't return an authoritative size and only know that they're EOS
  3770. when trying to read more should set this to %FALSE.</doc>
  3771. <return-value transfer-ownership="none">
  3772. <type name="none" c:type="void"/>
  3773. </return-value>
  3774. <parameters>
  3775. <instance-parameter name="src" transfer-ownership="none">
  3776. <doc xml:space="preserve">base source instance</doc>
  3777. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3778. </instance-parameter>
  3779. <parameter name="automatic_eos" transfer-ownership="none">
  3780. <doc xml:space="preserve">automatic eos</doc>
  3781. <type name="gboolean" c:type="gboolean"/>
  3782. </parameter>
  3783. </parameters>
  3784. </method>
  3785. <method name="set_blocksize" c:identifier="gst_base_src_set_blocksize">
  3786. <doc xml:space="preserve">Set the number of bytes that @src will push out with each buffer. When
  3787. @blocksize is set to -1, a default length will be used.</doc>
  3788. <return-value transfer-ownership="none">
  3789. <type name="none" c:type="void"/>
  3790. </return-value>
  3791. <parameters>
  3792. <instance-parameter name="src" transfer-ownership="none">
  3793. <doc xml:space="preserve">the source</doc>
  3794. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3795. </instance-parameter>
  3796. <parameter name="blocksize" transfer-ownership="none">
  3797. <doc xml:space="preserve">the new blocksize in bytes</doc>
  3798. <type name="guint" c:type="guint"/>
  3799. </parameter>
  3800. </parameters>
  3801. </method>
  3802. <method name="set_caps" c:identifier="gst_base_src_set_caps">
  3803. <doc xml:space="preserve">Set new caps on the basesrc source pad.</doc>
  3804. <return-value transfer-ownership="none">
  3805. <doc xml:space="preserve">%TRUE if the caps could be set</doc>
  3806. <type name="gboolean" c:type="gboolean"/>
  3807. </return-value>
  3808. <parameters>
  3809. <instance-parameter name="src" transfer-ownership="none">
  3810. <doc xml:space="preserve">a #GstBaseSrc</doc>
  3811. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3812. </instance-parameter>
  3813. <parameter name="caps" transfer-ownership="none">
  3814. <doc xml:space="preserve">a #GstCaps</doc>
  3815. <type name="Gst.Caps" c:type="GstCaps*"/>
  3816. </parameter>
  3817. </parameters>
  3818. </method>
  3819. <method name="set_do_timestamp"
  3820. c:identifier="gst_base_src_set_do_timestamp">
  3821. <doc xml:space="preserve">Configure @src to automatically timestamp outgoing buffers based on the
  3822. current running_time of the pipeline. This property is mostly useful for live
  3823. sources.</doc>
  3824. <return-value transfer-ownership="none">
  3825. <type name="none" c:type="void"/>
  3826. </return-value>
  3827. <parameters>
  3828. <instance-parameter name="src" transfer-ownership="none">
  3829. <doc xml:space="preserve">the source</doc>
  3830. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3831. </instance-parameter>
  3832. <parameter name="timestamp" transfer-ownership="none">
  3833. <doc xml:space="preserve">enable or disable timestamping</doc>
  3834. <type name="gboolean" c:type="gboolean"/>
  3835. </parameter>
  3836. </parameters>
  3837. </method>
  3838. <method name="set_dynamic_size"
  3839. c:identifier="gst_base_src_set_dynamic_size">
  3840. <doc xml:space="preserve">If not @dynamic, size is only updated when needed, such as when trying to
  3841. read past current tracked size. Otherwise, size is checked for upon each
  3842. read.</doc>
  3843. <return-value transfer-ownership="none">
  3844. <type name="none" c:type="void"/>
  3845. </return-value>
  3846. <parameters>
  3847. <instance-parameter name="src" transfer-ownership="none">
  3848. <doc xml:space="preserve">base source instance</doc>
  3849. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3850. </instance-parameter>
  3851. <parameter name="dynamic" transfer-ownership="none">
  3852. <doc xml:space="preserve">new dynamic size mode</doc>
  3853. <type name="gboolean" c:type="gboolean"/>
  3854. </parameter>
  3855. </parameters>
  3856. </method>
  3857. <method name="set_format" c:identifier="gst_base_src_set_format">
  3858. <doc xml:space="preserve">Sets the default format of the source. This will be the format used
  3859. for sending SEGMENT events and for performing seeks.
  3860. If a format of GST_FORMAT_BYTES is set, the element will be able to
  3861. operate in pull mode if the #GstBaseSrcClass.is_seekable() returns %TRUE.
  3862. This function must only be called in states &lt; %GST_STATE_PAUSED.</doc>
  3863. <return-value transfer-ownership="none">
  3864. <type name="none" c:type="void"/>
  3865. </return-value>
  3866. <parameters>
  3867. <instance-parameter name="src" transfer-ownership="none">
  3868. <doc xml:space="preserve">base source instance</doc>
  3869. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3870. </instance-parameter>
  3871. <parameter name="format" transfer-ownership="none">
  3872. <doc xml:space="preserve">the format to use</doc>
  3873. <type name="Gst.Format" c:type="GstFormat"/>
  3874. </parameter>
  3875. </parameters>
  3876. </method>
  3877. <method name="set_live" c:identifier="gst_base_src_set_live">
  3878. <doc xml:space="preserve">If the element listens to a live source, @live should
  3879. be set to %TRUE.
  3880. A live source will not produce data in the PAUSED state and
  3881. will therefore not be able to participate in the PREROLL phase
  3882. of a pipeline. To signal this fact to the application and the
  3883. pipeline, the state change return value of the live source will
  3884. be GST_STATE_CHANGE_NO_PREROLL.</doc>
  3885. <return-value transfer-ownership="none">
  3886. <type name="none" c:type="void"/>
  3887. </return-value>
  3888. <parameters>
  3889. <instance-parameter name="src" transfer-ownership="none">
  3890. <doc xml:space="preserve">base source instance</doc>
  3891. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3892. </instance-parameter>
  3893. <parameter name="live" transfer-ownership="none">
  3894. <doc xml:space="preserve">new live-mode</doc>
  3895. <type name="gboolean" c:type="gboolean"/>
  3896. </parameter>
  3897. </parameters>
  3898. </method>
  3899. <method name="start_complete" c:identifier="gst_base_src_start_complete">
  3900. <doc xml:space="preserve">Complete an asynchronous start operation. When the subclass overrides the
  3901. start method, it should call gst_base_src_start_complete() when the start
  3902. operation completes either from the same thread or from an asynchronous
  3903. helper thread.</doc>
  3904. <return-value transfer-ownership="none">
  3905. <type name="none" c:type="void"/>
  3906. </return-value>
  3907. <parameters>
  3908. <instance-parameter name="basesrc" transfer-ownership="none">
  3909. <doc xml:space="preserve">base source instance</doc>
  3910. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3911. </instance-parameter>
  3912. <parameter name="ret" transfer-ownership="none">
  3913. <doc xml:space="preserve">a #GstFlowReturn</doc>
  3914. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3915. </parameter>
  3916. </parameters>
  3917. </method>
  3918. <method name="start_wait" c:identifier="gst_base_src_start_wait">
  3919. <doc xml:space="preserve">Wait until the start operation completes.</doc>
  3920. <return-value transfer-ownership="none">
  3921. <doc xml:space="preserve">a #GstFlowReturn.</doc>
  3922. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3923. </return-value>
  3924. <parameters>
  3925. <instance-parameter name="basesrc" transfer-ownership="none">
  3926. <doc xml:space="preserve">base source instance</doc>
  3927. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3928. </instance-parameter>
  3929. </parameters>
  3930. </method>
  3931. <method name="wait_playing" c:identifier="gst_base_src_wait_playing">
  3932. <doc xml:space="preserve">If the #GstBaseSrcClass.create() method performs its own synchronisation
  3933. against the clock it must unblock when going from PLAYING to the PAUSED state
  3934. and call this method before continuing to produce the remaining data.
  3935. This function will block until a state change to PLAYING happens (in which
  3936. case this function returns %GST_FLOW_OK) or the processing must be stopped due
  3937. to a state change to READY or a FLUSH event (in which case this function
  3938. returns %GST_FLOW_FLUSHING).</doc>
  3939. <return-value transfer-ownership="none">
  3940. <doc xml:space="preserve">%GST_FLOW_OK if @src is PLAYING and processing can
  3941. continue. Any other return value should be returned from the create vmethod.</doc>
  3942. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  3943. </return-value>
  3944. <parameters>
  3945. <instance-parameter name="src" transfer-ownership="none">
  3946. <doc xml:space="preserve">the src</doc>
  3947. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  3948. </instance-parameter>
  3949. </parameters>
  3950. </method>
  3951. <property name="blocksize" writable="1" transfer-ownership="none">
  3952. <type name="guint" c:type="guint"/>
  3953. </property>
  3954. <property name="do-timestamp" writable="1" transfer-ownership="none">
  3955. <type name="gboolean" c:type="gboolean"/>
  3956. </property>
  3957. <property name="num-buffers" writable="1" transfer-ownership="none">
  3958. <type name="gint" c:type="gint"/>
  3959. </property>
  3960. <property name="typefind" writable="1" transfer-ownership="none">
  3961. <type name="gboolean" c:type="gboolean"/>
  3962. </property>
  3963. <field name="element">
  3964. <type name="Gst.Element" c:type="GstElement"/>
  3965. </field>
  3966. <field name="srcpad">
  3967. <type name="Gst.Pad" c:type="GstPad*"/>
  3968. </field>
  3969. <field name="live_lock">
  3970. <type name="GLib.Mutex" c:type="GMutex"/>
  3971. </field>
  3972. <field name="live_cond">
  3973. <type name="GLib.Cond" c:type="GCond"/>
  3974. </field>
  3975. <field name="is_live">
  3976. <type name="gboolean" c:type="gboolean"/>
  3977. </field>
  3978. <field name="live_running">
  3979. <type name="gboolean" c:type="gboolean"/>
  3980. </field>
  3981. <field name="blocksize">
  3982. <type name="guint" c:type="guint"/>
  3983. </field>
  3984. <field name="can_activate_push">
  3985. <type name="gboolean" c:type="gboolean"/>
  3986. </field>
  3987. <field name="random_access">
  3988. <type name="gboolean" c:type="gboolean"/>
  3989. </field>
  3990. <field name="clock_id">
  3991. <type name="Gst.ClockID" c:type="GstClockID"/>
  3992. </field>
  3993. <field name="segment">
  3994. <type name="Gst.Segment" c:type="GstSegment"/>
  3995. </field>
  3996. <field name="need_newsegment">
  3997. <type name="gboolean" c:type="gboolean"/>
  3998. </field>
  3999. <field name="num_buffers">
  4000. <type name="gint" c:type="gint"/>
  4001. </field>
  4002. <field name="num_buffers_left">
  4003. <type name="gint" c:type="gint"/>
  4004. </field>
  4005. <field name="typefind">
  4006. <type name="gboolean" c:type="gboolean"/>
  4007. </field>
  4008. <field name="running">
  4009. <type name="gboolean" c:type="gboolean"/>
  4010. </field>
  4011. <field name="pending_seek">
  4012. <type name="Gst.Event" c:type="GstEvent*"/>
  4013. </field>
  4014. <field name="priv">
  4015. <type name="BaseSrcPrivate" c:type="GstBaseSrcPrivate*"/>
  4016. </field>
  4017. <field name="_gst_reserved" readable="0" private="1">
  4018. <array zero-terminated="0" c:type="gpointer" fixed-size="20">
  4019. <type name="gpointer" c:type="gpointer"/>
  4020. </array>
  4021. </field>
  4022. </class>
  4023. <record name="BaseSrcClass"
  4024. c:type="GstBaseSrcClass"
  4025. glib:is-gtype-struct-for="BaseSrc">
  4026. <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
  4027. needed. At the minimum, the @create method should be overridden to produce
  4028. buffers.</doc>
  4029. <field name="parent_class">
  4030. <doc xml:space="preserve">Element parent class</doc>
  4031. <type name="Gst.ElementClass" c:type="GstElementClass"/>
  4032. </field>
  4033. <field name="get_caps">
  4034. <callback name="get_caps">
  4035. <return-value transfer-ownership="full">
  4036. <type name="Gst.Caps" c:type="GstCaps*"/>
  4037. </return-value>
  4038. <parameters>
  4039. <parameter name="src" transfer-ownership="none">
  4040. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4041. </parameter>
  4042. <parameter name="filter" transfer-ownership="none">
  4043. <type name="Gst.Caps" c:type="GstCaps*"/>
  4044. </parameter>
  4045. </parameters>
  4046. </callback>
  4047. </field>
  4048. <field name="negotiate">
  4049. <callback name="negotiate">
  4050. <return-value transfer-ownership="none">
  4051. <type name="gboolean" c:type="gboolean"/>
  4052. </return-value>
  4053. <parameters>
  4054. <parameter name="src" transfer-ownership="none">
  4055. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4056. </parameter>
  4057. </parameters>
  4058. </callback>
  4059. </field>
  4060. <field name="fixate">
  4061. <callback name="fixate">
  4062. <return-value transfer-ownership="full">
  4063. <type name="Gst.Caps" c:type="GstCaps*"/>
  4064. </return-value>
  4065. <parameters>
  4066. <parameter name="src" transfer-ownership="none">
  4067. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4068. </parameter>
  4069. <parameter name="caps" transfer-ownership="none">
  4070. <type name="Gst.Caps" c:type="GstCaps*"/>
  4071. </parameter>
  4072. </parameters>
  4073. </callback>
  4074. </field>
  4075. <field name="set_caps">
  4076. <callback name="set_caps">
  4077. <return-value transfer-ownership="none">
  4078. <doc xml:space="preserve">%TRUE if the caps could be set</doc>
  4079. <type name="gboolean" c:type="gboolean"/>
  4080. </return-value>
  4081. <parameters>
  4082. <parameter name="src" transfer-ownership="none">
  4083. <doc xml:space="preserve">a #GstBaseSrc</doc>
  4084. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4085. </parameter>
  4086. <parameter name="caps" transfer-ownership="none">
  4087. <doc xml:space="preserve">a #GstCaps</doc>
  4088. <type name="Gst.Caps" c:type="GstCaps*"/>
  4089. </parameter>
  4090. </parameters>
  4091. </callback>
  4092. </field>
  4093. <field name="decide_allocation">
  4094. <callback name="decide_allocation">
  4095. <return-value transfer-ownership="none">
  4096. <type name="gboolean" c:type="gboolean"/>
  4097. </return-value>
  4098. <parameters>
  4099. <parameter name="src" transfer-ownership="none">
  4100. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4101. </parameter>
  4102. <parameter name="query" transfer-ownership="none">
  4103. <type name="Gst.Query" c:type="GstQuery*"/>
  4104. </parameter>
  4105. </parameters>
  4106. </callback>
  4107. </field>
  4108. <field name="start">
  4109. <callback name="start">
  4110. <return-value transfer-ownership="none">
  4111. <type name="gboolean" c:type="gboolean"/>
  4112. </return-value>
  4113. <parameters>
  4114. <parameter name="src" transfer-ownership="none">
  4115. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4116. </parameter>
  4117. </parameters>
  4118. </callback>
  4119. </field>
  4120. <field name="stop">
  4121. <callback name="stop">
  4122. <return-value transfer-ownership="none">
  4123. <type name="gboolean" c:type="gboolean"/>
  4124. </return-value>
  4125. <parameters>
  4126. <parameter name="src" transfer-ownership="none">
  4127. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4128. </parameter>
  4129. </parameters>
  4130. </callback>
  4131. </field>
  4132. <field name="get_times">
  4133. <callback name="get_times">
  4134. <return-value transfer-ownership="none">
  4135. <type name="none" c:type="void"/>
  4136. </return-value>
  4137. <parameters>
  4138. <parameter name="src" transfer-ownership="none">
  4139. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4140. </parameter>
  4141. <parameter name="buffer" transfer-ownership="none">
  4142. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4143. </parameter>
  4144. <parameter name="start" transfer-ownership="none">
  4145. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  4146. </parameter>
  4147. <parameter name="end" transfer-ownership="none">
  4148. <type name="Gst.ClockTime" c:type="GstClockTime*"/>
  4149. </parameter>
  4150. </parameters>
  4151. </callback>
  4152. </field>
  4153. <field name="get_size">
  4154. <callback name="get_size">
  4155. <return-value transfer-ownership="none">
  4156. <type name="gboolean" c:type="gboolean"/>
  4157. </return-value>
  4158. <parameters>
  4159. <parameter name="src" transfer-ownership="none">
  4160. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4161. </parameter>
  4162. <parameter name="size" transfer-ownership="none">
  4163. <type name="guint64" c:type="guint64*"/>
  4164. </parameter>
  4165. </parameters>
  4166. </callback>
  4167. </field>
  4168. <field name="is_seekable">
  4169. <callback name="is_seekable">
  4170. <return-value transfer-ownership="none">
  4171. <type name="gboolean" c:type="gboolean"/>
  4172. </return-value>
  4173. <parameters>
  4174. <parameter name="src" transfer-ownership="none">
  4175. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4176. </parameter>
  4177. </parameters>
  4178. </callback>
  4179. </field>
  4180. <field name="prepare_seek_segment">
  4181. <callback name="prepare_seek_segment">
  4182. <return-value transfer-ownership="none">
  4183. <type name="gboolean" c:type="gboolean"/>
  4184. </return-value>
  4185. <parameters>
  4186. <parameter name="src" transfer-ownership="none">
  4187. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4188. </parameter>
  4189. <parameter name="seek" transfer-ownership="none">
  4190. <type name="Gst.Event" c:type="GstEvent*"/>
  4191. </parameter>
  4192. <parameter name="segment" transfer-ownership="none">
  4193. <type name="Gst.Segment" c:type="GstSegment*"/>
  4194. </parameter>
  4195. </parameters>
  4196. </callback>
  4197. </field>
  4198. <field name="do_seek">
  4199. <callback name="do_seek">
  4200. <return-value transfer-ownership="none">
  4201. <type name="gboolean" c:type="gboolean"/>
  4202. </return-value>
  4203. <parameters>
  4204. <parameter name="src" transfer-ownership="none">
  4205. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4206. </parameter>
  4207. <parameter name="segment" transfer-ownership="none">
  4208. <type name="Gst.Segment" c:type="GstSegment*"/>
  4209. </parameter>
  4210. </parameters>
  4211. </callback>
  4212. </field>
  4213. <field name="unlock">
  4214. <callback name="unlock">
  4215. <return-value transfer-ownership="none">
  4216. <type name="gboolean" c:type="gboolean"/>
  4217. </return-value>
  4218. <parameters>
  4219. <parameter name="src" transfer-ownership="none">
  4220. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4221. </parameter>
  4222. </parameters>
  4223. </callback>
  4224. </field>
  4225. <field name="unlock_stop">
  4226. <callback name="unlock_stop">
  4227. <return-value transfer-ownership="none">
  4228. <type name="gboolean" c:type="gboolean"/>
  4229. </return-value>
  4230. <parameters>
  4231. <parameter name="src" transfer-ownership="none">
  4232. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4233. </parameter>
  4234. </parameters>
  4235. </callback>
  4236. </field>
  4237. <field name="query">
  4238. <callback name="query">
  4239. <return-value transfer-ownership="none">
  4240. <type name="gboolean" c:type="gboolean"/>
  4241. </return-value>
  4242. <parameters>
  4243. <parameter name="src" transfer-ownership="none">
  4244. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4245. </parameter>
  4246. <parameter name="query" transfer-ownership="none">
  4247. <type name="Gst.Query" c:type="GstQuery*"/>
  4248. </parameter>
  4249. </parameters>
  4250. </callback>
  4251. </field>
  4252. <field name="event">
  4253. <callback name="event">
  4254. <return-value transfer-ownership="none">
  4255. <type name="gboolean" c:type="gboolean"/>
  4256. </return-value>
  4257. <parameters>
  4258. <parameter name="src" transfer-ownership="none">
  4259. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4260. </parameter>
  4261. <parameter name="event" transfer-ownership="none">
  4262. <type name="Gst.Event" c:type="GstEvent*"/>
  4263. </parameter>
  4264. </parameters>
  4265. </callback>
  4266. </field>
  4267. <field name="create">
  4268. <callback name="create">
  4269. <return-value transfer-ownership="none">
  4270. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4271. </return-value>
  4272. <parameters>
  4273. <parameter name="src" transfer-ownership="none">
  4274. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4275. </parameter>
  4276. <parameter name="offset" transfer-ownership="none">
  4277. <type name="guint64" c:type="guint64"/>
  4278. </parameter>
  4279. <parameter name="size" transfer-ownership="none">
  4280. <type name="guint" c:type="guint"/>
  4281. </parameter>
  4282. <parameter name="buf" transfer-ownership="none">
  4283. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  4284. </parameter>
  4285. </parameters>
  4286. </callback>
  4287. </field>
  4288. <field name="alloc">
  4289. <callback name="alloc">
  4290. <return-value transfer-ownership="none">
  4291. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4292. </return-value>
  4293. <parameters>
  4294. <parameter name="src" transfer-ownership="none">
  4295. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4296. </parameter>
  4297. <parameter name="offset" transfer-ownership="none">
  4298. <type name="guint64" c:type="guint64"/>
  4299. </parameter>
  4300. <parameter name="size" transfer-ownership="none">
  4301. <type name="guint" c:type="guint"/>
  4302. </parameter>
  4303. <parameter name="buf" transfer-ownership="none">
  4304. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  4305. </parameter>
  4306. </parameters>
  4307. </callback>
  4308. </field>
  4309. <field name="fill">
  4310. <callback name="fill">
  4311. <return-value transfer-ownership="none">
  4312. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4313. </return-value>
  4314. <parameters>
  4315. <parameter name="src" transfer-ownership="none">
  4316. <type name="BaseSrc" c:type="GstBaseSrc*"/>
  4317. </parameter>
  4318. <parameter name="offset" transfer-ownership="none">
  4319. <type name="guint64" c:type="guint64"/>
  4320. </parameter>
  4321. <parameter name="size" transfer-ownership="none">
  4322. <type name="guint" c:type="guint"/>
  4323. </parameter>
  4324. <parameter name="buf" transfer-ownership="none">
  4325. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4326. </parameter>
  4327. </parameters>
  4328. </callback>
  4329. </field>
  4330. <field name="_gst_reserved" readable="0" private="1">
  4331. <array zero-terminated="0" c:type="gpointer" fixed-size="20">
  4332. <type name="gpointer" c:type="gpointer"/>
  4333. </array>
  4334. </field>
  4335. </record>
  4336. <bitfield name="BaseSrcFlags" c:type="GstBaseSrcFlags">
  4337. <doc xml:space="preserve">The #GstElement flags that a basesrc element may have.</doc>
  4338. <member name="starting"
  4339. value="16384"
  4340. c:identifier="GST_BASE_SRC_FLAG_STARTING">
  4341. <doc xml:space="preserve">has source is starting</doc>
  4342. </member>
  4343. <member name="started"
  4344. value="32768"
  4345. c:identifier="GST_BASE_SRC_FLAG_STARTED">
  4346. <doc xml:space="preserve">has source been started</doc>
  4347. </member>
  4348. <member name="last"
  4349. value="1048576"
  4350. c:identifier="GST_BASE_SRC_FLAG_LAST">
  4351. <doc xml:space="preserve">offset to define more flags</doc>
  4352. </member>
  4353. </bitfield>
  4354. <record name="BaseSrcPrivate" c:type="GstBaseSrcPrivate" disguised="1">
  4355. </record>
  4356. <class name="BaseTransform"
  4357. c:symbol-prefix="base_transform"
  4358. c:type="GstBaseTransform"
  4359. parent="Gst.Element"
  4360. abstract="1"
  4361. glib:type-name="GstBaseTransform"
  4362. glib:get-type="gst_base_transform_get_type"
  4363. glib:type-struct="BaseTransformClass">
  4364. <doc xml:space="preserve">This base class is for filter elements that process data. Elements
  4365. that are suitable for implementation using #GstBaseTransform are ones
  4366. where the size and caps of the output is known entirely from the input
  4367. caps and buffer sizes. These include elements that directly transform
  4368. one buffer into another, modify the contents of a buffer in-place, as
  4369. well as elements that collate multiple input buffers into one output buffer,
  4370. or that expand one input buffer into multiple output buffers. See below
  4371. for more concrete use cases.
  4372. It provides for:
  4373. &lt;itemizedlist&gt;
  4374. &lt;listitem&gt;&lt;para&gt;one sinkpad and one srcpad&lt;/para&gt;&lt;/listitem&gt;
  4375. &lt;listitem&gt;&lt;para&gt;
  4376. Possible formats on sink and source pad implemented
  4377. with custom transform_caps function. By default uses
  4378. same format on sink and source.
  4379. &lt;/para&gt;&lt;/listitem&gt;
  4380. &lt;listitem&gt;&lt;para&gt;Handles state changes&lt;/para&gt;&lt;/listitem&gt;
  4381. &lt;listitem&gt;&lt;para&gt;Does flushing&lt;/para&gt;&lt;/listitem&gt;
  4382. &lt;listitem&gt;&lt;para&gt;Push mode&lt;/para&gt;&lt;/listitem&gt;
  4383. &lt;listitem&gt;&lt;para&gt;
  4384. Pull mode if the sub-class transform can operate on arbitrary data
  4385. &lt;/para&gt;&lt;/listitem&gt;
  4386. &lt;/itemizedlist&gt;
  4387. &lt;refsect2&gt;
  4388. &lt;title&gt;Use Cases&lt;/title&gt;
  4389. &lt;para&gt;
  4390. &lt;orderedlist&gt;
  4391. &lt;listitem&gt;
  4392. &lt;itemizedlist&gt;&lt;title&gt;Passthrough mode&lt;/title&gt;
  4393. &lt;listitem&gt;&lt;para&gt;
  4394. Element has no interest in modifying the buffer. It may want to inspect it,
  4395. in which case the element should have a transform_ip function. If there
  4396. is no transform_ip function in passthrough mode, the buffer is pushed
  4397. intact.
  4398. &lt;/para&gt;&lt;/listitem&gt;
  4399. &lt;listitem&gt;&lt;para&gt;
  4400. The #GstBaseTransformClass.passthrough_on_same_caps variable
  4401. will automatically set/unset passthrough based on whether the
  4402. element negotiates the same caps on both pads.
  4403. &lt;/para&gt;&lt;/listitem&gt;
  4404. &lt;listitem&gt;&lt;para&gt;
  4405. #GstBaseTransformClass.passthrough_on_same_caps on an element that
  4406. doesn't implement a transform_caps function is useful for elements that
  4407. only inspect data (such as level)
  4408. &lt;/para&gt;&lt;/listitem&gt;
  4409. &lt;/itemizedlist&gt;
  4410. &lt;itemizedlist&gt;
  4411. &lt;title&gt;Example elements&lt;/title&gt;
  4412. &lt;listitem&gt;Level&lt;/listitem&gt;
  4413. &lt;listitem&gt;Videoscale, audioconvert, videoconvert, audioresample in
  4414. certain modes.&lt;/listitem&gt;
  4415. &lt;/itemizedlist&gt;
  4416. &lt;/listitem&gt;
  4417. &lt;listitem&gt;
  4418. &lt;itemizedlist&gt;
  4419. &lt;title&gt;Modifications in-place - input buffer and output buffer are the
  4420. same thing.&lt;/title&gt;
  4421. &lt;listitem&gt;&lt;para&gt;
  4422. The element must implement a transform_ip function.
  4423. &lt;/para&gt;&lt;/listitem&gt;
  4424. &lt;listitem&gt;&lt;para&gt;
  4425. Output buffer size must &lt;= input buffer size
  4426. &lt;/para&gt;&lt;/listitem&gt;
  4427. &lt;listitem&gt;&lt;para&gt;
  4428. If the always_in_place flag is set, non-writable buffers will be copied
  4429. and passed to the transform_ip function, otherwise a new buffer will be
  4430. created and the transform function called.
  4431. &lt;/para&gt;&lt;/listitem&gt;
  4432. &lt;listitem&gt;&lt;para&gt;
  4433. Incoming writable buffers will be passed to the transform_ip function
  4434. immediately. &lt;/para&gt;&lt;/listitem&gt;
  4435. &lt;listitem&gt;&lt;para&gt;
  4436. only implementing transform_ip and not transform implies always_in_place
  4437. = %TRUE
  4438. &lt;/para&gt;&lt;/listitem&gt;
  4439. &lt;/itemizedlist&gt;
  4440. &lt;itemizedlist&gt;
  4441. &lt;title&gt;Example elements&lt;/title&gt;
  4442. &lt;listitem&gt;Volume&lt;/listitem&gt;
  4443. &lt;listitem&gt;Audioconvert in certain modes (signed/unsigned
  4444. conversion)&lt;/listitem&gt;
  4445. &lt;listitem&gt;videoconvert in certain modes (endianness
  4446. swapping)&lt;/listitem&gt;
  4447. &lt;/itemizedlist&gt;
  4448. &lt;/listitem&gt;
  4449. &lt;listitem&gt;
  4450. &lt;itemizedlist&gt;
  4451. &lt;title&gt;Modifications only to the caps/metadata of a buffer&lt;/title&gt;
  4452. &lt;listitem&gt;&lt;para&gt;
  4453. The element does not require writable data, but non-writable buffers
  4454. should be subbuffered so that the meta-information can be replaced.
  4455. &lt;/para&gt;&lt;/listitem&gt;
  4456. &lt;listitem&gt;&lt;para&gt;
  4457. Elements wishing to operate in this mode should replace the
  4458. prepare_output_buffer method to create subbuffers of the input buffer
  4459. and set always_in_place to %TRUE
  4460. &lt;/para&gt;&lt;/listitem&gt;
  4461. &lt;/itemizedlist&gt;
  4462. &lt;itemizedlist&gt;
  4463. &lt;title&gt;Example elements&lt;/title&gt;
  4464. &lt;listitem&gt;Capsfilter when setting caps on outgoing buffers that have
  4465. none.&lt;/listitem&gt;
  4466. &lt;listitem&gt;identity when it is going to re-timestamp buffers by
  4467. datarate.&lt;/listitem&gt;
  4468. &lt;/itemizedlist&gt;
  4469. &lt;/listitem&gt;
  4470. &lt;listitem&gt;
  4471. &lt;itemizedlist&gt;&lt;title&gt;Normal mode&lt;/title&gt;
  4472. &lt;listitem&gt;&lt;para&gt;
  4473. always_in_place flag is not set, or there is no transform_ip function
  4474. &lt;/para&gt;&lt;/listitem&gt;
  4475. &lt;listitem&gt;&lt;para&gt;
  4476. Element will receive an input buffer and output buffer to operate on.
  4477. &lt;/para&gt;&lt;/listitem&gt;
  4478. &lt;listitem&gt;&lt;para&gt;
  4479. Output buffer is allocated by calling the prepare_output_buffer function.
  4480. &lt;/para&gt;&lt;/listitem&gt;
  4481. &lt;/itemizedlist&gt;
  4482. &lt;itemizedlist&gt;
  4483. &lt;title&gt;Example elements&lt;/title&gt;
  4484. &lt;listitem&gt;Videoscale, videoconvert, audioconvert when doing
  4485. scaling/conversions&lt;/listitem&gt;
  4486. &lt;/itemizedlist&gt;
  4487. &lt;/listitem&gt;
  4488. &lt;listitem&gt;
  4489. &lt;itemizedlist&gt;&lt;title&gt;Special output buffer allocations&lt;/title&gt;
  4490. &lt;listitem&gt;&lt;para&gt;
  4491. Elements which need to do special allocation of their output buffers
  4492. beyond allocating output buffers via the negotiated allocator or
  4493. buffer pool should implement the prepare_output_buffer method.
  4494. &lt;/para&gt;&lt;/listitem&gt;
  4495. &lt;/itemizedlist&gt;
  4496. &lt;itemizedlist&gt;
  4497. &lt;title&gt;Example elements&lt;/title&gt;
  4498. &lt;listitem&gt;efence&lt;/listitem&gt;
  4499. &lt;/itemizedlist&gt;
  4500. &lt;/listitem&gt;
  4501. &lt;/orderedlist&gt;
  4502. &lt;/para&gt;
  4503. &lt;/refsect2&gt;
  4504. &lt;refsect2&gt;
  4505. &lt;title&gt;Sub-class settable flags on GstBaseTransform&lt;/title&gt;
  4506. &lt;para&gt;
  4507. &lt;itemizedlist&gt;
  4508. &lt;listitem&gt;&lt;para&gt;
  4509. &lt;itemizedlist&gt;&lt;title&gt;passthrough&lt;/title&gt;
  4510. &lt;listitem&gt;&lt;para&gt;
  4511. Implies that in the current configuration, the sub-class is not
  4512. interested in modifying the buffers.
  4513. &lt;/para&gt;&lt;/listitem&gt;
  4514. &lt;listitem&gt;&lt;para&gt;
  4515. Elements which are always in passthrough mode whenever the same caps
  4516. has been negotiated on both pads can set the class variable
  4517. passthrough_on_same_caps to have this behaviour automatically.
  4518. &lt;/para&gt;&lt;/listitem&gt;
  4519. &lt;/itemizedlist&gt;
  4520. &lt;/para&gt;&lt;/listitem&gt;
  4521. &lt;listitem&gt;&lt;para&gt;
  4522. &lt;itemizedlist&gt;&lt;title&gt;always_in_place&lt;/title&gt;
  4523. &lt;listitem&gt;&lt;para&gt;
  4524. Determines whether a non-writable buffer will be copied before passing
  4525. to the transform_ip function.
  4526. &lt;/para&gt;&lt;/listitem&gt;
  4527. &lt;listitem&gt;&lt;para&gt;
  4528. Implied %TRUE if no transform function is implemented.
  4529. &lt;/para&gt;&lt;/listitem&gt;
  4530. &lt;listitem&gt;&lt;para&gt;
  4531. Implied %FALSE if ONLY transform function is implemented.
  4532. &lt;/para&gt;&lt;/listitem&gt;
  4533. &lt;/itemizedlist&gt;
  4534. &lt;/para&gt;&lt;/listitem&gt;
  4535. &lt;/itemizedlist&gt;
  4536. &lt;/para&gt;
  4537. &lt;/refsect2&gt;</doc>
  4538. <virtual-method name="accept_caps">
  4539. <return-value transfer-ownership="none">
  4540. <type name="gboolean" c:type="gboolean"/>
  4541. </return-value>
  4542. <parameters>
  4543. <instance-parameter name="trans" transfer-ownership="none">
  4544. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4545. </instance-parameter>
  4546. <parameter name="direction" transfer-ownership="none">
  4547. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  4548. </parameter>
  4549. <parameter name="caps" transfer-ownership="none">
  4550. <type name="Gst.Caps" c:type="GstCaps*"/>
  4551. </parameter>
  4552. </parameters>
  4553. </virtual-method>
  4554. <virtual-method name="before_transform">
  4555. <return-value transfer-ownership="none">
  4556. <type name="none" c:type="void"/>
  4557. </return-value>
  4558. <parameters>
  4559. <instance-parameter name="trans" transfer-ownership="none">
  4560. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4561. </instance-parameter>
  4562. <parameter name="buffer" transfer-ownership="none">
  4563. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4564. </parameter>
  4565. </parameters>
  4566. </virtual-method>
  4567. <virtual-method name="copy_metadata">
  4568. <return-value transfer-ownership="none">
  4569. <type name="gboolean" c:type="gboolean"/>
  4570. </return-value>
  4571. <parameters>
  4572. <instance-parameter name="trans" transfer-ownership="none">
  4573. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4574. </instance-parameter>
  4575. <parameter name="input" transfer-ownership="none">
  4576. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4577. </parameter>
  4578. <parameter name="outbuf" transfer-ownership="none">
  4579. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4580. </parameter>
  4581. </parameters>
  4582. </virtual-method>
  4583. <virtual-method name="decide_allocation">
  4584. <return-value transfer-ownership="none">
  4585. <type name="gboolean" c:type="gboolean"/>
  4586. </return-value>
  4587. <parameters>
  4588. <instance-parameter name="trans" transfer-ownership="none">
  4589. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4590. </instance-parameter>
  4591. <parameter name="query" transfer-ownership="none">
  4592. <type name="Gst.Query" c:type="GstQuery*"/>
  4593. </parameter>
  4594. </parameters>
  4595. </virtual-method>
  4596. <virtual-method name="filter_meta">
  4597. <return-value transfer-ownership="none">
  4598. <type name="gboolean" c:type="gboolean"/>
  4599. </return-value>
  4600. <parameters>
  4601. <instance-parameter name="trans" transfer-ownership="none">
  4602. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4603. </instance-parameter>
  4604. <parameter name="query" transfer-ownership="none">
  4605. <type name="Gst.Query" c:type="GstQuery*"/>
  4606. </parameter>
  4607. <parameter name="api" transfer-ownership="none">
  4608. <type name="GType" c:type="GType"/>
  4609. </parameter>
  4610. <parameter name="params" transfer-ownership="none">
  4611. <type name="Gst.Structure" c:type="const GstStructure*"/>
  4612. </parameter>
  4613. </parameters>
  4614. </virtual-method>
  4615. <virtual-method name="fixate_caps">
  4616. <return-value transfer-ownership="full">
  4617. <type name="Gst.Caps" c:type="GstCaps*"/>
  4618. </return-value>
  4619. <parameters>
  4620. <instance-parameter name="trans" transfer-ownership="none">
  4621. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4622. </instance-parameter>
  4623. <parameter name="direction" transfer-ownership="none">
  4624. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  4625. </parameter>
  4626. <parameter name="caps" transfer-ownership="none">
  4627. <type name="Gst.Caps" c:type="GstCaps*"/>
  4628. </parameter>
  4629. <parameter name="othercaps" transfer-ownership="none">
  4630. <type name="Gst.Caps" c:type="GstCaps*"/>
  4631. </parameter>
  4632. </parameters>
  4633. </virtual-method>
  4634. <virtual-method name="generate_output">
  4635. <return-value transfer-ownership="none">
  4636. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4637. </return-value>
  4638. <parameters>
  4639. <instance-parameter name="trans" transfer-ownership="none">
  4640. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4641. </instance-parameter>
  4642. <parameter name="outbuf" transfer-ownership="none">
  4643. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  4644. </parameter>
  4645. </parameters>
  4646. </virtual-method>
  4647. <virtual-method name="get_unit_size">
  4648. <return-value transfer-ownership="none">
  4649. <type name="gboolean" c:type="gboolean"/>
  4650. </return-value>
  4651. <parameters>
  4652. <instance-parameter name="trans" transfer-ownership="none">
  4653. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4654. </instance-parameter>
  4655. <parameter name="caps" transfer-ownership="none">
  4656. <type name="Gst.Caps" c:type="GstCaps*"/>
  4657. </parameter>
  4658. <parameter name="size" transfer-ownership="none">
  4659. <type name="gsize" c:type="gsize*"/>
  4660. </parameter>
  4661. </parameters>
  4662. </virtual-method>
  4663. <virtual-method name="prepare_output_buffer">
  4664. <return-value transfer-ownership="none">
  4665. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4666. </return-value>
  4667. <parameters>
  4668. <instance-parameter name="trans" transfer-ownership="none">
  4669. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4670. </instance-parameter>
  4671. <parameter name="input" transfer-ownership="none">
  4672. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4673. </parameter>
  4674. <parameter name="outbuf" transfer-ownership="none">
  4675. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  4676. </parameter>
  4677. </parameters>
  4678. </virtual-method>
  4679. <virtual-method name="propose_allocation">
  4680. <return-value transfer-ownership="none">
  4681. <type name="gboolean" c:type="gboolean"/>
  4682. </return-value>
  4683. <parameters>
  4684. <instance-parameter name="trans" transfer-ownership="none">
  4685. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4686. </instance-parameter>
  4687. <parameter name="decide_query" transfer-ownership="none">
  4688. <type name="Gst.Query" c:type="GstQuery*"/>
  4689. </parameter>
  4690. <parameter name="query" transfer-ownership="none">
  4691. <type name="Gst.Query" c:type="GstQuery*"/>
  4692. </parameter>
  4693. </parameters>
  4694. </virtual-method>
  4695. <virtual-method name="query">
  4696. <return-value transfer-ownership="none">
  4697. <type name="gboolean" c:type="gboolean"/>
  4698. </return-value>
  4699. <parameters>
  4700. <instance-parameter name="trans" transfer-ownership="none">
  4701. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4702. </instance-parameter>
  4703. <parameter name="direction" transfer-ownership="none">
  4704. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  4705. </parameter>
  4706. <parameter name="query" transfer-ownership="none">
  4707. <type name="Gst.Query" c:type="GstQuery*"/>
  4708. </parameter>
  4709. </parameters>
  4710. </virtual-method>
  4711. <virtual-method name="set_caps">
  4712. <return-value transfer-ownership="none">
  4713. <type name="gboolean" c:type="gboolean"/>
  4714. </return-value>
  4715. <parameters>
  4716. <instance-parameter name="trans" transfer-ownership="none">
  4717. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4718. </instance-parameter>
  4719. <parameter name="incaps" transfer-ownership="none">
  4720. <type name="Gst.Caps" c:type="GstCaps*"/>
  4721. </parameter>
  4722. <parameter name="outcaps" transfer-ownership="none">
  4723. <type name="Gst.Caps" c:type="GstCaps*"/>
  4724. </parameter>
  4725. </parameters>
  4726. </virtual-method>
  4727. <virtual-method name="sink_event">
  4728. <return-value transfer-ownership="none">
  4729. <type name="gboolean" c:type="gboolean"/>
  4730. </return-value>
  4731. <parameters>
  4732. <instance-parameter name="trans" transfer-ownership="none">
  4733. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4734. </instance-parameter>
  4735. <parameter name="event" transfer-ownership="none">
  4736. <type name="Gst.Event" c:type="GstEvent*"/>
  4737. </parameter>
  4738. </parameters>
  4739. </virtual-method>
  4740. <virtual-method name="src_event">
  4741. <return-value transfer-ownership="none">
  4742. <type name="gboolean" c:type="gboolean"/>
  4743. </return-value>
  4744. <parameters>
  4745. <instance-parameter name="trans" transfer-ownership="none">
  4746. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4747. </instance-parameter>
  4748. <parameter name="event" transfer-ownership="none">
  4749. <type name="Gst.Event" c:type="GstEvent*"/>
  4750. </parameter>
  4751. </parameters>
  4752. </virtual-method>
  4753. <virtual-method name="start">
  4754. <return-value transfer-ownership="none">
  4755. <type name="gboolean" c:type="gboolean"/>
  4756. </return-value>
  4757. <parameters>
  4758. <instance-parameter name="trans" transfer-ownership="none">
  4759. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4760. </instance-parameter>
  4761. </parameters>
  4762. </virtual-method>
  4763. <virtual-method name="stop">
  4764. <return-value transfer-ownership="none">
  4765. <type name="gboolean" c:type="gboolean"/>
  4766. </return-value>
  4767. <parameters>
  4768. <instance-parameter name="trans" transfer-ownership="none">
  4769. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4770. </instance-parameter>
  4771. </parameters>
  4772. </virtual-method>
  4773. <virtual-method name="submit_input_buffer">
  4774. <return-value transfer-ownership="none">
  4775. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4776. </return-value>
  4777. <parameters>
  4778. <instance-parameter name="trans" transfer-ownership="none">
  4779. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4780. </instance-parameter>
  4781. <parameter name="is_discont" transfer-ownership="none">
  4782. <type name="gboolean" c:type="gboolean"/>
  4783. </parameter>
  4784. <parameter name="input" transfer-ownership="none">
  4785. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4786. </parameter>
  4787. </parameters>
  4788. </virtual-method>
  4789. <virtual-method name="transform">
  4790. <return-value transfer-ownership="none">
  4791. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4792. </return-value>
  4793. <parameters>
  4794. <instance-parameter name="trans" transfer-ownership="none">
  4795. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4796. </instance-parameter>
  4797. <parameter name="inbuf" transfer-ownership="none">
  4798. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4799. </parameter>
  4800. <parameter name="outbuf" transfer-ownership="none">
  4801. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4802. </parameter>
  4803. </parameters>
  4804. </virtual-method>
  4805. <virtual-method name="transform_caps">
  4806. <return-value transfer-ownership="full">
  4807. <type name="Gst.Caps" c:type="GstCaps*"/>
  4808. </return-value>
  4809. <parameters>
  4810. <instance-parameter name="trans" transfer-ownership="none">
  4811. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4812. </instance-parameter>
  4813. <parameter name="direction" transfer-ownership="none">
  4814. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  4815. </parameter>
  4816. <parameter name="caps" transfer-ownership="none">
  4817. <type name="Gst.Caps" c:type="GstCaps*"/>
  4818. </parameter>
  4819. <parameter name="filter" transfer-ownership="none">
  4820. <type name="Gst.Caps" c:type="GstCaps*"/>
  4821. </parameter>
  4822. </parameters>
  4823. </virtual-method>
  4824. <virtual-method name="transform_ip">
  4825. <return-value transfer-ownership="none">
  4826. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  4827. </return-value>
  4828. <parameters>
  4829. <instance-parameter name="trans" transfer-ownership="none">
  4830. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4831. </instance-parameter>
  4832. <parameter name="buf" transfer-ownership="none">
  4833. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4834. </parameter>
  4835. </parameters>
  4836. </virtual-method>
  4837. <virtual-method name="transform_meta">
  4838. <return-value transfer-ownership="none">
  4839. <type name="gboolean" c:type="gboolean"/>
  4840. </return-value>
  4841. <parameters>
  4842. <instance-parameter name="trans" transfer-ownership="none">
  4843. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4844. </instance-parameter>
  4845. <parameter name="outbuf" transfer-ownership="none">
  4846. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4847. </parameter>
  4848. <parameter name="meta" transfer-ownership="none">
  4849. <type name="Gst.Meta" c:type="GstMeta*"/>
  4850. </parameter>
  4851. <parameter name="inbuf" transfer-ownership="none">
  4852. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  4853. </parameter>
  4854. </parameters>
  4855. </virtual-method>
  4856. <virtual-method name="transform_size">
  4857. <return-value transfer-ownership="none">
  4858. <type name="gboolean" c:type="gboolean"/>
  4859. </return-value>
  4860. <parameters>
  4861. <instance-parameter name="trans" transfer-ownership="none">
  4862. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4863. </instance-parameter>
  4864. <parameter name="direction" transfer-ownership="none">
  4865. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  4866. </parameter>
  4867. <parameter name="caps" transfer-ownership="none">
  4868. <type name="Gst.Caps" c:type="GstCaps*"/>
  4869. </parameter>
  4870. <parameter name="size" transfer-ownership="none">
  4871. <type name="gsize" c:type="gsize"/>
  4872. </parameter>
  4873. <parameter name="othercaps" transfer-ownership="none">
  4874. <type name="Gst.Caps" c:type="GstCaps*"/>
  4875. </parameter>
  4876. <parameter name="othersize" transfer-ownership="none">
  4877. <type name="gsize" c:type="gsize*"/>
  4878. </parameter>
  4879. </parameters>
  4880. </virtual-method>
  4881. <method name="get_allocator"
  4882. c:identifier="gst_base_transform_get_allocator">
  4883. <doc xml:space="preserve">Lets #GstBaseTransform sub-classes to know the memory @allocator
  4884. used by the base class and its @params.
  4885. Unref the @allocator after use it.</doc>
  4886. <return-value transfer-ownership="none">
  4887. <type name="none" c:type="void"/>
  4888. </return-value>
  4889. <parameters>
  4890. <instance-parameter name="trans" transfer-ownership="none">
  4891. <doc xml:space="preserve">a #GstBaseTransform</doc>
  4892. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4893. </instance-parameter>
  4894. <parameter name="allocator"
  4895. direction="out"
  4896. caller-allocates="0"
  4897. transfer-ownership="full"
  4898. optional="1"
  4899. allow-none="1">
  4900. <doc xml:space="preserve">the #GstAllocator
  4901. used</doc>
  4902. <type name="Gst.Allocator" c:type="GstAllocator**"/>
  4903. </parameter>
  4904. <parameter name="params"
  4905. direction="out"
  4906. caller-allocates="1"
  4907. transfer-ownership="full"
  4908. optional="1"
  4909. allow-none="1">
  4910. <doc xml:space="preserve">the
  4911. #GstAllocationParams of @allocator</doc>
  4912. <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
  4913. </parameter>
  4914. </parameters>
  4915. </method>
  4916. <method name="get_buffer_pool"
  4917. c:identifier="gst_base_transform_get_buffer_pool">
  4918. <return-value transfer-ownership="full">
  4919. <doc xml:space="preserve">the instance of the #GstBufferPool used
  4920. by @trans; free it after use it</doc>
  4921. <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
  4922. </return-value>
  4923. <parameters>
  4924. <instance-parameter name="trans" transfer-ownership="none">
  4925. <doc xml:space="preserve">a #GstBaseTransform</doc>
  4926. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4927. </instance-parameter>
  4928. </parameters>
  4929. </method>
  4930. <method name="is_in_place" c:identifier="gst_base_transform_is_in_place">
  4931. <doc xml:space="preserve">See if @trans is configured as a in_place transform.</doc>
  4932. <return-value transfer-ownership="none">
  4933. <doc xml:space="preserve">%TRUE is the transform is configured in in_place mode.
  4934. MT safe.</doc>
  4935. <type name="gboolean" c:type="gboolean"/>
  4936. </return-value>
  4937. <parameters>
  4938. <instance-parameter name="trans" transfer-ownership="none">
  4939. <doc xml:space="preserve">the #GstBaseTransform to query</doc>
  4940. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4941. </instance-parameter>
  4942. </parameters>
  4943. </method>
  4944. <method name="is_passthrough"
  4945. c:identifier="gst_base_transform_is_passthrough">
  4946. <doc xml:space="preserve">See if @trans is configured as a passthrough transform.</doc>
  4947. <return-value transfer-ownership="none">
  4948. <doc xml:space="preserve">%TRUE is the transform is configured in passthrough mode.
  4949. MT safe.</doc>
  4950. <type name="gboolean" c:type="gboolean"/>
  4951. </return-value>
  4952. <parameters>
  4953. <instance-parameter name="trans" transfer-ownership="none">
  4954. <doc xml:space="preserve">the #GstBaseTransform to query</doc>
  4955. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4956. </instance-parameter>
  4957. </parameters>
  4958. </method>
  4959. <method name="is_qos_enabled"
  4960. c:identifier="gst_base_transform_is_qos_enabled">
  4961. <doc xml:space="preserve">Queries if the transform will handle QoS.</doc>
  4962. <return-value transfer-ownership="none">
  4963. <doc xml:space="preserve">%TRUE if QoS is enabled.
  4964. MT safe.</doc>
  4965. <type name="gboolean" c:type="gboolean"/>
  4966. </return-value>
  4967. <parameters>
  4968. <instance-parameter name="trans" transfer-ownership="none">
  4969. <doc xml:space="preserve">a #GstBaseTransform</doc>
  4970. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4971. </instance-parameter>
  4972. </parameters>
  4973. </method>
  4974. <method name="reconfigure_sink"
  4975. c:identifier="gst_base_transform_reconfigure_sink">
  4976. <doc xml:space="preserve">Instructs @trans to request renegotiation upstream. This function is
  4977. typically called after properties on the transform were set that
  4978. influence the input format.</doc>
  4979. <return-value transfer-ownership="none">
  4980. <type name="none" c:type="void"/>
  4981. </return-value>
  4982. <parameters>
  4983. <instance-parameter name="trans" transfer-ownership="none">
  4984. <doc xml:space="preserve">a #GstBaseTransform</doc>
  4985. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  4986. </instance-parameter>
  4987. </parameters>
  4988. </method>
  4989. <method name="reconfigure_src"
  4990. c:identifier="gst_base_transform_reconfigure_src">
  4991. <doc xml:space="preserve">Instructs @trans to renegotiate a new downstream transform on the next
  4992. buffer. This function is typically called after properties on the transform
  4993. were set that influence the output format.</doc>
  4994. <return-value transfer-ownership="none">
  4995. <type name="none" c:type="void"/>
  4996. </return-value>
  4997. <parameters>
  4998. <instance-parameter name="trans" transfer-ownership="none">
  4999. <doc xml:space="preserve">a #GstBaseTransform</doc>
  5000. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5001. </instance-parameter>
  5002. </parameters>
  5003. </method>
  5004. <method name="set_gap_aware"
  5005. c:identifier="gst_base_transform_set_gap_aware">
  5006. <doc xml:space="preserve">If @gap_aware is %FALSE (the default), output buffers will have the
  5007. %GST_BUFFER_FLAG_GAP flag unset.
  5008. If set to %TRUE, the element must handle output buffers with this flag set
  5009. correctly, i.e. it can assume that the buffer contains neutral data but must
  5010. unset the flag if the output is no neutral data.
  5011. MT safe.</doc>
  5012. <return-value transfer-ownership="none">
  5013. <type name="none" c:type="void"/>
  5014. </return-value>
  5015. <parameters>
  5016. <instance-parameter name="trans" transfer-ownership="none">
  5017. <doc xml:space="preserve">a #GstBaseTransform</doc>
  5018. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5019. </instance-parameter>
  5020. <parameter name="gap_aware" transfer-ownership="none">
  5021. <doc xml:space="preserve">New state</doc>
  5022. <type name="gboolean" c:type="gboolean"/>
  5023. </parameter>
  5024. </parameters>
  5025. </method>
  5026. <method name="set_in_place"
  5027. c:identifier="gst_base_transform_set_in_place">
  5028. <doc xml:space="preserve">Determines whether a non-writable buffer will be copied before passing
  5029. to the transform_ip function.
  5030. &lt;itemizedlist&gt;
  5031. &lt;listitem&gt;Always %TRUE if no transform function is implemented.&lt;/listitem&gt;
  5032. &lt;listitem&gt;Always %FALSE if ONLY transform function is implemented.&lt;/listitem&gt;
  5033. &lt;/itemizedlist&gt;
  5034. MT safe.</doc>
  5035. <return-value transfer-ownership="none">
  5036. <type name="none" c:type="void"/>
  5037. </return-value>
  5038. <parameters>
  5039. <instance-parameter name="trans" transfer-ownership="none">
  5040. <doc xml:space="preserve">the #GstBaseTransform to modify</doc>
  5041. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5042. </instance-parameter>
  5043. <parameter name="in_place" transfer-ownership="none">
  5044. <doc xml:space="preserve">Boolean value indicating that we would like to operate
  5045. on in_place buffers.</doc>
  5046. <type name="gboolean" c:type="gboolean"/>
  5047. </parameter>
  5048. </parameters>
  5049. </method>
  5050. <method name="set_passthrough"
  5051. c:identifier="gst_base_transform_set_passthrough">
  5052. <doc xml:space="preserve">Set passthrough mode for this filter by default. This is mostly
  5053. useful for filters that do not care about negotiation.
  5054. Always %TRUE for filters which don't implement either a transform
  5055. or transform_ip method.
  5056. MT safe.</doc>
  5057. <return-value transfer-ownership="none">
  5058. <type name="none" c:type="void"/>
  5059. </return-value>
  5060. <parameters>
  5061. <instance-parameter name="trans" transfer-ownership="none">
  5062. <doc xml:space="preserve">the #GstBaseTransform to set</doc>
  5063. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5064. </instance-parameter>
  5065. <parameter name="passthrough" transfer-ownership="none">
  5066. <doc xml:space="preserve">boolean indicating passthrough mode.</doc>
  5067. <type name="gboolean" c:type="gboolean"/>
  5068. </parameter>
  5069. </parameters>
  5070. </method>
  5071. <method name="set_prefer_passthrough"
  5072. c:identifier="gst_base_transform_set_prefer_passthrough"
  5073. version="1.0.1">
  5074. <doc xml:space="preserve">If @prefer_passthrough is %TRUE (the default), @trans will check and
  5075. prefer passthrough caps from the list of caps returned by the
  5076. transform_caps vmethod.
  5077. If set to %FALSE, the element must order the caps returned from the
  5078. transform_caps function in such a way that the preferred format is
  5079. first in the list. This can be interesting for transforms that can do
  5080. passthrough transforms but prefer to do something else, like a
  5081. capsfilter.
  5082. MT safe.</doc>
  5083. <return-value transfer-ownership="none">
  5084. <type name="none" c:type="void"/>
  5085. </return-value>
  5086. <parameters>
  5087. <instance-parameter name="trans" transfer-ownership="none">
  5088. <doc xml:space="preserve">a #GstBaseTransform</doc>
  5089. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5090. </instance-parameter>
  5091. <parameter name="prefer_passthrough" transfer-ownership="none">
  5092. <doc xml:space="preserve">New state</doc>
  5093. <type name="gboolean" c:type="gboolean"/>
  5094. </parameter>
  5095. </parameters>
  5096. </method>
  5097. <method name="set_qos_enabled"
  5098. c:identifier="gst_base_transform_set_qos_enabled">
  5099. <doc xml:space="preserve">Enable or disable QoS handling in the transform.
  5100. MT safe.</doc>
  5101. <return-value transfer-ownership="none">
  5102. <type name="none" c:type="void"/>
  5103. </return-value>
  5104. <parameters>
  5105. <instance-parameter name="trans" transfer-ownership="none">
  5106. <doc xml:space="preserve">a #GstBaseTransform</doc>
  5107. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5108. </instance-parameter>
  5109. <parameter name="enabled" transfer-ownership="none">
  5110. <doc xml:space="preserve">new state</doc>
  5111. <type name="gboolean" c:type="gboolean"/>
  5112. </parameter>
  5113. </parameters>
  5114. </method>
  5115. <method name="update_qos" c:identifier="gst_base_transform_update_qos">
  5116. <doc xml:space="preserve">Set the QoS parameters in the transform. This function is called internally
  5117. when a QOS event is received but subclasses can provide custom information
  5118. when needed.
  5119. MT safe.</doc>
  5120. <return-value transfer-ownership="none">
  5121. <type name="none" c:type="void"/>
  5122. </return-value>
  5123. <parameters>
  5124. <instance-parameter name="trans" transfer-ownership="none">
  5125. <doc xml:space="preserve">a #GstBaseTransform</doc>
  5126. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5127. </instance-parameter>
  5128. <parameter name="proportion" transfer-ownership="none">
  5129. <doc xml:space="preserve">the proportion</doc>
  5130. <type name="gdouble" c:type="gdouble"/>
  5131. </parameter>
  5132. <parameter name="diff" transfer-ownership="none">
  5133. <doc xml:space="preserve">the diff against the clock</doc>
  5134. <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
  5135. </parameter>
  5136. <parameter name="timestamp" transfer-ownership="none">
  5137. <doc xml:space="preserve">the timestamp of the buffer generating the QoS expressed in
  5138. running_time.</doc>
  5139. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  5140. </parameter>
  5141. </parameters>
  5142. </method>
  5143. <method name="update_src_caps"
  5144. c:identifier="gst_base_transform_update_src_caps"
  5145. version="1.6">
  5146. <doc xml:space="preserve">Updates the srcpad caps and send the caps downstream. This function
  5147. can be used by subclasses when they have already negotiated their caps
  5148. but found a change in them (or computed new informations). This way,
  5149. they can notify downstream about that change without loosing any
  5150. buffer.</doc>
  5151. <return-value transfer-ownership="none">
  5152. <doc xml:space="preserve">%TRUE if the caps could be send downstream %FALSE otherwise</doc>
  5153. <type name="gboolean" c:type="gboolean"/>
  5154. </return-value>
  5155. <parameters>
  5156. <instance-parameter name="trans" transfer-ownership="none">
  5157. <doc xml:space="preserve">a #GstBaseTransform</doc>
  5158. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5159. </instance-parameter>
  5160. <parameter name="updated_caps" transfer-ownership="none">
  5161. <doc xml:space="preserve">An updated version of the srcpad caps to be pushed
  5162. downstream</doc>
  5163. <type name="Gst.Caps" c:type="GstCaps*"/>
  5164. </parameter>
  5165. </parameters>
  5166. </method>
  5167. <property name="qos" writable="1" transfer-ownership="none">
  5168. <type name="gboolean" c:type="gboolean"/>
  5169. </property>
  5170. <field name="element">
  5171. <type name="Gst.Element" c:type="GstElement"/>
  5172. </field>
  5173. <field name="sinkpad">
  5174. <type name="Gst.Pad" c:type="GstPad*"/>
  5175. </field>
  5176. <field name="srcpad">
  5177. <type name="Gst.Pad" c:type="GstPad*"/>
  5178. </field>
  5179. <field name="have_segment">
  5180. <type name="gboolean" c:type="gboolean"/>
  5181. </field>
  5182. <field name="segment">
  5183. <type name="Gst.Segment" c:type="GstSegment"/>
  5184. </field>
  5185. <field name="queued_buf">
  5186. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5187. </field>
  5188. <field name="priv" readable="0" private="1">
  5189. <type name="BaseTransformPrivate" c:type="GstBaseTransformPrivate*"/>
  5190. </field>
  5191. <field name="_gst_reserved" readable="0" private="1">
  5192. <array zero-terminated="0" c:type="gpointer" fixed-size="19">
  5193. <type name="gpointer" c:type="gpointer"/>
  5194. </array>
  5195. </field>
  5196. </class>
  5197. <record name="BaseTransformClass"
  5198. c:type="GstBaseTransformClass"
  5199. glib:is-gtype-struct-for="BaseTransform">
  5200. <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
  5201. needed. At minimum either @transform or @transform_ip need to be overridden.
  5202. If the element can overwrite the input data with the results (data is of the
  5203. same type and quantity) it should provide @transform_ip.</doc>
  5204. <field name="parent_class">
  5205. <doc xml:space="preserve">Element parent class</doc>
  5206. <type name="Gst.ElementClass" c:type="GstElementClass"/>
  5207. </field>
  5208. <field name="passthrough_on_same_caps">
  5209. <doc xml:space="preserve">If set to %TRUE, passthrough mode will be
  5210. automatically enabled if the caps are the same.
  5211. Set to %FALSE by default.</doc>
  5212. <type name="gboolean" c:type="gboolean"/>
  5213. </field>
  5214. <field name="transform_ip_on_passthrough">
  5215. <doc xml:space="preserve">If set to %TRUE, @transform_ip will be called in
  5216. passthrough mode. The passed buffer might not be
  5217. writable. When %FALSE, neither @transform nor
  5218. @transform_ip will be called in passthrough mode.
  5219. Set to %TRUE by default.</doc>
  5220. <type name="gboolean" c:type="gboolean"/>
  5221. </field>
  5222. <field name="transform_caps">
  5223. <callback name="transform_caps">
  5224. <return-value transfer-ownership="full">
  5225. <type name="Gst.Caps" c:type="GstCaps*"/>
  5226. </return-value>
  5227. <parameters>
  5228. <parameter name="trans" transfer-ownership="none">
  5229. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5230. </parameter>
  5231. <parameter name="direction" transfer-ownership="none">
  5232. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  5233. </parameter>
  5234. <parameter name="caps" transfer-ownership="none">
  5235. <type name="Gst.Caps" c:type="GstCaps*"/>
  5236. </parameter>
  5237. <parameter name="filter" transfer-ownership="none">
  5238. <type name="Gst.Caps" c:type="GstCaps*"/>
  5239. </parameter>
  5240. </parameters>
  5241. </callback>
  5242. </field>
  5243. <field name="fixate_caps">
  5244. <callback name="fixate_caps">
  5245. <return-value transfer-ownership="full">
  5246. <type name="Gst.Caps" c:type="GstCaps*"/>
  5247. </return-value>
  5248. <parameters>
  5249. <parameter name="trans" transfer-ownership="none">
  5250. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5251. </parameter>
  5252. <parameter name="direction" transfer-ownership="none">
  5253. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  5254. </parameter>
  5255. <parameter name="caps" transfer-ownership="none">
  5256. <type name="Gst.Caps" c:type="GstCaps*"/>
  5257. </parameter>
  5258. <parameter name="othercaps" transfer-ownership="none">
  5259. <type name="Gst.Caps" c:type="GstCaps*"/>
  5260. </parameter>
  5261. </parameters>
  5262. </callback>
  5263. </field>
  5264. <field name="accept_caps">
  5265. <callback name="accept_caps">
  5266. <return-value transfer-ownership="none">
  5267. <type name="gboolean" c:type="gboolean"/>
  5268. </return-value>
  5269. <parameters>
  5270. <parameter name="trans" transfer-ownership="none">
  5271. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5272. </parameter>
  5273. <parameter name="direction" transfer-ownership="none">
  5274. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  5275. </parameter>
  5276. <parameter name="caps" transfer-ownership="none">
  5277. <type name="Gst.Caps" c:type="GstCaps*"/>
  5278. </parameter>
  5279. </parameters>
  5280. </callback>
  5281. </field>
  5282. <field name="set_caps">
  5283. <callback name="set_caps">
  5284. <return-value transfer-ownership="none">
  5285. <type name="gboolean" c:type="gboolean"/>
  5286. </return-value>
  5287. <parameters>
  5288. <parameter name="trans" transfer-ownership="none">
  5289. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5290. </parameter>
  5291. <parameter name="incaps" transfer-ownership="none">
  5292. <type name="Gst.Caps" c:type="GstCaps*"/>
  5293. </parameter>
  5294. <parameter name="outcaps" transfer-ownership="none">
  5295. <type name="Gst.Caps" c:type="GstCaps*"/>
  5296. </parameter>
  5297. </parameters>
  5298. </callback>
  5299. </field>
  5300. <field name="query">
  5301. <callback name="query">
  5302. <return-value transfer-ownership="none">
  5303. <type name="gboolean" c:type="gboolean"/>
  5304. </return-value>
  5305. <parameters>
  5306. <parameter name="trans" transfer-ownership="none">
  5307. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5308. </parameter>
  5309. <parameter name="direction" transfer-ownership="none">
  5310. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  5311. </parameter>
  5312. <parameter name="query" transfer-ownership="none">
  5313. <type name="Gst.Query" c:type="GstQuery*"/>
  5314. </parameter>
  5315. </parameters>
  5316. </callback>
  5317. </field>
  5318. <field name="decide_allocation">
  5319. <callback name="decide_allocation">
  5320. <return-value transfer-ownership="none">
  5321. <type name="gboolean" c:type="gboolean"/>
  5322. </return-value>
  5323. <parameters>
  5324. <parameter name="trans" transfer-ownership="none">
  5325. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5326. </parameter>
  5327. <parameter name="query" transfer-ownership="none">
  5328. <type name="Gst.Query" c:type="GstQuery*"/>
  5329. </parameter>
  5330. </parameters>
  5331. </callback>
  5332. </field>
  5333. <field name="filter_meta">
  5334. <callback name="filter_meta">
  5335. <return-value transfer-ownership="none">
  5336. <type name="gboolean" c:type="gboolean"/>
  5337. </return-value>
  5338. <parameters>
  5339. <parameter name="trans" transfer-ownership="none">
  5340. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5341. </parameter>
  5342. <parameter name="query" transfer-ownership="none">
  5343. <type name="Gst.Query" c:type="GstQuery*"/>
  5344. </parameter>
  5345. <parameter name="api" transfer-ownership="none">
  5346. <type name="GType" c:type="GType"/>
  5347. </parameter>
  5348. <parameter name="params" transfer-ownership="none">
  5349. <type name="Gst.Structure" c:type="const GstStructure*"/>
  5350. </parameter>
  5351. </parameters>
  5352. </callback>
  5353. </field>
  5354. <field name="propose_allocation">
  5355. <callback name="propose_allocation">
  5356. <return-value transfer-ownership="none">
  5357. <type name="gboolean" c:type="gboolean"/>
  5358. </return-value>
  5359. <parameters>
  5360. <parameter name="trans" transfer-ownership="none">
  5361. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5362. </parameter>
  5363. <parameter name="decide_query" transfer-ownership="none">
  5364. <type name="Gst.Query" c:type="GstQuery*"/>
  5365. </parameter>
  5366. <parameter name="query" transfer-ownership="none">
  5367. <type name="Gst.Query" c:type="GstQuery*"/>
  5368. </parameter>
  5369. </parameters>
  5370. </callback>
  5371. </field>
  5372. <field name="transform_size">
  5373. <callback name="transform_size">
  5374. <return-value transfer-ownership="none">
  5375. <type name="gboolean" c:type="gboolean"/>
  5376. </return-value>
  5377. <parameters>
  5378. <parameter name="trans" transfer-ownership="none">
  5379. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5380. </parameter>
  5381. <parameter name="direction" transfer-ownership="none">
  5382. <type name="Gst.PadDirection" c:type="GstPadDirection"/>
  5383. </parameter>
  5384. <parameter name="caps" transfer-ownership="none">
  5385. <type name="Gst.Caps" c:type="GstCaps*"/>
  5386. </parameter>
  5387. <parameter name="size" transfer-ownership="none">
  5388. <type name="gsize" c:type="gsize"/>
  5389. </parameter>
  5390. <parameter name="othercaps" transfer-ownership="none">
  5391. <type name="Gst.Caps" c:type="GstCaps*"/>
  5392. </parameter>
  5393. <parameter name="othersize" transfer-ownership="none">
  5394. <type name="gsize" c:type="gsize*"/>
  5395. </parameter>
  5396. </parameters>
  5397. </callback>
  5398. </field>
  5399. <field name="get_unit_size">
  5400. <callback name="get_unit_size">
  5401. <return-value transfer-ownership="none">
  5402. <type name="gboolean" c:type="gboolean"/>
  5403. </return-value>
  5404. <parameters>
  5405. <parameter name="trans" transfer-ownership="none">
  5406. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5407. </parameter>
  5408. <parameter name="caps" transfer-ownership="none">
  5409. <type name="Gst.Caps" c:type="GstCaps*"/>
  5410. </parameter>
  5411. <parameter name="size" transfer-ownership="none">
  5412. <type name="gsize" c:type="gsize*"/>
  5413. </parameter>
  5414. </parameters>
  5415. </callback>
  5416. </field>
  5417. <field name="start">
  5418. <callback name="start">
  5419. <return-value transfer-ownership="none">
  5420. <type name="gboolean" c:type="gboolean"/>
  5421. </return-value>
  5422. <parameters>
  5423. <parameter name="trans" transfer-ownership="none">
  5424. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5425. </parameter>
  5426. </parameters>
  5427. </callback>
  5428. </field>
  5429. <field name="stop">
  5430. <callback name="stop">
  5431. <return-value transfer-ownership="none">
  5432. <type name="gboolean" c:type="gboolean"/>
  5433. </return-value>
  5434. <parameters>
  5435. <parameter name="trans" transfer-ownership="none">
  5436. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5437. </parameter>
  5438. </parameters>
  5439. </callback>
  5440. </field>
  5441. <field name="sink_event">
  5442. <callback name="sink_event">
  5443. <return-value transfer-ownership="none">
  5444. <type name="gboolean" c:type="gboolean"/>
  5445. </return-value>
  5446. <parameters>
  5447. <parameter name="trans" transfer-ownership="none">
  5448. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5449. </parameter>
  5450. <parameter name="event" transfer-ownership="none">
  5451. <type name="Gst.Event" c:type="GstEvent*"/>
  5452. </parameter>
  5453. </parameters>
  5454. </callback>
  5455. </field>
  5456. <field name="src_event">
  5457. <callback name="src_event">
  5458. <return-value transfer-ownership="none">
  5459. <type name="gboolean" c:type="gboolean"/>
  5460. </return-value>
  5461. <parameters>
  5462. <parameter name="trans" transfer-ownership="none">
  5463. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5464. </parameter>
  5465. <parameter name="event" transfer-ownership="none">
  5466. <type name="Gst.Event" c:type="GstEvent*"/>
  5467. </parameter>
  5468. </parameters>
  5469. </callback>
  5470. </field>
  5471. <field name="prepare_output_buffer">
  5472. <callback name="prepare_output_buffer">
  5473. <return-value transfer-ownership="none">
  5474. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  5475. </return-value>
  5476. <parameters>
  5477. <parameter name="trans" transfer-ownership="none">
  5478. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5479. </parameter>
  5480. <parameter name="input" transfer-ownership="none">
  5481. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5482. </parameter>
  5483. <parameter name="outbuf" transfer-ownership="none">
  5484. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  5485. </parameter>
  5486. </parameters>
  5487. </callback>
  5488. </field>
  5489. <field name="copy_metadata">
  5490. <callback name="copy_metadata">
  5491. <return-value transfer-ownership="none">
  5492. <type name="gboolean" c:type="gboolean"/>
  5493. </return-value>
  5494. <parameters>
  5495. <parameter name="trans" transfer-ownership="none">
  5496. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5497. </parameter>
  5498. <parameter name="input" transfer-ownership="none">
  5499. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5500. </parameter>
  5501. <parameter name="outbuf" transfer-ownership="none">
  5502. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5503. </parameter>
  5504. </parameters>
  5505. </callback>
  5506. </field>
  5507. <field name="transform_meta">
  5508. <callback name="transform_meta">
  5509. <return-value transfer-ownership="none">
  5510. <type name="gboolean" c:type="gboolean"/>
  5511. </return-value>
  5512. <parameters>
  5513. <parameter name="trans" transfer-ownership="none">
  5514. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5515. </parameter>
  5516. <parameter name="outbuf" transfer-ownership="none">
  5517. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5518. </parameter>
  5519. <parameter name="meta" transfer-ownership="none">
  5520. <type name="Gst.Meta" c:type="GstMeta*"/>
  5521. </parameter>
  5522. <parameter name="inbuf" transfer-ownership="none">
  5523. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5524. </parameter>
  5525. </parameters>
  5526. </callback>
  5527. </field>
  5528. <field name="before_transform">
  5529. <callback name="before_transform">
  5530. <return-value transfer-ownership="none">
  5531. <type name="none" c:type="void"/>
  5532. </return-value>
  5533. <parameters>
  5534. <parameter name="trans" transfer-ownership="none">
  5535. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5536. </parameter>
  5537. <parameter name="buffer" transfer-ownership="none">
  5538. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5539. </parameter>
  5540. </parameters>
  5541. </callback>
  5542. </field>
  5543. <field name="transform">
  5544. <callback name="transform">
  5545. <return-value transfer-ownership="none">
  5546. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  5547. </return-value>
  5548. <parameters>
  5549. <parameter name="trans" transfer-ownership="none">
  5550. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5551. </parameter>
  5552. <parameter name="inbuf" transfer-ownership="none">
  5553. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5554. </parameter>
  5555. <parameter name="outbuf" transfer-ownership="none">
  5556. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5557. </parameter>
  5558. </parameters>
  5559. </callback>
  5560. </field>
  5561. <field name="transform_ip">
  5562. <callback name="transform_ip">
  5563. <return-value transfer-ownership="none">
  5564. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  5565. </return-value>
  5566. <parameters>
  5567. <parameter name="trans" transfer-ownership="none">
  5568. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5569. </parameter>
  5570. <parameter name="buf" transfer-ownership="none">
  5571. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5572. </parameter>
  5573. </parameters>
  5574. </callback>
  5575. </field>
  5576. <field name="submit_input_buffer">
  5577. <callback name="submit_input_buffer">
  5578. <return-value transfer-ownership="none">
  5579. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  5580. </return-value>
  5581. <parameters>
  5582. <parameter name="trans" transfer-ownership="none">
  5583. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5584. </parameter>
  5585. <parameter name="is_discont" transfer-ownership="none">
  5586. <type name="gboolean" c:type="gboolean"/>
  5587. </parameter>
  5588. <parameter name="input" transfer-ownership="none">
  5589. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  5590. </parameter>
  5591. </parameters>
  5592. </callback>
  5593. </field>
  5594. <field name="generate_output">
  5595. <callback name="generate_output">
  5596. <return-value transfer-ownership="none">
  5597. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  5598. </return-value>
  5599. <parameters>
  5600. <parameter name="trans" transfer-ownership="none">
  5601. <type name="BaseTransform" c:type="GstBaseTransform*"/>
  5602. </parameter>
  5603. <parameter name="outbuf" transfer-ownership="none">
  5604. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  5605. </parameter>
  5606. </parameters>
  5607. </callback>
  5608. </field>
  5609. <field name="_gst_reserved" readable="0" private="1">
  5610. <array zero-terminated="0" c:type="gpointer" fixed-size="18">
  5611. <type name="gpointer" c:type="gpointer"/>
  5612. </array>
  5613. </field>
  5614. </record>
  5615. <record name="BaseTransformPrivate"
  5616. c:type="GstBaseTransformPrivate"
  5617. disguised="1">
  5618. </record>
  5619. <record name="BitReader" c:type="GstBitReader">
  5620. <doc xml:space="preserve">#GstBitReader provides a bit reader that can read any number of bits
  5621. from a memory buffer. It provides functions for reading any number of bits
  5622. into 8, 16, 32 and 64 bit variables.</doc>
  5623. <field name="data" writable="1">
  5624. <doc xml:space="preserve">Data from which the bit reader will
  5625. read</doc>
  5626. <array length="1" zero-terminated="0" c:type="guint8*">
  5627. <type name="guint8" c:type="guint8"/>
  5628. </array>
  5629. </field>
  5630. <field name="size" writable="1">
  5631. <doc xml:space="preserve">Size of @data in bytes</doc>
  5632. <type name="guint" c:type="guint"/>
  5633. </field>
  5634. <field name="byte" writable="1">
  5635. <doc xml:space="preserve">Current byte position</doc>
  5636. <type name="guint" c:type="guint"/>
  5637. </field>
  5638. <field name="bit" writable="1">
  5639. <doc xml:space="preserve">Bit position in the current byte</doc>
  5640. <type name="guint" c:type="guint"/>
  5641. </field>
  5642. <field name="_gst_reserved" readable="0" private="1">
  5643. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  5644. <type name="gpointer" c:type="gpointer"/>
  5645. </array>
  5646. </field>
  5647. <method name="free" c:identifier="gst_bit_reader_free">
  5648. <doc xml:space="preserve">Frees a #GstBitReader instance, which was previously allocated by
  5649. gst_bit_reader_new().</doc>
  5650. <return-value transfer-ownership="none">
  5651. <type name="none" c:type="void"/>
  5652. </return-value>
  5653. <parameters>
  5654. <instance-parameter name="reader" transfer-ownership="full">
  5655. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5656. <type name="BitReader" c:type="GstBitReader*"/>
  5657. </instance-parameter>
  5658. </parameters>
  5659. </method>
  5660. <method name="get_bits_uint16"
  5661. c:identifier="gst_bit_reader_get_bits_uint16">
  5662. <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
  5663. <return-value transfer-ownership="none">
  5664. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5665. <type name="gboolean" c:type="gboolean"/>
  5666. </return-value>
  5667. <parameters>
  5668. <instance-parameter name="reader" transfer-ownership="none">
  5669. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5670. <type name="BitReader" c:type="GstBitReader*"/>
  5671. </instance-parameter>
  5672. <parameter name="val"
  5673. direction="out"
  5674. caller-allocates="0"
  5675. transfer-ownership="full">
  5676. <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
  5677. <type name="guint16" c:type="guint16*"/>
  5678. </parameter>
  5679. <parameter name="nbits" transfer-ownership="none">
  5680. <doc xml:space="preserve">number of bits to read</doc>
  5681. <type name="guint" c:type="guint"/>
  5682. </parameter>
  5683. </parameters>
  5684. </method>
  5685. <method name="get_bits_uint32"
  5686. c:identifier="gst_bit_reader_get_bits_uint32">
  5687. <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
  5688. <return-value transfer-ownership="none">
  5689. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5690. <type name="gboolean" c:type="gboolean"/>
  5691. </return-value>
  5692. <parameters>
  5693. <instance-parameter name="reader" transfer-ownership="none">
  5694. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5695. <type name="BitReader" c:type="GstBitReader*"/>
  5696. </instance-parameter>
  5697. <parameter name="val"
  5698. direction="out"
  5699. caller-allocates="0"
  5700. transfer-ownership="full">
  5701. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  5702. <type name="guint32" c:type="guint32*"/>
  5703. </parameter>
  5704. <parameter name="nbits" transfer-ownership="none">
  5705. <doc xml:space="preserve">number of bits to read</doc>
  5706. <type name="guint" c:type="guint"/>
  5707. </parameter>
  5708. </parameters>
  5709. </method>
  5710. <method name="get_bits_uint64"
  5711. c:identifier="gst_bit_reader_get_bits_uint64">
  5712. <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
  5713. <return-value transfer-ownership="none">
  5714. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5715. <type name="gboolean" c:type="gboolean"/>
  5716. </return-value>
  5717. <parameters>
  5718. <instance-parameter name="reader" transfer-ownership="none">
  5719. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5720. <type name="BitReader" c:type="GstBitReader*"/>
  5721. </instance-parameter>
  5722. <parameter name="val"
  5723. direction="out"
  5724. caller-allocates="0"
  5725. transfer-ownership="full">
  5726. <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
  5727. <type name="guint64" c:type="guint64*"/>
  5728. </parameter>
  5729. <parameter name="nbits" transfer-ownership="none">
  5730. <doc xml:space="preserve">number of bits to read</doc>
  5731. <type name="guint" c:type="guint"/>
  5732. </parameter>
  5733. </parameters>
  5734. </method>
  5735. <method name="get_bits_uint8"
  5736. c:identifier="gst_bit_reader_get_bits_uint8">
  5737. <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
  5738. <return-value transfer-ownership="none">
  5739. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5740. <type name="gboolean" c:type="gboolean"/>
  5741. </return-value>
  5742. <parameters>
  5743. <instance-parameter name="reader" transfer-ownership="none">
  5744. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5745. <type name="BitReader" c:type="GstBitReader*"/>
  5746. </instance-parameter>
  5747. <parameter name="val"
  5748. direction="out"
  5749. caller-allocates="0"
  5750. transfer-ownership="full">
  5751. <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
  5752. <type name="guint8" c:type="guint8*"/>
  5753. </parameter>
  5754. <parameter name="nbits" transfer-ownership="none">
  5755. <doc xml:space="preserve">number of bits to read</doc>
  5756. <type name="guint" c:type="guint"/>
  5757. </parameter>
  5758. </parameters>
  5759. </method>
  5760. <method name="get_pos" c:identifier="gst_bit_reader_get_pos">
  5761. <doc xml:space="preserve">Returns the current position of a #GstBitReader instance in bits.</doc>
  5762. <return-value transfer-ownership="none">
  5763. <doc xml:space="preserve">The current position of @reader in bits.</doc>
  5764. <type name="guint" c:type="guint"/>
  5765. </return-value>
  5766. <parameters>
  5767. <instance-parameter name="reader" transfer-ownership="none">
  5768. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5769. <type name="BitReader" c:type="const GstBitReader*"/>
  5770. </instance-parameter>
  5771. </parameters>
  5772. </method>
  5773. <method name="get_remaining" c:identifier="gst_bit_reader_get_remaining">
  5774. <doc xml:space="preserve">Returns the remaining number of bits of a #GstBitReader instance.</doc>
  5775. <return-value transfer-ownership="none">
  5776. <doc xml:space="preserve">The remaining number of bits of @reader instance.</doc>
  5777. <type name="guint" c:type="guint"/>
  5778. </return-value>
  5779. <parameters>
  5780. <instance-parameter name="reader" transfer-ownership="none">
  5781. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5782. <type name="BitReader" c:type="const GstBitReader*"/>
  5783. </instance-parameter>
  5784. </parameters>
  5785. </method>
  5786. <method name="get_size" c:identifier="gst_bit_reader_get_size">
  5787. <doc xml:space="preserve">Returns the total number of bits of a #GstBitReader instance.</doc>
  5788. <return-value transfer-ownership="none">
  5789. <doc xml:space="preserve">The total number of bits of @reader instance.</doc>
  5790. <type name="guint" c:type="guint"/>
  5791. </return-value>
  5792. <parameters>
  5793. <instance-parameter name="reader" transfer-ownership="none">
  5794. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5795. <type name="BitReader" c:type="const GstBitReader*"/>
  5796. </instance-parameter>
  5797. </parameters>
  5798. </method>
  5799. <method name="init" c:identifier="gst_bit_reader_init">
  5800. <doc xml:space="preserve">Initializes a #GstBitReader instance to read from @data. This function
  5801. can be called on already initialized instances.</doc>
  5802. <return-value transfer-ownership="none">
  5803. <type name="none" c:type="void"/>
  5804. </return-value>
  5805. <parameters>
  5806. <instance-parameter name="reader" transfer-ownership="none">
  5807. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5808. <type name="BitReader" c:type="GstBitReader*"/>
  5809. </instance-parameter>
  5810. <parameter name="data" transfer-ownership="none">
  5811. <doc xml:space="preserve">data from which the bit reader should read</doc>
  5812. <array length="1" zero-terminated="0" c:type="guint8*">
  5813. <type name="guint8" c:type="guint8"/>
  5814. </array>
  5815. </parameter>
  5816. <parameter name="size" transfer-ownership="none">
  5817. <doc xml:space="preserve">Size of @data in bytes</doc>
  5818. <type name="guint" c:type="guint"/>
  5819. </parameter>
  5820. </parameters>
  5821. </method>
  5822. <method name="peek_bits_uint16"
  5823. c:identifier="gst_bit_reader_peek_bits_uint16">
  5824. <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
  5825. <return-value transfer-ownership="none">
  5826. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5827. <type name="gboolean" c:type="gboolean"/>
  5828. </return-value>
  5829. <parameters>
  5830. <instance-parameter name="reader" transfer-ownership="none">
  5831. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5832. <type name="BitReader" c:type="const GstBitReader*"/>
  5833. </instance-parameter>
  5834. <parameter name="val"
  5835. direction="out"
  5836. caller-allocates="0"
  5837. transfer-ownership="full">
  5838. <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
  5839. <type name="guint16" c:type="guint16*"/>
  5840. </parameter>
  5841. <parameter name="nbits" transfer-ownership="none">
  5842. <doc xml:space="preserve">number of bits to read</doc>
  5843. <type name="guint" c:type="guint"/>
  5844. </parameter>
  5845. </parameters>
  5846. </method>
  5847. <method name="peek_bits_uint32"
  5848. c:identifier="gst_bit_reader_peek_bits_uint32">
  5849. <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
  5850. <return-value transfer-ownership="none">
  5851. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5852. <type name="gboolean" c:type="gboolean"/>
  5853. </return-value>
  5854. <parameters>
  5855. <instance-parameter name="reader" transfer-ownership="none">
  5856. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5857. <type name="BitReader" c:type="const GstBitReader*"/>
  5858. </instance-parameter>
  5859. <parameter name="val"
  5860. direction="out"
  5861. caller-allocates="0"
  5862. transfer-ownership="full">
  5863. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  5864. <type name="guint32" c:type="guint32*"/>
  5865. </parameter>
  5866. <parameter name="nbits" transfer-ownership="none">
  5867. <doc xml:space="preserve">number of bits to read</doc>
  5868. <type name="guint" c:type="guint"/>
  5869. </parameter>
  5870. </parameters>
  5871. </method>
  5872. <method name="peek_bits_uint64"
  5873. c:identifier="gst_bit_reader_peek_bits_uint64">
  5874. <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
  5875. <return-value transfer-ownership="none">
  5876. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5877. <type name="gboolean" c:type="gboolean"/>
  5878. </return-value>
  5879. <parameters>
  5880. <instance-parameter name="reader" transfer-ownership="none">
  5881. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5882. <type name="BitReader" c:type="const GstBitReader*"/>
  5883. </instance-parameter>
  5884. <parameter name="val"
  5885. direction="out"
  5886. caller-allocates="0"
  5887. transfer-ownership="full">
  5888. <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
  5889. <type name="guint64" c:type="guint64*"/>
  5890. </parameter>
  5891. <parameter name="nbits" transfer-ownership="none">
  5892. <doc xml:space="preserve">number of bits to read</doc>
  5893. <type name="guint" c:type="guint"/>
  5894. </parameter>
  5895. </parameters>
  5896. </method>
  5897. <method name="peek_bits_uint8"
  5898. c:identifier="gst_bit_reader_peek_bits_uint8">
  5899. <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
  5900. <return-value transfer-ownership="none">
  5901. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5902. <type name="gboolean" c:type="gboolean"/>
  5903. </return-value>
  5904. <parameters>
  5905. <instance-parameter name="reader" transfer-ownership="none">
  5906. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5907. <type name="BitReader" c:type="const GstBitReader*"/>
  5908. </instance-parameter>
  5909. <parameter name="val"
  5910. direction="out"
  5911. caller-allocates="0"
  5912. transfer-ownership="full">
  5913. <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
  5914. <type name="guint8" c:type="guint8*"/>
  5915. </parameter>
  5916. <parameter name="nbits" transfer-ownership="none">
  5917. <doc xml:space="preserve">number of bits to read</doc>
  5918. <type name="guint" c:type="guint"/>
  5919. </parameter>
  5920. </parameters>
  5921. </method>
  5922. <method name="set_pos" c:identifier="gst_bit_reader_set_pos">
  5923. <doc xml:space="preserve">Sets the new position of a #GstBitReader instance to @pos in bits.</doc>
  5924. <return-value transfer-ownership="none">
  5925. <doc xml:space="preserve">%TRUE if the position could be set successfully, %FALSE
  5926. otherwise.</doc>
  5927. <type name="gboolean" c:type="gboolean"/>
  5928. </return-value>
  5929. <parameters>
  5930. <instance-parameter name="reader" transfer-ownership="none">
  5931. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5932. <type name="BitReader" c:type="GstBitReader*"/>
  5933. </instance-parameter>
  5934. <parameter name="pos" transfer-ownership="none">
  5935. <doc xml:space="preserve">The new position in bits</doc>
  5936. <type name="guint" c:type="guint"/>
  5937. </parameter>
  5938. </parameters>
  5939. </method>
  5940. <method name="skip" c:identifier="gst_bit_reader_skip">
  5941. <doc xml:space="preserve">Skips @nbits bits of the #GstBitReader instance.</doc>
  5942. <return-value transfer-ownership="none">
  5943. <doc xml:space="preserve">%TRUE if @nbits bits could be skipped, %FALSE otherwise.</doc>
  5944. <type name="gboolean" c:type="gboolean"/>
  5945. </return-value>
  5946. <parameters>
  5947. <instance-parameter name="reader" transfer-ownership="none">
  5948. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5949. <type name="BitReader" c:type="GstBitReader*"/>
  5950. </instance-parameter>
  5951. <parameter name="nbits" transfer-ownership="none">
  5952. <doc xml:space="preserve">the number of bits to skip</doc>
  5953. <type name="guint" c:type="guint"/>
  5954. </parameter>
  5955. </parameters>
  5956. </method>
  5957. <method name="skip_to_byte" c:identifier="gst_bit_reader_skip_to_byte">
  5958. <doc xml:space="preserve">Skips until the next byte.</doc>
  5959. <return-value transfer-ownership="none">
  5960. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  5961. <type name="gboolean" c:type="gboolean"/>
  5962. </return-value>
  5963. <parameters>
  5964. <instance-parameter name="reader" transfer-ownership="none">
  5965. <doc xml:space="preserve">a #GstBitReader instance</doc>
  5966. <type name="BitReader" c:type="GstBitReader*"/>
  5967. </instance-parameter>
  5968. </parameters>
  5969. </method>
  5970. <function name="new"
  5971. c:identifier="gst_bit_reader_new"
  5972. introspectable="0">
  5973. <doc xml:space="preserve">Create a new #GstBitReader instance, which will read from @data.
  5974. Free-function: gst_bit_reader_free</doc>
  5975. <return-value transfer-ownership="full">
  5976. <doc xml:space="preserve">a new #GstBitReader instance</doc>
  5977. <type name="BitReader" c:type="GstBitReader*"/>
  5978. </return-value>
  5979. <parameters>
  5980. <parameter name="data" transfer-ownership="none">
  5981. <doc xml:space="preserve">Data from which the #GstBitReader
  5982. should read</doc>
  5983. <array length="1" zero-terminated="0" c:type="guint8*">
  5984. <type name="guint8" c:type="guint8"/>
  5985. </array>
  5986. </parameter>
  5987. <parameter name="size" transfer-ownership="none">
  5988. <doc xml:space="preserve">Size of @data in bytes</doc>
  5989. <type name="guint" c:type="guint"/>
  5990. </parameter>
  5991. </parameters>
  5992. </function>
  5993. </record>
  5994. <record name="ByteReader" c:type="GstByteReader">
  5995. <doc xml:space="preserve">#GstByteReader provides a byte reader that can read different integer and
  5996. floating point types from a memory buffer. It provides functions for reading
  5997. signed/unsigned, little/big endian integers of 8, 16, 24, 32 and 64 bits
  5998. and functions for reading little/big endian floating points numbers of
  5999. 32 and 64 bits. It also provides functions to read NUL-terminated strings
  6000. in various character encodings.</doc>
  6001. <field name="data" writable="1">
  6002. <doc xml:space="preserve">Data from which the bit reader will
  6003. read</doc>
  6004. <array length="1" zero-terminated="0" c:type="guint8*">
  6005. <type name="guint8" c:type="guint8"/>
  6006. </array>
  6007. </field>
  6008. <field name="size" writable="1">
  6009. <doc xml:space="preserve">Size of @data in bytes</doc>
  6010. <type name="guint" c:type="guint"/>
  6011. </field>
  6012. <field name="byte" writable="1">
  6013. <doc xml:space="preserve">Current byte position</doc>
  6014. <type name="guint" c:type="guint"/>
  6015. </field>
  6016. <field name="_gst_reserved" readable="0" private="1">
  6017. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  6018. <type name="gpointer" c:type="gpointer"/>
  6019. </array>
  6020. </field>
  6021. <method name="dup_data" c:identifier="gst_byte_reader_dup_data">
  6022. <doc xml:space="preserve">Free-function: g_free
  6023. Returns a newly-allocated copy of the current data
  6024. position if at least @size bytes are left and
  6025. updates the current position. Free with g_free() when no longer needed.</doc>
  6026. <return-value transfer-ownership="none">
  6027. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6028. <type name="gboolean" c:type="gboolean"/>
  6029. </return-value>
  6030. <parameters>
  6031. <instance-parameter name="reader" transfer-ownership="none">
  6032. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6033. <type name="ByteReader" c:type="GstByteReader*"/>
  6034. </instance-parameter>
  6035. <parameter name="size"
  6036. direction="out"
  6037. caller-allocates="0"
  6038. transfer-ownership="full">
  6039. <doc xml:space="preserve">Size in bytes</doc>
  6040. <type name="guint" c:type="guint"/>
  6041. </parameter>
  6042. <parameter name="val"
  6043. direction="out"
  6044. caller-allocates="0"
  6045. transfer-ownership="full">
  6046. <doc xml:space="preserve">address of a
  6047. #guint8 pointer variable in which to store the result</doc>
  6048. <array length="0" zero-terminated="0" c:type="guint8**">
  6049. <type name="guint8" c:type="guint8*"/>
  6050. </array>
  6051. </parameter>
  6052. </parameters>
  6053. </method>
  6054. <method name="dup_string_utf16"
  6055. c:identifier="gst_byte_reader_dup_string_utf16">
  6056. <doc xml:space="preserve">Free-function: g_free
  6057. Returns a newly-allocated copy of the current data position if there is
  6058. a NUL-terminated UTF-16 string in the data (this could be an empty string
  6059. as well), and advances the current position.
  6060. No input checking for valid UTF-16 is done. This function is endianness
  6061. agnostic - you should not assume the UTF-16 characters are in host
  6062. endianness.
  6063. This function will fail if no NUL-terminator was found in in the data.
  6064. Note: there is no peek or get variant of this function to ensure correct
  6065. byte alignment of the UTF-16 string.</doc>
  6066. <return-value transfer-ownership="none">
  6067. <doc xml:space="preserve">%TRUE if a string could be read, %FALSE otherwise. The
  6068. string put into @str must be freed with g_free() when no longer needed.</doc>
  6069. <type name="gboolean" c:type="gboolean"/>
  6070. </return-value>
  6071. <parameters>
  6072. <instance-parameter name="reader" transfer-ownership="none">
  6073. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6074. <type name="ByteReader" c:type="GstByteReader*"/>
  6075. </instance-parameter>
  6076. <parameter name="str"
  6077. direction="out"
  6078. caller-allocates="0"
  6079. transfer-ownership="full">
  6080. <doc xml:space="preserve">address of a
  6081. #guint16 pointer variable in which to store the result</doc>
  6082. <array c:type="guint16**">
  6083. <type name="guint16" c:type="guint16*"/>
  6084. </array>
  6085. </parameter>
  6086. </parameters>
  6087. </method>
  6088. <method name="dup_string_utf32"
  6089. c:identifier="gst_byte_reader_dup_string_utf32">
  6090. <doc xml:space="preserve">Free-function: g_free
  6091. Returns a newly-allocated copy of the current data position if there is
  6092. a NUL-terminated UTF-32 string in the data (this could be an empty string
  6093. as well), and advances the current position.
  6094. No input checking for valid UTF-32 is done. This function is endianness
  6095. agnostic - you should not assume the UTF-32 characters are in host
  6096. endianness.
  6097. This function will fail if no NUL-terminator was found in in the data.
  6098. Note: there is no peek or get variant of this function to ensure correct
  6099. byte alignment of the UTF-32 string.</doc>
  6100. <return-value transfer-ownership="none">
  6101. <doc xml:space="preserve">%TRUE if a string could be read, %FALSE otherwise. The
  6102. string put into @str must be freed with g_free() when no longer needed.</doc>
  6103. <type name="gboolean" c:type="gboolean"/>
  6104. </return-value>
  6105. <parameters>
  6106. <instance-parameter name="reader" transfer-ownership="none">
  6107. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6108. <type name="ByteReader" c:type="GstByteReader*"/>
  6109. </instance-parameter>
  6110. <parameter name="str"
  6111. direction="out"
  6112. caller-allocates="0"
  6113. transfer-ownership="full">
  6114. <doc xml:space="preserve">address of a
  6115. #guint32 pointer variable in which to store the result</doc>
  6116. <array c:type="guint32**">
  6117. <type name="guint32" c:type="guint32*"/>
  6118. </array>
  6119. </parameter>
  6120. </parameters>
  6121. </method>
  6122. <method name="dup_string_utf8"
  6123. c:identifier="gst_byte_reader_dup_string_utf8">
  6124. <doc xml:space="preserve">Free-function: g_free
  6125. FIXME:Reads (copies) a NUL-terminated string in the #GstByteReader instance,
  6126. advancing the current position to the byte after the string. This will work
  6127. for any NUL-terminated string with a character width of 8 bits, so ASCII,
  6128. UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
  6129. This function will fail if no NUL-terminator was found in in the data.</doc>
  6130. <return-value transfer-ownership="none">
  6131. <doc xml:space="preserve">%TRUE if a string could be read into @str, %FALSE otherwise. The
  6132. string put into @str must be freed with g_free() when no longer needed.</doc>
  6133. <type name="gboolean" c:type="gboolean"/>
  6134. </return-value>
  6135. <parameters>
  6136. <instance-parameter name="reader" transfer-ownership="none">
  6137. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6138. <type name="ByteReader" c:type="GstByteReader*"/>
  6139. </instance-parameter>
  6140. <parameter name="str"
  6141. direction="out"
  6142. caller-allocates="0"
  6143. transfer-ownership="full">
  6144. <doc xml:space="preserve">address of a
  6145. #gchar pointer variable in which to store the result</doc>
  6146. <array c:type="gchar**">
  6147. <type name="utf8" c:type="gchar*"/>
  6148. </array>
  6149. </parameter>
  6150. </parameters>
  6151. </method>
  6152. <method name="free" c:identifier="gst_byte_reader_free">
  6153. <doc xml:space="preserve">Frees a #GstByteReader instance, which was previously allocated by
  6154. gst_byte_reader_new().</doc>
  6155. <return-value transfer-ownership="none">
  6156. <type name="none" c:type="void"/>
  6157. </return-value>
  6158. <parameters>
  6159. <instance-parameter name="reader" transfer-ownership="full">
  6160. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6161. <type name="ByteReader" c:type="GstByteReader*"/>
  6162. </instance-parameter>
  6163. </parameters>
  6164. </method>
  6165. <method name="get_data" c:identifier="gst_byte_reader_get_data">
  6166. <doc xml:space="preserve">Returns a constant pointer to the current data
  6167. position if at least @size bytes are left and
  6168. updates the current position.</doc>
  6169. <return-value transfer-ownership="none">
  6170. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6171. <type name="gboolean" c:type="gboolean"/>
  6172. </return-value>
  6173. <parameters>
  6174. <instance-parameter name="reader" transfer-ownership="none">
  6175. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6176. <type name="ByteReader" c:type="GstByteReader*"/>
  6177. </instance-parameter>
  6178. <parameter name="size"
  6179. direction="out"
  6180. caller-allocates="0"
  6181. transfer-ownership="full">
  6182. <doc xml:space="preserve">Size in bytes</doc>
  6183. <type name="guint" c:type="guint"/>
  6184. </parameter>
  6185. <parameter name="val"
  6186. direction="out"
  6187. caller-allocates="0"
  6188. transfer-ownership="none">
  6189. <doc xml:space="preserve">address of a
  6190. #guint8 pointer variable in which to store the result</doc>
  6191. <array length="0" zero-terminated="0" c:type="guint8**">
  6192. <type name="guint8" c:type="guint8*"/>
  6193. </array>
  6194. </parameter>
  6195. </parameters>
  6196. </method>
  6197. <method name="get_float32_be"
  6198. c:identifier="gst_byte_reader_get_float32_be">
  6199. <doc xml:space="preserve">Read a 32 bit big endian floating point value into @val
  6200. and update the current position.</doc>
  6201. <return-value transfer-ownership="none">
  6202. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6203. <type name="gboolean" c:type="gboolean"/>
  6204. </return-value>
  6205. <parameters>
  6206. <instance-parameter name="reader" transfer-ownership="none">
  6207. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6208. <type name="ByteReader" c:type="GstByteReader*"/>
  6209. </instance-parameter>
  6210. <parameter name="val"
  6211. direction="out"
  6212. caller-allocates="0"
  6213. transfer-ownership="full">
  6214. <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
  6215. <type name="gfloat" c:type="gfloat*"/>
  6216. </parameter>
  6217. </parameters>
  6218. </method>
  6219. <method name="get_float32_le"
  6220. c:identifier="gst_byte_reader_get_float32_le">
  6221. <doc xml:space="preserve">Read a 32 bit little endian floating point value into @val
  6222. and update the current position.</doc>
  6223. <return-value transfer-ownership="none">
  6224. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6225. <type name="gboolean" c:type="gboolean"/>
  6226. </return-value>
  6227. <parameters>
  6228. <instance-parameter name="reader" transfer-ownership="none">
  6229. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6230. <type name="ByteReader" c:type="GstByteReader*"/>
  6231. </instance-parameter>
  6232. <parameter name="val"
  6233. direction="out"
  6234. caller-allocates="0"
  6235. transfer-ownership="full">
  6236. <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
  6237. <type name="gfloat" c:type="gfloat*"/>
  6238. </parameter>
  6239. </parameters>
  6240. </method>
  6241. <method name="get_float64_be"
  6242. c:identifier="gst_byte_reader_get_float64_be">
  6243. <doc xml:space="preserve">Read a 64 bit big endian floating point value into @val
  6244. and update the current position.</doc>
  6245. <return-value transfer-ownership="none">
  6246. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6247. <type name="gboolean" c:type="gboolean"/>
  6248. </return-value>
  6249. <parameters>
  6250. <instance-parameter name="reader" transfer-ownership="none">
  6251. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6252. <type name="ByteReader" c:type="GstByteReader*"/>
  6253. </instance-parameter>
  6254. <parameter name="val"
  6255. direction="out"
  6256. caller-allocates="0"
  6257. transfer-ownership="full">
  6258. <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
  6259. <type name="gdouble" c:type="gdouble*"/>
  6260. </parameter>
  6261. </parameters>
  6262. </method>
  6263. <method name="get_float64_le"
  6264. c:identifier="gst_byte_reader_get_float64_le">
  6265. <doc xml:space="preserve">Read a 64 bit little endian floating point value into @val
  6266. and update the current position.</doc>
  6267. <return-value transfer-ownership="none">
  6268. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6269. <type name="gboolean" c:type="gboolean"/>
  6270. </return-value>
  6271. <parameters>
  6272. <instance-parameter name="reader" transfer-ownership="none">
  6273. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6274. <type name="ByteReader" c:type="GstByteReader*"/>
  6275. </instance-parameter>
  6276. <parameter name="val"
  6277. direction="out"
  6278. caller-allocates="0"
  6279. transfer-ownership="full">
  6280. <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
  6281. <type name="gdouble" c:type="gdouble*"/>
  6282. </parameter>
  6283. </parameters>
  6284. </method>
  6285. <method name="get_int16_be" c:identifier="gst_byte_reader_get_int16_be">
  6286. <doc xml:space="preserve">Read a signed 16 bit big endian integer into @val
  6287. and update the current position.</doc>
  6288. <return-value transfer-ownership="none">
  6289. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6290. <type name="gboolean" c:type="gboolean"/>
  6291. </return-value>
  6292. <parameters>
  6293. <instance-parameter name="reader" transfer-ownership="none">
  6294. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6295. <type name="ByteReader" c:type="GstByteReader*"/>
  6296. </instance-parameter>
  6297. <parameter name="val"
  6298. direction="out"
  6299. caller-allocates="0"
  6300. transfer-ownership="full">
  6301. <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
  6302. <type name="gint16" c:type="gint16*"/>
  6303. </parameter>
  6304. </parameters>
  6305. </method>
  6306. <method name="get_int16_le" c:identifier="gst_byte_reader_get_int16_le">
  6307. <doc xml:space="preserve">Read a signed 16 bit little endian integer into @val
  6308. and update the current position.</doc>
  6309. <return-value transfer-ownership="none">
  6310. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6311. <type name="gboolean" c:type="gboolean"/>
  6312. </return-value>
  6313. <parameters>
  6314. <instance-parameter name="reader" transfer-ownership="none">
  6315. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6316. <type name="ByteReader" c:type="GstByteReader*"/>
  6317. </instance-parameter>
  6318. <parameter name="val"
  6319. direction="out"
  6320. caller-allocates="0"
  6321. transfer-ownership="full">
  6322. <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
  6323. <type name="gint16" c:type="gint16*"/>
  6324. </parameter>
  6325. </parameters>
  6326. </method>
  6327. <method name="get_int24_be" c:identifier="gst_byte_reader_get_int24_be">
  6328. <doc xml:space="preserve">Read a signed 24 bit big endian integer into @val
  6329. and update the current position.</doc>
  6330. <return-value transfer-ownership="none">
  6331. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6332. <type name="gboolean" c:type="gboolean"/>
  6333. </return-value>
  6334. <parameters>
  6335. <instance-parameter name="reader" transfer-ownership="none">
  6336. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6337. <type name="ByteReader" c:type="GstByteReader*"/>
  6338. </instance-parameter>
  6339. <parameter name="val"
  6340. direction="out"
  6341. caller-allocates="0"
  6342. transfer-ownership="full">
  6343. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  6344. <type name="gint32" c:type="gint32*"/>
  6345. </parameter>
  6346. </parameters>
  6347. </method>
  6348. <method name="get_int24_le" c:identifier="gst_byte_reader_get_int24_le">
  6349. <doc xml:space="preserve">Read a signed 24 bit little endian integer into @val
  6350. and update the current position.</doc>
  6351. <return-value transfer-ownership="none">
  6352. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6353. <type name="gboolean" c:type="gboolean"/>
  6354. </return-value>
  6355. <parameters>
  6356. <instance-parameter name="reader" transfer-ownership="none">
  6357. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6358. <type name="ByteReader" c:type="GstByteReader*"/>
  6359. </instance-parameter>
  6360. <parameter name="val"
  6361. direction="out"
  6362. caller-allocates="0"
  6363. transfer-ownership="full">
  6364. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  6365. <type name="gint32" c:type="gint32*"/>
  6366. </parameter>
  6367. </parameters>
  6368. </method>
  6369. <method name="get_int32_be" c:identifier="gst_byte_reader_get_int32_be">
  6370. <doc xml:space="preserve">Read a signed 32 bit big endian integer into @val
  6371. and update the current position.</doc>
  6372. <return-value transfer-ownership="none">
  6373. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6374. <type name="gboolean" c:type="gboolean"/>
  6375. </return-value>
  6376. <parameters>
  6377. <instance-parameter name="reader" transfer-ownership="none">
  6378. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6379. <type name="ByteReader" c:type="GstByteReader*"/>
  6380. </instance-parameter>
  6381. <parameter name="val"
  6382. direction="out"
  6383. caller-allocates="0"
  6384. transfer-ownership="full">
  6385. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  6386. <type name="gint32" c:type="gint32*"/>
  6387. </parameter>
  6388. </parameters>
  6389. </method>
  6390. <method name="get_int32_le" c:identifier="gst_byte_reader_get_int32_le">
  6391. <doc xml:space="preserve">Read a signed 32 bit little endian integer into @val
  6392. and update the current position.</doc>
  6393. <return-value transfer-ownership="none">
  6394. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6395. <type name="gboolean" c:type="gboolean"/>
  6396. </return-value>
  6397. <parameters>
  6398. <instance-parameter name="reader" transfer-ownership="none">
  6399. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6400. <type name="ByteReader" c:type="GstByteReader*"/>
  6401. </instance-parameter>
  6402. <parameter name="val"
  6403. direction="out"
  6404. caller-allocates="0"
  6405. transfer-ownership="full">
  6406. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  6407. <type name="gint32" c:type="gint32*"/>
  6408. </parameter>
  6409. </parameters>
  6410. </method>
  6411. <method name="get_int64_be" c:identifier="gst_byte_reader_get_int64_be">
  6412. <doc xml:space="preserve">Read a signed 64 bit big endian integer into @val
  6413. and update the current position.</doc>
  6414. <return-value transfer-ownership="none">
  6415. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6416. <type name="gboolean" c:type="gboolean"/>
  6417. </return-value>
  6418. <parameters>
  6419. <instance-parameter name="reader" transfer-ownership="none">
  6420. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6421. <type name="ByteReader" c:type="GstByteReader*"/>
  6422. </instance-parameter>
  6423. <parameter name="val"
  6424. direction="out"
  6425. caller-allocates="0"
  6426. transfer-ownership="full">
  6427. <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
  6428. <type name="gint64" c:type="gint64*"/>
  6429. </parameter>
  6430. </parameters>
  6431. </method>
  6432. <method name="get_int64_le" c:identifier="gst_byte_reader_get_int64_le">
  6433. <doc xml:space="preserve">Read a signed 64 bit little endian integer into @val
  6434. and update the current position.</doc>
  6435. <return-value transfer-ownership="none">
  6436. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6437. <type name="gboolean" c:type="gboolean"/>
  6438. </return-value>
  6439. <parameters>
  6440. <instance-parameter name="reader" transfer-ownership="none">
  6441. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6442. <type name="ByteReader" c:type="GstByteReader*"/>
  6443. </instance-parameter>
  6444. <parameter name="val"
  6445. direction="out"
  6446. caller-allocates="0"
  6447. transfer-ownership="full">
  6448. <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
  6449. <type name="gint64" c:type="gint64*"/>
  6450. </parameter>
  6451. </parameters>
  6452. </method>
  6453. <method name="get_int8" c:identifier="gst_byte_reader_get_int8">
  6454. <doc xml:space="preserve">Read a signed 8 bit integer into @val and update the current position.</doc>
  6455. <return-value transfer-ownership="none">
  6456. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6457. <type name="gboolean" c:type="gboolean"/>
  6458. </return-value>
  6459. <parameters>
  6460. <instance-parameter name="reader" transfer-ownership="none">
  6461. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6462. <type name="ByteReader" c:type="GstByteReader*"/>
  6463. </instance-parameter>
  6464. <parameter name="val"
  6465. direction="out"
  6466. caller-allocates="0"
  6467. transfer-ownership="full">
  6468. <doc xml:space="preserve">Pointer to a #gint8 to store the result</doc>
  6469. <type name="gint8" c:type="gint8*"/>
  6470. </parameter>
  6471. </parameters>
  6472. </method>
  6473. <method name="get_pos" c:identifier="gst_byte_reader_get_pos">
  6474. <doc xml:space="preserve">Returns the current position of a #GstByteReader instance in bytes.</doc>
  6475. <return-value transfer-ownership="none">
  6476. <doc xml:space="preserve">The current position of @reader in bytes.</doc>
  6477. <type name="guint" c:type="guint"/>
  6478. </return-value>
  6479. <parameters>
  6480. <instance-parameter name="reader" transfer-ownership="none">
  6481. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6482. <type name="ByteReader" c:type="const GstByteReader*"/>
  6483. </instance-parameter>
  6484. </parameters>
  6485. </method>
  6486. <method name="get_remaining"
  6487. c:identifier="gst_byte_reader_get_remaining">
  6488. <doc xml:space="preserve">Returns the remaining number of bytes of a #GstByteReader instance.</doc>
  6489. <return-value transfer-ownership="none">
  6490. <doc xml:space="preserve">The remaining number of bytes of @reader instance.</doc>
  6491. <type name="guint" c:type="guint"/>
  6492. </return-value>
  6493. <parameters>
  6494. <instance-parameter name="reader" transfer-ownership="none">
  6495. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6496. <type name="ByteReader" c:type="const GstByteReader*"/>
  6497. </instance-parameter>
  6498. </parameters>
  6499. </method>
  6500. <method name="get_size" c:identifier="gst_byte_reader_get_size">
  6501. <doc xml:space="preserve">Returns the total number of bytes of a #GstByteReader instance.</doc>
  6502. <return-value transfer-ownership="none">
  6503. <doc xml:space="preserve">The total number of bytes of @reader instance.</doc>
  6504. <type name="guint" c:type="guint"/>
  6505. </return-value>
  6506. <parameters>
  6507. <instance-parameter name="reader" transfer-ownership="none">
  6508. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6509. <type name="ByteReader" c:type="const GstByteReader*"/>
  6510. </instance-parameter>
  6511. </parameters>
  6512. </method>
  6513. <method name="get_string_utf8"
  6514. c:identifier="gst_byte_reader_get_string_utf8">
  6515. <doc xml:space="preserve">Returns a constant pointer to the current data position if there is
  6516. a NUL-terminated string in the data (this could be just a NUL terminator),
  6517. advancing the current position to the byte after the string. This will work
  6518. for any NUL-terminated string with a character width of 8 bits, so ASCII,
  6519. UTF-8, ISO-8859-N etc.
  6520. No input checking for valid UTF-8 is done.
  6521. This function will fail if no NUL-terminator was found in in the data.</doc>
  6522. <return-value transfer-ownership="none">
  6523. <doc xml:space="preserve">%TRUE if a string could be found, %FALSE otherwise.</doc>
  6524. <type name="gboolean" c:type="gboolean"/>
  6525. </return-value>
  6526. <parameters>
  6527. <instance-parameter name="reader" transfer-ownership="none">
  6528. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6529. <type name="ByteReader" c:type="GstByteReader*"/>
  6530. </instance-parameter>
  6531. <parameter name="str"
  6532. direction="out"
  6533. caller-allocates="0"
  6534. transfer-ownership="none">
  6535. <doc xml:space="preserve">address of a
  6536. #gchar pointer variable in which to store the result</doc>
  6537. <array c:type="gchar**">
  6538. <type name="utf8" c:type="gchar*"/>
  6539. </array>
  6540. </parameter>
  6541. </parameters>
  6542. </method>
  6543. <method name="get_sub_reader"
  6544. c:identifier="gst_byte_reader_get_sub_reader"
  6545. version="1.6"
  6546. introspectable="0">
  6547. <doc xml:space="preserve">Initializes a #GstByteReader sub-reader instance to contain @size bytes of
  6548. data from the current position of @reader. This is useful to read chunked
  6549. formats and make sure that one doesn't read beyond the size of the sub-chunk.
  6550. Unlike gst_byte_reader_peek_sub_reader(), this function also modifies the
  6551. position of @reader and moves it forward by @size bytes.</doc>
  6552. <return-value transfer-ownership="none">
  6553. <doc xml:space="preserve">FALSE on error or if @reader does not contain @size more bytes from
  6554. the current position, and otherwise TRUE</doc>
  6555. <type name="gboolean" c:type="gboolean"/>
  6556. </return-value>
  6557. <parameters>
  6558. <instance-parameter name="reader" transfer-ownership="none">
  6559. <doc xml:space="preserve">an existing and initialized #GstByteReader instance</doc>
  6560. <type name="ByteReader" c:type="GstByteReader*"/>
  6561. </instance-parameter>
  6562. <parameter name="sub_reader" transfer-ownership="none">
  6563. <doc xml:space="preserve">a #GstByteReader instance to initialize as sub-reader</doc>
  6564. <type name="ByteReader" c:type="GstByteReader*"/>
  6565. </parameter>
  6566. <parameter name="size" transfer-ownership="none">
  6567. <doc xml:space="preserve">size of @sub_reader in bytes</doc>
  6568. <type name="guint" c:type="guint"/>
  6569. </parameter>
  6570. </parameters>
  6571. </method>
  6572. <method name="get_uint16_be"
  6573. c:identifier="gst_byte_reader_get_uint16_be">
  6574. <doc xml:space="preserve">Read an unsigned 16 bit big endian integer into @val
  6575. and update the current position.</doc>
  6576. <return-value transfer-ownership="none">
  6577. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6578. <type name="gboolean" c:type="gboolean"/>
  6579. </return-value>
  6580. <parameters>
  6581. <instance-parameter name="reader" transfer-ownership="none">
  6582. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6583. <type name="ByteReader" c:type="GstByteReader*"/>
  6584. </instance-parameter>
  6585. <parameter name="val"
  6586. direction="out"
  6587. caller-allocates="0"
  6588. transfer-ownership="full">
  6589. <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
  6590. <type name="guint16" c:type="guint16*"/>
  6591. </parameter>
  6592. </parameters>
  6593. </method>
  6594. <method name="get_uint16_le"
  6595. c:identifier="gst_byte_reader_get_uint16_le">
  6596. <doc xml:space="preserve">Read an unsigned 16 bit little endian integer into @val
  6597. and update the current position.</doc>
  6598. <return-value transfer-ownership="none">
  6599. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6600. <type name="gboolean" c:type="gboolean"/>
  6601. </return-value>
  6602. <parameters>
  6603. <instance-parameter name="reader" transfer-ownership="none">
  6604. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6605. <type name="ByteReader" c:type="GstByteReader*"/>
  6606. </instance-parameter>
  6607. <parameter name="val"
  6608. direction="out"
  6609. caller-allocates="0"
  6610. transfer-ownership="full">
  6611. <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
  6612. <type name="guint16" c:type="guint16*"/>
  6613. </parameter>
  6614. </parameters>
  6615. </method>
  6616. <method name="get_uint24_be"
  6617. c:identifier="gst_byte_reader_get_uint24_be">
  6618. <doc xml:space="preserve">Read an unsigned 24 bit big endian integer into @val
  6619. and update the current position.</doc>
  6620. <return-value transfer-ownership="none">
  6621. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6622. <type name="gboolean" c:type="gboolean"/>
  6623. </return-value>
  6624. <parameters>
  6625. <instance-parameter name="reader" transfer-ownership="none">
  6626. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6627. <type name="ByteReader" c:type="GstByteReader*"/>
  6628. </instance-parameter>
  6629. <parameter name="val"
  6630. direction="out"
  6631. caller-allocates="0"
  6632. transfer-ownership="full">
  6633. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  6634. <type name="guint32" c:type="guint32*"/>
  6635. </parameter>
  6636. </parameters>
  6637. </method>
  6638. <method name="get_uint24_le"
  6639. c:identifier="gst_byte_reader_get_uint24_le">
  6640. <doc xml:space="preserve">Read an unsigned 24 bit little endian integer into @val
  6641. and update the current position.</doc>
  6642. <return-value transfer-ownership="none">
  6643. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6644. <type name="gboolean" c:type="gboolean"/>
  6645. </return-value>
  6646. <parameters>
  6647. <instance-parameter name="reader" transfer-ownership="none">
  6648. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6649. <type name="ByteReader" c:type="GstByteReader*"/>
  6650. </instance-parameter>
  6651. <parameter name="val"
  6652. direction="out"
  6653. caller-allocates="0"
  6654. transfer-ownership="full">
  6655. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  6656. <type name="guint32" c:type="guint32*"/>
  6657. </parameter>
  6658. </parameters>
  6659. </method>
  6660. <method name="get_uint32_be"
  6661. c:identifier="gst_byte_reader_get_uint32_be">
  6662. <doc xml:space="preserve">Read an unsigned 32 bit big endian integer into @val
  6663. and update the current position.</doc>
  6664. <return-value transfer-ownership="none">
  6665. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6666. <type name="gboolean" c:type="gboolean"/>
  6667. </return-value>
  6668. <parameters>
  6669. <instance-parameter name="reader" transfer-ownership="none">
  6670. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6671. <type name="ByteReader" c:type="GstByteReader*"/>
  6672. </instance-parameter>
  6673. <parameter name="val"
  6674. direction="out"
  6675. caller-allocates="0"
  6676. transfer-ownership="full">
  6677. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  6678. <type name="guint32" c:type="guint32*"/>
  6679. </parameter>
  6680. </parameters>
  6681. </method>
  6682. <method name="get_uint32_le"
  6683. c:identifier="gst_byte_reader_get_uint32_le">
  6684. <doc xml:space="preserve">Read an unsigned 32 bit little endian integer into @val
  6685. and update the current position.</doc>
  6686. <return-value transfer-ownership="none">
  6687. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6688. <type name="gboolean" c:type="gboolean"/>
  6689. </return-value>
  6690. <parameters>
  6691. <instance-parameter name="reader" transfer-ownership="none">
  6692. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6693. <type name="ByteReader" c:type="GstByteReader*"/>
  6694. </instance-parameter>
  6695. <parameter name="val"
  6696. direction="out"
  6697. caller-allocates="0"
  6698. transfer-ownership="full">
  6699. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  6700. <type name="guint32" c:type="guint32*"/>
  6701. </parameter>
  6702. </parameters>
  6703. </method>
  6704. <method name="get_uint64_be"
  6705. c:identifier="gst_byte_reader_get_uint64_be">
  6706. <doc xml:space="preserve">Read an unsigned 64 bit big endian integer into @val
  6707. and update the current position.</doc>
  6708. <return-value transfer-ownership="none">
  6709. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6710. <type name="gboolean" c:type="gboolean"/>
  6711. </return-value>
  6712. <parameters>
  6713. <instance-parameter name="reader" transfer-ownership="none">
  6714. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6715. <type name="ByteReader" c:type="GstByteReader*"/>
  6716. </instance-parameter>
  6717. <parameter name="val"
  6718. direction="out"
  6719. caller-allocates="0"
  6720. transfer-ownership="full">
  6721. <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
  6722. <type name="guint64" c:type="guint64*"/>
  6723. </parameter>
  6724. </parameters>
  6725. </method>
  6726. <method name="get_uint64_le"
  6727. c:identifier="gst_byte_reader_get_uint64_le">
  6728. <doc xml:space="preserve">Read an unsigned 64 bit little endian integer into @val
  6729. and update the current position.</doc>
  6730. <return-value transfer-ownership="none">
  6731. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6732. <type name="gboolean" c:type="gboolean"/>
  6733. </return-value>
  6734. <parameters>
  6735. <instance-parameter name="reader" transfer-ownership="none">
  6736. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6737. <type name="ByteReader" c:type="GstByteReader*"/>
  6738. </instance-parameter>
  6739. <parameter name="val"
  6740. direction="out"
  6741. caller-allocates="0"
  6742. transfer-ownership="full">
  6743. <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
  6744. <type name="guint64" c:type="guint64*"/>
  6745. </parameter>
  6746. </parameters>
  6747. </method>
  6748. <method name="get_uint8" c:identifier="gst_byte_reader_get_uint8">
  6749. <doc xml:space="preserve">Read an unsigned 8 bit integer into @val and update the current position.</doc>
  6750. <return-value transfer-ownership="none">
  6751. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6752. <type name="gboolean" c:type="gboolean"/>
  6753. </return-value>
  6754. <parameters>
  6755. <instance-parameter name="reader" transfer-ownership="none">
  6756. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6757. <type name="ByteReader" c:type="GstByteReader*"/>
  6758. </instance-parameter>
  6759. <parameter name="val"
  6760. direction="out"
  6761. caller-allocates="0"
  6762. transfer-ownership="full">
  6763. <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
  6764. <type name="guint8" c:type="guint8*"/>
  6765. </parameter>
  6766. </parameters>
  6767. </method>
  6768. <method name="init" c:identifier="gst_byte_reader_init">
  6769. <doc xml:space="preserve">Initializes a #GstByteReader instance to read from @data. This function
  6770. can be called on already initialized instances.</doc>
  6771. <return-value transfer-ownership="none">
  6772. <type name="none" c:type="void"/>
  6773. </return-value>
  6774. <parameters>
  6775. <instance-parameter name="reader" transfer-ownership="none">
  6776. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6777. <type name="ByteReader" c:type="GstByteReader*"/>
  6778. </instance-parameter>
  6779. <parameter name="data" transfer-ownership="none">
  6780. <doc xml:space="preserve">data from which
  6781. the #GstByteReader should read</doc>
  6782. <array length="1" zero-terminated="0" c:type="guint8*">
  6783. <type name="guint8" c:type="guint8"/>
  6784. </array>
  6785. </parameter>
  6786. <parameter name="size" transfer-ownership="none">
  6787. <doc xml:space="preserve">Size of @data in bytes</doc>
  6788. <type name="guint" c:type="guint"/>
  6789. </parameter>
  6790. </parameters>
  6791. </method>
  6792. <method name="masked_scan_uint32"
  6793. c:identifier="gst_byte_reader_masked_scan_uint32">
  6794. <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the byte reader data,
  6795. starting from offset @offset relative to the current position.
  6796. The bytes in @pattern and @mask are interpreted left-to-right, regardless
  6797. of endianness. All four bytes of the pattern must be present in the
  6798. byte reader data for it to match, even if the first or last bytes are masked
  6799. out.
  6800. It is an error to call this function without making sure that there is
  6801. enough data (offset+size bytes) in the byte reader.</doc>
  6802. <return-value transfer-ownership="none">
  6803. <doc xml:space="preserve">offset of the first match, or -1 if no match was found.
  6804. Example:
  6805. &lt;programlisting&gt;
  6806. // Assume the reader contains 0x00 0x01 0x02 ... 0xfe 0xff
  6807. gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 0, 256);
  6808. // -&gt; returns 0
  6809. gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 1, 255);
  6810. // -&gt; returns -1
  6811. gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x01020304, 1, 255);
  6812. // -&gt; returns 1
  6813. gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0001, 0, 256);
  6814. // -&gt; returns -1
  6815. gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0203, 0, 256);
  6816. // -&gt; returns 0
  6817. gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 256);
  6818. // -&gt; returns 2
  6819. gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4);
  6820. // -&gt; returns -1
  6821. &lt;/programlisting&gt;</doc>
  6822. <type name="guint" c:type="guint"/>
  6823. </return-value>
  6824. <parameters>
  6825. <instance-parameter name="reader" transfer-ownership="none">
  6826. <doc xml:space="preserve">a #GstByteReader</doc>
  6827. <type name="ByteReader" c:type="const GstByteReader*"/>
  6828. </instance-parameter>
  6829. <parameter name="mask" transfer-ownership="none">
  6830. <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
  6831. <type name="guint32" c:type="guint32"/>
  6832. </parameter>
  6833. <parameter name="pattern" transfer-ownership="none">
  6834. <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
  6835. <type name="guint32" c:type="guint32"/>
  6836. </parameter>
  6837. <parameter name="offset" transfer-ownership="none">
  6838. <doc xml:space="preserve">offset from which to start scanning, relative to the current
  6839. position</doc>
  6840. <type name="guint" c:type="guint"/>
  6841. </parameter>
  6842. <parameter name="size" transfer-ownership="none">
  6843. <doc xml:space="preserve">number of bytes to scan from offset</doc>
  6844. <type name="guint" c:type="guint"/>
  6845. </parameter>
  6846. </parameters>
  6847. </method>
  6848. <method name="masked_scan_uint32_peek"
  6849. c:identifier="gst_byte_reader_masked_scan_uint32_peek"
  6850. version="1.6">
  6851. <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the byte reader data,
  6852. starting from offset @offset relative to the current position.
  6853. The bytes in @pattern and @mask are interpreted left-to-right, regardless
  6854. of endianness. All four bytes of the pattern must be present in the
  6855. byte reader data for it to match, even if the first or last bytes are masked
  6856. out.
  6857. It is an error to call this function without making sure that there is
  6858. enough data (offset+size bytes) in the byte reader.</doc>
  6859. <return-value transfer-ownership="none">
  6860. <doc xml:space="preserve">offset of the first match, or -1 if no match was found.</doc>
  6861. <type name="guint" c:type="guint"/>
  6862. </return-value>
  6863. <parameters>
  6864. <instance-parameter name="reader" transfer-ownership="none">
  6865. <doc xml:space="preserve">a #GstByteReader</doc>
  6866. <type name="ByteReader" c:type="const GstByteReader*"/>
  6867. </instance-parameter>
  6868. <parameter name="mask" transfer-ownership="none">
  6869. <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
  6870. <type name="guint32" c:type="guint32"/>
  6871. </parameter>
  6872. <parameter name="pattern" transfer-ownership="none">
  6873. <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
  6874. <type name="guint32" c:type="guint32"/>
  6875. </parameter>
  6876. <parameter name="offset" transfer-ownership="none">
  6877. <doc xml:space="preserve">offset from which to start scanning, relative to the current
  6878. position</doc>
  6879. <type name="guint" c:type="guint"/>
  6880. </parameter>
  6881. <parameter name="size" transfer-ownership="none">
  6882. <doc xml:space="preserve">number of bytes to scan from offset</doc>
  6883. <type name="guint" c:type="guint"/>
  6884. </parameter>
  6885. <parameter name="value" transfer-ownership="none">
  6886. <doc xml:space="preserve">pointer to uint32 to return matching data</doc>
  6887. <type name="guint32" c:type="guint32*"/>
  6888. </parameter>
  6889. </parameters>
  6890. </method>
  6891. <method name="peek_data" c:identifier="gst_byte_reader_peek_data">
  6892. <doc xml:space="preserve">Returns a constant pointer to the current data
  6893. position if at least @size bytes are left and
  6894. keeps the current position.</doc>
  6895. <return-value transfer-ownership="none">
  6896. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6897. <type name="gboolean" c:type="gboolean"/>
  6898. </return-value>
  6899. <parameters>
  6900. <instance-parameter name="reader" transfer-ownership="none">
  6901. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6902. <type name="ByteReader" c:type="const GstByteReader*"/>
  6903. </instance-parameter>
  6904. <parameter name="size"
  6905. direction="out"
  6906. caller-allocates="0"
  6907. transfer-ownership="full">
  6908. <doc xml:space="preserve">Size in bytes</doc>
  6909. <type name="guint" c:type="guint"/>
  6910. </parameter>
  6911. <parameter name="val"
  6912. direction="out"
  6913. caller-allocates="0"
  6914. transfer-ownership="none">
  6915. <doc xml:space="preserve">address of a
  6916. #guint8 pointer variable in which to store the result</doc>
  6917. <array length="0" zero-terminated="0" c:type="guint8**">
  6918. <type name="guint8" c:type="guint8*"/>
  6919. </array>
  6920. </parameter>
  6921. </parameters>
  6922. </method>
  6923. <method name="peek_float32_be"
  6924. c:identifier="gst_byte_reader_peek_float32_be">
  6925. <doc xml:space="preserve">Read a 32 bit big endian floating point value into @val
  6926. but keep the current position.</doc>
  6927. <return-value transfer-ownership="none">
  6928. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6929. <type name="gboolean" c:type="gboolean"/>
  6930. </return-value>
  6931. <parameters>
  6932. <instance-parameter name="reader" transfer-ownership="none">
  6933. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6934. <type name="ByteReader" c:type="const GstByteReader*"/>
  6935. </instance-parameter>
  6936. <parameter name="val"
  6937. direction="out"
  6938. caller-allocates="0"
  6939. transfer-ownership="full">
  6940. <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
  6941. <type name="gfloat" c:type="gfloat*"/>
  6942. </parameter>
  6943. </parameters>
  6944. </method>
  6945. <method name="peek_float32_le"
  6946. c:identifier="gst_byte_reader_peek_float32_le">
  6947. <doc xml:space="preserve">Read a 32 bit little endian floating point value into @val
  6948. but keep the current position.</doc>
  6949. <return-value transfer-ownership="none">
  6950. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6951. <type name="gboolean" c:type="gboolean"/>
  6952. </return-value>
  6953. <parameters>
  6954. <instance-parameter name="reader" transfer-ownership="none">
  6955. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6956. <type name="ByteReader" c:type="const GstByteReader*"/>
  6957. </instance-parameter>
  6958. <parameter name="val"
  6959. direction="out"
  6960. caller-allocates="0"
  6961. transfer-ownership="full">
  6962. <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
  6963. <type name="gfloat" c:type="gfloat*"/>
  6964. </parameter>
  6965. </parameters>
  6966. </method>
  6967. <method name="peek_float64_be"
  6968. c:identifier="gst_byte_reader_peek_float64_be">
  6969. <doc xml:space="preserve">Read a 64 bit big endian floating point value into @val
  6970. but keep the current position.</doc>
  6971. <return-value transfer-ownership="none">
  6972. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6973. <type name="gboolean" c:type="gboolean"/>
  6974. </return-value>
  6975. <parameters>
  6976. <instance-parameter name="reader" transfer-ownership="none">
  6977. <doc xml:space="preserve">a #GstByteReader instance</doc>
  6978. <type name="ByteReader" c:type="const GstByteReader*"/>
  6979. </instance-parameter>
  6980. <parameter name="val"
  6981. direction="out"
  6982. caller-allocates="0"
  6983. transfer-ownership="full">
  6984. <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
  6985. <type name="gdouble" c:type="gdouble*"/>
  6986. </parameter>
  6987. </parameters>
  6988. </method>
  6989. <method name="peek_float64_le"
  6990. c:identifier="gst_byte_reader_peek_float64_le">
  6991. <doc xml:space="preserve">Read a 64 bit little endian floating point value into @val
  6992. but keep the current position.</doc>
  6993. <return-value transfer-ownership="none">
  6994. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  6995. <type name="gboolean" c:type="gboolean"/>
  6996. </return-value>
  6997. <parameters>
  6998. <instance-parameter name="reader" transfer-ownership="none">
  6999. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7000. <type name="ByteReader" c:type="const GstByteReader*"/>
  7001. </instance-parameter>
  7002. <parameter name="val"
  7003. direction="out"
  7004. caller-allocates="0"
  7005. transfer-ownership="full">
  7006. <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
  7007. <type name="gdouble" c:type="gdouble*"/>
  7008. </parameter>
  7009. </parameters>
  7010. </method>
  7011. <method name="peek_int16_be"
  7012. c:identifier="gst_byte_reader_peek_int16_be">
  7013. <doc xml:space="preserve">Read a signed 16 bit big endian integer into @val
  7014. but keep the current position.</doc>
  7015. <return-value transfer-ownership="none">
  7016. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7017. <type name="gboolean" c:type="gboolean"/>
  7018. </return-value>
  7019. <parameters>
  7020. <instance-parameter name="reader" transfer-ownership="none">
  7021. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7022. <type name="ByteReader" c:type="const GstByteReader*"/>
  7023. </instance-parameter>
  7024. <parameter name="val"
  7025. direction="out"
  7026. caller-allocates="0"
  7027. transfer-ownership="full">
  7028. <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
  7029. <type name="gint16" c:type="gint16*"/>
  7030. </parameter>
  7031. </parameters>
  7032. </method>
  7033. <method name="peek_int16_le"
  7034. c:identifier="gst_byte_reader_peek_int16_le">
  7035. <doc xml:space="preserve">Read a signed 16 bit little endian integer into @val
  7036. but keep the current position.</doc>
  7037. <return-value transfer-ownership="none">
  7038. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7039. <type name="gboolean" c:type="gboolean"/>
  7040. </return-value>
  7041. <parameters>
  7042. <instance-parameter name="reader" transfer-ownership="none">
  7043. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7044. <type name="ByteReader" c:type="const GstByteReader*"/>
  7045. </instance-parameter>
  7046. <parameter name="val"
  7047. direction="out"
  7048. caller-allocates="0"
  7049. transfer-ownership="full">
  7050. <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
  7051. <type name="gint16" c:type="gint16*"/>
  7052. </parameter>
  7053. </parameters>
  7054. </method>
  7055. <method name="peek_int24_be"
  7056. c:identifier="gst_byte_reader_peek_int24_be">
  7057. <doc xml:space="preserve">Read a signed 24 bit big endian integer into @val
  7058. but keep the current position.</doc>
  7059. <return-value transfer-ownership="none">
  7060. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7061. <type name="gboolean" c:type="gboolean"/>
  7062. </return-value>
  7063. <parameters>
  7064. <instance-parameter name="reader" transfer-ownership="none">
  7065. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7066. <type name="ByteReader" c:type="const GstByteReader*"/>
  7067. </instance-parameter>
  7068. <parameter name="val"
  7069. direction="out"
  7070. caller-allocates="0"
  7071. transfer-ownership="full">
  7072. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  7073. <type name="gint32" c:type="gint32*"/>
  7074. </parameter>
  7075. </parameters>
  7076. </method>
  7077. <method name="peek_int24_le"
  7078. c:identifier="gst_byte_reader_peek_int24_le">
  7079. <doc xml:space="preserve">Read a signed 24 bit little endian integer into @val
  7080. but keep the current position.</doc>
  7081. <return-value transfer-ownership="none">
  7082. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7083. <type name="gboolean" c:type="gboolean"/>
  7084. </return-value>
  7085. <parameters>
  7086. <instance-parameter name="reader" transfer-ownership="none">
  7087. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7088. <type name="ByteReader" c:type="const GstByteReader*"/>
  7089. </instance-parameter>
  7090. <parameter name="val"
  7091. direction="out"
  7092. caller-allocates="0"
  7093. transfer-ownership="full">
  7094. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  7095. <type name="gint32" c:type="gint32*"/>
  7096. </parameter>
  7097. </parameters>
  7098. </method>
  7099. <method name="peek_int32_be"
  7100. c:identifier="gst_byte_reader_peek_int32_be">
  7101. <doc xml:space="preserve">Read a signed 32 bit big endian integer into @val
  7102. but keep the current position.</doc>
  7103. <return-value transfer-ownership="none">
  7104. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7105. <type name="gboolean" c:type="gboolean"/>
  7106. </return-value>
  7107. <parameters>
  7108. <instance-parameter name="reader" transfer-ownership="none">
  7109. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7110. <type name="ByteReader" c:type="const GstByteReader*"/>
  7111. </instance-parameter>
  7112. <parameter name="val"
  7113. direction="out"
  7114. caller-allocates="0"
  7115. transfer-ownership="full">
  7116. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  7117. <type name="gint32" c:type="gint32*"/>
  7118. </parameter>
  7119. </parameters>
  7120. </method>
  7121. <method name="peek_int32_le"
  7122. c:identifier="gst_byte_reader_peek_int32_le">
  7123. <doc xml:space="preserve">Read a signed 32 bit little endian integer into @val
  7124. but keep the current position.</doc>
  7125. <return-value transfer-ownership="none">
  7126. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7127. <type name="gboolean" c:type="gboolean"/>
  7128. </return-value>
  7129. <parameters>
  7130. <instance-parameter name="reader" transfer-ownership="none">
  7131. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7132. <type name="ByteReader" c:type="const GstByteReader*"/>
  7133. </instance-parameter>
  7134. <parameter name="val"
  7135. direction="out"
  7136. caller-allocates="0"
  7137. transfer-ownership="full">
  7138. <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
  7139. <type name="gint32" c:type="gint32*"/>
  7140. </parameter>
  7141. </parameters>
  7142. </method>
  7143. <method name="peek_int64_be"
  7144. c:identifier="gst_byte_reader_peek_int64_be">
  7145. <doc xml:space="preserve">Read a signed 64 bit big endian integer into @val
  7146. but keep the current position.</doc>
  7147. <return-value transfer-ownership="none">
  7148. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7149. <type name="gboolean" c:type="gboolean"/>
  7150. </return-value>
  7151. <parameters>
  7152. <instance-parameter name="reader" transfer-ownership="none">
  7153. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7154. <type name="ByteReader" c:type="const GstByteReader*"/>
  7155. </instance-parameter>
  7156. <parameter name="val"
  7157. direction="out"
  7158. caller-allocates="0"
  7159. transfer-ownership="full">
  7160. <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
  7161. <type name="gint64" c:type="gint64*"/>
  7162. </parameter>
  7163. </parameters>
  7164. </method>
  7165. <method name="peek_int64_le"
  7166. c:identifier="gst_byte_reader_peek_int64_le">
  7167. <doc xml:space="preserve">Read a signed 64 bit little endian integer into @val
  7168. but keep the current position.</doc>
  7169. <return-value transfer-ownership="none">
  7170. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7171. <type name="gboolean" c:type="gboolean"/>
  7172. </return-value>
  7173. <parameters>
  7174. <instance-parameter name="reader" transfer-ownership="none">
  7175. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7176. <type name="ByteReader" c:type="const GstByteReader*"/>
  7177. </instance-parameter>
  7178. <parameter name="val"
  7179. direction="out"
  7180. caller-allocates="0"
  7181. transfer-ownership="full">
  7182. <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
  7183. <type name="gint64" c:type="gint64*"/>
  7184. </parameter>
  7185. </parameters>
  7186. </method>
  7187. <method name="peek_int8" c:identifier="gst_byte_reader_peek_int8">
  7188. <doc xml:space="preserve">Read a signed 8 bit integer into @val but keep the current position.</doc>
  7189. <return-value transfer-ownership="none">
  7190. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7191. <type name="gboolean" c:type="gboolean"/>
  7192. </return-value>
  7193. <parameters>
  7194. <instance-parameter name="reader" transfer-ownership="none">
  7195. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7196. <type name="ByteReader" c:type="const GstByteReader*"/>
  7197. </instance-parameter>
  7198. <parameter name="val"
  7199. direction="out"
  7200. caller-allocates="0"
  7201. transfer-ownership="full">
  7202. <doc xml:space="preserve">Pointer to a #gint8 to store the result</doc>
  7203. <type name="gint8" c:type="gint8*"/>
  7204. </parameter>
  7205. </parameters>
  7206. </method>
  7207. <method name="peek_string_utf8"
  7208. c:identifier="gst_byte_reader_peek_string_utf8">
  7209. <doc xml:space="preserve">Returns a constant pointer to the current data position if there is
  7210. a NUL-terminated string in the data (this could be just a NUL terminator).
  7211. The current position will be maintained. This will work for any
  7212. NUL-terminated string with a character width of 8 bits, so ASCII,
  7213. UTF-8, ISO-8859-N etc.
  7214. No input checking for valid UTF-8 is done.
  7215. This function will fail if no NUL-terminator was found in in the data.</doc>
  7216. <return-value transfer-ownership="none">
  7217. <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
  7218. <type name="gboolean" c:type="gboolean"/>
  7219. </return-value>
  7220. <parameters>
  7221. <instance-parameter name="reader" transfer-ownership="none">
  7222. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7223. <type name="ByteReader" c:type="const GstByteReader*"/>
  7224. </instance-parameter>
  7225. <parameter name="str"
  7226. direction="out"
  7227. caller-allocates="0"
  7228. transfer-ownership="none">
  7229. <doc xml:space="preserve">address of a
  7230. #gchar pointer variable in which to store the result</doc>
  7231. <array c:type="gchar**">
  7232. <type name="utf8" c:type="gchar*"/>
  7233. </array>
  7234. </parameter>
  7235. </parameters>
  7236. </method>
  7237. <method name="peek_sub_reader"
  7238. c:identifier="gst_byte_reader_peek_sub_reader"
  7239. version="1.6"
  7240. introspectable="0">
  7241. <doc xml:space="preserve">Initializes a #GstByteReader sub-reader instance to contain @size bytes of
  7242. data from the current position of @reader. This is useful to read chunked
  7243. formats and make sure that one doesn't read beyond the size of the sub-chunk.
  7244. Unlike gst_byte_reader_get_sub_reader(), this function does not modify the
  7245. current position of @reader.</doc>
  7246. <return-value transfer-ownership="none">
  7247. <doc xml:space="preserve">FALSE on error or if @reader does not contain @size more bytes from
  7248. the current position, and otherwise TRUE</doc>
  7249. <type name="gboolean" c:type="gboolean"/>
  7250. </return-value>
  7251. <parameters>
  7252. <instance-parameter name="reader" transfer-ownership="none">
  7253. <doc xml:space="preserve">an existing and initialized #GstByteReader instance</doc>
  7254. <type name="ByteReader" c:type="GstByteReader*"/>
  7255. </instance-parameter>
  7256. <parameter name="sub_reader" transfer-ownership="none">
  7257. <doc xml:space="preserve">a #GstByteReader instance to initialize as sub-reader</doc>
  7258. <type name="ByteReader" c:type="GstByteReader*"/>
  7259. </parameter>
  7260. <parameter name="size" transfer-ownership="none">
  7261. <doc xml:space="preserve">size of @sub_reader in bytes</doc>
  7262. <type name="guint" c:type="guint"/>
  7263. </parameter>
  7264. </parameters>
  7265. </method>
  7266. <method name="peek_uint16_be"
  7267. c:identifier="gst_byte_reader_peek_uint16_be">
  7268. <doc xml:space="preserve">Read an unsigned 16 bit big endian integer into @val
  7269. but keep the current position.</doc>
  7270. <return-value transfer-ownership="none">
  7271. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7272. <type name="gboolean" c:type="gboolean"/>
  7273. </return-value>
  7274. <parameters>
  7275. <instance-parameter name="reader" transfer-ownership="none">
  7276. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7277. <type name="ByteReader" c:type="const GstByteReader*"/>
  7278. </instance-parameter>
  7279. <parameter name="val"
  7280. direction="out"
  7281. caller-allocates="0"
  7282. transfer-ownership="full">
  7283. <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
  7284. <type name="guint16" c:type="guint16*"/>
  7285. </parameter>
  7286. </parameters>
  7287. </method>
  7288. <method name="peek_uint16_le"
  7289. c:identifier="gst_byte_reader_peek_uint16_le">
  7290. <doc xml:space="preserve">Read an unsigned 16 bit little endian integer into @val
  7291. but keep the current position.</doc>
  7292. <return-value transfer-ownership="none">
  7293. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7294. <type name="gboolean" c:type="gboolean"/>
  7295. </return-value>
  7296. <parameters>
  7297. <instance-parameter name="reader" transfer-ownership="none">
  7298. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7299. <type name="ByteReader" c:type="const GstByteReader*"/>
  7300. </instance-parameter>
  7301. <parameter name="val"
  7302. direction="out"
  7303. caller-allocates="0"
  7304. transfer-ownership="full">
  7305. <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
  7306. <type name="guint16" c:type="guint16*"/>
  7307. </parameter>
  7308. </parameters>
  7309. </method>
  7310. <method name="peek_uint24_be"
  7311. c:identifier="gst_byte_reader_peek_uint24_be">
  7312. <doc xml:space="preserve">Read an unsigned 24 bit big endian integer into @val
  7313. but keep the current position.</doc>
  7314. <return-value transfer-ownership="none">
  7315. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7316. <type name="gboolean" c:type="gboolean"/>
  7317. </return-value>
  7318. <parameters>
  7319. <instance-parameter name="reader" transfer-ownership="none">
  7320. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7321. <type name="ByteReader" c:type="const GstByteReader*"/>
  7322. </instance-parameter>
  7323. <parameter name="val"
  7324. direction="out"
  7325. caller-allocates="0"
  7326. transfer-ownership="full">
  7327. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  7328. <type name="guint32" c:type="guint32*"/>
  7329. </parameter>
  7330. </parameters>
  7331. </method>
  7332. <method name="peek_uint24_le"
  7333. c:identifier="gst_byte_reader_peek_uint24_le">
  7334. <doc xml:space="preserve">Read an unsigned 24 bit little endian integer into @val
  7335. but keep the current position.</doc>
  7336. <return-value transfer-ownership="none">
  7337. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7338. <type name="gboolean" c:type="gboolean"/>
  7339. </return-value>
  7340. <parameters>
  7341. <instance-parameter name="reader" transfer-ownership="none">
  7342. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7343. <type name="ByteReader" c:type="const GstByteReader*"/>
  7344. </instance-parameter>
  7345. <parameter name="val"
  7346. direction="out"
  7347. caller-allocates="0"
  7348. transfer-ownership="full">
  7349. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  7350. <type name="guint32" c:type="guint32*"/>
  7351. </parameter>
  7352. </parameters>
  7353. </method>
  7354. <method name="peek_uint32_be"
  7355. c:identifier="gst_byte_reader_peek_uint32_be">
  7356. <doc xml:space="preserve">Read an unsigned 32 bit big endian integer into @val
  7357. but keep the current position.</doc>
  7358. <return-value transfer-ownership="none">
  7359. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7360. <type name="gboolean" c:type="gboolean"/>
  7361. </return-value>
  7362. <parameters>
  7363. <instance-parameter name="reader" transfer-ownership="none">
  7364. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7365. <type name="ByteReader" c:type="const GstByteReader*"/>
  7366. </instance-parameter>
  7367. <parameter name="val"
  7368. direction="out"
  7369. caller-allocates="0"
  7370. transfer-ownership="full">
  7371. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  7372. <type name="guint32" c:type="guint32*"/>
  7373. </parameter>
  7374. </parameters>
  7375. </method>
  7376. <method name="peek_uint32_le"
  7377. c:identifier="gst_byte_reader_peek_uint32_le">
  7378. <doc xml:space="preserve">Read an unsigned 32 bit little endian integer into @val
  7379. but keep the current position.</doc>
  7380. <return-value transfer-ownership="none">
  7381. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7382. <type name="gboolean" c:type="gboolean"/>
  7383. </return-value>
  7384. <parameters>
  7385. <instance-parameter name="reader" transfer-ownership="none">
  7386. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7387. <type name="ByteReader" c:type="const GstByteReader*"/>
  7388. </instance-parameter>
  7389. <parameter name="val"
  7390. direction="out"
  7391. caller-allocates="0"
  7392. transfer-ownership="full">
  7393. <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
  7394. <type name="guint32" c:type="guint32*"/>
  7395. </parameter>
  7396. </parameters>
  7397. </method>
  7398. <method name="peek_uint64_be"
  7399. c:identifier="gst_byte_reader_peek_uint64_be">
  7400. <doc xml:space="preserve">Read an unsigned 64 bit big endian integer into @val
  7401. but keep the current position.</doc>
  7402. <return-value transfer-ownership="none">
  7403. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7404. <type name="gboolean" c:type="gboolean"/>
  7405. </return-value>
  7406. <parameters>
  7407. <instance-parameter name="reader" transfer-ownership="none">
  7408. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7409. <type name="ByteReader" c:type="const GstByteReader*"/>
  7410. </instance-parameter>
  7411. <parameter name="val"
  7412. direction="out"
  7413. caller-allocates="0"
  7414. transfer-ownership="full">
  7415. <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
  7416. <type name="guint64" c:type="guint64*"/>
  7417. </parameter>
  7418. </parameters>
  7419. </method>
  7420. <method name="peek_uint64_le"
  7421. c:identifier="gst_byte_reader_peek_uint64_le">
  7422. <doc xml:space="preserve">Read an unsigned 64 bit little endian integer into @val
  7423. but keep the current position.</doc>
  7424. <return-value transfer-ownership="none">
  7425. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7426. <type name="gboolean" c:type="gboolean"/>
  7427. </return-value>
  7428. <parameters>
  7429. <instance-parameter name="reader" transfer-ownership="none">
  7430. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7431. <type name="ByteReader" c:type="const GstByteReader*"/>
  7432. </instance-parameter>
  7433. <parameter name="val"
  7434. direction="out"
  7435. caller-allocates="0"
  7436. transfer-ownership="full">
  7437. <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
  7438. <type name="guint64" c:type="guint64*"/>
  7439. </parameter>
  7440. </parameters>
  7441. </method>
  7442. <method name="peek_uint8" c:identifier="gst_byte_reader_peek_uint8">
  7443. <doc xml:space="preserve">Read an unsigned 8 bit integer into @val but keep the current position.</doc>
  7444. <return-value transfer-ownership="none">
  7445. <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
  7446. <type name="gboolean" c:type="gboolean"/>
  7447. </return-value>
  7448. <parameters>
  7449. <instance-parameter name="reader" transfer-ownership="none">
  7450. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7451. <type name="ByteReader" c:type="const GstByteReader*"/>
  7452. </instance-parameter>
  7453. <parameter name="val"
  7454. direction="out"
  7455. caller-allocates="0"
  7456. transfer-ownership="full">
  7457. <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
  7458. <type name="guint8" c:type="guint8*"/>
  7459. </parameter>
  7460. </parameters>
  7461. </method>
  7462. <method name="set_pos" c:identifier="gst_byte_reader_set_pos">
  7463. <doc xml:space="preserve">Sets the new position of a #GstByteReader instance to @pos in bytes.</doc>
  7464. <return-value transfer-ownership="none">
  7465. <doc xml:space="preserve">%TRUE if the position could be set successfully, %FALSE
  7466. otherwise.</doc>
  7467. <type name="gboolean" c:type="gboolean"/>
  7468. </return-value>
  7469. <parameters>
  7470. <instance-parameter name="reader" transfer-ownership="none">
  7471. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7472. <type name="ByteReader" c:type="GstByteReader*"/>
  7473. </instance-parameter>
  7474. <parameter name="pos" transfer-ownership="none">
  7475. <doc xml:space="preserve">The new position in bytes</doc>
  7476. <type name="guint" c:type="guint"/>
  7477. </parameter>
  7478. </parameters>
  7479. </method>
  7480. <method name="skip" c:identifier="gst_byte_reader_skip">
  7481. <doc xml:space="preserve">Skips @nbytes bytes of the #GstByteReader instance.</doc>
  7482. <return-value transfer-ownership="none">
  7483. <doc xml:space="preserve">%TRUE if @nbytes bytes could be skipped, %FALSE otherwise.</doc>
  7484. <type name="gboolean" c:type="gboolean"/>
  7485. </return-value>
  7486. <parameters>
  7487. <instance-parameter name="reader" transfer-ownership="none">
  7488. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7489. <type name="ByteReader" c:type="GstByteReader*"/>
  7490. </instance-parameter>
  7491. <parameter name="nbytes" transfer-ownership="none">
  7492. <doc xml:space="preserve">the number of bytes to skip</doc>
  7493. <type name="guint" c:type="guint"/>
  7494. </parameter>
  7495. </parameters>
  7496. </method>
  7497. <method name="skip_string_utf16"
  7498. c:identifier="gst_byte_reader_skip_string_utf16">
  7499. <doc xml:space="preserve">Skips a NUL-terminated UTF-16 string in the #GstByteReader instance,
  7500. advancing the current position to the byte after the string.
  7501. No input checking for valid UTF-16 is done.
  7502. This function will fail if no NUL-terminator was found in in the data.</doc>
  7503. <return-value transfer-ownership="none">
  7504. <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
  7505. <type name="gboolean" c:type="gboolean"/>
  7506. </return-value>
  7507. <parameters>
  7508. <instance-parameter name="reader" transfer-ownership="none">
  7509. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7510. <type name="ByteReader" c:type="GstByteReader*"/>
  7511. </instance-parameter>
  7512. </parameters>
  7513. </method>
  7514. <method name="skip_string_utf32"
  7515. c:identifier="gst_byte_reader_skip_string_utf32">
  7516. <doc xml:space="preserve">Skips a NUL-terminated UTF-32 string in the #GstByteReader instance,
  7517. advancing the current position to the byte after the string.
  7518. No input checking for valid UTF-32 is done.
  7519. This function will fail if no NUL-terminator was found in in the data.</doc>
  7520. <return-value transfer-ownership="none">
  7521. <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
  7522. <type name="gboolean" c:type="gboolean"/>
  7523. </return-value>
  7524. <parameters>
  7525. <instance-parameter name="reader" transfer-ownership="none">
  7526. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7527. <type name="ByteReader" c:type="GstByteReader*"/>
  7528. </instance-parameter>
  7529. </parameters>
  7530. </method>
  7531. <method name="skip_string_utf8"
  7532. c:identifier="gst_byte_reader_skip_string_utf8">
  7533. <doc xml:space="preserve">Skips a NUL-terminated string in the #GstByteReader instance, advancing
  7534. the current position to the byte after the string. This will work for
  7535. any NUL-terminated string with a character width of 8 bits, so ASCII,
  7536. UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
  7537. This function will fail if no NUL-terminator was found in in the data.</doc>
  7538. <return-value transfer-ownership="none">
  7539. <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
  7540. <type name="gboolean" c:type="gboolean"/>
  7541. </return-value>
  7542. <parameters>
  7543. <instance-parameter name="reader" transfer-ownership="none">
  7544. <doc xml:space="preserve">a #GstByteReader instance</doc>
  7545. <type name="ByteReader" c:type="GstByteReader*"/>
  7546. </instance-parameter>
  7547. </parameters>
  7548. </method>
  7549. <function name="new"
  7550. c:identifier="gst_byte_reader_new"
  7551. introspectable="0">
  7552. <doc xml:space="preserve">Create a new #GstByteReader instance, which will read from @data.
  7553. Free-function: gst_byte_reader_free</doc>
  7554. <return-value transfer-ownership="full">
  7555. <doc xml:space="preserve">a new #GstByteReader instance</doc>
  7556. <type name="ByteReader" c:type="GstByteReader*"/>
  7557. </return-value>
  7558. <parameters>
  7559. <parameter name="data" transfer-ownership="none">
  7560. <doc xml:space="preserve">data from which the
  7561. #GstByteReader should read</doc>
  7562. <array length="1" zero-terminated="0" c:type="guint8*">
  7563. <type name="guint8" c:type="guint8"/>
  7564. </array>
  7565. </parameter>
  7566. <parameter name="size" transfer-ownership="none">
  7567. <doc xml:space="preserve">Size of @data in bytes</doc>
  7568. <type name="guint" c:type="guint"/>
  7569. </parameter>
  7570. </parameters>
  7571. </function>
  7572. </record>
  7573. <record name="ByteWriter" c:type="GstByteWriter">
  7574. <doc xml:space="preserve">#GstByteWriter provides a byte writer and reader that can write/read different
  7575. integer and floating point types to/from a memory buffer. It provides functions
  7576. for writing/reading signed/unsigned, little/big endian integers of 8, 16, 24,
  7577. 32 and 64 bits and functions for reading little/big endian floating points numbers of
  7578. 32 and 64 bits. It also provides functions to write/read NUL-terminated strings
  7579. in various character encodings.</doc>
  7580. <field name="parent" writable="1">
  7581. <doc xml:space="preserve">#GstByteReader parent</doc>
  7582. <type name="ByteReader" c:type="GstByteReader"/>
  7583. </field>
  7584. <field name="alloc_size" writable="1">
  7585. <doc xml:space="preserve">Allocation size of the data</doc>
  7586. <type name="guint" c:type="guint"/>
  7587. </field>
  7588. <field name="fixed" writable="1">
  7589. <doc xml:space="preserve">If %TRUE no reallocations are allowed</doc>
  7590. <type name="gboolean" c:type="gboolean"/>
  7591. </field>
  7592. <field name="owned" writable="1">
  7593. <doc xml:space="preserve">If %FALSE no reallocations are allowed and copies of data are returned</doc>
  7594. <type name="gboolean" c:type="gboolean"/>
  7595. </field>
  7596. <field name="_gst_reserved" readable="0" private="1">
  7597. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  7598. <type name="gpointer" c:type="gpointer"/>
  7599. </array>
  7600. </field>
  7601. <method name="ensure_free_space"
  7602. c:identifier="gst_byte_writer_ensure_free_space">
  7603. <doc xml:space="preserve">Checks if enough free space from the current write cursor is
  7604. available and reallocates if necessary.</doc>
  7605. <return-value transfer-ownership="none">
  7606. <doc xml:space="preserve">%TRUE if at least @size bytes are still available</doc>
  7607. <type name="gboolean" c:type="gboolean"/>
  7608. </return-value>
  7609. <parameters>
  7610. <instance-parameter name="writer" transfer-ownership="none">
  7611. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7612. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7613. </instance-parameter>
  7614. <parameter name="size" transfer-ownership="none">
  7615. <doc xml:space="preserve">Number of bytes that should be available</doc>
  7616. <type name="guint" c:type="guint"/>
  7617. </parameter>
  7618. </parameters>
  7619. </method>
  7620. <method name="fill" c:identifier="gst_byte_writer_fill">
  7621. <doc xml:space="preserve">Writes @size bytes containing @value to @writer.</doc>
  7622. <return-value transfer-ownership="none">
  7623. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7624. <type name="gboolean" c:type="gboolean"/>
  7625. </return-value>
  7626. <parameters>
  7627. <instance-parameter name="writer" transfer-ownership="none">
  7628. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7629. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7630. </instance-parameter>
  7631. <parameter name="value" transfer-ownership="none">
  7632. <doc xml:space="preserve">Value to be written</doc>
  7633. <type name="guint8" c:type="guint8"/>
  7634. </parameter>
  7635. <parameter name="size" transfer-ownership="none">
  7636. <doc xml:space="preserve">Number of bytes to be written</doc>
  7637. <type name="guint" c:type="guint"/>
  7638. </parameter>
  7639. </parameters>
  7640. </method>
  7641. <method name="free" c:identifier="gst_byte_writer_free">
  7642. <doc xml:space="preserve">Frees @writer and all memory allocated by it.</doc>
  7643. <return-value transfer-ownership="none">
  7644. <type name="none" c:type="void"/>
  7645. </return-value>
  7646. <parameters>
  7647. <instance-parameter name="writer" transfer-ownership="full">
  7648. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7649. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7650. </instance-parameter>
  7651. </parameters>
  7652. </method>
  7653. <method name="free_and_get_buffer"
  7654. c:identifier="gst_byte_writer_free_and_get_buffer">
  7655. <doc xml:space="preserve">Frees @writer and all memory allocated by it except
  7656. the current data, which is returned as #GstBuffer.
  7657. Free-function: gst_buffer_unref</doc>
  7658. <return-value transfer-ownership="full">
  7659. <doc xml:space="preserve">the current data as buffer. gst_buffer_unref()
  7660. after usage.</doc>
  7661. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  7662. </return-value>
  7663. <parameters>
  7664. <instance-parameter name="writer" transfer-ownership="full">
  7665. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7666. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7667. </instance-parameter>
  7668. </parameters>
  7669. </method>
  7670. <method name="free_and_get_data"
  7671. c:identifier="gst_byte_writer_free_and_get_data">
  7672. <doc xml:space="preserve">Frees @writer and all memory allocated by it except
  7673. the current data, which is returned.
  7674. Free-function: g_free</doc>
  7675. <return-value transfer-ownership="full">
  7676. <doc xml:space="preserve">the current data. g_free() after usage.</doc>
  7677. <type name="guint8" c:type="guint8*"/>
  7678. </return-value>
  7679. <parameters>
  7680. <instance-parameter name="writer" transfer-ownership="full">
  7681. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7682. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7683. </instance-parameter>
  7684. </parameters>
  7685. </method>
  7686. <method name="get_remaining"
  7687. c:identifier="gst_byte_writer_get_remaining">
  7688. <doc xml:space="preserve">Returns the remaining size of data that can still be written. If
  7689. -1 is returned the remaining size is only limited by system resources.</doc>
  7690. <return-value transfer-ownership="none">
  7691. <doc xml:space="preserve">the remaining size of data that can still be written</doc>
  7692. <type name="guint" c:type="guint"/>
  7693. </return-value>
  7694. <parameters>
  7695. <instance-parameter name="writer" transfer-ownership="none">
  7696. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7697. <type name="ByteWriter" c:type="const GstByteWriter*"/>
  7698. </instance-parameter>
  7699. </parameters>
  7700. </method>
  7701. <method name="init" c:identifier="gst_byte_writer_init">
  7702. <doc xml:space="preserve">Initializes @writer to an empty instance</doc>
  7703. <return-value transfer-ownership="none">
  7704. <type name="none" c:type="void"/>
  7705. </return-value>
  7706. <parameters>
  7707. <instance-parameter name="writer" transfer-ownership="none">
  7708. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7709. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7710. </instance-parameter>
  7711. </parameters>
  7712. </method>
  7713. <method name="init_with_data"
  7714. c:identifier="gst_byte_writer_init_with_data">
  7715. <doc xml:space="preserve">Initializes @writer with the given
  7716. memory area. If @initialized is %TRUE it is possible to
  7717. read @size bytes from the #GstByteWriter from the beginning.</doc>
  7718. <return-value transfer-ownership="none">
  7719. <type name="none" c:type="void"/>
  7720. </return-value>
  7721. <parameters>
  7722. <instance-parameter name="writer" transfer-ownership="none">
  7723. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7724. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7725. </instance-parameter>
  7726. <parameter name="data" transfer-ownership="none">
  7727. <doc xml:space="preserve">Memory area for writing</doc>
  7728. <array length="1" zero-terminated="0" c:type="guint8*">
  7729. <type name="guint8" c:type="guint8"/>
  7730. </array>
  7731. </parameter>
  7732. <parameter name="size" transfer-ownership="none">
  7733. <doc xml:space="preserve">Size of @data in bytes</doc>
  7734. <type name="guint" c:type="guint"/>
  7735. </parameter>
  7736. <parameter name="initialized" transfer-ownership="none">
  7737. <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
  7738. <type name="gboolean" c:type="gboolean"/>
  7739. </parameter>
  7740. </parameters>
  7741. </method>
  7742. <method name="init_with_size"
  7743. c:identifier="gst_byte_writer_init_with_size">
  7744. <doc xml:space="preserve">Initializes @writer with the given initial data size.</doc>
  7745. <return-value transfer-ownership="none">
  7746. <type name="none" c:type="void"/>
  7747. </return-value>
  7748. <parameters>
  7749. <instance-parameter name="writer" transfer-ownership="none">
  7750. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7751. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7752. </instance-parameter>
  7753. <parameter name="size" transfer-ownership="none">
  7754. <doc xml:space="preserve">Initial size of data</doc>
  7755. <type name="guint" c:type="guint"/>
  7756. </parameter>
  7757. <parameter name="fixed" transfer-ownership="none">
  7758. <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
  7759. <type name="gboolean" c:type="gboolean"/>
  7760. </parameter>
  7761. </parameters>
  7762. </method>
  7763. <method name="put_buffer" c:identifier="gst_byte_writer_put_buffer">
  7764. <doc xml:space="preserve">Writes @size bytes of @data to @writer.</doc>
  7765. <return-value transfer-ownership="none">
  7766. <doc xml:space="preserve">%TRUE if the data could be written</doc>
  7767. <type name="gboolean" c:type="gboolean"/>
  7768. </return-value>
  7769. <parameters>
  7770. <instance-parameter name="writer" transfer-ownership="none">
  7771. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7772. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7773. </instance-parameter>
  7774. <parameter name="buffer" transfer-ownership="none">
  7775. <doc xml:space="preserve">source #GstBuffer</doc>
  7776. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  7777. </parameter>
  7778. <parameter name="offset" transfer-ownership="none">
  7779. <doc xml:space="preserve">offset to copy from</doc>
  7780. <type name="gsize" c:type="gsize"/>
  7781. </parameter>
  7782. <parameter name="size" transfer-ownership="none">
  7783. <doc xml:space="preserve">total size to copy. If -1, all data is copied</doc>
  7784. <type name="gssize" c:type="gssize"/>
  7785. </parameter>
  7786. </parameters>
  7787. </method>
  7788. <method name="put_data" c:identifier="gst_byte_writer_put_data">
  7789. <doc xml:space="preserve">Writes @size bytes of @data to @writer.</doc>
  7790. <return-value transfer-ownership="none">
  7791. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7792. <type name="gboolean" c:type="gboolean"/>
  7793. </return-value>
  7794. <parameters>
  7795. <instance-parameter name="writer" transfer-ownership="none">
  7796. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7797. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7798. </instance-parameter>
  7799. <parameter name="data" transfer-ownership="none">
  7800. <doc xml:space="preserve">Data to write</doc>
  7801. <array length="1" zero-terminated="0" c:type="guint8*">
  7802. <type name="guint8" c:type="guint8"/>
  7803. </array>
  7804. </parameter>
  7805. <parameter name="size" transfer-ownership="none">
  7806. <doc xml:space="preserve">Size of @data in bytes</doc>
  7807. <type name="guint" c:type="guint"/>
  7808. </parameter>
  7809. </parameters>
  7810. </method>
  7811. <method name="put_float32_be"
  7812. c:identifier="gst_byte_writer_put_float32_be">
  7813. <doc xml:space="preserve">Writes a big endian 32 bit float to @writer.</doc>
  7814. <return-value transfer-ownership="none">
  7815. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7816. <type name="gboolean" c:type="gboolean"/>
  7817. </return-value>
  7818. <parameters>
  7819. <instance-parameter name="writer" transfer-ownership="none">
  7820. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7821. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7822. </instance-parameter>
  7823. <parameter name="val" transfer-ownership="none">
  7824. <doc xml:space="preserve">Value to write</doc>
  7825. <type name="gfloat" c:type="gfloat"/>
  7826. </parameter>
  7827. </parameters>
  7828. </method>
  7829. <method name="put_float32_le"
  7830. c:identifier="gst_byte_writer_put_float32_le">
  7831. <doc xml:space="preserve">Writes a little endian 32 bit float to @writer.</doc>
  7832. <return-value transfer-ownership="none">
  7833. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7834. <type name="gboolean" c:type="gboolean"/>
  7835. </return-value>
  7836. <parameters>
  7837. <instance-parameter name="writer" transfer-ownership="none">
  7838. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7839. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7840. </instance-parameter>
  7841. <parameter name="val" transfer-ownership="none">
  7842. <doc xml:space="preserve">Value to write</doc>
  7843. <type name="gfloat" c:type="gfloat"/>
  7844. </parameter>
  7845. </parameters>
  7846. </method>
  7847. <method name="put_float64_be"
  7848. c:identifier="gst_byte_writer_put_float64_be">
  7849. <doc xml:space="preserve">Writes a big endian 64 bit float to @writer.</doc>
  7850. <return-value transfer-ownership="none">
  7851. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7852. <type name="gboolean" c:type="gboolean"/>
  7853. </return-value>
  7854. <parameters>
  7855. <instance-parameter name="writer" transfer-ownership="none">
  7856. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7857. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7858. </instance-parameter>
  7859. <parameter name="val" transfer-ownership="none">
  7860. <doc xml:space="preserve">Value to write</doc>
  7861. <type name="gdouble" c:type="gdouble"/>
  7862. </parameter>
  7863. </parameters>
  7864. </method>
  7865. <method name="put_float64_le"
  7866. c:identifier="gst_byte_writer_put_float64_le">
  7867. <doc xml:space="preserve">Writes a little endian 64 bit float to @writer.</doc>
  7868. <return-value transfer-ownership="none">
  7869. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7870. <type name="gboolean" c:type="gboolean"/>
  7871. </return-value>
  7872. <parameters>
  7873. <instance-parameter name="writer" transfer-ownership="none">
  7874. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7875. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7876. </instance-parameter>
  7877. <parameter name="val" transfer-ownership="none">
  7878. <doc xml:space="preserve">Value to write</doc>
  7879. <type name="gdouble" c:type="gdouble"/>
  7880. </parameter>
  7881. </parameters>
  7882. </method>
  7883. <method name="put_int16_be" c:identifier="gst_byte_writer_put_int16_be">
  7884. <doc xml:space="preserve">Writes a signed big endian 16 bit integer to @writer.</doc>
  7885. <return-value transfer-ownership="none">
  7886. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7887. <type name="gboolean" c:type="gboolean"/>
  7888. </return-value>
  7889. <parameters>
  7890. <instance-parameter name="writer" transfer-ownership="none">
  7891. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7892. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7893. </instance-parameter>
  7894. <parameter name="val" transfer-ownership="none">
  7895. <doc xml:space="preserve">Value to write</doc>
  7896. <type name="gint16" c:type="gint16"/>
  7897. </parameter>
  7898. </parameters>
  7899. </method>
  7900. <method name="put_int16_le" c:identifier="gst_byte_writer_put_int16_le">
  7901. <doc xml:space="preserve">Writes a signed little endian 16 bit integer to @writer.</doc>
  7902. <return-value transfer-ownership="none">
  7903. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7904. <type name="gboolean" c:type="gboolean"/>
  7905. </return-value>
  7906. <parameters>
  7907. <instance-parameter name="writer" transfer-ownership="none">
  7908. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7909. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7910. </instance-parameter>
  7911. <parameter name="val" transfer-ownership="none">
  7912. <doc xml:space="preserve">Value to write</doc>
  7913. <type name="gint16" c:type="gint16"/>
  7914. </parameter>
  7915. </parameters>
  7916. </method>
  7917. <method name="put_int24_be" c:identifier="gst_byte_writer_put_int24_be">
  7918. <doc xml:space="preserve">Writes a signed big endian 24 bit integer to @writer.</doc>
  7919. <return-value transfer-ownership="none">
  7920. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7921. <type name="gboolean" c:type="gboolean"/>
  7922. </return-value>
  7923. <parameters>
  7924. <instance-parameter name="writer" transfer-ownership="none">
  7925. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7926. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7927. </instance-parameter>
  7928. <parameter name="val" transfer-ownership="none">
  7929. <doc xml:space="preserve">Value to write</doc>
  7930. <type name="gint32" c:type="gint32"/>
  7931. </parameter>
  7932. </parameters>
  7933. </method>
  7934. <method name="put_int24_le" c:identifier="gst_byte_writer_put_int24_le">
  7935. <doc xml:space="preserve">Writes a signed little endian 24 bit integer to @writer.</doc>
  7936. <return-value transfer-ownership="none">
  7937. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7938. <type name="gboolean" c:type="gboolean"/>
  7939. </return-value>
  7940. <parameters>
  7941. <instance-parameter name="writer" transfer-ownership="none">
  7942. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7943. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7944. </instance-parameter>
  7945. <parameter name="val" transfer-ownership="none">
  7946. <doc xml:space="preserve">Value to write</doc>
  7947. <type name="gint32" c:type="gint32"/>
  7948. </parameter>
  7949. </parameters>
  7950. </method>
  7951. <method name="put_int32_be" c:identifier="gst_byte_writer_put_int32_be">
  7952. <doc xml:space="preserve">Writes a signed big endian 32 bit integer to @writer.</doc>
  7953. <return-value transfer-ownership="none">
  7954. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7955. <type name="gboolean" c:type="gboolean"/>
  7956. </return-value>
  7957. <parameters>
  7958. <instance-parameter name="writer" transfer-ownership="none">
  7959. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7960. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7961. </instance-parameter>
  7962. <parameter name="val" transfer-ownership="none">
  7963. <doc xml:space="preserve">Value to write</doc>
  7964. <type name="gint32" c:type="gint32"/>
  7965. </parameter>
  7966. </parameters>
  7967. </method>
  7968. <method name="put_int32_le" c:identifier="gst_byte_writer_put_int32_le">
  7969. <doc xml:space="preserve">Writes a signed little endian 32 bit integer to @writer.</doc>
  7970. <return-value transfer-ownership="none">
  7971. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7972. <type name="gboolean" c:type="gboolean"/>
  7973. </return-value>
  7974. <parameters>
  7975. <instance-parameter name="writer" transfer-ownership="none">
  7976. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7977. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7978. </instance-parameter>
  7979. <parameter name="val" transfer-ownership="none">
  7980. <doc xml:space="preserve">Value to write</doc>
  7981. <type name="gint32" c:type="gint32"/>
  7982. </parameter>
  7983. </parameters>
  7984. </method>
  7985. <method name="put_int64_be" c:identifier="gst_byte_writer_put_int64_be">
  7986. <doc xml:space="preserve">Writes a signed big endian 64 bit integer to @writer.</doc>
  7987. <return-value transfer-ownership="none">
  7988. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  7989. <type name="gboolean" c:type="gboolean"/>
  7990. </return-value>
  7991. <parameters>
  7992. <instance-parameter name="writer" transfer-ownership="none">
  7993. <doc xml:space="preserve">#GstByteWriter instance</doc>
  7994. <type name="ByteWriter" c:type="GstByteWriter*"/>
  7995. </instance-parameter>
  7996. <parameter name="val" transfer-ownership="none">
  7997. <doc xml:space="preserve">Value to write</doc>
  7998. <type name="gint64" c:type="gint64"/>
  7999. </parameter>
  8000. </parameters>
  8001. </method>
  8002. <method name="put_int64_le" c:identifier="gst_byte_writer_put_int64_le">
  8003. <doc xml:space="preserve">Writes a signed little endian 64 bit integer to @writer.</doc>
  8004. <return-value transfer-ownership="none">
  8005. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8006. <type name="gboolean" c:type="gboolean"/>
  8007. </return-value>
  8008. <parameters>
  8009. <instance-parameter name="writer" transfer-ownership="none">
  8010. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8011. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8012. </instance-parameter>
  8013. <parameter name="val" transfer-ownership="none">
  8014. <doc xml:space="preserve">Value to write</doc>
  8015. <type name="gint64" c:type="gint64"/>
  8016. </parameter>
  8017. </parameters>
  8018. </method>
  8019. <method name="put_int8" c:identifier="gst_byte_writer_put_int8">
  8020. <doc xml:space="preserve">Writes a signed 8 bit integer to @writer.</doc>
  8021. <return-value transfer-ownership="none">
  8022. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8023. <type name="gboolean" c:type="gboolean"/>
  8024. </return-value>
  8025. <parameters>
  8026. <instance-parameter name="writer" transfer-ownership="none">
  8027. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8028. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8029. </instance-parameter>
  8030. <parameter name="val" transfer-ownership="none">
  8031. <doc xml:space="preserve">Value to write</doc>
  8032. <type name="gint8" c:type="gint8"/>
  8033. </parameter>
  8034. </parameters>
  8035. </method>
  8036. <method name="put_string_utf16"
  8037. c:identifier="gst_byte_writer_put_string_utf16">
  8038. <doc xml:space="preserve">Writes a NUL-terminated UTF16 string to @writer (including the terminator).</doc>
  8039. <return-value transfer-ownership="none">
  8040. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8041. <type name="gboolean" c:type="gboolean"/>
  8042. </return-value>
  8043. <parameters>
  8044. <instance-parameter name="writer" transfer-ownership="none">
  8045. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8046. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8047. </instance-parameter>
  8048. <parameter name="data" transfer-ownership="none">
  8049. <doc xml:space="preserve">UTF16 string to write</doc>
  8050. <array c:type="guint16*">
  8051. <type name="guint16" c:type="guint16"/>
  8052. </array>
  8053. </parameter>
  8054. </parameters>
  8055. </method>
  8056. <method name="put_string_utf32"
  8057. c:identifier="gst_byte_writer_put_string_utf32">
  8058. <doc xml:space="preserve">Writes a NUL-terminated UTF32 string to @writer (including the terminator).</doc>
  8059. <return-value transfer-ownership="none">
  8060. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8061. <type name="gboolean" c:type="gboolean"/>
  8062. </return-value>
  8063. <parameters>
  8064. <instance-parameter name="writer" transfer-ownership="none">
  8065. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8066. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8067. </instance-parameter>
  8068. <parameter name="data" transfer-ownership="none">
  8069. <doc xml:space="preserve">UTF32 string to write</doc>
  8070. <array c:type="guint32*">
  8071. <type name="guint32" c:type="guint32"/>
  8072. </array>
  8073. </parameter>
  8074. </parameters>
  8075. </method>
  8076. <method name="put_string_utf8"
  8077. c:identifier="gst_byte_writer_put_string_utf8">
  8078. <doc xml:space="preserve">Writes a NUL-terminated UTF8 string to @writer (including the terminator).</doc>
  8079. <return-value transfer-ownership="none">
  8080. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8081. <type name="gboolean" c:type="gboolean"/>
  8082. </return-value>
  8083. <parameters>
  8084. <instance-parameter name="writer" transfer-ownership="none">
  8085. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8086. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8087. </instance-parameter>
  8088. <parameter name="data" transfer-ownership="none">
  8089. <doc xml:space="preserve">UTF8 string to
  8090. write</doc>
  8091. <array c:type="gchar*">
  8092. <type name="utf8" c:type="gchar"/>
  8093. </array>
  8094. </parameter>
  8095. </parameters>
  8096. </method>
  8097. <method name="put_uint16_be"
  8098. c:identifier="gst_byte_writer_put_uint16_be">
  8099. <doc xml:space="preserve">Writes a unsigned big endian 16 bit integer to @writer.</doc>
  8100. <return-value transfer-ownership="none">
  8101. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8102. <type name="gboolean" c:type="gboolean"/>
  8103. </return-value>
  8104. <parameters>
  8105. <instance-parameter name="writer" transfer-ownership="none">
  8106. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8107. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8108. </instance-parameter>
  8109. <parameter name="val" transfer-ownership="none">
  8110. <doc xml:space="preserve">Value to write</doc>
  8111. <type name="guint16" c:type="guint16"/>
  8112. </parameter>
  8113. </parameters>
  8114. </method>
  8115. <method name="put_uint16_le"
  8116. c:identifier="gst_byte_writer_put_uint16_le">
  8117. <doc xml:space="preserve">Writes a unsigned little endian 16 bit integer to @writer.</doc>
  8118. <return-value transfer-ownership="none">
  8119. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8120. <type name="gboolean" c:type="gboolean"/>
  8121. </return-value>
  8122. <parameters>
  8123. <instance-parameter name="writer" transfer-ownership="none">
  8124. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8125. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8126. </instance-parameter>
  8127. <parameter name="val" transfer-ownership="none">
  8128. <doc xml:space="preserve">Value to write</doc>
  8129. <type name="guint16" c:type="guint16"/>
  8130. </parameter>
  8131. </parameters>
  8132. </method>
  8133. <method name="put_uint24_be"
  8134. c:identifier="gst_byte_writer_put_uint24_be">
  8135. <doc xml:space="preserve">Writes a unsigned big endian 24 bit integer to @writer.</doc>
  8136. <return-value transfer-ownership="none">
  8137. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8138. <type name="gboolean" c:type="gboolean"/>
  8139. </return-value>
  8140. <parameters>
  8141. <instance-parameter name="writer" transfer-ownership="none">
  8142. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8143. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8144. </instance-parameter>
  8145. <parameter name="val" transfer-ownership="none">
  8146. <doc xml:space="preserve">Value to write</doc>
  8147. <type name="guint32" c:type="guint32"/>
  8148. </parameter>
  8149. </parameters>
  8150. </method>
  8151. <method name="put_uint24_le"
  8152. c:identifier="gst_byte_writer_put_uint24_le">
  8153. <doc xml:space="preserve">Writes a unsigned little endian 24 bit integer to @writer.</doc>
  8154. <return-value transfer-ownership="none">
  8155. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8156. <type name="gboolean" c:type="gboolean"/>
  8157. </return-value>
  8158. <parameters>
  8159. <instance-parameter name="writer" transfer-ownership="none">
  8160. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8161. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8162. </instance-parameter>
  8163. <parameter name="val" transfer-ownership="none">
  8164. <doc xml:space="preserve">Value to write</doc>
  8165. <type name="guint32" c:type="guint32"/>
  8166. </parameter>
  8167. </parameters>
  8168. </method>
  8169. <method name="put_uint32_be"
  8170. c:identifier="gst_byte_writer_put_uint32_be">
  8171. <doc xml:space="preserve">Writes a unsigned big endian 32 bit integer to @writer.</doc>
  8172. <return-value transfer-ownership="none">
  8173. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8174. <type name="gboolean" c:type="gboolean"/>
  8175. </return-value>
  8176. <parameters>
  8177. <instance-parameter name="writer" transfer-ownership="none">
  8178. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8179. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8180. </instance-parameter>
  8181. <parameter name="val" transfer-ownership="none">
  8182. <doc xml:space="preserve">Value to write</doc>
  8183. <type name="guint32" c:type="guint32"/>
  8184. </parameter>
  8185. </parameters>
  8186. </method>
  8187. <method name="put_uint32_le"
  8188. c:identifier="gst_byte_writer_put_uint32_le">
  8189. <doc xml:space="preserve">Writes a unsigned little endian 32 bit integer to @writer.</doc>
  8190. <return-value transfer-ownership="none">
  8191. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8192. <type name="gboolean" c:type="gboolean"/>
  8193. </return-value>
  8194. <parameters>
  8195. <instance-parameter name="writer" transfer-ownership="none">
  8196. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8197. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8198. </instance-parameter>
  8199. <parameter name="val" transfer-ownership="none">
  8200. <doc xml:space="preserve">Value to write</doc>
  8201. <type name="guint32" c:type="guint32"/>
  8202. </parameter>
  8203. </parameters>
  8204. </method>
  8205. <method name="put_uint64_be"
  8206. c:identifier="gst_byte_writer_put_uint64_be">
  8207. <doc xml:space="preserve">Writes a unsigned big endian 64 bit integer to @writer.</doc>
  8208. <return-value transfer-ownership="none">
  8209. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8210. <type name="gboolean" c:type="gboolean"/>
  8211. </return-value>
  8212. <parameters>
  8213. <instance-parameter name="writer" transfer-ownership="none">
  8214. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8215. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8216. </instance-parameter>
  8217. <parameter name="val" transfer-ownership="none">
  8218. <doc xml:space="preserve">Value to write</doc>
  8219. <type name="guint64" c:type="guint64"/>
  8220. </parameter>
  8221. </parameters>
  8222. </method>
  8223. <method name="put_uint64_le"
  8224. c:identifier="gst_byte_writer_put_uint64_le">
  8225. <doc xml:space="preserve">Writes a unsigned little endian 64 bit integer to @writer.</doc>
  8226. <return-value transfer-ownership="none">
  8227. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8228. <type name="gboolean" c:type="gboolean"/>
  8229. </return-value>
  8230. <parameters>
  8231. <instance-parameter name="writer" transfer-ownership="none">
  8232. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8233. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8234. </instance-parameter>
  8235. <parameter name="val" transfer-ownership="none">
  8236. <doc xml:space="preserve">Value to write</doc>
  8237. <type name="guint64" c:type="guint64"/>
  8238. </parameter>
  8239. </parameters>
  8240. </method>
  8241. <method name="put_uint8" c:identifier="gst_byte_writer_put_uint8">
  8242. <doc xml:space="preserve">Writes a unsigned 8 bit integer to @writer.</doc>
  8243. <return-value transfer-ownership="none">
  8244. <doc xml:space="preserve">%TRUE if the value could be written</doc>
  8245. <type name="gboolean" c:type="gboolean"/>
  8246. </return-value>
  8247. <parameters>
  8248. <instance-parameter name="writer" transfer-ownership="none">
  8249. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8250. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8251. </instance-parameter>
  8252. <parameter name="val" transfer-ownership="none">
  8253. <doc xml:space="preserve">Value to write</doc>
  8254. <type name="guint8" c:type="guint8"/>
  8255. </parameter>
  8256. </parameters>
  8257. </method>
  8258. <method name="reset" c:identifier="gst_byte_writer_reset">
  8259. <doc xml:space="preserve">Resets @writer and frees the data if it's
  8260. owned by @writer.</doc>
  8261. <return-value transfer-ownership="none">
  8262. <type name="none" c:type="void"/>
  8263. </return-value>
  8264. <parameters>
  8265. <instance-parameter name="writer" transfer-ownership="none">
  8266. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8267. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8268. </instance-parameter>
  8269. </parameters>
  8270. </method>
  8271. <method name="reset_and_get_buffer"
  8272. c:identifier="gst_byte_writer_reset_and_get_buffer">
  8273. <doc xml:space="preserve">Resets @writer and returns the current data as buffer.
  8274. Free-function: gst_buffer_unref</doc>
  8275. <return-value transfer-ownership="full">
  8276. <doc xml:space="preserve">the current data as buffer. gst_buffer_unref()
  8277. after usage.</doc>
  8278. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  8279. </return-value>
  8280. <parameters>
  8281. <instance-parameter name="writer" transfer-ownership="none">
  8282. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8283. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8284. </instance-parameter>
  8285. </parameters>
  8286. </method>
  8287. <method name="reset_and_get_data"
  8288. c:identifier="gst_byte_writer_reset_and_get_data">
  8289. <doc xml:space="preserve">Resets @writer and returns the current data.
  8290. Free-function: g_free</doc>
  8291. <return-value transfer-ownership="full">
  8292. <doc xml:space="preserve">the current data. g_free() after
  8293. usage.</doc>
  8294. <array zero-terminated="0" c:type="guint8*">
  8295. <type name="guint8" c:type="guint8"/>
  8296. </array>
  8297. </return-value>
  8298. <parameters>
  8299. <instance-parameter name="writer" transfer-ownership="none">
  8300. <doc xml:space="preserve">#GstByteWriter instance</doc>
  8301. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8302. </instance-parameter>
  8303. </parameters>
  8304. </method>
  8305. <function name="new"
  8306. c:identifier="gst_byte_writer_new"
  8307. introspectable="0">
  8308. <doc xml:space="preserve">Creates a new, empty #GstByteWriter instance
  8309. Free-function: gst_byte_writer_free</doc>
  8310. <return-value transfer-ownership="full">
  8311. <doc xml:space="preserve">a new, empty #GstByteWriter instance</doc>
  8312. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8313. </return-value>
  8314. </function>
  8315. <function name="new_with_data"
  8316. c:identifier="gst_byte_writer_new_with_data"
  8317. introspectable="0">
  8318. <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
  8319. memory area. If @initialized is %TRUE it is possible to
  8320. read @size bytes from the #GstByteWriter from the beginning.
  8321. Free-function: gst_byte_writer_free</doc>
  8322. <return-value transfer-ownership="full">
  8323. <doc xml:space="preserve">a new #GstByteWriter instance</doc>
  8324. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8325. </return-value>
  8326. <parameters>
  8327. <parameter name="data" transfer-ownership="none">
  8328. <doc xml:space="preserve">Memory area for writing</doc>
  8329. <type name="guint8" c:type="guint8*"/>
  8330. </parameter>
  8331. <parameter name="size" transfer-ownership="none">
  8332. <doc xml:space="preserve">Size of @data in bytes</doc>
  8333. <type name="guint" c:type="guint"/>
  8334. </parameter>
  8335. <parameter name="initialized" transfer-ownership="none">
  8336. <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
  8337. <type name="gboolean" c:type="gboolean"/>
  8338. </parameter>
  8339. </parameters>
  8340. </function>
  8341. <function name="new_with_size"
  8342. c:identifier="gst_byte_writer_new_with_size"
  8343. introspectable="0">
  8344. <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
  8345. initial data size.
  8346. Free-function: gst_byte_writer_free</doc>
  8347. <return-value transfer-ownership="full">
  8348. <doc xml:space="preserve">a new #GstByteWriter instance</doc>
  8349. <type name="ByteWriter" c:type="GstByteWriter*"/>
  8350. </return-value>
  8351. <parameters>
  8352. <parameter name="size" transfer-ownership="none">
  8353. <doc xml:space="preserve">Initial size of data</doc>
  8354. <type name="guint" c:type="guint"/>
  8355. </parameter>
  8356. <parameter name="fixed" transfer-ownership="none">
  8357. <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
  8358. <type name="gboolean" c:type="gboolean"/>
  8359. </parameter>
  8360. </parameters>
  8361. </function>
  8362. </record>
  8363. <record name="CollectData" c:type="GstCollectData">
  8364. <doc xml:space="preserve">Structure used by the collect_pads.</doc>
  8365. <field name="collect" writable="1">
  8366. <doc xml:space="preserve">owner #GstCollectPads</doc>
  8367. <type name="CollectPads" c:type="GstCollectPads*"/>
  8368. </field>
  8369. <field name="pad" writable="1">
  8370. <doc xml:space="preserve">#GstPad managed by this data</doc>
  8371. <type name="Gst.Pad" c:type="GstPad*"/>
  8372. </field>
  8373. <field name="buffer" writable="1">
  8374. <doc xml:space="preserve">currently queued buffer.</doc>
  8375. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  8376. </field>
  8377. <field name="pos" writable="1">
  8378. <doc xml:space="preserve">position in the buffer</doc>
  8379. <type name="guint" c:type="guint"/>
  8380. </field>
  8381. <field name="segment" writable="1">
  8382. <doc xml:space="preserve">last segment received.</doc>
  8383. <type name="Gst.Segment" c:type="GstSegment"/>
  8384. </field>
  8385. <field name="state" readable="0" private="1">
  8386. <type name="CollectPadsStateFlags" c:type="GstCollectPadsStateFlags"/>
  8387. </field>
  8388. <field name="priv" readable="0" private="1">
  8389. <type name="CollectDataPrivate" c:type="GstCollectDataPrivate*"/>
  8390. </field>
  8391. <union name="ABI" c:type="ABI">
  8392. <record name="abi" c:type="abi">
  8393. <field name="dts" writable="1">
  8394. <type name="gint64" c:type="gint64"/>
  8395. </field>
  8396. </record>
  8397. <field name="_gst_reserved" readable="0" private="1">
  8398. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  8399. <type name="gpointer" c:type="gpointer"/>
  8400. </array>
  8401. </field>
  8402. </union>
  8403. </record>
  8404. <callback name="CollectDataDestroyNotify"
  8405. c:type="GstCollectDataDestroyNotify">
  8406. <doc xml:space="preserve">A function that will be called when the #GstCollectData will be freed.
  8407. It is passed the pointer to the structure and should free any custom
  8408. memory and resources allocated for it.</doc>
  8409. <return-value transfer-ownership="none">
  8410. <type name="none" c:type="void"/>
  8411. </return-value>
  8412. <parameters>
  8413. <parameter name="data" transfer-ownership="none">
  8414. <doc xml:space="preserve">the #GstCollectData that will be freed</doc>
  8415. <type name="CollectData" c:type="GstCollectData*"/>
  8416. </parameter>
  8417. </parameters>
  8418. </callback>
  8419. <record name="CollectDataPrivate"
  8420. c:type="GstCollectDataPrivate"
  8421. disguised="1">
  8422. </record>
  8423. <class name="CollectPads"
  8424. c:symbol-prefix="collect_pads"
  8425. c:type="GstCollectPads"
  8426. parent="Gst.Object"
  8427. glib:type-name="GstCollectPads"
  8428. glib:get-type="gst_collect_pads_get_type"
  8429. glib:type-struct="CollectPadsClass">
  8430. <doc xml:space="preserve">Manages a set of pads that operate in collect mode. This means that control
  8431. is given to the manager of this object when all pads have data.
  8432. &lt;itemizedlist&gt;
  8433. &lt;listitem&gt;&lt;para&gt;
  8434. Collectpads are created with gst_collect_pads_new(). A callback should then
  8435. be installed with gst_collect_pads_set_function ().
  8436. &lt;/para&gt;&lt;/listitem&gt;
  8437. &lt;listitem&gt;&lt;para&gt;
  8438. Pads are added to the collection with gst_collect_pads_add_pad()/
  8439. gst_collect_pads_remove_pad(). The pad
  8440. has to be a sinkpad. The chain and event functions of the pad are
  8441. overridden. The element_private of the pad is used to store
  8442. private information for the collectpads.
  8443. &lt;/para&gt;&lt;/listitem&gt;
  8444. &lt;listitem&gt;&lt;para&gt;
  8445. For each pad, data is queued in the _chain function or by
  8446. performing a pull_range.
  8447. &lt;/para&gt;&lt;/listitem&gt;
  8448. &lt;listitem&gt;&lt;para&gt;
  8449. When data is queued on all pads in waiting mode, the callback function is called.
  8450. &lt;/para&gt;&lt;/listitem&gt;
  8451. &lt;listitem&gt;&lt;para&gt;
  8452. Data can be dequeued from the pad with the gst_collect_pads_pop() method.
  8453. One can peek at the data with the gst_collect_pads_peek() function.
  8454. These functions will return %NULL if the pad received an EOS event. When all
  8455. pads return %NULL from a gst_collect_pads_peek(), the element can emit an EOS
  8456. event itself.
  8457. &lt;/para&gt;&lt;/listitem&gt;
  8458. &lt;listitem&gt;&lt;para&gt;
  8459. Data can also be dequeued in byte units using the gst_collect_pads_available(),
  8460. gst_collect_pads_read_buffer() and gst_collect_pads_flush() calls.
  8461. &lt;/para&gt;&lt;/listitem&gt;
  8462. &lt;listitem&gt;&lt;para&gt;
  8463. Elements should call gst_collect_pads_start() and gst_collect_pads_stop() in
  8464. their state change functions to start and stop the processing of the collectpads.
  8465. The gst_collect_pads_stop() call should be called before calling the parent
  8466. element state change function in the PAUSED_TO_READY state change to ensure
  8467. no pad is blocked and the element can finish streaming.
  8468. &lt;/para&gt;&lt;/listitem&gt;
  8469. &lt;listitem&gt;&lt;para&gt;
  8470. gst_collect_pads_set_waiting() sets a pad to waiting or non-waiting mode.
  8471. CollectPads element is not waiting for data to be collected on non-waiting pads.
  8472. Thus these pads may but need not have data when the callback is called.
  8473. All pads are in waiting mode by default.
  8474. &lt;/para&gt;&lt;/listitem&gt;
  8475. &lt;/itemizedlist&gt;</doc>
  8476. <constructor name="new" c:identifier="gst_collect_pads_new">
  8477. <doc xml:space="preserve">Create a new instance of #GstCollectPads.
  8478. MT safe.</doc>
  8479. <return-value transfer-ownership="full">
  8480. <doc xml:space="preserve">a new #GstCollectPads, or %NULL in case of an error.</doc>
  8481. <type name="CollectPads" c:type="GstCollectPads*"/>
  8482. </return-value>
  8483. </constructor>
  8484. <method name="add_pad" c:identifier="gst_collect_pads_add_pad">
  8485. <doc xml:space="preserve">Add a pad to the collection of collect pads. The pad has to be
  8486. a sinkpad. The refcount of the pad is incremented. Use
  8487. gst_collect_pads_remove_pad() to remove the pad from the collection
  8488. again.
  8489. You specify a size for the returned #GstCollectData structure
  8490. so that you can use it to store additional information.
  8491. You can also specify a #GstCollectDataDestroyNotify that will be called
  8492. just before the #GstCollectData structure is freed. It is passed the
  8493. pointer to the structure and should free any custom memory and resources
  8494. allocated for it.
  8495. Keeping a pad locked in waiting state is only relevant when using
  8496. the default collection algorithm (providing the oldest buffer).
  8497. It ensures a buffer must be available on this pad for a collection
  8498. to take place. This is of typical use to a muxer element where
  8499. non-subtitle streams should always be in waiting state,
  8500. e.g. to assure that caps information is available on all these streams
  8501. when initial headers have to be written.
  8502. The pad will be automatically activated in push mode when @pads is
  8503. started.
  8504. MT safe.</doc>
  8505. <return-value transfer-ownership="none" nullable="1">
  8506. <doc xml:space="preserve">a new #GstCollectData to identify the
  8507. new pad. Or %NULL if wrong parameters are supplied.</doc>
  8508. <type name="CollectData" c:type="GstCollectData*"/>
  8509. </return-value>
  8510. <parameters>
  8511. <instance-parameter name="pads" transfer-ownership="none">
  8512. <doc xml:space="preserve">the collectpads to use</doc>
  8513. <type name="CollectPads" c:type="GstCollectPads*"/>
  8514. </instance-parameter>
  8515. <parameter name="pad" transfer-ownership="none">
  8516. <doc xml:space="preserve">the pad to add</doc>
  8517. <type name="Gst.Pad" c:type="GstPad*"/>
  8518. </parameter>
  8519. <parameter name="size" transfer-ownership="none">
  8520. <doc xml:space="preserve">the size of the returned #GstCollectData structure</doc>
  8521. <type name="guint" c:type="guint"/>
  8522. </parameter>
  8523. <parameter name="destroy_notify"
  8524. transfer-ownership="none"
  8525. scope="async">
  8526. <doc xml:space="preserve">function to be called before the returned
  8527. #GstCollectData structure is freed</doc>
  8528. <type name="CollectDataDestroyNotify"
  8529. c:type="GstCollectDataDestroyNotify"/>
  8530. </parameter>
  8531. <parameter name="lock" transfer-ownership="none">
  8532. <doc xml:space="preserve">whether to lock this pad in usual waiting state</doc>
  8533. <type name="gboolean" c:type="gboolean"/>
  8534. </parameter>
  8535. </parameters>
  8536. </method>
  8537. <method name="available" c:identifier="gst_collect_pads_available">
  8538. <doc xml:space="preserve">Query how much bytes can be read from each queued buffer. This means
  8539. that the result of this call is the maximum number of bytes that can
  8540. be read from each of the pads.
  8541. This function should be called with @pads STREAM_LOCK held, such as
  8542. in the callback.
  8543. MT safe.</doc>
  8544. <return-value transfer-ownership="none">
  8545. <doc xml:space="preserve">The maximum number of bytes queued on all pads. This function
  8546. returns 0 if a pad has no queued buffer.</doc>
  8547. <type name="guint" c:type="guint"/>
  8548. </return-value>
  8549. <parameters>
  8550. <instance-parameter name="pads" transfer-ownership="none">
  8551. <doc xml:space="preserve">the collectpads to query</doc>
  8552. <type name="CollectPads" c:type="GstCollectPads*"/>
  8553. </instance-parameter>
  8554. </parameters>
  8555. </method>
  8556. <method name="clip_running_time"
  8557. c:identifier="gst_collect_pads_clip_running_time">
  8558. <doc xml:space="preserve">Convenience clipping function that converts incoming buffer's timestamp
  8559. to running time, or clips the buffer if outside configured segment.
  8560. Since 1.6, this clipping function also sets the DTS parameter of the
  8561. GstCollectData structure. This version of the running time DTS can be
  8562. negative. G_MININT64 is used to indicate invalid value.</doc>
  8563. <return-value transfer-ownership="none">
  8564. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  8565. </return-value>
  8566. <parameters>
  8567. <instance-parameter name="pads" transfer-ownership="none">
  8568. <doc xml:space="preserve">the collectpads to use</doc>
  8569. <type name="CollectPads" c:type="GstCollectPads*"/>
  8570. </instance-parameter>
  8571. <parameter name="cdata" transfer-ownership="none">
  8572. <doc xml:space="preserve">collect data of corresponding pad</doc>
  8573. <type name="CollectData" c:type="GstCollectData*"/>
  8574. </parameter>
  8575. <parameter name="buf" transfer-ownership="none">
  8576. <doc xml:space="preserve">buffer being clipped</doc>
  8577. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  8578. </parameter>
  8579. <parameter name="outbuf"
  8580. transfer-ownership="none"
  8581. nullable="1"
  8582. allow-none="1">
  8583. <doc xml:space="preserve">output buffer with running time, or NULL if clipped</doc>
  8584. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  8585. </parameter>
  8586. <parameter name="user_data"
  8587. transfer-ownership="none"
  8588. nullable="1"
  8589. allow-none="1">
  8590. <doc xml:space="preserve">user data (unused)</doc>
  8591. <type name="gpointer" c:type="gpointer"/>
  8592. </parameter>
  8593. </parameters>
  8594. </method>
  8595. <method name="event_default"
  8596. c:identifier="gst_collect_pads_event_default">
  8597. <doc xml:space="preserve">Default #GstCollectPads event handling that elements should always
  8598. chain up to to ensure proper operation. Element might however indicate
  8599. event should not be forwarded downstream.</doc>
  8600. <return-value transfer-ownership="none">
  8601. <type name="gboolean" c:type="gboolean"/>
  8602. </return-value>
  8603. <parameters>
  8604. <instance-parameter name="pads" transfer-ownership="none">
  8605. <doc xml:space="preserve">the collectpads to use</doc>
  8606. <type name="CollectPads" c:type="GstCollectPads*"/>
  8607. </instance-parameter>
  8608. <parameter name="data" transfer-ownership="none">
  8609. <doc xml:space="preserve">collect data of corresponding pad</doc>
  8610. <type name="CollectData" c:type="GstCollectData*"/>
  8611. </parameter>
  8612. <parameter name="event" transfer-ownership="none">
  8613. <doc xml:space="preserve">event being processed</doc>
  8614. <type name="Gst.Event" c:type="GstEvent*"/>
  8615. </parameter>
  8616. <parameter name="discard" transfer-ownership="none">
  8617. <doc xml:space="preserve">process but do not send event downstream</doc>
  8618. <type name="gboolean" c:type="gboolean"/>
  8619. </parameter>
  8620. </parameters>
  8621. </method>
  8622. <method name="flush" c:identifier="gst_collect_pads_flush">
  8623. <doc xml:space="preserve">Flush @size bytes from the pad @data.
  8624. This function should be called with @pads STREAM_LOCK held, such as
  8625. in the callback.
  8626. MT safe.</doc>
  8627. <return-value transfer-ownership="none">
  8628. <doc xml:space="preserve">The number of bytes flushed This can be less than @size and
  8629. is 0 if the pad was end-of-stream.</doc>
  8630. <type name="guint" c:type="guint"/>
  8631. </return-value>
  8632. <parameters>
  8633. <instance-parameter name="pads" transfer-ownership="none">
  8634. <doc xml:space="preserve">the collectpads to query</doc>
  8635. <type name="CollectPads" c:type="GstCollectPads*"/>
  8636. </instance-parameter>
  8637. <parameter name="data" transfer-ownership="none">
  8638. <doc xml:space="preserve">the data to use</doc>
  8639. <type name="CollectData" c:type="GstCollectData*"/>
  8640. </parameter>
  8641. <parameter name="size" transfer-ownership="none">
  8642. <doc xml:space="preserve">the number of bytes to flush</doc>
  8643. <type name="guint" c:type="guint"/>
  8644. </parameter>
  8645. </parameters>
  8646. </method>
  8647. <method name="peek" c:identifier="gst_collect_pads_peek">
  8648. <doc xml:space="preserve">Peek at the buffer currently queued in @data. This function
  8649. should be called with the @pads STREAM_LOCK held, such as in the callback
  8650. handler.
  8651. MT safe.</doc>
  8652. <return-value transfer-ownership="full">
  8653. <doc xml:space="preserve">The buffer in @data or %NULL if no buffer is queued.
  8654. should unref the buffer after usage.</doc>
  8655. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  8656. </return-value>
  8657. <parameters>
  8658. <instance-parameter name="pads" transfer-ownership="none">
  8659. <doc xml:space="preserve">the collectpads to peek</doc>
  8660. <type name="CollectPads" c:type="GstCollectPads*"/>
  8661. </instance-parameter>
  8662. <parameter name="data" transfer-ownership="none">
  8663. <doc xml:space="preserve">the data to use</doc>
  8664. <type name="CollectData" c:type="GstCollectData*"/>
  8665. </parameter>
  8666. </parameters>
  8667. </method>
  8668. <method name="pop" c:identifier="gst_collect_pads_pop">
  8669. <doc xml:space="preserve">Pop the buffer currently queued in @data. This function
  8670. should be called with the @pads STREAM_LOCK held, such as in the callback
  8671. handler.
  8672. MT safe.</doc>
  8673. <return-value transfer-ownership="full">
  8674. <doc xml:space="preserve">The buffer in @data or %NULL if no buffer was
  8675. queued. You should unref the buffer after usage.</doc>
  8676. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  8677. </return-value>
  8678. <parameters>
  8679. <instance-parameter name="pads" transfer-ownership="none">
  8680. <doc xml:space="preserve">the collectpads to pop</doc>
  8681. <type name="CollectPads" c:type="GstCollectPads*"/>
  8682. </instance-parameter>
  8683. <parameter name="data" transfer-ownership="none">
  8684. <doc xml:space="preserve">the data to use</doc>
  8685. <type name="CollectData" c:type="GstCollectData*"/>
  8686. </parameter>
  8687. </parameters>
  8688. </method>
  8689. <method name="query_default"
  8690. c:identifier="gst_collect_pads_query_default">
  8691. <doc xml:space="preserve">Default #GstCollectPads query handling that elements should always
  8692. chain up to to ensure proper operation. Element might however indicate
  8693. query should not be forwarded downstream.</doc>
  8694. <return-value transfer-ownership="none">
  8695. <type name="gboolean" c:type="gboolean"/>
  8696. </return-value>
  8697. <parameters>
  8698. <instance-parameter name="pads" transfer-ownership="none">
  8699. <doc xml:space="preserve">the collectpads to use</doc>
  8700. <type name="CollectPads" c:type="GstCollectPads*"/>
  8701. </instance-parameter>
  8702. <parameter name="data" transfer-ownership="none">
  8703. <doc xml:space="preserve">collect data of corresponding pad</doc>
  8704. <type name="CollectData" c:type="GstCollectData*"/>
  8705. </parameter>
  8706. <parameter name="query" transfer-ownership="none">
  8707. <doc xml:space="preserve">query being processed</doc>
  8708. <type name="Gst.Query" c:type="GstQuery*"/>
  8709. </parameter>
  8710. <parameter name="discard" transfer-ownership="none">
  8711. <doc xml:space="preserve">process but do not send event downstream</doc>
  8712. <type name="gboolean" c:type="gboolean"/>
  8713. </parameter>
  8714. </parameters>
  8715. </method>
  8716. <method name="read_buffer" c:identifier="gst_collect_pads_read_buffer">
  8717. <doc xml:space="preserve">Get a subbuffer of @size bytes from the given pad @data.
  8718. This function should be called with @pads STREAM_LOCK held, such as in the
  8719. callback.
  8720. MT safe.</doc>
  8721. <return-value transfer-ownership="full">
  8722. <doc xml:space="preserve">A sub buffer. The size of the buffer can be less that requested.
  8723. A return of %NULL signals that the pad is end-of-stream.
  8724. Unref the buffer after use.</doc>
  8725. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  8726. </return-value>
  8727. <parameters>
  8728. <instance-parameter name="pads" transfer-ownership="none">
  8729. <doc xml:space="preserve">the collectpads to query</doc>
  8730. <type name="CollectPads" c:type="GstCollectPads*"/>
  8731. </instance-parameter>
  8732. <parameter name="data" transfer-ownership="none">
  8733. <doc xml:space="preserve">the data to use</doc>
  8734. <type name="CollectData" c:type="GstCollectData*"/>
  8735. </parameter>
  8736. <parameter name="size" transfer-ownership="none">
  8737. <doc xml:space="preserve">the number of bytes to read</doc>
  8738. <type name="guint" c:type="guint"/>
  8739. </parameter>
  8740. </parameters>
  8741. </method>
  8742. <method name="remove_pad" c:identifier="gst_collect_pads_remove_pad">
  8743. <doc xml:space="preserve">Remove a pad from the collection of collect pads. This function will also
  8744. free the #GstCollectData and all the resources that were allocated with
  8745. gst_collect_pads_add_pad().
  8746. The pad will be deactivated automatically when @pads is stopped.
  8747. MT safe.</doc>
  8748. <return-value transfer-ownership="none">
  8749. <doc xml:space="preserve">%TRUE if the pad could be removed.</doc>
  8750. <type name="gboolean" c:type="gboolean"/>
  8751. </return-value>
  8752. <parameters>
  8753. <instance-parameter name="pads" transfer-ownership="none">
  8754. <doc xml:space="preserve">the collectpads to use</doc>
  8755. <type name="CollectPads" c:type="GstCollectPads*"/>
  8756. </instance-parameter>
  8757. <parameter name="pad" transfer-ownership="none">
  8758. <doc xml:space="preserve">the pad to remove</doc>
  8759. <type name="Gst.Pad" c:type="GstPad*"/>
  8760. </parameter>
  8761. </parameters>
  8762. </method>
  8763. <method name="set_buffer_function"
  8764. c:identifier="gst_collect_pads_set_buffer_function">
  8765. <doc xml:space="preserve">Set the callback function and user data that will be called with
  8766. the oldest buffer when all pads have been collected, or %NULL on EOS.
  8767. If a buffer is passed, the callback owns a reference and must unref
  8768. it.
  8769. MT safe.</doc>
  8770. <return-value transfer-ownership="none">
  8771. <type name="none" c:type="void"/>
  8772. </return-value>
  8773. <parameters>
  8774. <instance-parameter name="pads" transfer-ownership="none">
  8775. <doc xml:space="preserve">the collectpads to use</doc>
  8776. <type name="CollectPads" c:type="GstCollectPads*"/>
  8777. </instance-parameter>
  8778. <parameter name="func"
  8779. transfer-ownership="none"
  8780. scope="call"
  8781. closure="1">
  8782. <doc xml:space="preserve">the function to set</doc>
  8783. <type name="CollectPadsBufferFunction"
  8784. c:type="GstCollectPadsBufferFunction"/>
  8785. </parameter>
  8786. <parameter name="user_data"
  8787. transfer-ownership="none"
  8788. nullable="1"
  8789. allow-none="1">
  8790. <doc xml:space="preserve">user data passed to the function</doc>
  8791. <type name="gpointer" c:type="gpointer"/>
  8792. </parameter>
  8793. </parameters>
  8794. </method>
  8795. <method name="set_clip_function"
  8796. c:identifier="gst_collect_pads_set_clip_function">
  8797. <doc xml:space="preserve">Install a clipping function that is called right after a buffer is received
  8798. on a pad managed by @pads. See #GstCollectPadsClipFunction for more info.</doc>
  8799. <return-value transfer-ownership="none">
  8800. <type name="none" c:type="void"/>
  8801. </return-value>
  8802. <parameters>
  8803. <instance-parameter name="pads" transfer-ownership="none">
  8804. <doc xml:space="preserve">the collectpads to use</doc>
  8805. <type name="CollectPads" c:type="GstCollectPads*"/>
  8806. </instance-parameter>
  8807. <parameter name="clipfunc"
  8808. transfer-ownership="none"
  8809. scope="call"
  8810. closure="1">
  8811. <doc xml:space="preserve">clip function to install</doc>
  8812. <type name="CollectPadsClipFunction"
  8813. c:type="GstCollectPadsClipFunction"/>
  8814. </parameter>
  8815. <parameter name="user_data"
  8816. transfer-ownership="none"
  8817. nullable="1"
  8818. allow-none="1">
  8819. <doc xml:space="preserve">user data to pass to @clip_func</doc>
  8820. <type name="gpointer" c:type="gpointer"/>
  8821. </parameter>
  8822. </parameters>
  8823. </method>
  8824. <method name="set_compare_function"
  8825. c:identifier="gst_collect_pads_set_compare_function">
  8826. <doc xml:space="preserve">Set the timestamp comparison function.
  8827. MT safe.</doc>
  8828. <return-value transfer-ownership="none">
  8829. <type name="none" c:type="void"/>
  8830. </return-value>
  8831. <parameters>
  8832. <instance-parameter name="pads" transfer-ownership="none">
  8833. <doc xml:space="preserve">the pads to use</doc>
  8834. <type name="CollectPads" c:type="GstCollectPads*"/>
  8835. </instance-parameter>
  8836. <parameter name="func"
  8837. transfer-ownership="none"
  8838. scope="call"
  8839. closure="1">
  8840. <doc xml:space="preserve">the function to set</doc>
  8841. <type name="CollectPadsCompareFunction"
  8842. c:type="GstCollectPadsCompareFunction"/>
  8843. </parameter>
  8844. <parameter name="user_data"
  8845. transfer-ownership="none"
  8846. nullable="1"
  8847. allow-none="1">
  8848. <doc xml:space="preserve">user data passed to the function</doc>
  8849. <type name="gpointer" c:type="gpointer"/>
  8850. </parameter>
  8851. </parameters>
  8852. </method>
  8853. <method name="set_event_function"
  8854. c:identifier="gst_collect_pads_set_event_function">
  8855. <doc xml:space="preserve">Set the event callback function and user data that will be called when
  8856. collectpads has received an event originating from one of the collected
  8857. pads. If the event being processed is a serialized one, this callback is
  8858. called with @pads STREAM_LOCK held, otherwise not. As this lock should be
  8859. held when calling a number of CollectPads functions, it should be acquired
  8860. if so (unusually) needed.
  8861. MT safe.</doc>
  8862. <return-value transfer-ownership="none">
  8863. <type name="none" c:type="void"/>
  8864. </return-value>
  8865. <parameters>
  8866. <instance-parameter name="pads" transfer-ownership="none">
  8867. <doc xml:space="preserve">the collectpads to use</doc>
  8868. <type name="CollectPads" c:type="GstCollectPads*"/>
  8869. </instance-parameter>
  8870. <parameter name="func"
  8871. transfer-ownership="none"
  8872. scope="call"
  8873. closure="1">
  8874. <doc xml:space="preserve">the function to set</doc>
  8875. <type name="CollectPadsEventFunction"
  8876. c:type="GstCollectPadsEventFunction"/>
  8877. </parameter>
  8878. <parameter name="user_data"
  8879. transfer-ownership="none"
  8880. nullable="1"
  8881. allow-none="1">
  8882. <doc xml:space="preserve">user data passed to the function</doc>
  8883. <type name="gpointer" c:type="gpointer"/>
  8884. </parameter>
  8885. </parameters>
  8886. </method>
  8887. <method name="set_flush_function"
  8888. c:identifier="gst_collect_pads_set_flush_function"
  8889. version="1.4">
  8890. <doc xml:space="preserve">Install a flush function that is called when the internal
  8891. state of all pads should be flushed as part of flushing seek
  8892. handling. See #GstCollectPadsFlushFunction for more info.</doc>
  8893. <return-value transfer-ownership="none">
  8894. <type name="none" c:type="void"/>
  8895. </return-value>
  8896. <parameters>
  8897. <instance-parameter name="pads" transfer-ownership="none">
  8898. <doc xml:space="preserve">the collectpads to use</doc>
  8899. <type name="CollectPads" c:type="GstCollectPads*"/>
  8900. </instance-parameter>
  8901. <parameter name="func"
  8902. transfer-ownership="none"
  8903. scope="call"
  8904. closure="1">
  8905. <doc xml:space="preserve">flush function to install</doc>
  8906. <type name="CollectPadsFlushFunction"
  8907. c:type="GstCollectPadsFlushFunction"/>
  8908. </parameter>
  8909. <parameter name="user_data"
  8910. transfer-ownership="none"
  8911. nullable="1"
  8912. allow-none="1">
  8913. <doc xml:space="preserve">user data to pass to @func</doc>
  8914. <type name="gpointer" c:type="gpointer"/>
  8915. </parameter>
  8916. </parameters>
  8917. </method>
  8918. <method name="set_flushing" c:identifier="gst_collect_pads_set_flushing">
  8919. <doc xml:space="preserve">Change the flushing state of all the pads in the collection. No pad
  8920. is able to accept anymore data when @flushing is %TRUE. Calling this
  8921. function with @flushing %FALSE makes @pads accept data again.
  8922. Caller must ensure that downstream streaming (thread) is not blocked,
  8923. e.g. by sending a FLUSH_START downstream.
  8924. MT safe.</doc>
  8925. <return-value transfer-ownership="none">
  8926. <type name="none" c:type="void"/>
  8927. </return-value>
  8928. <parameters>
  8929. <instance-parameter name="pads" transfer-ownership="none">
  8930. <doc xml:space="preserve">the collectpads to use</doc>
  8931. <type name="CollectPads" c:type="GstCollectPads*"/>
  8932. </instance-parameter>
  8933. <parameter name="flushing" transfer-ownership="none">
  8934. <doc xml:space="preserve">desired state of the pads</doc>
  8935. <type name="gboolean" c:type="gboolean"/>
  8936. </parameter>
  8937. </parameters>
  8938. </method>
  8939. <method name="set_function" c:identifier="gst_collect_pads_set_function">
  8940. <doc xml:space="preserve">CollectPads provides a default collection algorithm that will determine
  8941. the oldest buffer available on all of its pads, and then delegate
  8942. to a configured callback.
  8943. However, if circumstances are more complicated and/or more control
  8944. is desired, this sets a callback that will be invoked instead when
  8945. all the pads added to the collection have buffers queued.
  8946. Evidently, this callback is not compatible with
  8947. gst_collect_pads_set_buffer_function() callback.
  8948. If this callback is set, the former will be unset.
  8949. MT safe.</doc>
  8950. <return-value transfer-ownership="none">
  8951. <type name="none" c:type="void"/>
  8952. </return-value>
  8953. <parameters>
  8954. <instance-parameter name="pads" transfer-ownership="none">
  8955. <doc xml:space="preserve">the collectpads to use</doc>
  8956. <type name="CollectPads" c:type="GstCollectPads*"/>
  8957. </instance-parameter>
  8958. <parameter name="func"
  8959. transfer-ownership="none"
  8960. scope="call"
  8961. closure="1">
  8962. <doc xml:space="preserve">the function to set</doc>
  8963. <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
  8964. </parameter>
  8965. <parameter name="user_data"
  8966. transfer-ownership="none"
  8967. nullable="1"
  8968. allow-none="1">
  8969. <doc xml:space="preserve">user data passed to the function</doc>
  8970. <type name="gpointer" c:type="gpointer"/>
  8971. </parameter>
  8972. </parameters>
  8973. </method>
  8974. <method name="set_query_function"
  8975. c:identifier="gst_collect_pads_set_query_function">
  8976. <doc xml:space="preserve">Set the query callback function and user data that will be called after
  8977. collectpads has received a query originating from one of the collected
  8978. pads. If the query being processed is a serialized one, this callback is
  8979. called with @pads STREAM_LOCK held, otherwise not. As this lock should be
  8980. held when calling a number of CollectPads functions, it should be acquired
  8981. if so (unusually) needed.
  8982. MT safe.</doc>
  8983. <return-value transfer-ownership="none">
  8984. <type name="none" c:type="void"/>
  8985. </return-value>
  8986. <parameters>
  8987. <instance-parameter name="pads" transfer-ownership="none">
  8988. <doc xml:space="preserve">the collectpads to use</doc>
  8989. <type name="CollectPads" c:type="GstCollectPads*"/>
  8990. </instance-parameter>
  8991. <parameter name="func"
  8992. transfer-ownership="none"
  8993. scope="call"
  8994. closure="1">
  8995. <doc xml:space="preserve">the function to set</doc>
  8996. <type name="CollectPadsQueryFunction"
  8997. c:type="GstCollectPadsQueryFunction"/>
  8998. </parameter>
  8999. <parameter name="user_data"
  9000. transfer-ownership="none"
  9001. nullable="1"
  9002. allow-none="1">
  9003. <doc xml:space="preserve">user data passed to the function</doc>
  9004. <type name="gpointer" c:type="gpointer"/>
  9005. </parameter>
  9006. </parameters>
  9007. </method>
  9008. <method name="set_waiting" c:identifier="gst_collect_pads_set_waiting">
  9009. <doc xml:space="preserve">Sets a pad to waiting or non-waiting mode, if at least this pad
  9010. has not been created with locked waiting state,
  9011. in which case nothing happens.
  9012. This function should be called with @pads STREAM_LOCK held, such as
  9013. in the callback.
  9014. MT safe.</doc>
  9015. <return-value transfer-ownership="none">
  9016. <type name="none" c:type="void"/>
  9017. </return-value>
  9018. <parameters>
  9019. <instance-parameter name="pads" transfer-ownership="none">
  9020. <doc xml:space="preserve">the collectpads</doc>
  9021. <type name="CollectPads" c:type="GstCollectPads*"/>
  9022. </instance-parameter>
  9023. <parameter name="data" transfer-ownership="none">
  9024. <doc xml:space="preserve">the data to use</doc>
  9025. <type name="CollectData" c:type="GstCollectData*"/>
  9026. </parameter>
  9027. <parameter name="waiting" transfer-ownership="none">
  9028. <doc xml:space="preserve">boolean indicating whether this pad should operate
  9029. in waiting or non-waiting mode</doc>
  9030. <type name="gboolean" c:type="gboolean"/>
  9031. </parameter>
  9032. </parameters>
  9033. </method>
  9034. <method name="src_event_default"
  9035. c:identifier="gst_collect_pads_src_event_default"
  9036. version="1.4">
  9037. <doc xml:space="preserve">Default #GstCollectPads event handling for the src pad of elements.
  9038. Elements can chain up to this to let flushing seek event handling
  9039. be done by #GstCollectPads.</doc>
  9040. <return-value transfer-ownership="none">
  9041. <type name="gboolean" c:type="gboolean"/>
  9042. </return-value>
  9043. <parameters>
  9044. <instance-parameter name="pads" transfer-ownership="none">
  9045. <doc xml:space="preserve">the #GstCollectPads to use</doc>
  9046. <type name="CollectPads" c:type="GstCollectPads*"/>
  9047. </instance-parameter>
  9048. <parameter name="pad" transfer-ownership="none">
  9049. <doc xml:space="preserve">src #GstPad that received the event</doc>
  9050. <type name="Gst.Pad" c:type="GstPad*"/>
  9051. </parameter>
  9052. <parameter name="event" transfer-ownership="none">
  9053. <doc xml:space="preserve">event being processed</doc>
  9054. <type name="Gst.Event" c:type="GstEvent*"/>
  9055. </parameter>
  9056. </parameters>
  9057. </method>
  9058. <method name="start" c:identifier="gst_collect_pads_start">
  9059. <doc xml:space="preserve">Starts the processing of data in the collect_pads.
  9060. MT safe.</doc>
  9061. <return-value transfer-ownership="none">
  9062. <type name="none" c:type="void"/>
  9063. </return-value>
  9064. <parameters>
  9065. <instance-parameter name="pads" transfer-ownership="none">
  9066. <doc xml:space="preserve">the collectpads to use</doc>
  9067. <type name="CollectPads" c:type="GstCollectPads*"/>
  9068. </instance-parameter>
  9069. </parameters>
  9070. </method>
  9071. <method name="stop" c:identifier="gst_collect_pads_stop">
  9072. <doc xml:space="preserve">Stops the processing of data in the collect_pads. this function
  9073. will also unblock any blocking operations.
  9074. MT safe.</doc>
  9075. <return-value transfer-ownership="none">
  9076. <type name="none" c:type="void"/>
  9077. </return-value>
  9078. <parameters>
  9079. <instance-parameter name="pads" transfer-ownership="none">
  9080. <doc xml:space="preserve">the collectpads to use</doc>
  9081. <type name="CollectPads" c:type="GstCollectPads*"/>
  9082. </instance-parameter>
  9083. </parameters>
  9084. </method>
  9085. <method name="take_buffer" c:identifier="gst_collect_pads_take_buffer">
  9086. <doc xml:space="preserve">Get a subbuffer of @size bytes from the given pad @data. Flushes the amount
  9087. of read bytes.
  9088. This function should be called with @pads STREAM_LOCK held, such as in the
  9089. callback.
  9090. MT safe.</doc>
  9091. <return-value transfer-ownership="full">
  9092. <doc xml:space="preserve">A sub buffer. The size of the buffer can be less that requested.
  9093. A return of %NULL signals that the pad is end-of-stream.
  9094. Unref the buffer after use.</doc>
  9095. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  9096. </return-value>
  9097. <parameters>
  9098. <instance-parameter name="pads" transfer-ownership="none">
  9099. <doc xml:space="preserve">the collectpads to query</doc>
  9100. <type name="CollectPads" c:type="GstCollectPads*"/>
  9101. </instance-parameter>
  9102. <parameter name="data" transfer-ownership="none">
  9103. <doc xml:space="preserve">the data to use</doc>
  9104. <type name="CollectData" c:type="GstCollectData*"/>
  9105. </parameter>
  9106. <parameter name="size" transfer-ownership="none">
  9107. <doc xml:space="preserve">the number of bytes to read</doc>
  9108. <type name="guint" c:type="guint"/>
  9109. </parameter>
  9110. </parameters>
  9111. </method>
  9112. <field name="object">
  9113. <type name="Gst.Object" c:type="GstObject"/>
  9114. </field>
  9115. <field name="data">
  9116. <doc xml:space="preserve">#GList of #GstCollectData managed
  9117. by this #GstCollectPads.</doc>
  9118. <type name="GLib.SList" c:type="GSList*">
  9119. <type name="CollectData"/>
  9120. </type>
  9121. </field>
  9122. <field name="stream_lock" readable="0" private="1">
  9123. <type name="GLib.RecMutex" c:type="GRecMutex"/>
  9124. </field>
  9125. <field name="priv" readable="0" private="1">
  9126. <type name="CollectPadsPrivate" c:type="GstCollectPadsPrivate*"/>
  9127. </field>
  9128. <field name="_gst_reserved" readable="0" private="1">
  9129. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  9130. <type name="gpointer" c:type="gpointer"/>
  9131. </array>
  9132. </field>
  9133. </class>
  9134. <callback name="CollectPadsBufferFunction"
  9135. c:type="GstCollectPadsBufferFunction">
  9136. <doc xml:space="preserve">A function that will be called when a (considered oldest) buffer can be muxed.
  9137. If all pads have reached EOS, this function is called with %NULL @buffer
  9138. and %NULL @data.</doc>
  9139. <return-value transfer-ownership="none">
  9140. <doc xml:space="preserve">%GST_FLOW_OK for success</doc>
  9141. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  9142. </return-value>
  9143. <parameters>
  9144. <parameter name="pads" transfer-ownership="none">
  9145. <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
  9146. <type name="CollectPads" c:type="GstCollectPads*"/>
  9147. </parameter>
  9148. <parameter name="data" transfer-ownership="none">
  9149. <doc xml:space="preserve">the #GstCollectData of pad that has received the buffer</doc>
  9150. <type name="CollectData" c:type="GstCollectData*"/>
  9151. </parameter>
  9152. <parameter name="buffer" transfer-ownership="full">
  9153. <doc xml:space="preserve">the #GstBuffer</doc>
  9154. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  9155. </parameter>
  9156. <parameter name="user_data"
  9157. transfer-ownership="none"
  9158. nullable="1"
  9159. allow-none="1"
  9160. closure="3">
  9161. <doc xml:space="preserve">user data passed to gst_collect_pads_set_buffer_function()</doc>
  9162. <type name="gpointer" c:type="gpointer"/>
  9163. </parameter>
  9164. </parameters>
  9165. </callback>
  9166. <record name="CollectPadsClass"
  9167. c:type="GstCollectPadsClass"
  9168. glib:is-gtype-struct-for="CollectPads">
  9169. <field name="parent_class">
  9170. <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
  9171. </field>
  9172. <field name="_gst_reserved" readable="0" private="1">
  9173. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  9174. <type name="gpointer" c:type="gpointer"/>
  9175. </array>
  9176. </field>
  9177. </record>
  9178. <callback name="CollectPadsClipFunction"
  9179. c:type="GstCollectPadsClipFunction">
  9180. <doc xml:space="preserve">A function that will be called when @inbuffer is received on the pad managed
  9181. by @data in the collectpad object @pads.
  9182. The function should use the segment of @data and the negotiated media type on
  9183. the pad to perform clipping of @inbuffer.
  9184. This function takes ownership of @inbuffer and should output a buffer in
  9185. @outbuffer or return %NULL in @outbuffer if the buffer should be dropped.</doc>
  9186. <return-value transfer-ownership="none">
  9187. <doc xml:space="preserve">a #GstFlowReturn that corresponds to the result of clipping.</doc>
  9188. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  9189. </return-value>
  9190. <parameters>
  9191. <parameter name="pads" transfer-ownership="none">
  9192. <doc xml:space="preserve">a #GstCollectPads</doc>
  9193. <type name="CollectPads" c:type="GstCollectPads*"/>
  9194. </parameter>
  9195. <parameter name="data" transfer-ownership="none">
  9196. <doc xml:space="preserve">a #GstCollectData</doc>
  9197. <type name="CollectData" c:type="GstCollectData*"/>
  9198. </parameter>
  9199. <parameter name="inbuffer" transfer-ownership="full">
  9200. <doc xml:space="preserve">the input #GstBuffer</doc>
  9201. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  9202. </parameter>
  9203. <parameter name="outbuffer" transfer-ownership="none">
  9204. <doc xml:space="preserve">the output #GstBuffer</doc>
  9205. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  9206. </parameter>
  9207. <parameter name="user_data"
  9208. transfer-ownership="none"
  9209. nullable="1"
  9210. allow-none="1"
  9211. closure="4">
  9212. <doc xml:space="preserve">user data</doc>
  9213. <type name="gpointer" c:type="gpointer"/>
  9214. </parameter>
  9215. </parameters>
  9216. </callback>
  9217. <callback name="CollectPadsCompareFunction"
  9218. c:type="GstCollectPadsCompareFunction">
  9219. <doc xml:space="preserve">A function for comparing two timestamps of buffers or newsegments collected on one pad.</doc>
  9220. <return-value transfer-ownership="none">
  9221. <doc xml:space="preserve">Integer less than zero when first timestamp is deemed older than the second one.
  9222. Zero if the timestamps are deemed equally old.
  9223. Integer greater than zero when second timestamp is deemed older than the first one.</doc>
  9224. <type name="gint" c:type="gint"/>
  9225. </return-value>
  9226. <parameters>
  9227. <parameter name="pads" transfer-ownership="none">
  9228. <doc xml:space="preserve">the #GstCollectPads that is comparing the timestamps</doc>
  9229. <type name="CollectPads" c:type="GstCollectPads*"/>
  9230. </parameter>
  9231. <parameter name="data1" transfer-ownership="none">
  9232. <doc xml:space="preserve">the first #GstCollectData</doc>
  9233. <type name="CollectData" c:type="GstCollectData*"/>
  9234. </parameter>
  9235. <parameter name="timestamp1" transfer-ownership="none">
  9236. <doc xml:space="preserve">the first timestamp</doc>
  9237. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  9238. </parameter>
  9239. <parameter name="data2" transfer-ownership="none">
  9240. <doc xml:space="preserve">the second #GstCollectData</doc>
  9241. <type name="CollectData" c:type="GstCollectData*"/>
  9242. </parameter>
  9243. <parameter name="timestamp2" transfer-ownership="none">
  9244. <doc xml:space="preserve">the second timestamp</doc>
  9245. <type name="Gst.ClockTime" c:type="GstClockTime"/>
  9246. </parameter>
  9247. <parameter name="user_data"
  9248. transfer-ownership="none"
  9249. nullable="1"
  9250. allow-none="1"
  9251. closure="5">
  9252. <doc xml:space="preserve">user data passed to gst_collect_pads_set_compare_function()</doc>
  9253. <type name="gpointer" c:type="gpointer"/>
  9254. </parameter>
  9255. </parameters>
  9256. </callback>
  9257. <callback name="CollectPadsEventFunction"
  9258. c:type="GstCollectPadsEventFunction">
  9259. <doc xml:space="preserve">A function that will be called while processing an event. It takes
  9260. ownership of the event and is responsible for chaining up (to
  9261. gst_collect_pads_event_default()) or dropping events (such typical cases
  9262. being handled by the default handler).</doc>
  9263. <return-value transfer-ownership="none">
  9264. <doc xml:space="preserve">%TRUE if the pad could handle the event</doc>
  9265. <type name="gboolean" c:type="gboolean"/>
  9266. </return-value>
  9267. <parameters>
  9268. <parameter name="pads" transfer-ownership="none">
  9269. <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
  9270. <type name="CollectPads" c:type="GstCollectPads*"/>
  9271. </parameter>
  9272. <parameter name="pad" transfer-ownership="none">
  9273. <doc xml:space="preserve">the #GstPad that received an event</doc>
  9274. <type name="CollectData" c:type="GstCollectData*"/>
  9275. </parameter>
  9276. <parameter name="event" transfer-ownership="none">
  9277. <doc xml:space="preserve">the #GstEvent received</doc>
  9278. <type name="Gst.Event" c:type="GstEvent*"/>
  9279. </parameter>
  9280. <parameter name="user_data"
  9281. transfer-ownership="none"
  9282. nullable="1"
  9283. allow-none="1"
  9284. closure="3">
  9285. <doc xml:space="preserve">user data passed to gst_collect_pads_set_event_function()</doc>
  9286. <type name="gpointer" c:type="gpointer"/>
  9287. </parameter>
  9288. </parameters>
  9289. </callback>
  9290. <callback name="CollectPadsFlushFunction"
  9291. c:type="GstCollectPadsFlushFunction"
  9292. version="1.4">
  9293. <doc xml:space="preserve">A function that will be called while processing a flushing seek event.
  9294. The function should flush any internal state of the element and the state of
  9295. all the pads. It should clear only the state not directly managed by the
  9296. @pads object. It is therefore not necessary to call
  9297. gst_collect_pads_set_flushing nor gst_collect_pads_clear from this function.</doc>
  9298. <return-value transfer-ownership="none">
  9299. <type name="none" c:type="void"/>
  9300. </return-value>
  9301. <parameters>
  9302. <parameter name="pads" transfer-ownership="none">
  9303. <doc xml:space="preserve">a #GstCollectPads</doc>
  9304. <type name="CollectPads" c:type="GstCollectPads*"/>
  9305. </parameter>
  9306. <parameter name="user_data"
  9307. transfer-ownership="none"
  9308. nullable="1"
  9309. allow-none="1"
  9310. closure="1">
  9311. <doc xml:space="preserve">user data</doc>
  9312. <type name="gpointer" c:type="gpointer"/>
  9313. </parameter>
  9314. </parameters>
  9315. </callback>
  9316. <callback name="CollectPadsFunction" c:type="GstCollectPadsFunction">
  9317. <doc xml:space="preserve">A function that will be called when all pads have received data.</doc>
  9318. <return-value transfer-ownership="none">
  9319. <doc xml:space="preserve">%GST_FLOW_OK for success</doc>
  9320. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  9321. </return-value>
  9322. <parameters>
  9323. <parameter name="pads" transfer-ownership="none">
  9324. <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
  9325. <type name="CollectPads" c:type="GstCollectPads*"/>
  9326. </parameter>
  9327. <parameter name="user_data"
  9328. transfer-ownership="none"
  9329. nullable="1"
  9330. allow-none="1"
  9331. closure="1">
  9332. <doc xml:space="preserve">user data passed to gst_collect_pads_set_function()</doc>
  9333. <type name="gpointer" c:type="gpointer"/>
  9334. </parameter>
  9335. </parameters>
  9336. </callback>
  9337. <record name="CollectPadsPrivate"
  9338. c:type="GstCollectPadsPrivate"
  9339. disguised="1">
  9340. </record>
  9341. <callback name="CollectPadsQueryFunction"
  9342. c:type="GstCollectPadsQueryFunction">
  9343. <doc xml:space="preserve">A function that will be called while processing a query. It takes
  9344. ownership of the query and is responsible for chaining up (to
  9345. events downstream (with gst_pad_event_default()).</doc>
  9346. <return-value transfer-ownership="none">
  9347. <doc xml:space="preserve">%TRUE if the pad could handle the event</doc>
  9348. <type name="gboolean" c:type="gboolean"/>
  9349. </return-value>
  9350. <parameters>
  9351. <parameter name="pads" transfer-ownership="none">
  9352. <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
  9353. <type name="CollectPads" c:type="GstCollectPads*"/>
  9354. </parameter>
  9355. <parameter name="pad" transfer-ownership="none">
  9356. <doc xml:space="preserve">the #GstPad that received an event</doc>
  9357. <type name="CollectData" c:type="GstCollectData*"/>
  9358. </parameter>
  9359. <parameter name="query" transfer-ownership="none">
  9360. <doc xml:space="preserve">the #GstEvent received</doc>
  9361. <type name="Gst.Query" c:type="GstQuery*"/>
  9362. </parameter>
  9363. <parameter name="user_data"
  9364. transfer-ownership="none"
  9365. nullable="1"
  9366. allow-none="1"
  9367. closure="3">
  9368. <doc xml:space="preserve">user data passed to gst_collect_pads_set_query_function()</doc>
  9369. <type name="gpointer" c:type="gpointer"/>
  9370. </parameter>
  9371. </parameters>
  9372. </callback>
  9373. <bitfield name="CollectPadsStateFlags" c:type="GstCollectPadsStateFlags">
  9374. <member name="eos" value="1" c:identifier="GST_COLLECT_PADS_STATE_EOS">
  9375. <doc xml:space="preserve">Set if collectdata's pad is EOS.</doc>
  9376. </member>
  9377. <member name="flushing"
  9378. value="2"
  9379. c:identifier="GST_COLLECT_PADS_STATE_FLUSHING">
  9380. <doc xml:space="preserve">Set if collectdata's pad is flushing.</doc>
  9381. </member>
  9382. <member name="new_segment"
  9383. value="4"
  9384. c:identifier="GST_COLLECT_PADS_STATE_NEW_SEGMENT">
  9385. <doc xml:space="preserve">Set if collectdata's pad received a
  9386. new_segment event.</doc>
  9387. </member>
  9388. <member name="waiting"
  9389. value="8"
  9390. c:identifier="GST_COLLECT_PADS_STATE_WAITING">
  9391. <doc xml:space="preserve">Set if collectdata's pad must be waited
  9392. for when collecting.</doc>
  9393. </member>
  9394. <member name="locked"
  9395. value="16"
  9396. c:identifier="GST_COLLECT_PADS_STATE_LOCKED">
  9397. <doc xml:space="preserve">Set collectdata's pad WAITING state must
  9398. not be changed.
  9399. #GstCollectPadsStateFlags indicate private state of a collectdata('s pad).</doc>
  9400. </member>
  9401. </bitfield>
  9402. <class name="DataQueue"
  9403. c:symbol-prefix="data_queue"
  9404. c:type="GstDataQueue"
  9405. parent="GObject.Object"
  9406. glib:type-name="GstDataQueue"
  9407. glib:get-type="gst_data_queue_get_type"
  9408. glib:type-struct="DataQueueClass">
  9409. <doc xml:space="preserve">#GstDataQueue is an object that handles threadsafe queueing of objects. It
  9410. also provides size-related functionality. This object should be used for
  9411. any #GstElement that wishes to provide some sort of queueing functionality.</doc>
  9412. <constructor name="new"
  9413. c:identifier="gst_data_queue_new"
  9414. version="1.2"
  9415. introspectable="0">
  9416. <doc xml:space="preserve">Creates a new #GstDataQueue. If @fullcallback or @emptycallback are supplied, then
  9417. the #GstDataQueue will call the respective callback to signal full or empty condition.
  9418. If the callbacks are NULL the #GstDataQueue will instead emit 'full' and 'empty'
  9419. signals.</doc>
  9420. <return-value transfer-ownership="full">
  9421. <doc xml:space="preserve">a new #GstDataQueue.</doc>
  9422. <type name="DataQueue" c:type="GstDataQueue*"/>
  9423. </return-value>
  9424. <parameters>
  9425. <parameter name="checkfull" transfer-ownership="none">
  9426. <doc xml:space="preserve">the callback used to tell if the element considers the queue full
  9427. or not.</doc>
  9428. <type name="DataQueueCheckFullFunction"
  9429. c:type="GstDataQueueCheckFullFunction"/>
  9430. </parameter>
  9431. <parameter name="fullcallback" transfer-ownership="none">
  9432. <doc xml:space="preserve">the callback which will be called when the queue is considered full.</doc>
  9433. <type name="DataQueueFullCallback"
  9434. c:type="GstDataQueueFullCallback"/>
  9435. </parameter>
  9436. <parameter name="emptycallback"
  9437. transfer-ownership="none"
  9438. closure="3">
  9439. <doc xml:space="preserve">the callback which will be called when the queue is considered empty.</doc>
  9440. <type name="DataQueueEmptyCallback"
  9441. c:type="GstDataQueueEmptyCallback"/>
  9442. </parameter>
  9443. <parameter name="checkdata"
  9444. transfer-ownership="none"
  9445. nullable="1"
  9446. allow-none="1">
  9447. <doc xml:space="preserve">a #gpointer that will be passed to the @checkfull, @fullcallback,
  9448. and @emptycallback callbacks.</doc>
  9449. <type name="gpointer" c:type="gpointer"/>
  9450. </parameter>
  9451. </parameters>
  9452. </constructor>
  9453. <virtual-method name="empty">
  9454. <return-value transfer-ownership="none">
  9455. <type name="none" c:type="void"/>
  9456. </return-value>
  9457. <parameters>
  9458. <instance-parameter name="queue" transfer-ownership="none">
  9459. <type name="DataQueue" c:type="GstDataQueue*"/>
  9460. </instance-parameter>
  9461. </parameters>
  9462. </virtual-method>
  9463. <virtual-method name="full">
  9464. <return-value transfer-ownership="none">
  9465. <type name="none" c:type="void"/>
  9466. </return-value>
  9467. <parameters>
  9468. <instance-parameter name="queue" transfer-ownership="none">
  9469. <type name="DataQueue" c:type="GstDataQueue*"/>
  9470. </instance-parameter>
  9471. </parameters>
  9472. </virtual-method>
  9473. <method name="drop_head"
  9474. c:identifier="gst_data_queue_drop_head"
  9475. version="1.2"
  9476. introspectable="0">
  9477. <doc xml:space="preserve">Pop and unref the head-most #GstMiniObject with the given #GType.</doc>
  9478. <return-value transfer-ownership="none">
  9479. <doc xml:space="preserve">%TRUE if an element was removed.</doc>
  9480. <type name="gboolean" c:type="gboolean"/>
  9481. </return-value>
  9482. <parameters>
  9483. <instance-parameter name="queue" transfer-ownership="none">
  9484. <doc xml:space="preserve">The #GstDataQueue to drop an item from.</doc>
  9485. <type name="DataQueue" c:type="GstDataQueue*"/>
  9486. </instance-parameter>
  9487. <parameter name="type" transfer-ownership="none">
  9488. <doc xml:space="preserve">The #GType of the item to drop.</doc>
  9489. <type name="GType" c:type="GType"/>
  9490. </parameter>
  9491. </parameters>
  9492. </method>
  9493. <method name="flush"
  9494. c:identifier="gst_data_queue_flush"
  9495. version="1.2"
  9496. introspectable="0">
  9497. <doc xml:space="preserve">Flushes all the contents of the @queue. Any call to #gst_data_queue_push and
  9498. #gst_data_queue_pop will be released.
  9499. MT safe.</doc>
  9500. <return-value transfer-ownership="none">
  9501. <type name="none" c:type="void"/>
  9502. </return-value>
  9503. <parameters>
  9504. <instance-parameter name="queue" transfer-ownership="none">
  9505. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9506. <type name="DataQueue" c:type="GstDataQueue*"/>
  9507. </instance-parameter>
  9508. </parameters>
  9509. </method>
  9510. <method name="get_level"
  9511. c:identifier="gst_data_queue_get_level"
  9512. version="1.2"
  9513. introspectable="0">
  9514. <doc xml:space="preserve">Get the current level of the queue.</doc>
  9515. <return-value transfer-ownership="none">
  9516. <type name="none" c:type="void"/>
  9517. </return-value>
  9518. <parameters>
  9519. <instance-parameter name="queue" transfer-ownership="none">
  9520. <doc xml:space="preserve">The #GstDataQueue</doc>
  9521. <type name="DataQueue" c:type="GstDataQueue*"/>
  9522. </instance-parameter>
  9523. <parameter name="level" transfer-ownership="none">
  9524. <doc xml:space="preserve">the location to store the result</doc>
  9525. <type name="DataQueueSize" c:type="GstDataQueueSize*"/>
  9526. </parameter>
  9527. </parameters>
  9528. </method>
  9529. <method name="is_empty"
  9530. c:identifier="gst_data_queue_is_empty"
  9531. version="1.2"
  9532. introspectable="0">
  9533. <doc xml:space="preserve">Queries if there are any items in the @queue.
  9534. MT safe.</doc>
  9535. <return-value transfer-ownership="none">
  9536. <doc xml:space="preserve">%TRUE if @queue is empty.</doc>
  9537. <type name="gboolean" c:type="gboolean"/>
  9538. </return-value>
  9539. <parameters>
  9540. <instance-parameter name="queue" transfer-ownership="none">
  9541. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9542. <type name="DataQueue" c:type="GstDataQueue*"/>
  9543. </instance-parameter>
  9544. </parameters>
  9545. </method>
  9546. <method name="is_full"
  9547. c:identifier="gst_data_queue_is_full"
  9548. version="1.2"
  9549. introspectable="0">
  9550. <doc xml:space="preserve">Queries if @queue is full. This check will be done using the
  9551. #GstDataQueueCheckFullFunction registered with @queue.
  9552. MT safe.</doc>
  9553. <return-value transfer-ownership="none">
  9554. <doc xml:space="preserve">%TRUE if @queue is full.</doc>
  9555. <type name="gboolean" c:type="gboolean"/>
  9556. </return-value>
  9557. <parameters>
  9558. <instance-parameter name="queue" transfer-ownership="none">
  9559. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9560. <type name="DataQueue" c:type="GstDataQueue*"/>
  9561. </instance-parameter>
  9562. </parameters>
  9563. </method>
  9564. <method name="limits_changed"
  9565. c:identifier="gst_data_queue_limits_changed"
  9566. version="1.2"
  9567. introspectable="0">
  9568. <doc xml:space="preserve">Inform the queue that the limits for the fullness check have changed and that
  9569. any blocking gst_data_queue_push() should be unblocked to recheck the limits.</doc>
  9570. <return-value transfer-ownership="none">
  9571. <type name="none" c:type="void"/>
  9572. </return-value>
  9573. <parameters>
  9574. <instance-parameter name="queue" transfer-ownership="none">
  9575. <doc xml:space="preserve">The #GstDataQueue</doc>
  9576. <type name="DataQueue" c:type="GstDataQueue*"/>
  9577. </instance-parameter>
  9578. </parameters>
  9579. </method>
  9580. <method name="peek"
  9581. c:identifier="gst_data_queue_peek"
  9582. version="1.2"
  9583. introspectable="0">
  9584. <doc xml:space="preserve">Retrieves the first @item available on the @queue without removing it.
  9585. If the queue is currently empty, the call will block until at least
  9586. one item is available, OR the @queue is set to the flushing state.
  9587. MT safe.</doc>
  9588. <return-value transfer-ownership="none">
  9589. <doc xml:space="preserve">%TRUE if an @item was successfully retrieved from the @queue.</doc>
  9590. <type name="gboolean" c:type="gboolean"/>
  9591. </return-value>
  9592. <parameters>
  9593. <instance-parameter name="queue" transfer-ownership="none">
  9594. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9595. <type name="DataQueue" c:type="GstDataQueue*"/>
  9596. </instance-parameter>
  9597. <parameter name="item" transfer-ownership="none">
  9598. <doc xml:space="preserve">pointer to store the returned #GstDataQueueItem.</doc>
  9599. <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
  9600. </parameter>
  9601. </parameters>
  9602. </method>
  9603. <method name="pop"
  9604. c:identifier="gst_data_queue_pop"
  9605. version="1.2"
  9606. introspectable="0">
  9607. <doc xml:space="preserve">Retrieves the first @item available on the @queue. If the queue is currently
  9608. empty, the call will block until at least one item is available, OR the
  9609. @queue is set to the flushing state.
  9610. MT safe.</doc>
  9611. <return-value transfer-ownership="none">
  9612. <doc xml:space="preserve">%TRUE if an @item was successfully retrieved from the @queue.</doc>
  9613. <type name="gboolean" c:type="gboolean"/>
  9614. </return-value>
  9615. <parameters>
  9616. <instance-parameter name="queue" transfer-ownership="none">
  9617. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9618. <type name="DataQueue" c:type="GstDataQueue*"/>
  9619. </instance-parameter>
  9620. <parameter name="item" transfer-ownership="none">
  9621. <doc xml:space="preserve">pointer to store the returned #GstDataQueueItem.</doc>
  9622. <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
  9623. </parameter>
  9624. </parameters>
  9625. </method>
  9626. <method name="push"
  9627. c:identifier="gst_data_queue_push"
  9628. version="1.2"
  9629. introspectable="0">
  9630. <doc xml:space="preserve">Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
  9631. on the @queue. If the @queue is full, the call will block until space is
  9632. available, OR the @queue is set to flushing state.
  9633. MT safe.
  9634. Note that this function has slightly different semantics than gst_pad_push()
  9635. and gst_pad_push_event(): this function only takes ownership of @item and
  9636. the #GstMiniObject contained in @item if the push was successful. If %FALSE
  9637. is returned, the caller is responsible for freeing @item and its contents.</doc>
  9638. <return-value transfer-ownership="none">
  9639. <doc xml:space="preserve">%TRUE if the @item was successfully pushed on the @queue.</doc>
  9640. <type name="gboolean" c:type="gboolean"/>
  9641. </return-value>
  9642. <parameters>
  9643. <instance-parameter name="queue" transfer-ownership="none">
  9644. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9645. <type name="DataQueue" c:type="GstDataQueue*"/>
  9646. </instance-parameter>
  9647. <parameter name="item" transfer-ownership="none">
  9648. <doc xml:space="preserve">a #GstDataQueueItem.</doc>
  9649. <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
  9650. </parameter>
  9651. </parameters>
  9652. </method>
  9653. <method name="push_force"
  9654. c:identifier="gst_data_queue_push_force"
  9655. version="1.2"
  9656. introspectable="0">
  9657. <doc xml:space="preserve">Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
  9658. on the @queue. It ignores if the @queue is full or not and forces the @item
  9659. to be pushed anyway.
  9660. MT safe.
  9661. Note that this function has slightly different semantics than gst_pad_push()
  9662. and gst_pad_push_event(): this function only takes ownership of @item and
  9663. the #GstMiniObject contained in @item if the push was successful. If %FALSE
  9664. is returned, the caller is responsible for freeing @item and its contents.</doc>
  9665. <return-value transfer-ownership="none">
  9666. <doc xml:space="preserve">%TRUE if the @item was successfully pushed on the @queue.</doc>
  9667. <type name="gboolean" c:type="gboolean"/>
  9668. </return-value>
  9669. <parameters>
  9670. <instance-parameter name="queue" transfer-ownership="none">
  9671. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9672. <type name="DataQueue" c:type="GstDataQueue*"/>
  9673. </instance-parameter>
  9674. <parameter name="item" transfer-ownership="none">
  9675. <doc xml:space="preserve">a #GstDataQueueItem.</doc>
  9676. <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
  9677. </parameter>
  9678. </parameters>
  9679. </method>
  9680. <method name="set_flushing"
  9681. c:identifier="gst_data_queue_set_flushing"
  9682. version="1.2"
  9683. introspectable="0">
  9684. <doc xml:space="preserve">Sets the queue to flushing state if @flushing is %TRUE. If set to flushing
  9685. state, any incoming data on the @queue will be discarded. Any call currently
  9686. blocking on #gst_data_queue_push or #gst_data_queue_pop will return straight
  9687. away with a return value of %FALSE. While the @queue is in flushing state,
  9688. all calls to those two functions will return %FALSE.
  9689. MT Safe.</doc>
  9690. <return-value transfer-ownership="none">
  9691. <type name="none" c:type="void"/>
  9692. </return-value>
  9693. <parameters>
  9694. <instance-parameter name="queue" transfer-ownership="none">
  9695. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9696. <type name="DataQueue" c:type="GstDataQueue*"/>
  9697. </instance-parameter>
  9698. <parameter name="flushing" transfer-ownership="none">
  9699. <doc xml:space="preserve">a #gboolean stating if the queue will be flushing or not.</doc>
  9700. <type name="gboolean" c:type="gboolean"/>
  9701. </parameter>
  9702. </parameters>
  9703. </method>
  9704. <property name="current-level-bytes" transfer-ownership="none">
  9705. <type name="guint" c:type="guint"/>
  9706. </property>
  9707. <property name="current-level-time" transfer-ownership="none">
  9708. <type name="guint64" c:type="guint64"/>
  9709. </property>
  9710. <property name="current-level-visible" transfer-ownership="none">
  9711. <type name="guint" c:type="guint"/>
  9712. </property>
  9713. <field name="object">
  9714. <doc xml:space="preserve">the parent structure</doc>
  9715. <type name="GObject.Object" c:type="GObject"/>
  9716. </field>
  9717. <field name="priv" readable="0" private="1">
  9718. <type name="DataQueuePrivate" c:type="GstDataQueuePrivate*"/>
  9719. </field>
  9720. <field name="_gst_reserved" readable="0" private="1">
  9721. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  9722. <type name="gpointer" c:type="gpointer"/>
  9723. </array>
  9724. </field>
  9725. <glib:signal name="empty" when="first" introspectable="0">
  9726. <doc xml:space="preserve">Reports that the queue became empty (empty).
  9727. A queue is empty if the total amount of visible items inside it (num-visible, time,
  9728. size) is lower than the boundary values which can be set through the GObject
  9729. properties.</doc>
  9730. <return-value transfer-ownership="none">
  9731. <type name="none" c:type="void"/>
  9732. </return-value>
  9733. </glib:signal>
  9734. <glib:signal name="full" when="first" introspectable="0">
  9735. <doc xml:space="preserve">Reports that the queue became full (full).
  9736. A queue is full if the total amount of data inside it (num-visible, time,
  9737. size) is higher than the boundary values which can be set through the GObject
  9738. properties.</doc>
  9739. <return-value transfer-ownership="none">
  9740. <type name="none" c:type="void"/>
  9741. </return-value>
  9742. </glib:signal>
  9743. </class>
  9744. <callback name="DataQueueCheckFullFunction"
  9745. c:type="GstDataQueueCheckFullFunction"
  9746. introspectable="0">
  9747. <doc xml:space="preserve">The prototype of the function used to inform the queue that it should be
  9748. considered as full.</doc>
  9749. <return-value transfer-ownership="none">
  9750. <doc xml:space="preserve">%TRUE if the queue should be considered full.</doc>
  9751. <type name="gboolean" c:type="gboolean"/>
  9752. </return-value>
  9753. <parameters>
  9754. <parameter name="queue" transfer-ownership="none">
  9755. <doc xml:space="preserve">a #GstDataQueue.</doc>
  9756. <type name="DataQueue" c:type="GstDataQueue*"/>
  9757. </parameter>
  9758. <parameter name="visible" transfer-ownership="none">
  9759. <doc xml:space="preserve">The number of visible items currently in the queue.</doc>
  9760. <type name="guint" c:type="guint"/>
  9761. </parameter>
  9762. <parameter name="bytes" transfer-ownership="none">
  9763. <doc xml:space="preserve">The amount of bytes currently in the queue.</doc>
  9764. <type name="guint" c:type="guint"/>
  9765. </parameter>
  9766. <parameter name="time" transfer-ownership="none">
  9767. <doc xml:space="preserve">The accumulated duration of the items currently in the queue.</doc>
  9768. <type name="guint64" c:type="guint64"/>
  9769. </parameter>
  9770. <parameter name="checkdata"
  9771. transfer-ownership="none"
  9772. nullable="1"
  9773. allow-none="1">
  9774. <doc xml:space="preserve">The #gpointer registered when the #GstDataQueue was created.</doc>
  9775. <type name="gpointer" c:type="gpointer"/>
  9776. </parameter>
  9777. </parameters>
  9778. </callback>
  9779. <record name="DataQueueClass"
  9780. c:type="GstDataQueueClass"
  9781. glib:is-gtype-struct-for="DataQueue">
  9782. <field name="parent_class">
  9783. <type name="GObject.ObjectClass" c:type="GObjectClass"/>
  9784. </field>
  9785. <field name="empty">
  9786. <callback name="empty">
  9787. <return-value transfer-ownership="none">
  9788. <type name="none" c:type="void"/>
  9789. </return-value>
  9790. <parameters>
  9791. <parameter name="queue" transfer-ownership="none">
  9792. <type name="DataQueue" c:type="GstDataQueue*"/>
  9793. </parameter>
  9794. </parameters>
  9795. </callback>
  9796. </field>
  9797. <field name="full">
  9798. <callback name="full">
  9799. <return-value transfer-ownership="none">
  9800. <type name="none" c:type="void"/>
  9801. </return-value>
  9802. <parameters>
  9803. <parameter name="queue" transfer-ownership="none">
  9804. <type name="DataQueue" c:type="GstDataQueue*"/>
  9805. </parameter>
  9806. </parameters>
  9807. </callback>
  9808. </field>
  9809. <field name="_gst_reserved">
  9810. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  9811. <type name="gpointer" c:type="gpointer"/>
  9812. </array>
  9813. </field>
  9814. </record>
  9815. <callback name="DataQueueEmptyCallback" c:type="GstDataQueueEmptyCallback">
  9816. <return-value transfer-ownership="none">
  9817. <type name="none" c:type="void"/>
  9818. </return-value>
  9819. <parameters>
  9820. <parameter name="queue" transfer-ownership="none">
  9821. <type name="DataQueue" c:type="GstDataQueue*"/>
  9822. </parameter>
  9823. <parameter name="checkdata"
  9824. transfer-ownership="none"
  9825. nullable="1"
  9826. allow-none="1">
  9827. <type name="gpointer" c:type="gpointer"/>
  9828. </parameter>
  9829. </parameters>
  9830. </callback>
  9831. <callback name="DataQueueFullCallback" c:type="GstDataQueueFullCallback">
  9832. <return-value transfer-ownership="none">
  9833. <type name="none" c:type="void"/>
  9834. </return-value>
  9835. <parameters>
  9836. <parameter name="queue" transfer-ownership="none">
  9837. <type name="DataQueue" c:type="GstDataQueue*"/>
  9838. </parameter>
  9839. <parameter name="checkdata"
  9840. transfer-ownership="none"
  9841. nullable="1"
  9842. allow-none="1">
  9843. <type name="gpointer" c:type="gpointer"/>
  9844. </parameter>
  9845. </parameters>
  9846. </callback>
  9847. <record name="DataQueueItem" c:type="GstDataQueueItem" introspectable="0">
  9848. <doc xml:space="preserve">Structure used by #GstDataQueue. You can supply a different structure, as
  9849. long as the top of the structure is identical to this structure.</doc>
  9850. <field name="object" writable="1">
  9851. <doc xml:space="preserve">the #GstMiniObject to queue.</doc>
  9852. <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
  9853. </field>
  9854. <field name="size" writable="1">
  9855. <doc xml:space="preserve">the size in bytes of the miniobject.</doc>
  9856. <type name="guint" c:type="guint"/>
  9857. </field>
  9858. <field name="duration" writable="1">
  9859. <doc xml:space="preserve">the duration in #GstClockTime of the miniobject. Can not be
  9860. %GST_CLOCK_TIME_NONE.</doc>
  9861. <type name="guint64" c:type="guint64"/>
  9862. </field>
  9863. <field name="visible" writable="1">
  9864. <doc xml:space="preserve">%TRUE if @object should be considered as a visible object.</doc>
  9865. <type name="gboolean" c:type="gboolean"/>
  9866. </field>
  9867. <field name="destroy" writable="1">
  9868. <doc xml:space="preserve">The #GDestroyNotify function to use to free the #GstDataQueueItem.
  9869. This function should also drop the reference to @object the owner of the
  9870. #GstDataQueueItem is assumed to hold.</doc>
  9871. <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
  9872. </field>
  9873. <field name="_gst_reserved" readable="0" private="1">
  9874. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  9875. <type name="gpointer" c:type="gpointer"/>
  9876. </array>
  9877. </field>
  9878. </record>
  9879. <record name="DataQueuePrivate" c:type="GstDataQueuePrivate" disguised="1">
  9880. </record>
  9881. <record name="DataQueueSize" c:type="GstDataQueueSize" introspectable="0">
  9882. <doc xml:space="preserve">Structure describing the size of a queue.</doc>
  9883. <field name="visible" writable="1">
  9884. <doc xml:space="preserve">number of buffers</doc>
  9885. <type name="guint" c:type="guint"/>
  9886. </field>
  9887. <field name="bytes" writable="1">
  9888. <doc xml:space="preserve">number of bytes</doc>
  9889. <type name="guint" c:type="guint"/>
  9890. </field>
  9891. <field name="time" writable="1">
  9892. <doc xml:space="preserve">amount of time</doc>
  9893. <type name="guint64" c:type="guint64"/>
  9894. </field>
  9895. </record>
  9896. <record name="FlowCombiner"
  9897. c:type="GstFlowCombiner"
  9898. version="1.4"
  9899. glib:type-name="GstFlowCombiner"
  9900. glib:get-type="gst_flow_combiner_get_type"
  9901. c:symbol-prefix="flow_combiner">
  9902. <doc xml:space="preserve">Utility struct to help handling #GstFlowReturn combination. Useful for
  9903. #GstElement&lt;!-- --&gt;s that have multiple source pads and need to combine
  9904. the different #GstFlowReturn for those pads.
  9905. #GstFlowCombiner works by using the last #GstFlowReturn for all #GstPad
  9906. it has in its list and computes the combined return value and provides
  9907. it to the caller.
  9908. To add a new pad to the #GstFlowCombiner use gst_flow_combiner_add_pad().
  9909. The new #GstPad is stored with a default value of %GST_FLOW_OK.
  9910. In case you want a #GstPad to be removed, use gst_flow_combiner_remove_pad().
  9911. Please be aware that this struct isn't thread safe as its designed to be
  9912. used by demuxers, those usually will have a single thread operating it.
  9913. These functions will take refs on the passed #GstPad&lt;!-- --&gt;s.
  9914. Aside from reducing the user's code size, the main advantage of using this
  9915. helper struct is to follow the standard rules for #GstFlowReturn combination.
  9916. These rules are:
  9917. * %GST_FLOW_EOS: only if all returns are EOS too
  9918. * %GST_FLOW_NOT_LINKED: only if all returns are NOT_LINKED too
  9919. * %GST_FLOW_ERROR or below: if at least one returns an error return
  9920. * %GST_FLOW_NOT_NEGOTIATED: if at least one returns a not-negotiated return
  9921. * %GST_FLOW_FLUSHING: if at least one returns flushing
  9922. * %GST_FLOW_OK: otherwise
  9923. %GST_FLOW_ERROR or below, GST_FLOW_NOT_NEGOTIATED and GST_FLOW_FLUSHING are
  9924. returned immediatelly from the gst_flow_combiner_update_flow() function.</doc>
  9925. <constructor name="new"
  9926. c:identifier="gst_flow_combiner_new"
  9927. version="1.4">
  9928. <doc xml:space="preserve">Creates a new #GstFlowCombiner, use gst_flow_combiner_free() to free it.</doc>
  9929. <return-value transfer-ownership="full">
  9930. <doc xml:space="preserve">A new #GstFlowCombiner</doc>
  9931. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  9932. </return-value>
  9933. </constructor>
  9934. <method name="add_pad"
  9935. c:identifier="gst_flow_combiner_add_pad"
  9936. version="1.4">
  9937. <doc xml:space="preserve">Adds a new #GstPad to the #GstFlowCombiner.</doc>
  9938. <return-value transfer-ownership="none">
  9939. <type name="none" c:type="void"/>
  9940. </return-value>
  9941. <parameters>
  9942. <instance-parameter name="combiner" transfer-ownership="none">
  9943. <doc xml:space="preserve">the #GstFlowCombiner</doc>
  9944. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  9945. </instance-parameter>
  9946. <parameter name="pad" transfer-ownership="none">
  9947. <doc xml:space="preserve">the #GstPad that is being added</doc>
  9948. <type name="Gst.Pad" c:type="GstPad*"/>
  9949. </parameter>
  9950. </parameters>
  9951. </method>
  9952. <method name="clear"
  9953. c:identifier="gst_flow_combiner_clear"
  9954. version="1.6">
  9955. <doc xml:space="preserve">Removes all pads from a #GstFlowCombiner and resets it to its initial state.</doc>
  9956. <return-value transfer-ownership="none">
  9957. <type name="none" c:type="void"/>
  9958. </return-value>
  9959. <parameters>
  9960. <instance-parameter name="combiner" transfer-ownership="none">
  9961. <doc xml:space="preserve">the #GstFlowCombiner to clear</doc>
  9962. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  9963. </instance-parameter>
  9964. </parameters>
  9965. </method>
  9966. <method name="free" c:identifier="gst_flow_combiner_free" version="1.4">
  9967. <doc xml:space="preserve">Frees a #GstFlowCombiner struct and all its internal data.</doc>
  9968. <return-value transfer-ownership="none">
  9969. <type name="none" c:type="void"/>
  9970. </return-value>
  9971. <parameters>
  9972. <instance-parameter name="combiner" transfer-ownership="none">
  9973. <doc xml:space="preserve">the #GstFlowCombiner to free</doc>
  9974. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  9975. </instance-parameter>
  9976. </parameters>
  9977. </method>
  9978. <method name="remove_pad"
  9979. c:identifier="gst_flow_combiner_remove_pad"
  9980. version="1.4">
  9981. <doc xml:space="preserve">Removes a #GstPad from the #GstFlowCombiner.</doc>
  9982. <return-value transfer-ownership="none">
  9983. <type name="none" c:type="void"/>
  9984. </return-value>
  9985. <parameters>
  9986. <instance-parameter name="combiner" transfer-ownership="none">
  9987. <doc xml:space="preserve">the #GstFlowCombiner</doc>
  9988. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  9989. </instance-parameter>
  9990. <parameter name="pad" transfer-ownership="none">
  9991. <doc xml:space="preserve">the #GstPad to remove</doc>
  9992. <type name="Gst.Pad" c:type="GstPad*"/>
  9993. </parameter>
  9994. </parameters>
  9995. </method>
  9996. <method name="reset"
  9997. c:identifier="gst_flow_combiner_reset"
  9998. version="1.6">
  9999. <doc xml:space="preserve">Removes all pads from a #GstFlowCombiner and resets it to its initial state.</doc>
  10000. <return-value transfer-ownership="none">
  10001. <type name="none" c:type="void"/>
  10002. </return-value>
  10003. <parameters>
  10004. <instance-parameter name="combiner" transfer-ownership="none">
  10005. <doc xml:space="preserve">the #GstFlowCombiner to clear</doc>
  10006. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  10007. </instance-parameter>
  10008. </parameters>
  10009. </method>
  10010. <method name="update_flow"
  10011. c:identifier="gst_flow_combiner_update_flow"
  10012. version="1.4">
  10013. <doc xml:space="preserve">Computes the combined flow return for the pads in it.
  10014. The #GstFlowReturn parameter should be the last flow return update for a pad
  10015. in this #GstFlowCombiner. It will use this value to be able to shortcut some
  10016. combinations and avoid looking over all pads again. e.g. The last combined
  10017. return is the same as the latest obtained #GstFlowReturn.</doc>
  10018. <return-value transfer-ownership="none">
  10019. <doc xml:space="preserve">The combined #GstFlowReturn</doc>
  10020. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10021. </return-value>
  10022. <parameters>
  10023. <instance-parameter name="combiner" transfer-ownership="none">
  10024. <doc xml:space="preserve">the #GstFlowCombiner</doc>
  10025. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  10026. </instance-parameter>
  10027. <parameter name="fret" transfer-ownership="none">
  10028. <doc xml:space="preserve">the latest #GstFlowReturn received for a pad in this #GstFlowCombiner</doc>
  10029. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10030. </parameter>
  10031. </parameters>
  10032. </method>
  10033. <method name="update_pad_flow"
  10034. c:identifier="gst_flow_combiner_update_pad_flow"
  10035. version="1.6">
  10036. <doc xml:space="preserve">Sets the provided pad's last flow return to provided value and computes
  10037. the combined flow return for the pads in it.
  10038. The #GstFlowReturn parameter should be the last flow return update for a pad
  10039. in this #GstFlowCombiner. It will use this value to be able to shortcut some
  10040. combinations and avoid looking over all pads again. e.g. The last combined
  10041. return is the same as the latest obtained #GstFlowReturn.</doc>
  10042. <return-value transfer-ownership="none">
  10043. <doc xml:space="preserve">The combined #GstFlowReturn</doc>
  10044. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10045. </return-value>
  10046. <parameters>
  10047. <instance-parameter name="combiner" transfer-ownership="none">
  10048. <doc xml:space="preserve">the #GstFlowCombiner</doc>
  10049. <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
  10050. </instance-parameter>
  10051. <parameter name="pad" transfer-ownership="none">
  10052. <doc xml:space="preserve">the #GstPad whose #GstFlowReturn to update</doc>
  10053. <type name="Gst.Pad" c:type="GstPad*"/>
  10054. </parameter>
  10055. <parameter name="fret" transfer-ownership="none">
  10056. <doc xml:space="preserve">the latest #GstFlowReturn received for a pad in this #GstFlowCombiner</doc>
  10057. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10058. </parameter>
  10059. </parameters>
  10060. </method>
  10061. </record>
  10062. <class name="PushSrc"
  10063. c:symbol-prefix="push_src"
  10064. c:type="GstPushSrc"
  10065. parent="BaseSrc"
  10066. glib:type-name="GstPushSrc"
  10067. glib:get-type="gst_push_src_get_type"
  10068. glib:type-struct="PushSrcClass">
  10069. <doc xml:space="preserve">This class is mostly useful for elements that cannot do
  10070. random access, or at least very slowly. The source usually
  10071. prefers to push out a fixed size buffer.
  10072. Subclasses usually operate in a format that is different from the
  10073. default GST_FORMAT_BYTES format of #GstBaseSrc.
  10074. Classes extending this base class will usually be scheduled
  10075. in a push based mode. If the peer accepts to operate without
  10076. offsets and within the limits of the allowed block size, this
  10077. class can operate in getrange based mode automatically. To make
  10078. this possible, the subclass should implement and override the
  10079. SCHEDULING query.
  10080. The subclass should extend the methods from the baseclass in
  10081. addition to the ::create method.
  10082. Seeking, flushing, scheduling and sync is all handled by this
  10083. base class.</doc>
  10084. <virtual-method name="alloc">
  10085. <return-value transfer-ownership="none">
  10086. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10087. </return-value>
  10088. <parameters>
  10089. <instance-parameter name="src" transfer-ownership="none">
  10090. <type name="PushSrc" c:type="GstPushSrc*"/>
  10091. </instance-parameter>
  10092. <parameter name="buf" transfer-ownership="none">
  10093. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  10094. </parameter>
  10095. </parameters>
  10096. </virtual-method>
  10097. <virtual-method name="create">
  10098. <return-value transfer-ownership="none">
  10099. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10100. </return-value>
  10101. <parameters>
  10102. <instance-parameter name="src" transfer-ownership="none">
  10103. <type name="PushSrc" c:type="GstPushSrc*"/>
  10104. </instance-parameter>
  10105. <parameter name="buf" transfer-ownership="none">
  10106. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  10107. </parameter>
  10108. </parameters>
  10109. </virtual-method>
  10110. <virtual-method name="fill">
  10111. <return-value transfer-ownership="none">
  10112. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10113. </return-value>
  10114. <parameters>
  10115. <instance-parameter name="src" transfer-ownership="none">
  10116. <type name="PushSrc" c:type="GstPushSrc*"/>
  10117. </instance-parameter>
  10118. <parameter name="buf" transfer-ownership="none">
  10119. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  10120. </parameter>
  10121. </parameters>
  10122. </virtual-method>
  10123. <field name="parent">
  10124. <type name="BaseSrc" c:type="GstBaseSrc"/>
  10125. </field>
  10126. <field name="_gst_reserved" readable="0" private="1">
  10127. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  10128. <type name="gpointer" c:type="gpointer"/>
  10129. </array>
  10130. </field>
  10131. </class>
  10132. <record name="PushSrcClass"
  10133. c:type="GstPushSrcClass"
  10134. glib:is-gtype-struct-for="PushSrc">
  10135. <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
  10136. needed. At the minimum, the @fill method should be overridden to produce
  10137. buffers.</doc>
  10138. <field name="parent_class">
  10139. <doc xml:space="preserve">Element parent class</doc>
  10140. <type name="BaseSrcClass" c:type="GstBaseSrcClass"/>
  10141. </field>
  10142. <field name="create">
  10143. <callback name="create">
  10144. <return-value transfer-ownership="none">
  10145. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10146. </return-value>
  10147. <parameters>
  10148. <parameter name="src" transfer-ownership="none">
  10149. <type name="PushSrc" c:type="GstPushSrc*"/>
  10150. </parameter>
  10151. <parameter name="buf" transfer-ownership="none">
  10152. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  10153. </parameter>
  10154. </parameters>
  10155. </callback>
  10156. </field>
  10157. <field name="alloc">
  10158. <callback name="alloc">
  10159. <return-value transfer-ownership="none">
  10160. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10161. </return-value>
  10162. <parameters>
  10163. <parameter name="src" transfer-ownership="none">
  10164. <type name="PushSrc" c:type="GstPushSrc*"/>
  10165. </parameter>
  10166. <parameter name="buf" transfer-ownership="none">
  10167. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  10168. </parameter>
  10169. </parameters>
  10170. </callback>
  10171. </field>
  10172. <field name="fill">
  10173. <callback name="fill">
  10174. <return-value transfer-ownership="none">
  10175. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10176. </return-value>
  10177. <parameters>
  10178. <parameter name="src" transfer-ownership="none">
  10179. <type name="PushSrc" c:type="GstPushSrc*"/>
  10180. </parameter>
  10181. <parameter name="buf" transfer-ownership="none">
  10182. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  10183. </parameter>
  10184. </parameters>
  10185. </callback>
  10186. </field>
  10187. <field name="_gst_reserved" readable="0" private="1">
  10188. <array zero-terminated="0" c:type="gpointer" fixed-size="4">
  10189. <type name="gpointer" c:type="gpointer"/>
  10190. </array>
  10191. </field>
  10192. </record>
  10193. <record name="QueueArray"
  10194. c:type="GstQueueArray"
  10195. disguised="1"
  10196. introspectable="0">
  10197. <doc xml:space="preserve">#GstQueueArray is an object that provides standard queue functionality
  10198. based on an array instead of linked lists. This reduces the overhead
  10199. caused by memory management by a large factor.</doc>
  10200. <method name="drop_element"
  10201. c:identifier="gst_queue_array_drop_element"
  10202. version="1.2"
  10203. introspectable="0">
  10204. <doc xml:space="preserve">Drops the queue element at position @idx from queue @array.</doc>
  10205. <return-value transfer-ownership="none" nullable="1">
  10206. <doc xml:space="preserve">the dropped element</doc>
  10207. <type name="gpointer" c:type="gpointer"/>
  10208. </return-value>
  10209. <parameters>
  10210. <instance-parameter name="array" transfer-ownership="none">
  10211. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10212. <type name="QueueArray" c:type="GstQueueArray*"/>
  10213. </instance-parameter>
  10214. <parameter name="idx" transfer-ownership="none">
  10215. <doc xml:space="preserve">index to drop</doc>
  10216. <type name="guint" c:type="guint"/>
  10217. </parameter>
  10218. </parameters>
  10219. </method>
  10220. <method name="drop_struct"
  10221. c:identifier="gst_queue_array_drop_struct"
  10222. version="1.6"
  10223. introspectable="0">
  10224. <doc xml:space="preserve">Drops the queue element at position @idx from queue @array and copies the
  10225. data of the element or structure that was removed into @p_struct if
  10226. @p_struct is set (not NULL).</doc>
  10227. <return-value transfer-ownership="none">
  10228. <doc xml:space="preserve">TRUE on success, or FALSE on error</doc>
  10229. <type name="gboolean" c:type="gboolean"/>
  10230. </return-value>
  10231. <parameters>
  10232. <instance-parameter name="array" transfer-ownership="none">
  10233. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10234. <type name="QueueArray" c:type="GstQueueArray*"/>
  10235. </instance-parameter>
  10236. <parameter name="idx" transfer-ownership="none">
  10237. <doc xml:space="preserve">index to drop</doc>
  10238. <type name="guint" c:type="guint"/>
  10239. </parameter>
  10240. <parameter name="p_struct"
  10241. transfer-ownership="none"
  10242. nullable="1"
  10243. allow-none="1">
  10244. <doc xml:space="preserve">address into which to store the data of the dropped structure, or NULL</doc>
  10245. <type name="gpointer" c:type="gpointer"/>
  10246. </parameter>
  10247. </parameters>
  10248. </method>
  10249. <method name="find"
  10250. c:identifier="gst_queue_array_find"
  10251. version="1.2"
  10252. introspectable="0">
  10253. <doc xml:space="preserve">Finds an element in the queue @array, either by comparing every element
  10254. with @func or by looking up @data if no compare function @func is provided,
  10255. and returning the index of the found element.
  10256. Note that the index is not 0-based, but an internal index number with a
  10257. random offset. The index can be used in connection with
  10258. gst_queue_array_drop_element(). FIXME: return index 0-based and make
  10259. gst_queue_array_drop_element() take a 0-based index.</doc>
  10260. <return-value transfer-ownership="none">
  10261. <doc xml:space="preserve">Index of the found element or -1 if nothing was found.</doc>
  10262. <type name="guint" c:type="guint"/>
  10263. </return-value>
  10264. <parameters>
  10265. <instance-parameter name="array" transfer-ownership="none">
  10266. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10267. <type name="QueueArray" c:type="GstQueueArray*"/>
  10268. </instance-parameter>
  10269. <parameter name="func"
  10270. transfer-ownership="none"
  10271. nullable="1"
  10272. allow-none="1"
  10273. closure="1">
  10274. <doc xml:space="preserve">comparison function, or %NULL to find @data by value</doc>
  10275. <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
  10276. </parameter>
  10277. <parameter name="data"
  10278. transfer-ownership="none"
  10279. nullable="1"
  10280. allow-none="1">
  10281. <doc xml:space="preserve">data for comparison function</doc>
  10282. <type name="gpointer" c:type="gpointer"/>
  10283. </parameter>
  10284. </parameters>
  10285. </method>
  10286. <method name="free"
  10287. c:identifier="gst_queue_array_free"
  10288. version="1.2"
  10289. introspectable="0">
  10290. <doc xml:space="preserve">Frees queue @array and all memory associated to it.</doc>
  10291. <return-value transfer-ownership="none">
  10292. <type name="none" c:type="void"/>
  10293. </return-value>
  10294. <parameters>
  10295. <instance-parameter name="array" transfer-ownership="none">
  10296. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10297. <type name="QueueArray" c:type="GstQueueArray*"/>
  10298. </instance-parameter>
  10299. </parameters>
  10300. </method>
  10301. <method name="get_length"
  10302. c:identifier="gst_queue_array_get_length"
  10303. version="1.2"
  10304. introspectable="0">
  10305. <doc xml:space="preserve">Returns the length of the queue @array</doc>
  10306. <return-value transfer-ownership="none">
  10307. <doc xml:space="preserve">the length of the queue @array.</doc>
  10308. <type name="guint" c:type="guint"/>
  10309. </return-value>
  10310. <parameters>
  10311. <instance-parameter name="array" transfer-ownership="none">
  10312. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10313. <type name="QueueArray" c:type="GstQueueArray*"/>
  10314. </instance-parameter>
  10315. </parameters>
  10316. </method>
  10317. <method name="is_empty"
  10318. c:identifier="gst_queue_array_is_empty"
  10319. version="1.2"
  10320. introspectable="0">
  10321. <doc xml:space="preserve">Checks if the queue @array is empty.</doc>
  10322. <return-value transfer-ownership="none">
  10323. <doc xml:space="preserve">%TRUE if the queue @array is empty</doc>
  10324. <type name="gboolean" c:type="gboolean"/>
  10325. </return-value>
  10326. <parameters>
  10327. <instance-parameter name="array" transfer-ownership="none">
  10328. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10329. <type name="QueueArray" c:type="GstQueueArray*"/>
  10330. </instance-parameter>
  10331. </parameters>
  10332. </method>
  10333. <method name="peek_head"
  10334. c:identifier="gst_queue_array_peek_head"
  10335. version="1.2"
  10336. introspectable="0">
  10337. <doc xml:space="preserve">Returns the head of the queue @array and does not
  10338. remove it from the queue.</doc>
  10339. <return-value transfer-ownership="none" nullable="1">
  10340. <doc xml:space="preserve">The head of the queue</doc>
  10341. <type name="gpointer" c:type="gpointer"/>
  10342. </return-value>
  10343. <parameters>
  10344. <instance-parameter name="array" transfer-ownership="none">
  10345. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10346. <type name="QueueArray" c:type="GstQueueArray*"/>
  10347. </instance-parameter>
  10348. </parameters>
  10349. </method>
  10350. <method name="peek_head_struct"
  10351. c:identifier="gst_queue_array_peek_head_struct"
  10352. version="1.6"
  10353. introspectable="0">
  10354. <doc xml:space="preserve">Returns the head of the queue @array without removing it from the queue.</doc>
  10355. <return-value transfer-ownership="none" nullable="1">
  10356. <doc xml:space="preserve">pointer to element or struct, or NULL if @array was empty. The
  10357. data pointed to by the returned pointer stays valid only as long as
  10358. the queue array is not modified further!</doc>
  10359. <type name="gpointer" c:type="gpointer"/>
  10360. </return-value>
  10361. <parameters>
  10362. <instance-parameter name="array" transfer-ownership="none">
  10363. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10364. <type name="QueueArray" c:type="GstQueueArray*"/>
  10365. </instance-parameter>
  10366. </parameters>
  10367. </method>
  10368. <method name="pop_head"
  10369. c:identifier="gst_queue_array_pop_head"
  10370. version="1.2"
  10371. introspectable="0">
  10372. <doc xml:space="preserve">Returns and head of the queue @array and removes
  10373. it from the queue.</doc>
  10374. <return-value transfer-ownership="none" nullable="1">
  10375. <doc xml:space="preserve">The head of the queue</doc>
  10376. <type name="gpointer" c:type="gpointer"/>
  10377. </return-value>
  10378. <parameters>
  10379. <instance-parameter name="array" transfer-ownership="none">
  10380. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10381. <type name="QueueArray" c:type="GstQueueArray*"/>
  10382. </instance-parameter>
  10383. </parameters>
  10384. </method>
  10385. <method name="pop_head_struct"
  10386. c:identifier="gst_queue_array_pop_head_struct"
  10387. version="1.6"
  10388. introspectable="0">
  10389. <doc xml:space="preserve">Returns the head of the queue @array and removes it from the queue.</doc>
  10390. <return-value transfer-ownership="none" nullable="1">
  10391. <doc xml:space="preserve">pointer to element or struct, or NULL if @array was empty. The
  10392. data pointed to by the returned pointer stays valid only as long as
  10393. the queue array is not modified further!</doc>
  10394. <type name="gpointer" c:type="gpointer"/>
  10395. </return-value>
  10396. <parameters>
  10397. <instance-parameter name="array" transfer-ownership="none">
  10398. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10399. <type name="QueueArray" c:type="GstQueueArray*"/>
  10400. </instance-parameter>
  10401. </parameters>
  10402. </method>
  10403. <method name="push_tail"
  10404. c:identifier="gst_queue_array_push_tail"
  10405. version="1.2"
  10406. introspectable="0">
  10407. <doc xml:space="preserve">Pushes @data to the tail of the queue @array.</doc>
  10408. <return-value transfer-ownership="none">
  10409. <type name="none" c:type="void"/>
  10410. </return-value>
  10411. <parameters>
  10412. <instance-parameter name="array" transfer-ownership="none">
  10413. <doc xml:space="preserve">a #GstQueueArray object</doc>
  10414. <type name="QueueArray" c:type="GstQueueArray*"/>
  10415. </instance-parameter>
  10416. <parameter name="data"
  10417. transfer-ownership="none"
  10418. nullable="1"
  10419. allow-none="1">
  10420. <doc xml:space="preserve">object to push</doc>
  10421. <type name="gpointer" c:type="gpointer"/>
  10422. </parameter>
  10423. </parameters>
  10424. </method>
  10425. <method name="push_tail_struct"
  10426. c:identifier="gst_queue_array_push_tail_struct">
  10427. <return-value transfer-ownership="none">
  10428. <type name="none" c:type="void"/>
  10429. </return-value>
  10430. <parameters>
  10431. <instance-parameter name="array" transfer-ownership="none">
  10432. <type name="QueueArray" c:type="GstQueueArray*"/>
  10433. </instance-parameter>
  10434. <parameter name="p_struct"
  10435. transfer-ownership="none"
  10436. nullable="1"
  10437. allow-none="1">
  10438. <type name="gpointer" c:type="gpointer"/>
  10439. </parameter>
  10440. </parameters>
  10441. </method>
  10442. <function name="new"
  10443. c:identifier="gst_queue_array_new"
  10444. version="1.2"
  10445. introspectable="0">
  10446. <doc xml:space="preserve">Allocates a new #GstQueueArray object with an initial
  10447. queue size of @initial_size.</doc>
  10448. <return-value>
  10449. <doc xml:space="preserve">a new #GstQueueArray object</doc>
  10450. <type name="QueueArray" c:type="GstQueueArray*"/>
  10451. </return-value>
  10452. <parameters>
  10453. <parameter name="initial_size" transfer-ownership="none">
  10454. <doc xml:space="preserve">Initial size of the new queue</doc>
  10455. <type name="guint" c:type="guint"/>
  10456. </parameter>
  10457. </parameters>
  10458. </function>
  10459. <function name="new_for_struct"
  10460. c:identifier="gst_queue_array_new_for_struct"
  10461. version="1.6"
  10462. introspectable="0">
  10463. <doc xml:space="preserve">Allocates a new #GstQueueArray object for elements (e.g. structures)
  10464. of size @struct_size, with an initial queue size of @initial_size.</doc>
  10465. <return-value>
  10466. <doc xml:space="preserve">a new #GstQueueArray object</doc>
  10467. <type name="QueueArray" c:type="GstQueueArray*"/>
  10468. </return-value>
  10469. <parameters>
  10470. <parameter name="struct_size" transfer-ownership="none">
  10471. <doc xml:space="preserve">Size of each element (e.g. structure) in the array</doc>
  10472. <type name="gsize" c:type="gsize"/>
  10473. </parameter>
  10474. <parameter name="initial_size" transfer-ownership="none">
  10475. <doc xml:space="preserve">Initial size of the new queue</doc>
  10476. <type name="guint" c:type="guint"/>
  10477. </parameter>
  10478. </parameters>
  10479. </function>
  10480. </record>
  10481. <callback name="TypeFindHelperGetRangeFunction"
  10482. c:type="GstTypeFindHelperGetRangeFunction">
  10483. <doc xml:space="preserve">This function will be called by gst_type_find_helper_get_range() when
  10484. typefinding functions request to peek at the data of a stream at certain
  10485. offsets. If this function returns GST_FLOW_OK, the result buffer will be
  10486. stored in @buffer. The contents of @buffer is invalid for any other
  10487. return value.
  10488. This function is supposed to behave exactly like a #GstPadGetRangeFunction.</doc>
  10489. <return-value transfer-ownership="none">
  10490. <doc xml:space="preserve">GST_FLOW_OK for success</doc>
  10491. <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
  10492. </return-value>
  10493. <parameters>
  10494. <parameter name="obj" transfer-ownership="none">
  10495. <doc xml:space="preserve">a #GstObject that will handle the getrange request</doc>
  10496. <type name="Gst.Object" c:type="GstObject*"/>
  10497. </parameter>
  10498. <parameter name="parent"
  10499. transfer-ownership="none"
  10500. nullable="1"
  10501. allow-none="1">
  10502. <doc xml:space="preserve">the parent of @obj or %NULL</doc>
  10503. <type name="Gst.Object" c:type="GstObject*"/>
  10504. </parameter>
  10505. <parameter name="offset" transfer-ownership="none">
  10506. <doc xml:space="preserve">the offset of the range</doc>
  10507. <type name="guint64" c:type="guint64"/>
  10508. </parameter>
  10509. <parameter name="length" transfer-ownership="none">
  10510. <doc xml:space="preserve">the length of the range</doc>
  10511. <type name="guint" c:type="guint"/>
  10512. </parameter>
  10513. <parameter name="buffer" transfer-ownership="none">
  10514. <doc xml:space="preserve">a memory location to hold the result buffer</doc>
  10515. <type name="Gst.Buffer" c:type="GstBuffer**"/>
  10516. </parameter>
  10517. </parameters>
  10518. </callback>
  10519. <function name="bit_reader_new"
  10520. c:identifier="gst_bit_reader_new"
  10521. moved-to="BitReader.new"
  10522. introspectable="0">
  10523. <doc xml:space="preserve">Create a new #GstBitReader instance, which will read from @data.
  10524. Free-function: gst_bit_reader_free</doc>
  10525. <return-value transfer-ownership="full">
  10526. <doc xml:space="preserve">a new #GstBitReader instance</doc>
  10527. <type name="BitReader" c:type="GstBitReader*"/>
  10528. </return-value>
  10529. <parameters>
  10530. <parameter name="data" transfer-ownership="none">
  10531. <doc xml:space="preserve">Data from which the #GstBitReader
  10532. should read</doc>
  10533. <array length="1" zero-terminated="0" c:type="guint8*">
  10534. <type name="guint8" c:type="guint8"/>
  10535. </array>
  10536. </parameter>
  10537. <parameter name="size" transfer-ownership="none">
  10538. <doc xml:space="preserve">Size of @data in bytes</doc>
  10539. <type name="guint" c:type="guint"/>
  10540. </parameter>
  10541. </parameters>
  10542. </function>
  10543. <function name="byte_reader_new"
  10544. c:identifier="gst_byte_reader_new"
  10545. moved-to="ByteReader.new"
  10546. introspectable="0">
  10547. <doc xml:space="preserve">Create a new #GstByteReader instance, which will read from @data.
  10548. Free-function: gst_byte_reader_free</doc>
  10549. <return-value transfer-ownership="full">
  10550. <doc xml:space="preserve">a new #GstByteReader instance</doc>
  10551. <type name="ByteReader" c:type="GstByteReader*"/>
  10552. </return-value>
  10553. <parameters>
  10554. <parameter name="data" transfer-ownership="none">
  10555. <doc xml:space="preserve">data from which the
  10556. #GstByteReader should read</doc>
  10557. <array length="1" zero-terminated="0" c:type="guint8*">
  10558. <type name="guint8" c:type="guint8"/>
  10559. </array>
  10560. </parameter>
  10561. <parameter name="size" transfer-ownership="none">
  10562. <doc xml:space="preserve">Size of @data in bytes</doc>
  10563. <type name="guint" c:type="guint"/>
  10564. </parameter>
  10565. </parameters>
  10566. </function>
  10567. <function name="byte_writer_new"
  10568. c:identifier="gst_byte_writer_new"
  10569. moved-to="ByteWriter.new"
  10570. introspectable="0">
  10571. <doc xml:space="preserve">Creates a new, empty #GstByteWriter instance
  10572. Free-function: gst_byte_writer_free</doc>
  10573. <return-value transfer-ownership="full">
  10574. <doc xml:space="preserve">a new, empty #GstByteWriter instance</doc>
  10575. <type name="ByteWriter" c:type="GstByteWriter*"/>
  10576. </return-value>
  10577. </function>
  10578. <function name="byte_writer_new_with_data"
  10579. c:identifier="gst_byte_writer_new_with_data"
  10580. moved-to="ByteWriter.new_with_data"
  10581. introspectable="0">
  10582. <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
  10583. memory area. If @initialized is %TRUE it is possible to
  10584. read @size bytes from the #GstByteWriter from the beginning.
  10585. Free-function: gst_byte_writer_free</doc>
  10586. <return-value transfer-ownership="full">
  10587. <doc xml:space="preserve">a new #GstByteWriter instance</doc>
  10588. <type name="ByteWriter" c:type="GstByteWriter*"/>
  10589. </return-value>
  10590. <parameters>
  10591. <parameter name="data" transfer-ownership="none">
  10592. <doc xml:space="preserve">Memory area for writing</doc>
  10593. <type name="guint8" c:type="guint8*"/>
  10594. </parameter>
  10595. <parameter name="size" transfer-ownership="none">
  10596. <doc xml:space="preserve">Size of @data in bytes</doc>
  10597. <type name="guint" c:type="guint"/>
  10598. </parameter>
  10599. <parameter name="initialized" transfer-ownership="none">
  10600. <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
  10601. <type name="gboolean" c:type="gboolean"/>
  10602. </parameter>
  10603. </parameters>
  10604. </function>
  10605. <function name="byte_writer_new_with_size"
  10606. c:identifier="gst_byte_writer_new_with_size"
  10607. moved-to="ByteWriter.new_with_size"
  10608. introspectable="0">
  10609. <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
  10610. initial data size.
  10611. Free-function: gst_byte_writer_free</doc>
  10612. <return-value transfer-ownership="full">
  10613. <doc xml:space="preserve">a new #GstByteWriter instance</doc>
  10614. <type name="ByteWriter" c:type="GstByteWriter*"/>
  10615. </return-value>
  10616. <parameters>
  10617. <parameter name="size" transfer-ownership="none">
  10618. <doc xml:space="preserve">Initial size of data</doc>
  10619. <type name="guint" c:type="guint"/>
  10620. </parameter>
  10621. <parameter name="fixed" transfer-ownership="none">
  10622. <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
  10623. <type name="gboolean" c:type="gboolean"/>
  10624. </parameter>
  10625. </parameters>
  10626. </function>
  10627. <function name="queue_array_new"
  10628. c:identifier="gst_queue_array_new"
  10629. moved-to="QueueArray.new"
  10630. version="1.2"
  10631. introspectable="0">
  10632. <doc xml:space="preserve">Allocates a new #GstQueueArray object with an initial
  10633. queue size of @initial_size.</doc>
  10634. <return-value>
  10635. <doc xml:space="preserve">a new #GstQueueArray object</doc>
  10636. <type name="QueueArray" c:type="GstQueueArray*"/>
  10637. </return-value>
  10638. <parameters>
  10639. <parameter name="initial_size" transfer-ownership="none">
  10640. <doc xml:space="preserve">Initial size of the new queue</doc>
  10641. <type name="guint" c:type="guint"/>
  10642. </parameter>
  10643. </parameters>
  10644. </function>
  10645. <function name="queue_array_new_for_struct"
  10646. c:identifier="gst_queue_array_new_for_struct"
  10647. moved-to="QueueArray.new_for_struct"
  10648. version="1.6"
  10649. introspectable="0">
  10650. <doc xml:space="preserve">Allocates a new #GstQueueArray object for elements (e.g. structures)
  10651. of size @struct_size, with an initial queue size of @initial_size.</doc>
  10652. <return-value>
  10653. <doc xml:space="preserve">a new #GstQueueArray object</doc>
  10654. <type name="QueueArray" c:type="GstQueueArray*"/>
  10655. </return-value>
  10656. <parameters>
  10657. <parameter name="struct_size" transfer-ownership="none">
  10658. <doc xml:space="preserve">Size of each element (e.g. structure) in the array</doc>
  10659. <type name="gsize" c:type="gsize"/>
  10660. </parameter>
  10661. <parameter name="initial_size" transfer-ownership="none">
  10662. <doc xml:space="preserve">Initial size of the new queue</doc>
  10663. <type name="guint" c:type="guint"/>
  10664. </parameter>
  10665. </parameters>
  10666. </function>
  10667. <function name="type_find_helper" c:identifier="gst_type_find_helper">
  10668. <doc xml:space="preserve">Tries to find what type of data is flowing from the given source #GstPad.
  10669. Free-function: gst_caps_unref</doc>
  10670. <return-value transfer-ownership="full" nullable="1">
  10671. <doc xml:space="preserve">the #GstCaps corresponding to the data
  10672. stream. Returns %NULL if no #GstCaps matches the data stream.</doc>
  10673. <type name="Gst.Caps" c:type="GstCaps*"/>
  10674. </return-value>
  10675. <parameters>
  10676. <parameter name="src" transfer-ownership="none">
  10677. <doc xml:space="preserve">A source #GstPad</doc>
  10678. <type name="Gst.Pad" c:type="GstPad*"/>
  10679. </parameter>
  10680. <parameter name="size" transfer-ownership="none">
  10681. <doc xml:space="preserve">The length in bytes</doc>
  10682. <type name="guint64" c:type="guint64"/>
  10683. </parameter>
  10684. </parameters>
  10685. </function>
  10686. <function name="type_find_helper_for_buffer"
  10687. c:identifier="gst_type_find_helper_for_buffer">
  10688. <doc xml:space="preserve">Tries to find what type of data is contained in the given #GstBuffer, the
  10689. assumption being that the buffer represents the beginning of the stream or
  10690. file.
  10691. All available typefinders will be called on the data in order of rank. If
  10692. a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
  10693. typefinding is stopped immediately and the found caps will be returned
  10694. right away. Otherwise, all available typefind functions will the tried,
  10695. and the caps with the highest probability will be returned, or %NULL if
  10696. the content of the buffer could not be identified.
  10697. Free-function: gst_caps_unref</doc>
  10698. <return-value transfer-ownership="full" nullable="1">
  10699. <doc xml:space="preserve">the #GstCaps corresponding to the data,
  10700. or %NULL if no type could be found. The caller should free the caps
  10701. returned with gst_caps_unref().</doc>
  10702. <type name="Gst.Caps" c:type="GstCaps*"/>
  10703. </return-value>
  10704. <parameters>
  10705. <parameter name="obj"
  10706. transfer-ownership="none"
  10707. nullable="1"
  10708. allow-none="1">
  10709. <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
  10710. <type name="Gst.Object" c:type="GstObject*"/>
  10711. </parameter>
  10712. <parameter name="buf" transfer-ownership="none">
  10713. <doc xml:space="preserve">a #GstBuffer with data to typefind</doc>
  10714. <type name="Gst.Buffer" c:type="GstBuffer*"/>
  10715. </parameter>
  10716. <parameter name="prob"
  10717. direction="out"
  10718. caller-allocates="0"
  10719. transfer-ownership="full"
  10720. optional="1"
  10721. allow-none="1">
  10722. <doc xml:space="preserve">location to store the probability of the found
  10723. caps, or %NULL</doc>
  10724. <type name="Gst.TypeFindProbability"
  10725. c:type="GstTypeFindProbability*"/>
  10726. </parameter>
  10727. </parameters>
  10728. </function>
  10729. <function name="type_find_helper_for_data"
  10730. c:identifier="gst_type_find_helper_for_data">
  10731. <doc xml:space="preserve">Tries to find what type of data is contained in the given @data, the
  10732. assumption being that the data represents the beginning of the stream or
  10733. file.
  10734. All available typefinders will be called on the data in order of rank. If
  10735. a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
  10736. typefinding is stopped immediately and the found caps will be returned
  10737. right away. Otherwise, all available typefind functions will the tried,
  10738. and the caps with the highest probability will be returned, or %NULL if
  10739. the content of @data could not be identified.
  10740. Free-function: gst_caps_unref</doc>
  10741. <return-value transfer-ownership="full" nullable="1">
  10742. <doc xml:space="preserve">the #GstCaps corresponding to the data,
  10743. or %NULL if no type could be found. The caller should free the caps
  10744. returned with gst_caps_unref().</doc>
  10745. <type name="Gst.Caps" c:type="GstCaps*"/>
  10746. </return-value>
  10747. <parameters>
  10748. <parameter name="obj"
  10749. transfer-ownership="none"
  10750. nullable="1"
  10751. allow-none="1">
  10752. <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
  10753. <type name="Gst.Object" c:type="GstObject*"/>
  10754. </parameter>
  10755. <parameter name="data" transfer-ownership="none">
  10756. <doc xml:space="preserve">a pointer with data to typefind</doc>
  10757. <type name="guint8" c:type="const guint8*"/>
  10758. </parameter>
  10759. <parameter name="size" transfer-ownership="none">
  10760. <doc xml:space="preserve">the size of @data</doc>
  10761. <type name="gsize" c:type="gsize"/>
  10762. </parameter>
  10763. <parameter name="prob"
  10764. direction="out"
  10765. caller-allocates="0"
  10766. transfer-ownership="full"
  10767. optional="1"
  10768. allow-none="1">
  10769. <doc xml:space="preserve">location to store the probability of the found
  10770. caps, or %NULL</doc>
  10771. <type name="Gst.TypeFindProbability"
  10772. c:type="GstTypeFindProbability*"/>
  10773. </parameter>
  10774. </parameters>
  10775. </function>
  10776. <function name="type_find_helper_for_extension"
  10777. c:identifier="gst_type_find_helper_for_extension">
  10778. <doc xml:space="preserve">Tries to find the best #GstCaps associated with @extension.
  10779. All available typefinders will be checked against the extension in order
  10780. of rank. The caps of the first typefinder that can handle @extension will be
  10781. returned.
  10782. Free-function: gst_caps_unref</doc>
  10783. <return-value transfer-ownership="full" nullable="1">
  10784. <doc xml:space="preserve">the #GstCaps corresponding to
  10785. @extension, or %NULL if no type could be found. The caller should free
  10786. the caps returned with gst_caps_unref().</doc>
  10787. <type name="Gst.Caps" c:type="GstCaps*"/>
  10788. </return-value>
  10789. <parameters>
  10790. <parameter name="obj"
  10791. transfer-ownership="none"
  10792. nullable="1"
  10793. allow-none="1">
  10794. <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
  10795. <type name="Gst.Object" c:type="GstObject*"/>
  10796. </parameter>
  10797. <parameter name="extension" transfer-ownership="none">
  10798. <doc xml:space="preserve">an extension</doc>
  10799. <type name="utf8" c:type="const gchar*"/>
  10800. </parameter>
  10801. </parameters>
  10802. </function>
  10803. <function name="type_find_helper_get_range"
  10804. c:identifier="gst_type_find_helper_get_range">
  10805. <doc xml:space="preserve">Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
  10806. however, this function will use the specified function @func to obtain the
  10807. data needed by the typefind functions, rather than operating on a given
  10808. source pad. This is useful mostly for elements like tag demuxers which
  10809. strip off data at the beginning and/or end of a file and want to typefind
  10810. the stripped data stream before adding their own source pad (the specified
  10811. callback can then call the upstream peer pad with offsets adjusted for the
  10812. tag size, for example).
  10813. When @extension is not %NULL, this function will first try the typefind
  10814. functions for the given extension, which might speed up the typefinding
  10815. in many cases.
  10816. Free-function: gst_caps_unref</doc>
  10817. <return-value transfer-ownership="full" nullable="1">
  10818. <doc xml:space="preserve">the #GstCaps corresponding to the data
  10819. stream. Returns %NULL if no #GstCaps matches the data stream.</doc>
  10820. <type name="Gst.Caps" c:type="GstCaps*"/>
  10821. </return-value>
  10822. <parameters>
  10823. <parameter name="obj" transfer-ownership="none">
  10824. <doc xml:space="preserve">A #GstObject that will be passed as first argument to @func</doc>
  10825. <type name="Gst.Object" c:type="GstObject*"/>
  10826. </parameter>
  10827. <parameter name="parent"
  10828. transfer-ownership="none"
  10829. nullable="1"
  10830. allow-none="1">
  10831. <doc xml:space="preserve">the parent of @obj or %NULL</doc>
  10832. <type name="Gst.Object" c:type="GstObject*"/>
  10833. </parameter>
  10834. <parameter name="func" transfer-ownership="none" scope="call">
  10835. <doc xml:space="preserve">A generic #GstTypeFindHelperGetRangeFunction that will
  10836. be used to access data at random offsets when doing the typefinding</doc>
  10837. <type name="TypeFindHelperGetRangeFunction"
  10838. c:type="GstTypeFindHelperGetRangeFunction"/>
  10839. </parameter>
  10840. <parameter name="size" transfer-ownership="none">
  10841. <doc xml:space="preserve">The length in bytes</doc>
  10842. <type name="guint64" c:type="guint64"/>
  10843. </parameter>
  10844. <parameter name="extension" transfer-ownership="none">
  10845. <doc xml:space="preserve">extension of the media</doc>
  10846. <type name="utf8" c:type="const gchar*"/>
  10847. </parameter>
  10848. <parameter name="prob"
  10849. direction="out"
  10850. caller-allocates="0"
  10851. transfer-ownership="full"
  10852. optional="1"
  10853. allow-none="1">
  10854. <doc xml:space="preserve">location to store the probability of the found
  10855. caps, or %NULL</doc>
  10856. <type name="Gst.TypeFindProbability"
  10857. c:type="GstTypeFindProbability*"/>
  10858. </parameter>
  10859. </parameters>
  10860. </function>
  10861. </namespace>
  10862. </repository>