1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096 |
- <?xml version="1.0"?>
- <!-- This file was automatically generated from C sources - DO NOT EDIT!
- To affect the contents of this file, edit the original C definitions,
- and/or use gtk-doc annotations. -->
- <repository version="1.2"
- xmlns="http://www.gtk.org/introspection/core/1.0"
- xmlns:c="http://www.gtk.org/introspection/c/1.0"
- xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
- <include name="Gst" version="1.0"/>
- <package name="gstreamer-base-1.0"/>
- <c:include name="gst/base/base.h"/>
- <namespace name="GstBase"
- version="1.0"
- shared-library="libgstbase-1.0.so.0"
- c:identifier-prefixes="Gst"
- c:symbol-prefixes="gst">
- <class name="Adapter"
- c:symbol-prefix="adapter"
- c:type="GstAdapter"
- parent="GObject.Object"
- glib:type-name="GstAdapter"
- glib:get-type="gst_adapter_get_type"
- glib:type-struct="AdapterClass">
- <doc xml:space="preserve">This class is for elements that receive buffers in an undesired size.
- While for example raw video contains one image per buffer, the same is not
- true for a lot of other formats, especially those that come directly from
- a file. So if you have undefined buffer sizes and require a specific size,
- this object is for you.
- An adapter is created with gst_adapter_new(). It can be freed again with
- g_object_unref().
- The theory of operation is like this: All buffers received are put
- into the adapter using gst_adapter_push() and the data is then read back
- in chunks of the desired size using gst_adapter_map()/gst_adapter_unmap()
- and/or gst_adapter_copy(). After the data has been processed, it is freed
- using gst_adapter_unmap().
- Other methods such as gst_adapter_take() and gst_adapter_take_buffer()
- combine gst_adapter_map() and gst_adapter_unmap() in one method and are
- potentially more convenient for some use cases.
- For example, a sink pad's chain function that needs to pass data to a library
- in 512-byte chunks could be implemented like this:
- |[<!-- language="C" -->
- static GstFlowReturn
- sink_pad_chain (GstPad *pad, GstObject *parent, GstBuffer *buffer)
- {
- MyElement *this;
- GstAdapter *adapter;
- GstFlowReturn ret = GST_FLOW_OK;
- this = MY_ELEMENT (parent);
- adapter = this->adapter;
- // put buffer into adapter
- gst_adapter_push (adapter, buffer);
- // while we can read out 512 bytes, process them
- while (gst_adapter_available (adapter) >= 512 && ret == GST_FLOW_OK) {
- const guint8 *data = gst_adapter_map (adapter, 512);
- // use flowreturn as an error value
- ret = my_library_foo (data);
- gst_adapter_unmap (adapter);
- gst_adapter_flush (adapter, 512);
- }
- return ret;
- }
- ]|
- For another example, a simple element inside GStreamer that uses #GstAdapter
- is the libvisual element.
- An element using #GstAdapter in its sink pad chain function should ensure that
- when the FLUSH_STOP event is received, that any queued data is cleared using
- gst_adapter_clear(). Data should also be cleared or processed on EOS and
- when changing state from %GST_STATE_PAUSED to %GST_STATE_READY.
- Also check the GST_BUFFER_FLAG_DISCONT flag on the buffer. Some elements might
- need to clear the adapter after a discontinuity.
- The adapter will keep track of the timestamps of the buffers
- that were pushed. The last seen timestamp before the current position
- can be queried with gst_adapter_prev_pts(). This function can
- optionally return the number of bytes between the start of the buffer that
- carried the timestamp and the current adapter position. The distance is
- useful when dealing with, for example, raw audio samples because it allows
- you to calculate the timestamp of the current adapter position by using the
- last seen timestamp and the amount of bytes since. Additionally, the
- gst_adapter_prev_pts_at_offset() can be used to determine the last
- seen timestamp at a particular offset in the adapter.
- A last thing to note is that while #GstAdapter is pretty optimized,
- merging buffers still might be an operation that requires a malloc() and
- memcpy() operation, and these operations are not the fastest. Because of
- this, some functions like gst_adapter_available_fast() are provided to help
- speed up such cases should you want to. To avoid repeated memory allocations,
- gst_adapter_copy() can be used to copy data into a (statically allocated)
- user provided buffer.
- #GstAdapter is not MT safe. All operations on an adapter must be serialized by
- the caller. This is not normally a problem, however, as the normal use case
- of #GstAdapter is inside one pad's chain function, in which case access is
- serialized via the pad's STREAM_LOCK.
- Note that gst_adapter_push() takes ownership of the buffer passed. Use
- gst_buffer_ref() before pushing it into the adapter if you still want to
- access the buffer later. The adapter will never modify the data in the
- buffer pushed in it.</doc>
- <constructor name="new" c:identifier="gst_adapter_new">
- <doc xml:space="preserve">Creates a new #GstAdapter. Free with g_object_unref().</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </return-value>
- </constructor>
- <method name="available" c:identifier="gst_adapter_available">
- <doc xml:space="preserve">Gets the maximum amount of bytes available, that is it returns the maximum
- value that can be supplied to gst_adapter_map() without that function
- returning %NULL.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">number of bytes available in @adapter</doc>
- <type name="gsize" c:type="gsize"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="available_fast" c:identifier="gst_adapter_available_fast">
- <doc xml:space="preserve">Gets the maximum number of bytes that are immediately available without
- requiring any expensive operations (like copying the data into a
- temporary buffer).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">number of bytes that are available in @adapter without expensive
- operations</doc>
- <type name="gsize" c:type="gsize"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="clear" c:identifier="gst_adapter_clear">
- <doc xml:space="preserve">Removes all buffers from @adapter.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="copy"
- c:identifier="gst_adapter_copy"
- shadowed-by="copy_bytes"
- introspectable="0">
- <doc xml:space="preserve">Copies @size bytes of data starting at @offset out of the buffers
- contained in #GstAdapter into an array @dest provided by the caller.
- The array @dest should be large enough to contain @size bytes.
- The user should check that the adapter has (@offset + @size) bytes
- available before calling this function.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="dest"
- direction="out"
- caller-allocates="1"
- transfer-ownership="none">
- <doc xml:space="preserve">
- the memory to copy into</doc>
- <array length="2" zero-terminated="0" c:type="gpointer">
- <type name="guint8"/>
- </array>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">the bytes offset in the adapter to start from</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="size"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">the number of bytes to copy</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="copy_bytes"
- c:identifier="gst_adapter_copy_bytes"
- shadows="copy"
- version="1.4">
- <doc xml:space="preserve">Similar to gst_adapter_copy, but more suitable for language bindings. @size
- bytes of data starting at @offset will be copied out of the buffers contained
- in @adapter and into a new #GBytes structure which is returned. Depending on
- the value of the @size argument an empty #GBytes structure may be returned.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">A new #GBytes structure containing the copied data.</doc>
- <type name="GLib.Bytes" c:type="GBytes*"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">the bytes offset in the adapter to start from</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to copy</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="flush" c:identifier="gst_adapter_flush">
- <doc xml:space="preserve">Flushes the first @flush bytes in the @adapter. The caller must ensure that
- at least this many bytes are available.
- See also: gst_adapter_map(), gst_adapter_unmap()</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="flush" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to flush</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_buffer"
- c:identifier="gst_adapter_get_buffer"
- version="1.6">
- <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter, but
- does not flush them from the adapter. See gst_adapter_take_buffer()
- for details.
- Caller owns a reference to the returned buffer. gst_buffer_unref() after
- usage.
- Free-function: gst_buffer_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GstBuffer containing the first
- @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
- gst_buffer_unref() when no longer needed.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to get</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_buffer_fast"
- c:identifier="gst_adapter_get_buffer_fast"
- version="1.6">
- <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter, but
- does not flush them from the adapter. See gst_adapter_take_buffer_fast()
- for details.
- Caller owns a reference to the returned buffer. gst_buffer_unref() after
- usage.
- Free-function: gst_buffer_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GstBuffer containing the first
- @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
- gst_buffer_unref() when no longer needed.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to get</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_buffer_list"
- c:identifier="gst_adapter_get_buffer_list"
- version="1.6">
- <doc xml:space="preserve">Returns a #GstBufferList of buffers containing the first @nbytes bytes of
- the @adapter but does not flush them from the adapter. See
- gst_adapter_take_buffer_list() for details.
- Caller owns the returned list. Call gst_buffer_list_unref() to free
- the list after usage.</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GstBufferList of buffers containing
- the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
- available</doc>
- <type name="Gst.BufferList" c:type="GstBufferList*"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to get</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_list"
- c:identifier="gst_adapter_get_list"
- version="1.6">
- <doc xml:space="preserve">Returns a #GList of buffers containing the first @nbytes bytes of the
- @adapter, but does not flush them from the adapter. See
- gst_adapter_take_list() for details.
- Caller owns returned list and contained buffers. gst_buffer_unref() each
- buffer in the list before freeing the list after usage.</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GList of
- buffers containing the first @nbytes of the adapter, or %NULL if @nbytes
- bytes are not available</doc>
- <type name="GLib.List" c:type="GList*">
- <type name="Gst.Buffer"/>
- </type>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to get</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="map" c:identifier="gst_adapter_map">
- <doc xml:space="preserve">Gets the first @size bytes stored in the @adapter. The returned pointer is
- valid until the next function is called on the adapter.
- Note that setting the returned pointer as the data of a #GstBuffer is
- incorrect for general-purpose plugins. The reason is that if a downstream
- element stores the buffer so that it has access to it outside of the bounds
- of its chain function, the buffer will have an invalid data pointer after
- your element flushes the bytes. In that case you should use
- gst_adapter_take(), which returns a freshly-allocated buffer that you can set
- as #GstBuffer memory or the potentially more performant
- gst_adapter_take_buffer().
- Returns %NULL if @size bytes are not available.</doc>
- <return-value transfer-ownership="none" nullable="1">
- <doc xml:space="preserve">
- a pointer to the first @size bytes of data, or %NULL</doc>
- <array length="0" zero-terminated="0" c:type="gconstpointer">
- <type name="guint8"/>
- </array>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="size"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">the number of bytes to map/peek</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="masked_scan_uint32"
- c:identifier="gst_adapter_masked_scan_uint32">
- <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
- starting from offset @offset.
- The bytes in @pattern and @mask are interpreted left-to-right, regardless
- of endianness. All four bytes of the pattern must be present in the
- adapter for it to match, even if the first or last bytes are masked out.
- It is an error to call this function without making sure that there is
- enough data (offset+size bytes) in the adapter.
- This function calls gst_adapter_masked_scan_uint32_peek() passing %NULL
- for value.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">offset of the first match, or -1 if no match was found.
- Example:
- <programlisting>
- // Assume the adapter contains 0x00 0x01 0x02 ... 0xfe 0xff
- gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 0, 256);
- // -> returns 0
- gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x00010203, 1, 255);
- // -> returns -1
- gst_adapter_masked_scan_uint32 (adapter, 0xffffffff, 0x01020304, 1, 255);
- // -> returns 1
- gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0001, 0, 256);
- // -> returns -1
- gst_adapter_masked_scan_uint32 (adapter, 0xffff, 0x0203, 0, 256);
- // -> returns 0
- gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 256);
- // -> returns 2
- gst_adapter_masked_scan_uint32 (adapter, 0xffff0000, 0x02030000, 0, 4);
- // -> returns -1
- </programlisting></doc>
- <type name="gssize" c:type="gssize"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="mask" transfer-ownership="none">
- <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="pattern" transfer-ownership="none">
- <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">offset into the adapter data from which to start scanning, returns
- the last scanned position.</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">number of bytes to scan from offset</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="masked_scan_uint32_peek"
- c:identifier="gst_adapter_masked_scan_uint32_peek">
- <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the adapter data,
- starting from offset @offset. If a match is found, the value that matched
- is returned through @value, otherwise @value is left untouched.
- The bytes in @pattern and @mask are interpreted left-to-right, regardless
- of endianness. All four bytes of the pattern must be present in the
- adapter for it to match, even if the first or last bytes are masked out.
- It is an error to call this function without making sure that there is
- enough data (offset+size bytes) in the adapter.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">offset of the first match, or -1 if no match was found.</doc>
- <type name="gssize" c:type="gssize"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="mask" transfer-ownership="none">
- <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="pattern" transfer-ownership="none">
- <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">offset into the adapter data from which to start scanning, returns
- the last scanned position.</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">number of bytes to scan from offset</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="value"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">pointer to uint32 to return matching data</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="prev_dts" c:identifier="gst_adapter_prev_dts">
- <doc xml:space="preserve">Get the dts that was before the current byte in the adapter. When
- @distance is given, the amount of bytes between the dts and the current
- position is returned.
- The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
- the adapter is first created or when it is cleared. This also means that before
- the first byte with a dts is removed from the adapter, the dts
- and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The previously seen dts.</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="distance"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="prev_dts_at_offset"
- c:identifier="gst_adapter_prev_dts_at_offset"
- version="1.2">
- <doc xml:space="preserve">Get the dts that was before the byte at offset @offset in the adapter. When
- @distance is given, the amount of bytes between the dts and the current
- position is returned.
- The dts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
- the adapter is first created or when it is cleared. This also means that before
- the first byte with a dts is removed from the adapter, the dts
- and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The previously seen dts at given offset.</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">the offset in the adapter at which to get timestamp</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="distance"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="prev_pts" c:identifier="gst_adapter_prev_pts">
- <doc xml:space="preserve">Get the pts that was before the current byte in the adapter. When
- @distance is given, the amount of bytes between the pts and the current
- position is returned.
- The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
- the adapter is first created or when it is cleared. This also means that before
- the first byte with a pts is removed from the adapter, the pts
- and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The previously seen pts.</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="distance"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="prev_pts_at_offset"
- c:identifier="gst_adapter_prev_pts_at_offset"
- version="1.2">
- <doc xml:space="preserve">Get the pts that was before the byte at offset @offset in the adapter. When
- @distance is given, the amount of bytes between the pts and the current
- position is returned.
- The pts is reset to GST_CLOCK_TIME_NONE and the distance is set to 0 when
- the adapter is first created or when it is cleared. This also means that before
- the first byte with a pts is removed from the adapter, the pts
- and distance returned are GST_CLOCK_TIME_NONE and 0 respectively.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The previously seen pts at given offset.</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">the offset in the adapter at which to get timestamp</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="distance"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">pointer to location for distance, or %NULL</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="push" c:identifier="gst_adapter_push">
- <doc xml:space="preserve">Adds the data from @buf to the data stored inside @adapter and takes
- ownership of the buffer.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="buf" transfer-ownership="full">
- <doc xml:space="preserve">a #GstBuffer to add to queue in the adapter</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </method>
- <method name="take" c:identifier="gst_adapter_take">
- <doc xml:space="preserve">Returns a freshly allocated buffer containing the first @nbytes bytes of the
- @adapter. The returned bytes will be flushed from the adapter.
- Caller owns returned value. g_free after usage.
- Free-function: g_free</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">
- oven-fresh hot data, or %NULL if @nbytes bytes are not available</doc>
- <array length="0" zero-terminated="0" c:type="gpointer">
- <type name="guint8"/>
- </array>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">the number of bytes to take</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="take_buffer" c:identifier="gst_adapter_take_buffer">
- <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes bytes of the
- @adapter. The returned bytes will be flushed from the adapter.
- This function is potentially more performant than
- gst_adapter_take() since it can reuse the memory in pushed buffers
- by subbuffering or merging. This function will always return a
- buffer with a single memory region.
- Note that no assumptions should be made as to whether certain buffer
- flags such as the DISCONT flag are set on the returned buffer, or not.
- The caller needs to explicitly set or unset flags that should be set or
- unset.
- Since 1.6 this will also copy over all GstMeta of the input buffers except
- for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
- Caller owns a reference to the returned buffer. gst_buffer_unref() after
- usage.
- Free-function: gst_buffer_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GstBuffer containing the first
- @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
- gst_buffer_unref() when no longer needed.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to take</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="take_buffer_fast"
- c:identifier="gst_adapter_take_buffer_fast"
- version="1.2">
- <doc xml:space="preserve">Returns a #GstBuffer containing the first @nbytes of the @adapter.
- The returned bytes will be flushed from the adapter. This function
- is potentially more performant than gst_adapter_take_buffer() since
- it can reuse the memory in pushed buffers by subbuffering or
- merging. Unlike gst_adapter_take_buffer(), the returned buffer may
- be composed of multiple non-contiguous #GstMemory objects, no
- copies are made.
- Note that no assumptions should be made as to whether certain buffer
- flags such as the DISCONT flag are set on the returned buffer, or not.
- The caller needs to explicitly set or unset flags that should be set or
- unset.
- This will also copy over all GstMeta of the input buffers except
- for meta with the %GST_META_FLAG_POOLED flag or with the "memory" tag.
- This function can return buffer up to the return value of
- gst_adapter_available() without making copies if possible.
- Caller owns a reference to the returned buffer. gst_buffer_unref() after
- usage.
- Free-function: gst_buffer_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GstBuffer containing the first
- @nbytes of the adapter, or %NULL if @nbytes bytes are not available.
- gst_buffer_unref() when no longer needed.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to take</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="take_buffer_list"
- c:identifier="gst_adapter_take_buffer_list"
- version="1.6">
- <doc xml:space="preserve">Returns a #GstBufferList of buffers containing the first @nbytes bytes of
- the @adapter. The returned bytes will be flushed from the adapter.
- When the caller can deal with individual buffers, this function is more
- performant because no memory should be copied.
- Caller owns the returned list. Call gst_buffer_list_unref() to free
- the list after usage.</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GstBufferList of buffers containing
- the first @nbytes of the adapter, or %NULL if @nbytes bytes are not
- available</doc>
- <type name="Gst.BufferList" c:type="GstBufferList*"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to take</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="take_list" c:identifier="gst_adapter_take_list">
- <doc xml:space="preserve">Returns a #GList of buffers containing the first @nbytes bytes of the
- @adapter. The returned bytes will be flushed from the adapter.
- When the caller can deal with individual buffers, this function is more
- performant because no memory should be copied.
- Caller owns returned list and contained buffers. gst_buffer_unref() each
- buffer in the list before freeing the list after usage.</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GList of
- buffers containing the first @nbytes of the adapter, or %NULL if @nbytes
- bytes are not available</doc>
- <type name="GLib.List" c:type="GList*">
- <type name="Gst.Buffer"/>
- </type>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to take</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <method name="unmap" c:identifier="gst_adapter_unmap">
- <doc xml:space="preserve">Releases the memory obtained with the last gst_adapter_map().</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="adapter" transfer-ownership="none">
- <doc xml:space="preserve">a #GstAdapter</doc>
- <type name="Adapter" c:type="GstAdapter*"/>
- </instance-parameter>
- </parameters>
- </method>
- </class>
- <record name="AdapterClass"
- c:type="GstAdapterClass"
- disguised="1"
- glib:is-gtype-struct-for="Adapter">
- </record>
- <constant name="BASE_PARSE_FLAG_DRAINING"
- value="2"
- c:type="GST_BASE_PARSE_FLAG_DRAINING">
- <type name="gint" c:type="gint"/>
- </constant>
- <constant name="BASE_PARSE_FLAG_LOST_SYNC"
- value="1"
- c:type="GST_BASE_PARSE_FLAG_LOST_SYNC">
- <type name="gint" c:type="gint"/>
- </constant>
- <constant name="BASE_TRANSFORM_SINK_NAME"
- value="sink"
- c:type="GST_BASE_TRANSFORM_SINK_NAME">
- <doc xml:space="preserve">The name of the templates for the sink pad.</doc>
- <type name="utf8" c:type="gchar*"/>
- </constant>
- <constant name="BASE_TRANSFORM_SRC_NAME"
- value="src"
- c:type="GST_BASE_TRANSFORM_SRC_NAME">
- <doc xml:space="preserve">The name of the templates for the source pad.</doc>
- <type name="utf8" c:type="gchar*"/>
- </constant>
- <class name="BaseParse"
- c:symbol-prefix="base_parse"
- c:type="GstBaseParse"
- parent="Gst.Element"
- abstract="1"
- glib:type-name="GstBaseParse"
- glib:get-type="gst_base_parse_get_type"
- glib:type-struct="BaseParseClass">
- <doc xml:space="preserve">This base class is for parser elements that process data and splits it
- into separate audio/video/whatever frames.
- It provides for:
- <itemizedlist>
- <listitem><para>provides one sink pad and one source pad</para></listitem>
- <listitem><para>handles state changes</para></listitem>
- <listitem><para>can operate in pull mode or push mode</para></listitem>
- <listitem><para>handles seeking in both modes</para></listitem>
- <listitem><para>handles events (SEGMENT/EOS/FLUSH)</para></listitem>
- <listitem><para>
- handles queries (POSITION/DURATION/SEEKING/FORMAT/CONVERT)
- </para></listitem>
- <listitem><para>handles flushing</para></listitem>
- </itemizedlist>
- The purpose of this base class is to provide the basic functionality of
- a parser and share a lot of rather complex code.
- Description of the parsing mechanism:
- <orderedlist>
- <listitem>
- <itemizedlist><title>Set-up phase</title>
- <listitem><para>
- #GstBaseParse calls @start to inform subclass that data processing is
- about to start now.
- </para></listitem>
- <listitem><para>
- #GstBaseParse class calls @set_sink_caps to inform the subclass about
- incoming sinkpad caps. Subclass could already set the srcpad caps
- accordingly, but this might be delayed until calling
- gst_base_parse_finish_frame() with a non-queued frame.
- </para></listitem>
- <listitem><para>
- At least at this point subclass needs to tell the #GstBaseParse class
- how big data chunks it wants to receive (min_frame_size). It can do
- this with gst_base_parse_set_min_frame_size().
- </para></listitem>
- <listitem><para>
- #GstBaseParse class sets up appropriate data passing mode (pull/push)
- and starts to process the data.
- </para></listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist>
- <title>Parsing phase</title>
- <listitem><para>
- #GstBaseParse gathers at least min_frame_size bytes of data either
- by pulling it from upstream or collecting buffers in an internal
- #GstAdapter.
- </para></listitem>
- <listitem><para>
- A buffer of (at least) min_frame_size bytes is passed to subclass with
- @handle_frame. Subclass checks the contents and can optionally
- return GST_FLOW_OK along with an amount of data to be skipped to find
- a valid frame (which will result in a subsequent DISCONT).
- If, otherwise, the buffer does not hold a complete frame,
- @handle_frame can merely return and will be called again when additional
- data is available. In push mode this amounts to an
- additional input buffer (thus minimal additional latency), in pull mode
- this amounts to some arbitrary reasonable buffer size increase.
- Of course, gst_base_parse_set_min_frame_size() could also be used if a
- very specific known amount of additional data is required.
- If, however, the buffer holds a complete valid frame, it can pass
- the size of this frame to gst_base_parse_finish_frame().
- If acting as a converter, it can also merely indicate consumed input data
- while simultaneously providing custom output data.
- Note that baseclass performs some processing (such as tracking
- overall consumed data rate versus duration) for each finished frame,
- but other state is only updated upon each call to @handle_frame
- (such as tracking upstream input timestamp).
- </para><para>
- Subclass is also responsible for setting the buffer metadata
- (e.g. buffer timestamp and duration, or keyframe if applicable).
- (although the latter can also be done by #GstBaseParse if it is
- appropriately configured, see below). Frame is provided with
- timestamp derived from upstream (as much as generally possible),
- duration obtained from configuration (see below), and offset
- if meaningful (in pull mode).
- </para><para>
- Note that @check_valid_frame might receive any small
- amount of input data when leftover data is being drained (e.g. at EOS).
- </para></listitem>
- <listitem><para>
- As part of finish frame processing,
- just prior to actually pushing the buffer in question,
- it is passed to @pre_push_frame which gives subclass yet one
- last chance to examine buffer metadata, or to send some custom (tag)
- events, or to perform custom (segment) filtering.
- </para></listitem>
- <listitem><para>
- During the parsing process #GstBaseParseClass will handle both srcpad
- and sinkpad events. They will be passed to subclass if @event or
- @src_event callbacks have been provided.
- </para></listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist><title>Shutdown phase</title>
- <listitem><para>
- #GstBaseParse class calls @stop to inform the subclass that data
- parsing will be stopped.
- </para></listitem>
- </itemizedlist>
- </listitem>
- </orderedlist>
- Subclass is responsible for providing pad template caps for
- source and sink pads. The pads need to be named "sink" and "src". It also
- needs to set the fixed caps on srcpad, when the format is ensured (e.g.
- when base class calls subclass' @set_sink_caps function).
- This base class uses %GST_FORMAT_DEFAULT as a meaning of frames. So,
- subclass conversion routine needs to know that conversion from
- %GST_FORMAT_TIME to %GST_FORMAT_DEFAULT must return the
- frame number that can be found from the given byte position.
- #GstBaseParse uses subclasses conversion methods also for seeking (or
- otherwise uses its own default one, see also below).
- Subclass @start and @stop functions will be called to inform the beginning
- and end of data processing.
- Things that subclass need to take care of:
- <itemizedlist>
- <listitem><para>Provide pad templates</para></listitem>
- <listitem><para>
- Fixate the source pad caps when appropriate
- </para></listitem>
- <listitem><para>
- Inform base class how big data chunks should be retrieved. This is
- done with gst_base_parse_set_min_frame_size() function.
- </para></listitem>
- <listitem><para>
- Examine data chunks passed to subclass with @handle_frame and pass
- proper frame(s) to gst_base_parse_finish_frame(), and setting src pad
- caps and timestamps on frame.
- </para></listitem>
- <listitem><para>Provide conversion functions</para></listitem>
- <listitem><para>
- Update the duration information with gst_base_parse_set_duration()
- </para></listitem>
- <listitem><para>
- Optionally passthrough using gst_base_parse_set_passthrough()
- </para></listitem>
- <listitem><para>
- Configure various baseparse parameters using
- gst_base_parse_set_average_bitrate(), gst_base_parse_set_syncable()
- and gst_base_parse_set_frame_rate().
- </para></listitem>
- <listitem><para>
- In particular, if subclass is unable to determine a duration, but
- parsing (or specs) yields a frames per seconds rate, then this can be
- provided to #GstBaseParse to enable it to cater for
- buffer time metadata (which will be taken from upstream as much as
- possible). Internally keeping track of frame durations and respective
- sizes that have been pushed provides #GstBaseParse with an estimated
- bitrate. A default @convert (used if not overridden) will then use these
- rates to perform obvious conversions. These rates are also used to
- update (estimated) duration at regular frame intervals.
- </para></listitem>
- </itemizedlist></doc>
- <virtual-method name="convert">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="src_format" transfer-ownership="none">
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- <parameter name="src_value" transfer-ownership="none">
- <type name="gint64" c:type="gint64"/>
- </parameter>
- <parameter name="dest_format" transfer-ownership="none">
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- <parameter name="dest_value" transfer-ownership="none">
- <type name="gint64" c:type="gint64*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="detect">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="get_sink_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="handle_frame">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="frame" transfer-ownership="none">
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </parameter>
- <parameter name="skipsize" transfer-ownership="none">
- <type name="gint" c:type="gint*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="pre_push_frame">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="frame" transfer-ownership="none">
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="set_sink_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="sink_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="sink_query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="src_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="src_query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <method name="add_index_entry"
- c:identifier="gst_base_parse_add_index_entry">
- <doc xml:space="preserve">Adds an entry to the index associating @offset to @ts. It is recommended
- to only add keyframe entries. @force allows to bypass checks, such as
- whether the stream is (upstream) seekable, another entry is already "close"
- to the new entry, etc.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">#gboolean indicating whether entry was added</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">#GstBaseParse.</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">offset of entry</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="ts" transfer-ownership="none">
- <doc xml:space="preserve">timestamp associated with offset</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- <parameter name="key" transfer-ownership="none">
- <doc xml:space="preserve">whether entry refers to keyframe</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- <parameter name="force" transfer-ownership="none">
- <doc xml:space="preserve">add entry disregarding sanity checks</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="convert_default"
- c:identifier="gst_base_parse_convert_default">
- <doc xml:space="preserve">Default implementation of "convert" vmethod in #GstBaseParse class.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if conversion was successful.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">#GstBaseParse.</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="src_format" transfer-ownership="none">
- <doc xml:space="preserve">#GstFormat describing the source format.</doc>
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- <parameter name="src_value" transfer-ownership="none">
- <doc xml:space="preserve">Source value to be converted.</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- <parameter name="dest_format" transfer-ownership="none">
- <doc xml:space="preserve">#GstFormat defining the converted format.</doc>
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- <parameter name="dest_value" transfer-ownership="none">
- <doc xml:space="preserve">Pointer where the conversion result will be put.</doc>
- <type name="gint64" c:type="gint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="finish_frame" c:identifier="gst_base_parse_finish_frame">
- <doc xml:space="preserve">Collects parsed data and pushes this downstream.
- Source pad caps must be set when this is called.
- If @frame's out_buffer is set, that will be used as subsequent frame data.
- Otherwise, @size samples will be taken from the input and used for output,
- and the output's metadata (timestamps etc) will be taken as (optionally)
- set by the subclass on @frame's (input) buffer (which is otherwise
- ignored for any but the above purpose/information).
- Note that the latter buffer is invalidated by this call, whereas the
- caller retains ownership of @frame.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">a #GstFlowReturn that should be escalated to caller (of caller)</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="frame" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParseFrame</doc>
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">consumed input data represented by frame</doc>
- <type name="gint" c:type="gint"/>
- </parameter>
- </parameters>
- </method>
- <method name="merge_tags"
- c:identifier="gst_base_parse_merge_tags"
- version="1.6">
- <doc xml:space="preserve">Sets the parser subclass's tags and how they should be merged with any
- upstream stream tags. This will override any tags previously-set
- with gst_base_parse_merge_tags().
- Note that this is provided for convenience, and the subclass is
- not required to use this and can still do tag handling on its own.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="tags"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">a #GstTagList to merge, or NULL to unset
- previously-set tags</doc>
- <type name="Gst.TagList" c:type="GstTagList*"/>
- </parameter>
- <parameter name="mode" transfer-ownership="none">
- <doc xml:space="preserve">the #GstTagMergeMode to use, usually #GST_TAG_MERGE_REPLACE</doc>
- <type name="Gst.TagMergeMode" c:type="GstTagMergeMode"/>
- </parameter>
- </parameters>
- </method>
- <method name="push_frame" c:identifier="gst_base_parse_push_frame">
- <doc xml:space="preserve">Pushes the frame's buffer downstream, sends any pending events and
- does some timestamp and segment handling. Takes ownership of
- frame's buffer, though caller retains ownership of @frame.
- This must be called with sinkpad STREAM_LOCK held.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">#GstFlowReturn</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">#GstBaseParse.</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="frame" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParseFrame</doc>
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_average_bitrate"
- c:identifier="gst_base_parse_set_average_bitrate">
- <doc xml:space="preserve">Optionally sets the average bitrate detected in media (if non-zero),
- e.g. based on metadata, as it will be posted to the application.
- By default, announced average bitrate is estimated. The average bitrate
- is used to estimate the total duration of the stream and to estimate
- a seek position, if there's no index and the format is syncable
- (see gst_base_parse_set_syncable()).</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">#GstBaseParse.</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="bitrate" transfer-ownership="none">
- <doc xml:space="preserve">average bitrate in bits/second</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_duration" c:identifier="gst_base_parse_set_duration">
- <doc xml:space="preserve">Sets the duration of the currently playing media. Subclass can use this
- when it is able to determine duration and/or notices a change in the media
- duration. Alternatively, if @interval is non-zero (default), then stream
- duration is determined based on estimated bitrate, and updated every @interval
- frames.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">#GstBaseParse.</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="fmt" transfer-ownership="none">
- <doc xml:space="preserve">#GstFormat.</doc>
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- <parameter name="duration" transfer-ownership="none">
- <doc xml:space="preserve">duration value.</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- <parameter name="interval" transfer-ownership="none">
- <doc xml:space="preserve">how often to update the duration estimate based on bitrate, or 0.</doc>
- <type name="gint" c:type="gint"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_frame_rate"
- c:identifier="gst_base_parse_set_frame_rate">
- <doc xml:space="preserve">If frames per second is configured, parser can take care of buffer duration
- and timestamping. When performing segment clipping, or seeking to a specific
- location, a corresponding decoder might need an initial @lead_in and a
- following @lead_out number of frames to ensure the desired segment is
- entirely filled upon decoding.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">the #GstBaseParse to set</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="fps_num" transfer-ownership="none">
- <doc xml:space="preserve">frames per second (numerator).</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="fps_den" transfer-ownership="none">
- <doc xml:space="preserve">frames per second (denominator).</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="lead_in" transfer-ownership="none">
- <doc xml:space="preserve">frames needed before a segment for subsequent decode</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="lead_out" transfer-ownership="none">
- <doc xml:space="preserve">frames needed after a segment</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_has_timing_info"
- c:identifier="gst_base_parse_set_has_timing_info">
- <doc xml:space="preserve">Set if frames carry timing information which the subclass can (generally)
- parse and provide. In particular, intrinsic (rather than estimated) time
- can be obtained following a seek.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="has_timing" transfer-ownership="none">
- <doc xml:space="preserve">whether frames carry timing information</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_infer_ts" c:identifier="gst_base_parse_set_infer_ts">
- <doc xml:space="preserve">By default, the base class might try to infer PTS from DTS and vice
- versa. While this is generally correct for audio data, it may not
- be otherwise. Sub-classes implementing such formats should disable
- timestamp inferring.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="infer_ts" transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if parser should infer DTS/PTS from each other</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_latency" c:identifier="gst_base_parse_set_latency">
- <doc xml:space="preserve">Sets the minimum and maximum (which may likely be equal) latency introduced
- by the parsing process. If there is such a latency, which depends on the
- particular parsing of the format, it typically corresponds to 1 frame duration.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="min_latency" transfer-ownership="none">
- <doc xml:space="preserve">minimum parse latency</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- <parameter name="max_latency" transfer-ownership="none">
- <doc xml:space="preserve">maximum parse latency</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_min_frame_size"
- c:identifier="gst_base_parse_set_min_frame_size">
- <doc xml:space="preserve">Subclass can use this function to tell the base class that it needs to
- give at least #min_size buffers.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">#GstBaseParse.</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="min_size" transfer-ownership="none">
- <doc xml:space="preserve">Minimum size of the data that this base class should give to
- subclass.</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_passthrough"
- c:identifier="gst_base_parse_set_passthrough">
- <doc xml:space="preserve">Set if the nature of the format or configuration does not allow (much)
- parsing, and the parser should operate in passthrough mode (which only
- applies when operating in push mode). That is, incoming buffers are
- pushed through unmodified, i.e. no @check_valid_frame or @parse_frame
- callbacks will be invoked, but @pre_push_frame will still be invoked,
- so subclass can perform as much or as little is appropriate for
- passthrough semantics in @pre_push_frame.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="passthrough" transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if parser should run in passthrough mode</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_pts_interpolation"
- c:identifier="gst_base_parse_set_pts_interpolation">
- <doc xml:space="preserve">By default, the base class will guess PTS timestamps using a simple
- interpolation (previous timestamp + duration), which is incorrect for
- data streams with reordering, where PTS can go backward. Sub-classes
- implementing such formats should disable PTS interpolation.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="pts_interpolate" transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if parser should interpolate PTS timestamps</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_syncable" c:identifier="gst_base_parse_set_syncable">
- <doc xml:space="preserve">Set if frame starts can be identified. This is set by default and
- determines whether seeking based on bitrate averages
- is possible for a format/stream.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="syncable" transfer-ownership="none">
- <doc xml:space="preserve">set if frame starts can be identified</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_ts_at_offset"
- c:identifier="gst_base_parse_set_ts_at_offset"
- version="1.2">
- <doc xml:space="preserve">This function should only be called from a @handle_frame implementation.
- #GstBaseParse creates initial timestamps for frames by using the last
- timestamp seen in the stream before the frame starts. In certain
- cases, the correct timestamps will occur in the stream after the
- start of the frame, but before the start of the actual picture data.
- This function can be used to set the timestamps based on the offset
- into the frame data that the picture starts.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="parse" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseParse</doc>
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">offset into current buffer</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- </parameters>
- </method>
- <property name="disable-passthrough"
- writable="1"
- transfer-ownership="none">
- <doc xml:space="preserve">If set to %TRUE, baseparse will unconditionally force parsing of the
- incoming data. This can be required in the rare cases where the incoming
- side-data (caps, pts, dts, ...) is not trusted by the user and wants to
- force validation and parsing of the incoming data.
- If set to %FALSE, decision of whether to parse the data or not is up to
- the implementation (standard behaviour).</doc>
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <field name="element">
- <doc xml:space="preserve">the parent element.</doc>
- <type name="Gst.Element" c:type="GstElement"/>
- </field>
- <field name="sinkpad">
- <type name="Gst.Pad" c:type="GstPad*"/>
- </field>
- <field name="srcpad">
- <type name="Gst.Pad" c:type="GstPad*"/>
- </field>
- <field name="flags">
- <type name="guint" c:type="guint"/>
- </field>
- <field name="segment">
- <type name="Gst.Segment" c:type="GstSegment"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="20">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- <field name="priv" readable="0" private="1">
- <type name="BaseParsePrivate" c:type="GstBaseParsePrivate*"/>
- </field>
- </class>
- <record name="BaseParseClass"
- c:type="GstBaseParseClass"
- glib:is-gtype-struct-for="BaseParse">
- <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
- needed. At minimum @handle_frame needs to be overridden.</doc>
- <field name="parent_class">
- <doc xml:space="preserve">the parent class</doc>
- <type name="Gst.ElementClass" c:type="GstElementClass"/>
- </field>
- <field name="start">
- <callback name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="stop">
- <callback name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="set_sink_caps">
- <callback name="set_sink_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="handle_frame">
- <callback name="handle_frame">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="frame" transfer-ownership="none">
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </parameter>
- <parameter name="skipsize" transfer-ownership="none">
- <type name="gint" c:type="gint*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="pre_push_frame">
- <callback name="pre_push_frame">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="frame" transfer-ownership="none">
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="convert">
- <callback name="convert">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="src_format" transfer-ownership="none">
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- <parameter name="src_value" transfer-ownership="none">
- <type name="gint64" c:type="gint64"/>
- </parameter>
- <parameter name="dest_format" transfer-ownership="none">
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- <parameter name="dest_value" transfer-ownership="none">
- <type name="gint64" c:type="gint64*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="sink_event">
- <callback name="sink_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="src_event">
- <callback name="src_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="get_sink_caps">
- <callback name="get_sink_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="detect">
- <callback name="detect">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="sink_query">
- <callback name="sink_query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="src_query">
- <callback name="src_query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="parse" transfer-ownership="none">
- <type name="BaseParse" c:type="GstBaseParse*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="18">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <record name="BaseParseFrame"
- c:type="GstBaseParseFrame"
- glib:type-name="GstBaseParseFrame"
- glib:get-type="gst_base_parse_frame_get_type"
- c:symbol-prefix="base_parse_frame">
- <doc xml:space="preserve">Frame (context) data passed to each frame parsing virtual methods. In
- addition to providing the data to be checked for a valid frame or an already
- identified frame, it conveys additional metadata or control information
- from and to the subclass w.r.t. the particular frame in question (rather
- than global parameters). Some of these may apply to each parsing stage, others
- only to some a particular one. These parameters are effectively zeroed at start
- of each frame's processing, i.e. parsing virtual method invocation sequence.</doc>
- <field name="buffer" writable="1">
- <doc xml:space="preserve">input data to be parsed for frames.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </field>
- <field name="out_buffer" writable="1">
- <doc xml:space="preserve">output data.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </field>
- <field name="flags" writable="1">
- <doc xml:space="preserve">a combination of input and output #GstBaseParseFrameFlags that
- convey additional context to subclass or allow subclass to tune
- subsequent #GstBaseParse actions.</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="offset" writable="1">
- <doc xml:space="preserve">media specific offset of input frame
- Note that a converter may have a different one on the frame's buffer.</doc>
- <type name="guint64" c:type="guint64"/>
- </field>
- <field name="overhead" writable="1">
- <doc xml:space="preserve">subclass can set this to indicates the metadata overhead
- for the given frame, which is then used to enable more accurate bitrate
- computations. If this is -1, it is assumed that this frame should be
- skipped in bitrate calculation.</doc>
- <type name="gint" c:type="gint"/>
- </field>
- <field name="size" readable="0" private="1">
- <type name="gint" c:type="gint"/>
- </field>
- <field name="_gst_reserved_i" readable="0" private="1">
- <array zero-terminated="0" c:type="guint" fixed-size="2">
- <type name="guint" c:type="guint"/>
- </array>
- </field>
- <field name="_gst_reserved_p" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="2">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- <field name="_private_flags" readable="0" private="1">
- <type name="guint" c:type="guint"/>
- </field>
- <constructor name="new" c:identifier="gst_base_parse_frame_new">
- <doc xml:space="preserve">Allocates a new #GstBaseParseFrame. This function is mainly for bindings,
- elements written in C should usually allocate the frame on the stack and
- then use gst_base_parse_frame_init() to initialise it.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a newly-allocated #GstBaseParseFrame. Free with
- gst_base_parse_frame_free() when no longer needed.</doc>
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </return-value>
- <parameters>
- <parameter name="buffer" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBuffer</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="flags" transfer-ownership="none">
- <doc xml:space="preserve">the flags</doc>
- <type name="BaseParseFrameFlags" c:type="GstBaseParseFrameFlags"/>
- </parameter>
- <parameter name="overhead" transfer-ownership="none">
- <doc xml:space="preserve">number of bytes in this frame which should be counted as
- metadata overhead, ie. not used to calculate the average bitrate.
- Set to -1 to mark the entire frame as metadata. If in doubt, set to 0.</doc>
- <type name="gint" c:type="gint"/>
- </parameter>
- </parameters>
- </constructor>
- <method name="free" c:identifier="gst_base_parse_frame_free">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="frame" transfer-ownership="none">
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="init" c:identifier="gst_base_parse_frame_init">
- <doc xml:space="preserve">Sets a #GstBaseParseFrame to initial state. Currently this means
- all public fields are zero-ed and a private flag is set to make
- sure gst_base_parse_frame_free() only frees the contents but not
- the actual frame. Use this function to initialise a #GstBaseParseFrame
- allocated on the stack.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="frame" transfer-ownership="none">
- <doc xml:space="preserve">#GstBaseParseFrame.</doc>
- <type name="BaseParseFrame" c:type="GstBaseParseFrame*"/>
- </instance-parameter>
- </parameters>
- </method>
- </record>
- <bitfield name="BaseParseFrameFlags" c:type="GstBaseParseFrameFlags">
- <doc xml:space="preserve">Flags to be used in a #GstBaseParseFrame.</doc>
- <member name="none"
- value="0"
- c:identifier="GST_BASE_PARSE_FRAME_FLAG_NONE">
- <doc xml:space="preserve">no flag</doc>
- </member>
- <member name="new_frame"
- value="1"
- c:identifier="GST_BASE_PARSE_FRAME_FLAG_NEW_FRAME">
- <doc xml:space="preserve">set by baseclass if current frame
- is passed for processing to the subclass for the first time
- (and not set on subsequent calls with same data).</doc>
- </member>
- <member name="no_frame"
- value="2"
- c:identifier="GST_BASE_PARSE_FRAME_FLAG_NO_FRAME">
- <doc xml:space="preserve">set to indicate this buffer should not be
- counted as frame, e.g. if this frame is dependent on a previous one.
- As it is not counted as a frame, bitrate increases but frame to time
- conversions are maintained.</doc>
- </member>
- <member name="clip"
- value="4"
- c:identifier="GST_BASE_PARSE_FRAME_FLAG_CLIP">
- <doc xml:space="preserve">@pre_push_frame can set this to indicate
- that regular segment clipping can still be performed (as opposed to
- any custom one having been done).</doc>
- </member>
- <member name="drop"
- value="8"
- c:identifier="GST_BASE_PARSE_FRAME_FLAG_DROP">
- <doc xml:space="preserve">indicates to @finish_frame that the
- the frame should be dropped (and might be handled internally by subclass)</doc>
- </member>
- <member name="queue"
- value="16"
- c:identifier="GST_BASE_PARSE_FRAME_FLAG_QUEUE">
- <doc xml:space="preserve">indicates to @finish_frame that the
- the frame should be queued for now and processed fully later
- when the first non-queued frame is finished</doc>
- </member>
- </bitfield>
- <record name="BaseParsePrivate" c:type="GstBaseParsePrivate" disguised="1">
- </record>
- <class name="BaseSink"
- c:symbol-prefix="base_sink"
- c:type="GstBaseSink"
- parent="Gst.Element"
- abstract="1"
- glib:type-name="GstBaseSink"
- glib:get-type="gst_base_sink_get_type"
- glib:type-struct="BaseSinkClass">
- <doc xml:space="preserve">#GstBaseSink is the base class for sink elements in GStreamer, such as
- xvimagesink or filesink. It is a layer on top of #GstElement that provides a
- simplified interface to plugin writers. #GstBaseSink handles many details
- for you, for example: preroll, clock synchronization, state changes,
- activation in push or pull mode, and queries.
- In most cases, when writing sink elements, there is no need to implement
- class methods from #GstElement or to set functions on pads, because the
- #GstBaseSink infrastructure should be sufficient.
- #GstBaseSink provides support for exactly one sink pad, which should be
- named "sink". A sink implementation (subclass of #GstBaseSink) should
- install a pad template in its class_init function, like so:
- |[<!-- language="C" -->
- static void
- my_element_class_init (GstMyElementClass *klass)
- {
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
- // sinktemplate should be a #GstStaticPadTemplate with direction
- // %GST_PAD_SINK and name "sink"
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&amp;sinktemplate));
- gst_element_class_set_static_metadata (gstelement_class,
- "Sink name",
- "Sink",
- "My Sink element",
- "The author &lt;my.sink@my.email&gt;");
- }
- ]|
- #GstBaseSink will handle the prerolling correctly. This means that it will
- return %GST_STATE_CHANGE_ASYNC from a state change to PAUSED until the first
- buffer arrives in this element. The base class will call the
- #GstBaseSinkClass.preroll() vmethod with this preroll buffer and will then
- commit the state change to the next asynchronously pending state.
- When the element is set to PLAYING, #GstBaseSink will synchronise on the
- clock using the times returned from #GstBaseSinkClass.get_times(). If this
- function returns %GST_CLOCK_TIME_NONE for the start time, no synchronisation
- will be done. Synchronisation can be disabled entirely by setting the object
- #GstBaseSink:sync property to %FALSE.
- After synchronisation the virtual method #GstBaseSinkClass.render() will be
- called. Subclasses should minimally implement this method.
- Subclasses that synchronise on the clock in the #GstBaseSinkClass.render()
- method are supported as well. These classes typically receive a buffer in
- the render method and can then potentially block on the clock while
- rendering. A typical example is an audiosink.
- These subclasses can use gst_base_sink_wait_preroll() to perform the
- blocking wait.
- Upon receiving the EOS event in the PLAYING state, #GstBaseSink will wait
- for the clock to reach the time indicated by the stop time of the last
- #GstBaseSinkClass.get_times() call before posting an EOS message. When the
- element receives EOS in PAUSED, preroll completes, the event is queued and an
- EOS message is posted when going to PLAYING.
- #GstBaseSink will internally use the %GST_EVENT_SEGMENT events to schedule
- synchronisation and clipping of buffers. Buffers that fall completely outside
- of the current segment are dropped. Buffers that fall partially in the
- segment are rendered (and prerolled). Subclasses should do any subbuffer
- clipping themselves when needed.
- #GstBaseSink will by default report the current playback position in
- %GST_FORMAT_TIME based on the current clock time and segment information.
- If no clock has been set on the element, the query will be forwarded
- upstream.
- The #GstBaseSinkClass.set_caps() function will be called when the subclass
- should configure itself to process a specific media type.
- The #GstBaseSinkClass.start() and #GstBaseSinkClass.stop() virtual methods
- will be called when resources should be allocated. Any
- #GstBaseSinkClass.preroll(), #GstBaseSinkClass.render() and
- #GstBaseSinkClass.set_caps() function will be called between the
- #GstBaseSinkClass.start() and #GstBaseSinkClass.stop() calls.
- The #GstBaseSinkClass.event() virtual method will be called when an event is
- received by #GstBaseSink. Normally this method should only be overridden by
- very specific elements (such as file sinks) which need to handle the
- newsegment event specially.
- The #GstBaseSinkClass.unlock() method is called when the elements should
- unblock any blocking operations they perform in the
- #GstBaseSinkClass.render() method. This is mostly useful when the
- #GstBaseSinkClass.render() method performs a blocking write on a file
- descriptor, for example.
- The #GstBaseSink:max-lateness property affects how the sink deals with
- buffers that arrive too late in the sink. A buffer arrives too late in the
- sink when the presentation time (as a combination of the last segment, buffer
- timestamp and element base_time) plus the duration is before the current
- time of the clock.
- If the frame is later than max-lateness, the sink will drop the buffer
- without calling the render method.
- This feature is disabled if sync is disabled, the
- #GstBaseSinkClass.get_times() method does not return a valid start time or
- max-lateness is set to -1 (the default).
- Subclasses can use gst_base_sink_set_max_lateness() to configure the
- max-lateness value.
- The #GstBaseSink:qos property will enable the quality-of-service features of
- the basesink which gather statistics about the real-time performance of the
- clock synchronisation. For each buffer received in the sink, statistics are
- gathered and a QOS event is sent upstream with these numbers. This
- information can then be used by upstream elements to reduce their processing
- rate, for example.
- The #GstBaseSink:async property can be used to instruct the sink to never
- perform an ASYNC state change. This feature is mostly usable when dealing
- with non-synchronized streams or sparse streams.</doc>
- <virtual-method name="activate_pull">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="active" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="fixate">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="get_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="get_times">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="start" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- <parameter name="end" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="prepare">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="prepare_list">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="buffer_list" transfer-ownership="none">
- <type name="Gst.BufferList" c:type="GstBufferList*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="preroll">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="propose_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="render">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="render_list">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="buffer_list" transfer-ownership="none">
- <type name="Gst.BufferList" c:type="GstBufferList*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="set_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="unlock">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="unlock_stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="wait_event">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <method name="do_preroll" c:identifier="gst_base_sink_do_preroll">
- <doc xml:space="preserve">If the @sink spawns its own thread for pulling buffers from upstream it
- should call this method after it has pulled a buffer. If the element needed
- to preroll, this function will perform the preroll and will then block
- until the element state is changed.
- This function should be called with the PREROLL_LOCK held.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%GST_FLOW_OK if the preroll completed and processing can
- continue. Any other return value should be returned from the render vmethod.</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="obj" transfer-ownership="none">
- <doc xml:space="preserve">the mini object that caused the preroll</doc>
- <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_blocksize" c:identifier="gst_base_sink_get_blocksize">
- <doc xml:space="preserve">Get the number of bytes that the sink will pull when it is operating in pull
- mode.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes @sink will pull in pull mode.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_last_sample"
- c:identifier="gst_base_sink_get_last_sample">
- <doc xml:space="preserve">Get the last sample that arrived in the sink and was used for preroll or for
- rendering. This property can be used to generate thumbnails.
- The #GstCaps on the sample can be used to determine the type of the buffer.
- Free-function: gst_sample_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">a #GstSample. gst_sample_unref() after
- usage. This function returns %NULL when no buffer has arrived in the
- sink yet or when the sink is not in PAUSED or PLAYING.</doc>
- <type name="Gst.Sample" c:type="GstSample*"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_latency" c:identifier="gst_base_sink_get_latency">
- <doc xml:space="preserve">Get the currently configured latency.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The configured latency.</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_max_bitrate"
- c:identifier="gst_base_sink_get_max_bitrate"
- version="1.2">
- <doc xml:space="preserve">Get the maximum amount of bits per second that the sink will render.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">the maximum number of bits per second @sink will render.</doc>
- <type name="guint64" c:type="guint64"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_max_lateness"
- c:identifier="gst_base_sink_get_max_lateness">
- <doc xml:space="preserve">Gets the max lateness value. See gst_base_sink_set_max_lateness for
- more details.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The maximum time in nanoseconds that a buffer can be late
- before it is dropped and not rendered. A value of -1 means an
- unlimited time.</doc>
- <type name="gint64" c:type="gint64"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_render_delay"
- c:identifier="gst_base_sink_get_render_delay">
- <doc xml:space="preserve">Get the render delay of @sink. see gst_base_sink_set_render_delay() for more
- information about the render delay.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">the render delay of @sink.</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_sync" c:identifier="gst_base_sink_get_sync">
- <doc xml:space="preserve">Checks if @sink is currently configured to synchronize against the
- clock.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the sink is configured to synchronize against the clock.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_throttle_time"
- c:identifier="gst_base_sink_get_throttle_time">
- <doc xml:space="preserve">Get the time that will be inserted between frames to control the
- maximum buffers per second.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">the number of nanoseconds @sink will put between frames.</doc>
- <type name="guint64" c:type="guint64"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_ts_offset" c:identifier="gst_base_sink_get_ts_offset">
- <doc xml:space="preserve">Get the synchronisation offset of @sink.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The synchronisation offset.</doc>
- <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_async_enabled"
- c:identifier="gst_base_sink_is_async_enabled">
- <doc xml:space="preserve">Checks if @sink is currently configured to perform asynchronous state
- changes to PAUSED.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the sink is configured to perform asynchronous state
- changes.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_last_sample_enabled"
- c:identifier="gst_base_sink_is_last_sample_enabled">
- <doc xml:space="preserve">Checks if @sink is currently configured to store the last received sample in
- the last-sample property.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the sink is configured to store the last received sample.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_qos_enabled"
- c:identifier="gst_base_sink_is_qos_enabled">
- <doc xml:space="preserve">Checks if @sink is currently configured to send Quality-of-Service events
- upstream.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the sink is configured to perform Quality-of-Service.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="query_latency" c:identifier="gst_base_sink_query_latency">
- <doc xml:space="preserve">Query the sink for the latency parameters. The latency will be queried from
- the upstream elements. @live will be %TRUE if @sink is configured to
- synchronize against the clock. @upstream_live will be %TRUE if an upstream
- element is live.
- If both @live and @upstream_live are %TRUE, the sink will want to compensate
- for the latency introduced by the upstream elements by setting the
- @min_latency to a strictly positive value.
- This function is mostly used by subclasses.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the query succeeded.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="live"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">if the sink is live</doc>
- <type name="gboolean" c:type="gboolean*"/>
- </parameter>
- <parameter name="upstream_live"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">if an upstream element is live</doc>
- <type name="gboolean" c:type="gboolean*"/>
- </parameter>
- <parameter name="min_latency"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the min latency of the upstream elements</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- <parameter name="max_latency"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the max latency of the upstream elements</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_async_enabled"
- c:identifier="gst_base_sink_set_async_enabled">
- <doc xml:space="preserve">Configures @sink to perform all state changes asynchronously. When async is
- disabled, the sink will immediately go to PAUSED instead of waiting for a
- preroll buffer. This feature is useful if the sink does not synchronize
- against the clock or when it is dealing with sparse streams.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="enabled" transfer-ownership="none">
- <doc xml:space="preserve">the new async value.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_blocksize" c:identifier="gst_base_sink_set_blocksize">
- <doc xml:space="preserve">Set the number of bytes that the sink will pull when it is operating in pull
- mode.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="blocksize" transfer-ownership="none">
- <doc xml:space="preserve">the blocksize in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_last_sample_enabled"
- c:identifier="gst_base_sink_set_last_sample_enabled">
- <doc xml:space="preserve">Configures @sink to store the last received sample in the last-sample
- property.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="enabled" transfer-ownership="none">
- <doc xml:space="preserve">the new enable-last-sample value.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_max_bitrate"
- c:identifier="gst_base_sink_set_max_bitrate"
- version="1.2">
- <doc xml:space="preserve">Set the maximum amount of bits per second that the sink will render.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="max_bitrate" transfer-ownership="none">
- <doc xml:space="preserve">the max_bitrate in bits per second</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_max_lateness"
- c:identifier="gst_base_sink_set_max_lateness">
- <doc xml:space="preserve">Sets the new max lateness value to @max_lateness. This value is
- used to decide if a buffer should be dropped or not based on the
- buffer timestamp and the current clock time. A value of -1 means
- an unlimited time.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="max_lateness" transfer-ownership="none">
- <doc xml:space="preserve">the new max lateness value.</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_qos_enabled"
- c:identifier="gst_base_sink_set_qos_enabled">
- <doc xml:space="preserve">Configures @sink to send Quality-of-Service events upstream.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="enabled" transfer-ownership="none">
- <doc xml:space="preserve">the new qos value.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_render_delay"
- c:identifier="gst_base_sink_set_render_delay">
- <doc xml:space="preserve">Set the render delay in @sink to @delay. The render delay is the time
- between actual rendering of a buffer and its synchronisation time. Some
- devices might delay media rendering which can be compensated for with this
- function.
- After calling this function, this sink will report additional latency and
- other sinks will adjust their latency to delay the rendering of their media.
- This function is usually called by subclasses.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="delay" transfer-ownership="none">
- <doc xml:space="preserve">the new delay</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_sync" c:identifier="gst_base_sink_set_sync">
- <doc xml:space="preserve">Configures @sink to synchronize on the clock or not. When
- @sync is %FALSE, incoming samples will be played as fast as
- possible. If @sync is %TRUE, the timestamps of the incoming
- buffers will be used to schedule the exact render time of its
- contents.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="sync" transfer-ownership="none">
- <doc xml:space="preserve">the new sync value.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_throttle_time"
- c:identifier="gst_base_sink_set_throttle_time">
- <doc xml:space="preserve">Set the time that will be inserted between rendered buffers. This
- can be used to control the maximum buffers per second that the sink
- will render.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="throttle" transfer-ownership="none">
- <doc xml:space="preserve">the throttle time in nanoseconds</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_ts_offset" c:identifier="gst_base_sink_set_ts_offset">
- <doc xml:space="preserve">Adjust the synchronisation of @sink with @offset. A negative value will
- render buffers earlier than their timestamp. A positive value will delay
- rendering. This function can be used to fix playback of badly timestamped
- buffers.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">the new offset</doc>
- <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
- </parameter>
- </parameters>
- </method>
- <method name="wait" c:identifier="gst_base_sink_wait">
- <doc xml:space="preserve">This function will wait for preroll to complete and will then block until @time
- is reached. It is usually called by subclasses that use their own internal
- synchronisation but want to let some synchronization (like EOS) be handled
- by the base class.
- This function should only be called with the PREROLL_LOCK held (like when
- receiving an EOS event in the ::event vmethod or when handling buffers in
- ::render).
- The @time argument should be the running_time of when the timeout should happen
- and will be adjusted with any latency and offset configured in the sink.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">#GstFlowReturn</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="time" transfer-ownership="none">
- <doc xml:space="preserve">the running_time to be reached</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- <parameter name="jitter"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the jitter to be filled with time diff, or %NULL</doc>
- <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
- </parameter>
- </parameters>
- </method>
- <method name="wait_clock" c:identifier="gst_base_sink_wait_clock">
- <doc xml:space="preserve">This function will block until @time is reached. It is usually called by
- subclasses that use their own internal synchronisation.
- If @time is not valid, no synchronisation is done and %GST_CLOCK_BADTIME is
- returned. Likewise, if synchronisation is disabled in the element or there
- is no clock, no synchronisation is done and %GST_CLOCK_BADTIME is returned.
- This function should only be called with the PREROLL_LOCK held, like when
- receiving an EOS event in the #GstBaseSinkClass.event() vmethod or when
- receiving a buffer in
- the #GstBaseSinkClass.render() vmethod.
- The @time argument should be the running_time of when this method should
- return and is not adjusted with any latency or offset configured in the
- sink.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">#GstClockReturn</doc>
- <type name="Gst.ClockReturn" c:type="GstClockReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- <parameter name="time" transfer-ownership="none">
- <doc xml:space="preserve">the running_time to be reached</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- <parameter name="jitter"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the jitter to be filled with time diff, or %NULL</doc>
- <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff*"/>
- </parameter>
- </parameters>
- </method>
- <method name="wait_preroll" c:identifier="gst_base_sink_wait_preroll">
- <doc xml:space="preserve">If the #GstBaseSinkClass.render() method performs its own synchronisation
- against the clock it must unblock when going from PLAYING to the PAUSED state
- and call this method before continuing to render the remaining data.
- This function will block until a state change to PLAYING happens (in which
- case this function returns %GST_FLOW_OK) or the processing must be stopped due
- to a state change to READY or a FLUSH event (in which case this function
- returns %GST_FLOW_FLUSHING).
- This function should only be called with the PREROLL_LOCK held, like in the
- render function.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%GST_FLOW_OK if the preroll completed and processing can
- continue. Any other return value should be returned from the render vmethod.</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="sink" transfer-ownership="none">
- <doc xml:space="preserve">the sink</doc>
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </instance-parameter>
- </parameters>
- </method>
- <property name="async" writable="1" transfer-ownership="none">
- <doc xml:space="preserve">If set to %TRUE, the basesink will perform asynchronous state changes.
- When set to %FALSE, the sink will not signal the parent when it prerolls.
- Use this option when dealing with sparse streams or when synchronisation is
- not required.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <property name="blocksize" writable="1" transfer-ownership="none">
- <doc xml:space="preserve">The amount of bytes to pull when operating in pull mode.</doc>
- <type name="guint" c:type="guint"/>
- </property>
- <property name="enable-last-sample"
- writable="1"
- transfer-ownership="none">
- <doc xml:space="preserve">Enable the last-sample property. If %FALSE, basesink doesn't keep a
- reference to the last buffer arrived and the last-sample property is always
- set to %NULL. This can be useful if you need buffers to be released as soon
- as possible, eg. if you're using a buffer pool.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <property name="last-sample" transfer-ownership="none">
- <doc xml:space="preserve">The last buffer that arrived in the sink and was used for preroll or for
- rendering. This property can be used to generate thumbnails. This property
- can be %NULL when the sink has not yet received a buffer.</doc>
- <type name="Gst.Sample"/>
- </property>
- <property name="max-bitrate"
- version="1.2"
- writable="1"
- transfer-ownership="none">
- <doc xml:space="preserve">Control the maximum amount of bits that will be rendered per second.
- Setting this property to a value bigger than 0 will make the sink delay
- rendering of the buffers when it would exceed to max-bitrate.</doc>
- <type name="guint64" c:type="guint64"/>
- </property>
- <property name="max-lateness" writable="1" transfer-ownership="none">
- <type name="gint64" c:type="gint64"/>
- </property>
- <property name="qos" writable="1" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <property name="render-delay" writable="1" transfer-ownership="none">
- <doc xml:space="preserve">The additional delay between synchronisation and actual rendering of the
- media. This property will add additional latency to the device in order to
- make other sinks compensate for the delay.</doc>
- <type name="guint64" c:type="guint64"/>
- </property>
- <property name="sync" writable="1" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <property name="throttle-time" writable="1" transfer-ownership="none">
- <doc xml:space="preserve">The time to insert between buffers. This property can be used to control
- the maximum amount of buffers per second to render. Setting this property
- to a value bigger than 0 will make the sink create THROTTLE QoS events.</doc>
- <type name="guint64" c:type="guint64"/>
- </property>
- <property name="ts-offset" writable="1" transfer-ownership="none">
- <doc xml:space="preserve">Controls the final synchronisation, a negative value will render the buffer
- earlier while a positive value delays playback. This property can be
- used to fix synchronisation in bad files.</doc>
- <type name="gint64" c:type="gint64"/>
- </property>
- <field name="element">
- <type name="Gst.Element" c:type="GstElement"/>
- </field>
- <field name="sinkpad">
- <type name="Gst.Pad" c:type="GstPad*"/>
- </field>
- <field name="pad_mode">
- <type name="Gst.PadMode" c:type="GstPadMode"/>
- </field>
- <field name="offset">
- <type name="guint64" c:type="guint64"/>
- </field>
- <field name="can_activate_pull">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="can_activate_push">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="preroll_lock">
- <type name="GLib.Mutex" c:type="GMutex"/>
- </field>
- <field name="preroll_cond">
- <type name="GLib.Cond" c:type="GCond"/>
- </field>
- <field name="eos">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="need_preroll">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="have_preroll">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="playing_async">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="have_newsegment">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="segment">
- <type name="Gst.Segment" c:type="GstSegment"/>
- </field>
- <field name="clock_id" readable="0" private="1">
- <type name="Gst.ClockID" c:type="GstClockID"/>
- </field>
- <field name="sync" readable="0" private="1">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="flushing" readable="0" private="1">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="running" readable="0" private="1">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="max_lateness" readable="0" private="1">
- <type name="gint64" c:type="gint64"/>
- </field>
- <field name="priv" readable="0" private="1">
- <type name="BaseSinkPrivate" c:type="GstBaseSinkPrivate*"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="20">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </class>
- <record name="BaseSinkClass"
- c:type="GstBaseSinkClass"
- glib:is-gtype-struct-for="BaseSink">
- <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
- needed. At the minimum, the @render method should be overridden to
- output/present buffers.</doc>
- <field name="parent_class">
- <doc xml:space="preserve">Element parent class</doc>
- <type name="Gst.ElementClass" c:type="GstElementClass"/>
- </field>
- <field name="get_caps">
- <callback name="get_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="set_caps">
- <callback name="set_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="fixate">
- <callback name="fixate">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="activate_pull">
- <callback name="activate_pull">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="active" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="get_times">
- <callback name="get_times">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="start" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- <parameter name="end" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="propose_allocation">
- <callback name="propose_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="start">
- <callback name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="stop">
- <callback name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="unlock">
- <callback name="unlock">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="unlock_stop">
- <callback name="unlock_stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="query">
- <callback name="query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="event">
- <callback name="event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="wait_event">
- <callback name="wait_event">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="prepare">
- <callback name="prepare">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="prepare_list">
- <callback name="prepare_list">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="buffer_list" transfer-ownership="none">
- <type name="Gst.BufferList" c:type="GstBufferList*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="preroll">
- <callback name="preroll">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="render">
- <callback name="render">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="render_list">
- <callback name="render_list">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="sink" transfer-ownership="none">
- <type name="BaseSink" c:type="GstBaseSink*"/>
- </parameter>
- <parameter name="buffer_list" transfer-ownership="none">
- <type name="Gst.BufferList" c:type="GstBufferList*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="20">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <record name="BaseSinkPrivate" c:type="GstBaseSinkPrivate" disguised="1">
- </record>
- <class name="BaseSrc"
- c:symbol-prefix="base_src"
- c:type="GstBaseSrc"
- parent="Gst.Element"
- abstract="1"
- glib:type-name="GstBaseSrc"
- glib:get-type="gst_base_src_get_type"
- glib:type-struct="BaseSrcClass">
- <doc xml:space="preserve">This is a generic base class for source elements. The following
- types of sources are supported:
- <itemizedlist>
- <listitem><para>random access sources like files</para></listitem>
- <listitem><para>seekable sources</para></listitem>
- <listitem><para>live sources</para></listitem>
- </itemizedlist>
- The source can be configured to operate in any #GstFormat with the
- gst_base_src_set_format() method. The currently set format determines
- the format of the internal #GstSegment and any %GST_EVENT_SEGMENT
- events. The default format for #GstBaseSrc is %GST_FORMAT_BYTES.
- #GstBaseSrc always supports push mode scheduling. If the following
- conditions are met, it also supports pull mode scheduling:
- <itemizedlist>
- <listitem><para>The format is set to %GST_FORMAT_BYTES (default).</para>
- </listitem>
- <listitem><para>#GstBaseSrcClass.is_seekable() returns %TRUE.</para>
- </listitem>
- </itemizedlist>
- If all the conditions are met for operating in pull mode, #GstBaseSrc is
- automatically seekable in push mode as well. The following conditions must
- be met to make the element seekable in push mode when the format is not
- %GST_FORMAT_BYTES:
- <itemizedlist>
- <listitem><para>
- #GstBaseSrcClass.is_seekable() returns %TRUE.
- </para></listitem>
- <listitem><para>
- #GstBaseSrcClass.query() can convert all supported seek formats to the
- internal format as set with gst_base_src_set_format().
- </para></listitem>
- <listitem><para>
- #GstBaseSrcClass.do_seek() is implemented, performs the seek and returns
- %TRUE.
- </para></listitem>
- </itemizedlist>
- When the element does not meet the requirements to operate in pull mode, the
- offset and length in the #GstBaseSrcClass.create() method should be ignored.
- It is recommended to subclass #GstPushSrc instead, in this situation. If the
- element can operate in pull mode but only with specific offsets and
- lengths, it is allowed to generate an error when the wrong values are passed
- to the #GstBaseSrcClass.create() function.
- #GstBaseSrc has support for live sources. Live sources are sources that when
- paused discard data, such as audio or video capture devices. A typical live
- source also produces data at a fixed rate and thus provides a clock to publish
- this rate.
- Use gst_base_src_set_live() to activate the live source mode.
- A live source does not produce data in the PAUSED state. This means that the
- #GstBaseSrcClass.create() method will not be called in PAUSED but only in
- PLAYING. To signal the pipeline that the element will not produce data, the
- return value from the READY to PAUSED state will be
- %GST_STATE_CHANGE_NO_PREROLL.
- A typical live source will timestamp the buffers it creates with the
- current running time of the pipeline. This is one reason why a live source
- can only produce data in the PLAYING state, when the clock is actually
- distributed and running.
- Live sources that synchronize and block on the clock (an audio source, for
- example) can use gst_base_src_wait_playing() when the
- #GstBaseSrcClass.create() function was interrupted by a state change to
- PAUSED.
- The #GstBaseSrcClass.get_times() method can be used to implement pseudo-live
- sources. It only makes sense to implement the #GstBaseSrcClass.get_times()
- function if the source is a live source. The #GstBaseSrcClass.get_times()
- function should return timestamps starting from 0, as if it were a non-live
- source. The base class will make sure that the timestamps are transformed
- into the current running_time. The base source will then wait for the
- calculated running_time before pushing out the buffer.
- For live sources, the base class will by default report a latency of 0.
- For pseudo live sources, the base class will by default measure the difference
- between the first buffer timestamp and the start time of get_times and will
- report this value as the latency.
- Subclasses should override the query function when this behaviour is not
- acceptable.
- There is only support in #GstBaseSrc for exactly one source pad, which
- should be named "src". A source implementation (subclass of #GstBaseSrc)
- should install a pad template in its class_init function, like so:
- |[<!-- language="C" -->
- static void
- my_element_class_init (GstMyElementClass *klass)
- {
- GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
- // srctemplate should be a #GstStaticPadTemplate with direction
- // %GST_PAD_SRC and name "src"
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&amp;srctemplate));
- gst_element_class_set_static_metadata (gstelement_class,
- "Source name",
- "Source",
- "My Source element",
- "The author &lt;my.sink@my.email&gt;");
- }
- ]|
- <refsect2>
- <title>Controlled shutdown of live sources in applications</title>
- <para>
- Applications that record from a live source may want to stop recording
- in a controlled way, so that the recording is stopped, but the data
- already in the pipeline is processed to the end (remember that many live
- sources would go on recording forever otherwise). For that to happen the
- application needs to make the source stop recording and send an EOS
- event down the pipeline. The application would then wait for an
- EOS message posted on the pipeline's bus to know when all data has
- been processed and the pipeline can safely be stopped.
- An application may send an EOS event to a source element to make it
- perform the EOS logic (send EOS event downstream or post a
- %GST_MESSAGE_SEGMENT_DONE on the bus). This can typically be done
- with the gst_element_send_event() function on the element or its parent bin.
- After the EOS has been sent to the element, the application should wait for
- an EOS message to be posted on the pipeline's bus. Once this EOS message is
- received, it may safely shut down the entire pipeline.
- </para>
- </refsect2></doc>
- <virtual-method name="alloc">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="create">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="decide_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="do_seek">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="segment" transfer-ownership="none">
- <type name="Gst.Segment" c:type="GstSegment*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="fill">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="offset" transfer-ownership="none">
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="fixate">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="get_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="get_size">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="get_times">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="start" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- <parameter name="end" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="is_seekable">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="negotiate">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="prepare_seek_segment">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="seek" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- <parameter name="segment" transfer-ownership="none">
- <type name="Gst.Segment" c:type="GstSegment*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="set_caps" invoker="set_caps">
- <doc xml:space="preserve">Set new caps on the basesrc source pad.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the caps could be set</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSrc</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="caps" transfer-ownership="none">
- <doc xml:space="preserve">a #GstCaps</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="unlock">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="unlock_stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <method name="get_allocator" c:identifier="gst_base_src_get_allocator">
- <doc xml:space="preserve">Lets #GstBaseSrc sub-classes to know the memory @allocator
- used by the base class and its @params.
- Unref the @allocator after usage.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSrc</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="allocator"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the #GstAllocator
- used</doc>
- <type name="Gst.Allocator" c:type="GstAllocator**"/>
- </parameter>
- <parameter name="params"
- direction="out"
- caller-allocates="1"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the
- #GstAllocationParams of @allocator</doc>
- <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_blocksize" c:identifier="gst_base_src_get_blocksize">
- <doc xml:space="preserve">Get the number of bytes that @src will push out with each buffer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes pushed with each buffer.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">the source</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_buffer_pool"
- c:identifier="gst_base_src_get_buffer_pool">
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">the instance of the #GstBufferPool used
- by the src; unref it after usage.</doc>
- <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSrc</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_do_timestamp"
- c:identifier="gst_base_src_get_do_timestamp">
- <doc xml:space="preserve">Query if @src timestamps outgoing buffers based on the current running_time.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the base class will automatically timestamp outgoing buffers.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">the source</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_async" c:identifier="gst_base_src_is_async">
- <doc xml:space="preserve">Get the current async behaviour of @src. See also gst_base_src_set_async().</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if @src is operating in async mode.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_live" c:identifier="gst_base_src_is_live">
- <doc xml:space="preserve">Check if an element is in live mode.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if element is in live mode.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="new_seamless_segment"
- c:identifier="gst_base_src_new_seamless_segment">
- <doc xml:space="preserve">Prepare a new seamless segment for emission downstream. This function must
- only be called by derived sub-classes, and only from the create() function,
- as the stream-lock needs to be held.
- The format for the new segment will be the current format of the source, as
- configured with gst_base_src_set_format()</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if preparation of the seamless segment succeeded.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">The source</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="start" transfer-ownership="none">
- <doc xml:space="preserve">The new start value for the segment</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- <parameter name="stop" transfer-ownership="none">
- <doc xml:space="preserve">Stop value for the new segment</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- <parameter name="time" transfer-ownership="none">
- <doc xml:space="preserve">The new time value for the start of the new segment</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="query_latency" c:identifier="gst_base_src_query_latency">
- <doc xml:space="preserve">Query the source for the latency parameters. @live will be %TRUE when @src is
- configured as a live source. @min_latency and @max_latency will be set
- to the difference between the running time and the timestamp of the first
- buffer.
- This function is mostly used by subclasses.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the query succeeded.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">the source</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="live"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">if the source is live</doc>
- <type name="gboolean" c:type="gboolean*"/>
- </parameter>
- <parameter name="min_latency"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the min latency of the source</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- <parameter name="max_latency"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the max latency of the source</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_async" c:identifier="gst_base_src_set_async">
- <doc xml:space="preserve">Configure async behaviour in @src, no state change will block. The open,
- close, start, stop, play and pause virtual methods will be executed in a
- different thread and are thus allowed to perform blocking operations. Any
- blocking operation should be unblocked with the unlock vmethod.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="async" transfer-ownership="none">
- <doc xml:space="preserve">new async mode</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_automatic_eos"
- c:identifier="gst_base_src_set_automatic_eos"
- version="1.4">
- <doc xml:space="preserve">If @automatic_eos is %TRUE, @src will automatically go EOS if a buffer
- after the total size is returned. By default this is %TRUE but sources
- that can't return an authoritative size and only know that they're EOS
- when trying to read more should set this to %FALSE.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="automatic_eos" transfer-ownership="none">
- <doc xml:space="preserve">automatic eos</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_blocksize" c:identifier="gst_base_src_set_blocksize">
- <doc xml:space="preserve">Set the number of bytes that @src will push out with each buffer. When
- @blocksize is set to -1, a default length will be used.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">the source</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="blocksize" transfer-ownership="none">
- <doc xml:space="preserve">the new blocksize in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_caps" c:identifier="gst_base_src_set_caps">
- <doc xml:space="preserve">Set new caps on the basesrc source pad.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the caps could be set</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSrc</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="caps" transfer-ownership="none">
- <doc xml:space="preserve">a #GstCaps</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_do_timestamp"
- c:identifier="gst_base_src_set_do_timestamp">
- <doc xml:space="preserve">Configure @src to automatically timestamp outgoing buffers based on the
- current running_time of the pipeline. This property is mostly useful for live
- sources.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">the source</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="timestamp" transfer-ownership="none">
- <doc xml:space="preserve">enable or disable timestamping</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_dynamic_size"
- c:identifier="gst_base_src_set_dynamic_size">
- <doc xml:space="preserve">If not @dynamic, size is only updated when needed, such as when trying to
- read past current tracked size. Otherwise, size is checked for upon each
- read.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="dynamic" transfer-ownership="none">
- <doc xml:space="preserve">new dynamic size mode</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_format" c:identifier="gst_base_src_set_format">
- <doc xml:space="preserve">Sets the default format of the source. This will be the format used
- for sending SEGMENT events and for performing seeks.
- If a format of GST_FORMAT_BYTES is set, the element will be able to
- operate in pull mode if the #GstBaseSrcClass.is_seekable() returns %TRUE.
- This function must only be called in states < %GST_STATE_PAUSED.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="format" transfer-ownership="none">
- <doc xml:space="preserve">the format to use</doc>
- <type name="Gst.Format" c:type="GstFormat"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_live" c:identifier="gst_base_src_set_live">
- <doc xml:space="preserve">If the element listens to a live source, @live should
- be set to %TRUE.
- A live source will not produce data in the PAUSED state and
- will therefore not be able to participate in the PREROLL phase
- of a pipeline. To signal this fact to the application and the
- pipeline, the state change return value of the live source will
- be GST_STATE_CHANGE_NO_PREROLL.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="live" transfer-ownership="none">
- <doc xml:space="preserve">new live-mode</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="start_complete" c:identifier="gst_base_src_start_complete">
- <doc xml:space="preserve">Complete an asynchronous start operation. When the subclass overrides the
- start method, it should call gst_base_src_start_complete() when the start
- operation completes either from the same thread or from an asynchronous
- helper thread.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="basesrc" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- <parameter name="ret" transfer-ownership="none">
- <doc xml:space="preserve">a #GstFlowReturn</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </parameter>
- </parameters>
- </method>
- <method name="start_wait" c:identifier="gst_base_src_start_wait">
- <doc xml:space="preserve">Wait until the start operation completes.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">a #GstFlowReturn.</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="basesrc" transfer-ownership="none">
- <doc xml:space="preserve">base source instance</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="wait_playing" c:identifier="gst_base_src_wait_playing">
- <doc xml:space="preserve">If the #GstBaseSrcClass.create() method performs its own synchronisation
- against the clock it must unblock when going from PLAYING to the PAUSED state
- and call this method before continuing to produce the remaining data.
- This function will block until a state change to PLAYING happens (in which
- case this function returns %GST_FLOW_OK) or the processing must be stopped due
- to a state change to READY or a FLUSH event (in which case this function
- returns %GST_FLOW_FLUSHING).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%GST_FLOW_OK if @src is PLAYING and processing can
- continue. Any other return value should be returned from the create vmethod.</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">the src</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </instance-parameter>
- </parameters>
- </method>
- <property name="blocksize" writable="1" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </property>
- <property name="do-timestamp" writable="1" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <property name="num-buffers" writable="1" transfer-ownership="none">
- <type name="gint" c:type="gint"/>
- </property>
- <property name="typefind" writable="1" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <field name="element">
- <type name="Gst.Element" c:type="GstElement"/>
- </field>
- <field name="srcpad">
- <type name="Gst.Pad" c:type="GstPad*"/>
- </field>
- <field name="live_lock">
- <type name="GLib.Mutex" c:type="GMutex"/>
- </field>
- <field name="live_cond">
- <type name="GLib.Cond" c:type="GCond"/>
- </field>
- <field name="is_live">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="live_running">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="blocksize">
- <type name="guint" c:type="guint"/>
- </field>
- <field name="can_activate_push">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="random_access">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="clock_id">
- <type name="Gst.ClockID" c:type="GstClockID"/>
- </field>
- <field name="segment">
- <type name="Gst.Segment" c:type="GstSegment"/>
- </field>
- <field name="need_newsegment">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="num_buffers">
- <type name="gint" c:type="gint"/>
- </field>
- <field name="num_buffers_left">
- <type name="gint" c:type="gint"/>
- </field>
- <field name="typefind">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="running">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="pending_seek">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </field>
- <field name="priv">
- <type name="BaseSrcPrivate" c:type="GstBaseSrcPrivate*"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="20">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </class>
- <record name="BaseSrcClass"
- c:type="GstBaseSrcClass"
- glib:is-gtype-struct-for="BaseSrc">
- <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
- needed. At the minimum, the @create method should be overridden to produce
- buffers.</doc>
- <field name="parent_class">
- <doc xml:space="preserve">Element parent class</doc>
- <type name="Gst.ElementClass" c:type="GstElementClass"/>
- </field>
- <field name="get_caps">
- <callback name="get_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="negotiate">
- <callback name="negotiate">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="fixate">
- <callback name="fixate">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="set_caps">
- <callback name="set_caps">
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the caps could be set</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseSrc</doc>
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <doc xml:space="preserve">a #GstCaps</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="decide_allocation">
- <callback name="decide_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="start">
- <callback name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="stop">
- <callback name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="get_times">
- <callback name="get_times">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="start" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- <parameter name="end" transfer-ownership="none">
- <type name="Gst.ClockTime" c:type="GstClockTime*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="get_size">
- <callback name="get_size">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="is_seekable">
- <callback name="is_seekable">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="prepare_seek_segment">
- <callback name="prepare_seek_segment">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="seek" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- <parameter name="segment" transfer-ownership="none">
- <type name="Gst.Segment" c:type="GstSegment*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="do_seek">
- <callback name="do_seek">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="segment" transfer-ownership="none">
- <type name="Gst.Segment" c:type="GstSegment*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="unlock">
- <callback name="unlock">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="unlock_stop">
- <callback name="unlock_stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="query">
- <callback name="query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="event">
- <callback name="event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="create">
- <callback name="create">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="alloc">
- <callback name="alloc">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="fill">
- <callback name="fill">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="BaseSrc" c:type="GstBaseSrc*"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="20">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <bitfield name="BaseSrcFlags" c:type="GstBaseSrcFlags">
- <doc xml:space="preserve">The #GstElement flags that a basesrc element may have.</doc>
- <member name="starting"
- value="16384"
- c:identifier="GST_BASE_SRC_FLAG_STARTING">
- <doc xml:space="preserve">has source is starting</doc>
- </member>
- <member name="started"
- value="32768"
- c:identifier="GST_BASE_SRC_FLAG_STARTED">
- <doc xml:space="preserve">has source been started</doc>
- </member>
- <member name="last"
- value="1048576"
- c:identifier="GST_BASE_SRC_FLAG_LAST">
- <doc xml:space="preserve">offset to define more flags</doc>
- </member>
- </bitfield>
- <record name="BaseSrcPrivate" c:type="GstBaseSrcPrivate" disguised="1">
- </record>
- <class name="BaseTransform"
- c:symbol-prefix="base_transform"
- c:type="GstBaseTransform"
- parent="Gst.Element"
- abstract="1"
- glib:type-name="GstBaseTransform"
- glib:get-type="gst_base_transform_get_type"
- glib:type-struct="BaseTransformClass">
- <doc xml:space="preserve">This base class is for filter elements that process data. Elements
- that are suitable for implementation using #GstBaseTransform are ones
- where the size and caps of the output is known entirely from the input
- caps and buffer sizes. These include elements that directly transform
- one buffer into another, modify the contents of a buffer in-place, as
- well as elements that collate multiple input buffers into one output buffer,
- or that expand one input buffer into multiple output buffers. See below
- for more concrete use cases.
- It provides for:
- <itemizedlist>
- <listitem><para>one sinkpad and one srcpad</para></listitem>
- <listitem><para>
- Possible formats on sink and source pad implemented
- with custom transform_caps function. By default uses
- same format on sink and source.
- </para></listitem>
- <listitem><para>Handles state changes</para></listitem>
- <listitem><para>Does flushing</para></listitem>
- <listitem><para>Push mode</para></listitem>
- <listitem><para>
- Pull mode if the sub-class transform can operate on arbitrary data
- </para></listitem>
- </itemizedlist>
- <refsect2>
- <title>Use Cases</title>
- <para>
- <orderedlist>
- <listitem>
- <itemizedlist><title>Passthrough mode</title>
- <listitem><para>
- Element has no interest in modifying the buffer. It may want to inspect it,
- in which case the element should have a transform_ip function. If there
- is no transform_ip function in passthrough mode, the buffer is pushed
- intact.
- </para></listitem>
- <listitem><para>
- The #GstBaseTransformClass.passthrough_on_same_caps variable
- will automatically set/unset passthrough based on whether the
- element negotiates the same caps on both pads.
- </para></listitem>
- <listitem><para>
- #GstBaseTransformClass.passthrough_on_same_caps on an element that
- doesn't implement a transform_caps function is useful for elements that
- only inspect data (such as level)
- </para></listitem>
- </itemizedlist>
- <itemizedlist>
- <title>Example elements</title>
- <listitem>Level</listitem>
- <listitem>Videoscale, audioconvert, videoconvert, audioresample in
- certain modes.</listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist>
- <title>Modifications in-place - input buffer and output buffer are the
- same thing.</title>
- <listitem><para>
- The element must implement a transform_ip function.
- </para></listitem>
- <listitem><para>
- Output buffer size must <= input buffer size
- </para></listitem>
- <listitem><para>
- If the always_in_place flag is set, non-writable buffers will be copied
- and passed to the transform_ip function, otherwise a new buffer will be
- created and the transform function called.
- </para></listitem>
- <listitem><para>
- Incoming writable buffers will be passed to the transform_ip function
- immediately. </para></listitem>
- <listitem><para>
- only implementing transform_ip and not transform implies always_in_place
- = %TRUE
- </para></listitem>
- </itemizedlist>
- <itemizedlist>
- <title>Example elements</title>
- <listitem>Volume</listitem>
- <listitem>Audioconvert in certain modes (signed/unsigned
- conversion)</listitem>
- <listitem>videoconvert in certain modes (endianness
- swapping)</listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist>
- <title>Modifications only to the caps/metadata of a buffer</title>
- <listitem><para>
- The element does not require writable data, but non-writable buffers
- should be subbuffered so that the meta-information can be replaced.
- </para></listitem>
- <listitem><para>
- Elements wishing to operate in this mode should replace the
- prepare_output_buffer method to create subbuffers of the input buffer
- and set always_in_place to %TRUE
- </para></listitem>
- </itemizedlist>
- <itemizedlist>
- <title>Example elements</title>
- <listitem>Capsfilter when setting caps on outgoing buffers that have
- none.</listitem>
- <listitem>identity when it is going to re-timestamp buffers by
- datarate.</listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist><title>Normal mode</title>
- <listitem><para>
- always_in_place flag is not set, or there is no transform_ip function
- </para></listitem>
- <listitem><para>
- Element will receive an input buffer and output buffer to operate on.
- </para></listitem>
- <listitem><para>
- Output buffer is allocated by calling the prepare_output_buffer function.
- </para></listitem>
- </itemizedlist>
- <itemizedlist>
- <title>Example elements</title>
- <listitem>Videoscale, videoconvert, audioconvert when doing
- scaling/conversions</listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <itemizedlist><title>Special output buffer allocations</title>
- <listitem><para>
- Elements which need to do special allocation of their output buffers
- beyond allocating output buffers via the negotiated allocator or
- buffer pool should implement the prepare_output_buffer method.
- </para></listitem>
- </itemizedlist>
- <itemizedlist>
- <title>Example elements</title>
- <listitem>efence</listitem>
- </itemizedlist>
- </listitem>
- </orderedlist>
- </para>
- </refsect2>
- <refsect2>
- <title>Sub-class settable flags on GstBaseTransform</title>
- <para>
- <itemizedlist>
- <listitem><para>
- <itemizedlist><title>passthrough</title>
- <listitem><para>
- Implies that in the current configuration, the sub-class is not
- interested in modifying the buffers.
- </para></listitem>
- <listitem><para>
- Elements which are always in passthrough mode whenever the same caps
- has been negotiated on both pads can set the class variable
- passthrough_on_same_caps to have this behaviour automatically.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- <listitem><para>
- <itemizedlist><title>always_in_place</title>
- <listitem><para>
- Determines whether a non-writable buffer will be copied before passing
- to the transform_ip function.
- </para></listitem>
- <listitem><para>
- Implied %TRUE if no transform function is implemented.
- </para></listitem>
- <listitem><para>
- Implied %FALSE if ONLY transform function is implemented.
- </para></listitem>
- </itemizedlist>
- </para></listitem>
- </itemizedlist>
- </para>
- </refsect2></doc>
- <virtual-method name="accept_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="before_transform">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="copy_metadata">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="input" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="decide_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="filter_meta">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- <parameter name="api" transfer-ownership="none">
- <type name="GType" c:type="GType"/>
- </parameter>
- <parameter name="params" transfer-ownership="none">
- <type name="Gst.Structure" c:type="const GstStructure*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="fixate_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="othercaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="generate_output">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="get_unit_size">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="gsize" c:type="gsize*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="prepare_output_buffer">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="input" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="propose_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="decide_query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="set_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="incaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="outcaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="sink_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="src_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="submit_input_buffer">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="is_discont" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- <parameter name="input" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="transform">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="inbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="transform_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="transform_ip">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="transform_meta">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="meta" transfer-ownership="none">
- <type name="Gst.Meta" c:type="GstMeta*"/>
- </parameter>
- <parameter name="inbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="transform_size">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="othercaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="othersize" transfer-ownership="none">
- <type name="gsize" c:type="gsize*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <method name="get_allocator"
- c:identifier="gst_base_transform_get_allocator">
- <doc xml:space="preserve">Lets #GstBaseTransform sub-classes to know the memory @allocator
- used by the base class and its @params.
- Unref the @allocator after use it.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="allocator"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the #GstAllocator
- used</doc>
- <type name="Gst.Allocator" c:type="GstAllocator**"/>
- </parameter>
- <parameter name="params"
- direction="out"
- caller-allocates="1"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">the
- #GstAllocationParams of @allocator</doc>
- <type name="Gst.AllocationParams" c:type="GstAllocationParams*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_buffer_pool"
- c:identifier="gst_base_transform_get_buffer_pool">
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">the instance of the #GstBufferPool used
- by @trans; free it after use it</doc>
- <type name="Gst.BufferPool" c:type="GstBufferPool*"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_in_place" c:identifier="gst_base_transform_is_in_place">
- <doc xml:space="preserve">See if @trans is configured as a in_place transform.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE is the transform is configured in in_place mode.
- MT safe.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">the #GstBaseTransform to query</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_passthrough"
- c:identifier="gst_base_transform_is_passthrough">
- <doc xml:space="preserve">See if @trans is configured as a passthrough transform.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE is the transform is configured in passthrough mode.
- MT safe.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">the #GstBaseTransform to query</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_qos_enabled"
- c:identifier="gst_base_transform_is_qos_enabled">
- <doc xml:space="preserve">Queries if the transform will handle QoS.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if QoS is enabled.
- MT safe.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="reconfigure_sink"
- c:identifier="gst_base_transform_reconfigure_sink">
- <doc xml:space="preserve">Instructs @trans to request renegotiation upstream. This function is
- typically called after properties on the transform were set that
- influence the input format.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="reconfigure_src"
- c:identifier="gst_base_transform_reconfigure_src">
- <doc xml:space="preserve">Instructs @trans to renegotiate a new downstream transform on the next
- buffer. This function is typically called after properties on the transform
- were set that influence the output format.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="set_gap_aware"
- c:identifier="gst_base_transform_set_gap_aware">
- <doc xml:space="preserve">If @gap_aware is %FALSE (the default), output buffers will have the
- %GST_BUFFER_FLAG_GAP flag unset.
- If set to %TRUE, the element must handle output buffers with this flag set
- correctly, i.e. it can assume that the buffer contains neutral data but must
- unset the flag if the output is no neutral data.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="gap_aware" transfer-ownership="none">
- <doc xml:space="preserve">New state</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_in_place"
- c:identifier="gst_base_transform_set_in_place">
- <doc xml:space="preserve">Determines whether a non-writable buffer will be copied before passing
- to the transform_ip function.
- <itemizedlist>
- <listitem>Always %TRUE if no transform function is implemented.</listitem>
- <listitem>Always %FALSE if ONLY transform function is implemented.</listitem>
- </itemizedlist>
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">the #GstBaseTransform to modify</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="in_place" transfer-ownership="none">
- <doc xml:space="preserve">Boolean value indicating that we would like to operate
- on in_place buffers.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_passthrough"
- c:identifier="gst_base_transform_set_passthrough">
- <doc xml:space="preserve">Set passthrough mode for this filter by default. This is mostly
- useful for filters that do not care about negotiation.
- Always %TRUE for filters which don't implement either a transform
- or transform_ip method.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">the #GstBaseTransform to set</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="passthrough" transfer-ownership="none">
- <doc xml:space="preserve">boolean indicating passthrough mode.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_prefer_passthrough"
- c:identifier="gst_base_transform_set_prefer_passthrough"
- version="1.0.1">
- <doc xml:space="preserve">If @prefer_passthrough is %TRUE (the default), @trans will check and
- prefer passthrough caps from the list of caps returned by the
- transform_caps vmethod.
- If set to %FALSE, the element must order the caps returned from the
- transform_caps function in such a way that the preferred format is
- first in the list. This can be interesting for transforms that can do
- passthrough transforms but prefer to do something else, like a
- capsfilter.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="prefer_passthrough" transfer-ownership="none">
- <doc xml:space="preserve">New state</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_qos_enabled"
- c:identifier="gst_base_transform_set_qos_enabled">
- <doc xml:space="preserve">Enable or disable QoS handling in the transform.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="enabled" transfer-ownership="none">
- <doc xml:space="preserve">new state</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="update_qos" c:identifier="gst_base_transform_update_qos">
- <doc xml:space="preserve">Set the QoS parameters in the transform. This function is called internally
- when a QOS event is received but subclasses can provide custom information
- when needed.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="proportion" transfer-ownership="none">
- <doc xml:space="preserve">the proportion</doc>
- <type name="gdouble" c:type="gdouble"/>
- </parameter>
- <parameter name="diff" transfer-ownership="none">
- <doc xml:space="preserve">the diff against the clock</doc>
- <type name="Gst.ClockTimeDiff" c:type="GstClockTimeDiff"/>
- </parameter>
- <parameter name="timestamp" transfer-ownership="none">
- <doc xml:space="preserve">the timestamp of the buffer generating the QoS expressed in
- running_time.</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- </parameters>
- </method>
- <method name="update_src_caps"
- c:identifier="gst_base_transform_update_src_caps"
- version="1.6">
- <doc xml:space="preserve">Updates the srcpad caps and send the caps downstream. This function
- can be used by subclasses when they have already negotiated their caps
- but found a change in them (or computed new informations). This way,
- they can notify downstream about that change without loosing any
- buffer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the caps could be send downstream %FALSE otherwise</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="trans" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBaseTransform</doc>
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </instance-parameter>
- <parameter name="updated_caps" transfer-ownership="none">
- <doc xml:space="preserve">An updated version of the srcpad caps to be pushed
- downstream</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </method>
- <property name="qos" writable="1" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </property>
- <field name="element">
- <type name="Gst.Element" c:type="GstElement"/>
- </field>
- <field name="sinkpad">
- <type name="Gst.Pad" c:type="GstPad*"/>
- </field>
- <field name="srcpad">
- <type name="Gst.Pad" c:type="GstPad*"/>
- </field>
- <field name="have_segment">
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="segment">
- <type name="Gst.Segment" c:type="GstSegment"/>
- </field>
- <field name="queued_buf">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </field>
- <field name="priv" readable="0" private="1">
- <type name="BaseTransformPrivate" c:type="GstBaseTransformPrivate*"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="19">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </class>
- <record name="BaseTransformClass"
- c:type="GstBaseTransformClass"
- glib:is-gtype-struct-for="BaseTransform">
- <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
- needed. At minimum either @transform or @transform_ip need to be overridden.
- If the element can overwrite the input data with the results (data is of the
- same type and quantity) it should provide @transform_ip.</doc>
- <field name="parent_class">
- <doc xml:space="preserve">Element parent class</doc>
- <type name="Gst.ElementClass" c:type="GstElementClass"/>
- </field>
- <field name="passthrough_on_same_caps">
- <doc xml:space="preserve">If set to %TRUE, passthrough mode will be
- automatically enabled if the caps are the same.
- Set to %FALSE by default.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="transform_ip_on_passthrough">
- <doc xml:space="preserve">If set to %TRUE, @transform_ip will be called in
- passthrough mode. The passed buffer might not be
- writable. When %FALSE, neither @transform nor
- @transform_ip will be called in passthrough mode.
- Set to %TRUE by default.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="transform_caps">
- <callback name="transform_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="filter" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="fixate_caps">
- <callback name="fixate_caps">
- <return-value transfer-ownership="full">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="othercaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="accept_caps">
- <callback name="accept_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="set_caps">
- <callback name="set_caps">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="incaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="outcaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="query">
- <callback name="query">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="decide_allocation">
- <callback name="decide_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="filter_meta">
- <callback name="filter_meta">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- <parameter name="api" transfer-ownership="none">
- <type name="GType" c:type="GType"/>
- </parameter>
- <parameter name="params" transfer-ownership="none">
- <type name="Gst.Structure" c:type="const GstStructure*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="propose_allocation">
- <callback name="propose_allocation">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="decide_query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="transform_size">
- <callback name="transform_size">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="direction" transfer-ownership="none">
- <type name="Gst.PadDirection" c:type="GstPadDirection"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="othercaps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="othersize" transfer-ownership="none">
- <type name="gsize" c:type="gsize*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="get_unit_size">
- <callback name="get_unit_size">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="caps" transfer-ownership="none">
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <type name="gsize" c:type="gsize*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="start">
- <callback name="start">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="stop">
- <callback name="stop">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="sink_event">
- <callback name="sink_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="src_event">
- <callback name="src_event">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="prepare_output_buffer">
- <callback name="prepare_output_buffer">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="input" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="copy_metadata">
- <callback name="copy_metadata">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="input" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="transform_meta">
- <callback name="transform_meta">
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="meta" transfer-ownership="none">
- <type name="Gst.Meta" c:type="GstMeta*"/>
- </parameter>
- <parameter name="inbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="before_transform">
- <callback name="before_transform">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="transform">
- <callback name="transform">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="inbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="transform_ip">
- <callback name="transform_ip">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="submit_input_buffer">
- <callback name="submit_input_buffer">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="is_discont" transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- <parameter name="input" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="generate_output">
- <callback name="generate_output">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="trans" transfer-ownership="none">
- <type name="BaseTransform" c:type="GstBaseTransform*"/>
- </parameter>
- <parameter name="outbuf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="18">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <record name="BaseTransformPrivate"
- c:type="GstBaseTransformPrivate"
- disguised="1">
- </record>
- <record name="BitReader" c:type="GstBitReader">
- <doc xml:space="preserve">#GstBitReader provides a bit reader that can read any number of bits
- from a memory buffer. It provides functions for reading any number of bits
- into 8, 16, 32 and 64 bit variables.</doc>
- <field name="data" writable="1">
- <doc xml:space="preserve">Data from which the bit reader will
- read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </field>
- <field name="size" writable="1">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="byte" writable="1">
- <doc xml:space="preserve">Current byte position</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="bit" writable="1">
- <doc xml:space="preserve">Bit position in the current byte</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- <method name="free" c:identifier="gst_bit_reader_free">
- <doc xml:space="preserve">Frees a #GstBitReader instance, which was previously allocated by
- gst_bit_reader_new().</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="full">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_bits_uint16"
- c:identifier="gst_bit_reader_get_bits_uint16">
- <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
- <type name="guint16" c:type="guint16*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_bits_uint32"
- c:identifier="gst_bit_reader_get_bits_uint32">
- <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_bits_uint64"
- c:identifier="gst_bit_reader_get_bits_uint64">
- <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_bits_uint8"
- c:identifier="gst_bit_reader_get_bits_uint8">
- <doc xml:space="preserve">Read @nbits bits into @val and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
- <type name="guint8" c:type="guint8*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_pos" c:identifier="gst_bit_reader_get_pos">
- <doc xml:space="preserve">Returns the current position of a #GstBitReader instance in bits.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The current position of @reader in bits.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="const GstBitReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_remaining" c:identifier="gst_bit_reader_get_remaining">
- <doc xml:space="preserve">Returns the remaining number of bits of a #GstBitReader instance.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The remaining number of bits of @reader instance.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="const GstBitReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_size" c:identifier="gst_bit_reader_get_size">
- <doc xml:space="preserve">Returns the total number of bits of a #GstBitReader instance.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The total number of bits of @reader instance.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="const GstBitReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="init" c:identifier="gst_bit_reader_init">
- <doc xml:space="preserve">Initializes a #GstBitReader instance to read from @data. This function
- can be called on already initialized instances.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">data from which the bit reader should read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_bits_uint16"
- c:identifier="gst_bit_reader_peek_bits_uint16">
- <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="const GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
- <type name="guint16" c:type="guint16*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_bits_uint32"
- c:identifier="gst_bit_reader_peek_bits_uint32">
- <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="const GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_bits_uint64"
- c:identifier="gst_bit_reader_peek_bits_uint64">
- <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="const GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_bits_uint8"
- c:identifier="gst_bit_reader_peek_bits_uint8">
- <doc xml:space="preserve">Read @nbits bits into @val but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="const GstBitReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
- <type name="guint8" c:type="guint8*"/>
- </parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">number of bits to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_pos" c:identifier="gst_bit_reader_set_pos">
- <doc xml:space="preserve">Sets the new position of a #GstBitReader instance to @pos in bits.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the position could be set successfully, %FALSE
- otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- <parameter name="pos" transfer-ownership="none">
- <doc xml:space="preserve">The new position in bits</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="skip" c:identifier="gst_bit_reader_skip">
- <doc xml:space="preserve">Skips @nbits bits of the #GstBitReader instance.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if @nbits bits could be skipped, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- <parameter name="nbits" transfer-ownership="none">
- <doc xml:space="preserve">the number of bits to skip</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="skip_to_byte" c:identifier="gst_bit_reader_skip_to_byte">
- <doc xml:space="preserve">Skips until the next byte.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <function name="new"
- c:identifier="gst_bit_reader_new"
- introspectable="0">
- <doc xml:space="preserve">Create a new #GstBitReader instance, which will read from @data.
- Free-function: gst_bit_reader_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">Data from which the #GstBitReader
- should read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- </record>
- <record name="ByteReader" c:type="GstByteReader">
- <doc xml:space="preserve">#GstByteReader provides a byte reader that can read different integer and
- floating point types from a memory buffer. It provides functions for reading
- signed/unsigned, little/big endian integers of 8, 16, 24, 32 and 64 bits
- and functions for reading little/big endian floating points numbers of
- 32 and 64 bits. It also provides functions to read NUL-terminated strings
- in various character encodings.</doc>
- <field name="data" writable="1">
- <doc xml:space="preserve">Data from which the bit reader will
- read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </field>
- <field name="size" writable="1">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="byte" writable="1">
- <doc xml:space="preserve">Current byte position</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- <method name="dup_data" c:identifier="gst_byte_reader_dup_data">
- <doc xml:space="preserve">Free-function: g_free
- Returns a newly-allocated copy of the current data
- position if at least @size bytes are left and
- updates the current position. Free with g_free() when no longer needed.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="size"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Size in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">address of a
- #guint8 pointer variable in which to store the result</doc>
- <array length="0" zero-terminated="0" c:type="guint8**">
- <type name="guint8" c:type="guint8*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="dup_string_utf16"
- c:identifier="gst_byte_reader_dup_string_utf16">
- <doc xml:space="preserve">Free-function: g_free
- Returns a newly-allocated copy of the current data position if there is
- a NUL-terminated UTF-16 string in the data (this could be an empty string
- as well), and advances the current position.
- No input checking for valid UTF-16 is done. This function is endianness
- agnostic - you should not assume the UTF-16 characters are in host
- endianness.
- This function will fail if no NUL-terminator was found in in the data.
- Note: there is no peek or get variant of this function to ensure correct
- byte alignment of the UTF-16 string.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be read, %FALSE otherwise. The
- string put into @str must be freed with g_free() when no longer needed.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="str"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">address of a
- #guint16 pointer variable in which to store the result</doc>
- <array c:type="guint16**">
- <type name="guint16" c:type="guint16*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="dup_string_utf32"
- c:identifier="gst_byte_reader_dup_string_utf32">
- <doc xml:space="preserve">Free-function: g_free
- Returns a newly-allocated copy of the current data position if there is
- a NUL-terminated UTF-32 string in the data (this could be an empty string
- as well), and advances the current position.
- No input checking for valid UTF-32 is done. This function is endianness
- agnostic - you should not assume the UTF-32 characters are in host
- endianness.
- This function will fail if no NUL-terminator was found in in the data.
- Note: there is no peek or get variant of this function to ensure correct
- byte alignment of the UTF-32 string.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be read, %FALSE otherwise. The
- string put into @str must be freed with g_free() when no longer needed.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="str"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">address of a
- #guint32 pointer variable in which to store the result</doc>
- <array c:type="guint32**">
- <type name="guint32" c:type="guint32*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="dup_string_utf8"
- c:identifier="gst_byte_reader_dup_string_utf8">
- <doc xml:space="preserve">Free-function: g_free
- FIXME:Reads (copies) a NUL-terminated string in the #GstByteReader instance,
- advancing the current position to the byte after the string. This will work
- for any NUL-terminated string with a character width of 8 bits, so ASCII,
- UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
- This function will fail if no NUL-terminator was found in in the data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be read into @str, %FALSE otherwise. The
- string put into @str must be freed with g_free() when no longer needed.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="str"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">address of a
- #gchar pointer variable in which to store the result</doc>
- <array c:type="gchar**">
- <type name="utf8" c:type="gchar*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="free" c:identifier="gst_byte_reader_free">
- <doc xml:space="preserve">Frees a #GstByteReader instance, which was previously allocated by
- gst_byte_reader_new().</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="full">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_data" c:identifier="gst_byte_reader_get_data">
- <doc xml:space="preserve">Returns a constant pointer to the current data
- position if at least @size bytes are left and
- updates the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="size"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Size in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="none">
- <doc xml:space="preserve">address of a
- #guint8 pointer variable in which to store the result</doc>
- <array length="0" zero-terminated="0" c:type="guint8**">
- <type name="guint8" c:type="guint8*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="get_float32_be"
- c:identifier="gst_byte_reader_get_float32_be">
- <doc xml:space="preserve">Read a 32 bit big endian floating point value into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
- <type name="gfloat" c:type="gfloat*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_float32_le"
- c:identifier="gst_byte_reader_get_float32_le">
- <doc xml:space="preserve">Read a 32 bit little endian floating point value into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
- <type name="gfloat" c:type="gfloat*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_float64_be"
- c:identifier="gst_byte_reader_get_float64_be">
- <doc xml:space="preserve">Read a 64 bit big endian floating point value into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
- <type name="gdouble" c:type="gdouble*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_float64_le"
- c:identifier="gst_byte_reader_get_float64_le">
- <doc xml:space="preserve">Read a 64 bit little endian floating point value into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
- <type name="gdouble" c:type="gdouble*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int16_be" c:identifier="gst_byte_reader_get_int16_be">
- <doc xml:space="preserve">Read a signed 16 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
- <type name="gint16" c:type="gint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int16_le" c:identifier="gst_byte_reader_get_int16_le">
- <doc xml:space="preserve">Read a signed 16 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
- <type name="gint16" c:type="gint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int24_be" c:identifier="gst_byte_reader_get_int24_be">
- <doc xml:space="preserve">Read a signed 24 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int24_le" c:identifier="gst_byte_reader_get_int24_le">
- <doc xml:space="preserve">Read a signed 24 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int32_be" c:identifier="gst_byte_reader_get_int32_be">
- <doc xml:space="preserve">Read a signed 32 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int32_le" c:identifier="gst_byte_reader_get_int32_le">
- <doc xml:space="preserve">Read a signed 32 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int64_be" c:identifier="gst_byte_reader_get_int64_be">
- <doc xml:space="preserve">Read a signed 64 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
- <type name="gint64" c:type="gint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int64_le" c:identifier="gst_byte_reader_get_int64_le">
- <doc xml:space="preserve">Read a signed 64 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
- <type name="gint64" c:type="gint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_int8" c:identifier="gst_byte_reader_get_int8">
- <doc xml:space="preserve">Read a signed 8 bit integer into @val and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint8 to store the result</doc>
- <type name="gint8" c:type="gint8*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_pos" c:identifier="gst_byte_reader_get_pos">
- <doc xml:space="preserve">Returns the current position of a #GstByteReader instance in bytes.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The current position of @reader in bytes.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_remaining"
- c:identifier="gst_byte_reader_get_remaining">
- <doc xml:space="preserve">Returns the remaining number of bytes of a #GstByteReader instance.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The remaining number of bytes of @reader instance.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_size" c:identifier="gst_byte_reader_get_size">
- <doc xml:space="preserve">Returns the total number of bytes of a #GstByteReader instance.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The total number of bytes of @reader instance.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_string_utf8"
- c:identifier="gst_byte_reader_get_string_utf8">
- <doc xml:space="preserve">Returns a constant pointer to the current data position if there is
- a NUL-terminated string in the data (this could be just a NUL terminator),
- advancing the current position to the byte after the string. This will work
- for any NUL-terminated string with a character width of 8 bits, so ASCII,
- UTF-8, ISO-8859-N etc.
- No input checking for valid UTF-8 is done.
- This function will fail if no NUL-terminator was found in in the data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be found, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="str"
- direction="out"
- caller-allocates="0"
- transfer-ownership="none">
- <doc xml:space="preserve">address of a
- #gchar pointer variable in which to store the result</doc>
- <array c:type="gchar**">
- <type name="utf8" c:type="gchar*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="get_sub_reader"
- c:identifier="gst_byte_reader_get_sub_reader"
- version="1.6"
- introspectable="0">
- <doc xml:space="preserve">Initializes a #GstByteReader sub-reader instance to contain @size bytes of
- data from the current position of @reader. This is useful to read chunked
- formats and make sure that one doesn't read beyond the size of the sub-chunk.
- Unlike gst_byte_reader_peek_sub_reader(), this function also modifies the
- position of @reader and moves it forward by @size bytes.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">FALSE on error or if @reader does not contain @size more bytes from
- the current position, and otherwise TRUE</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">an existing and initialized #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="sub_reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance to initialize as sub-reader</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">size of @sub_reader in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint16_be"
- c:identifier="gst_byte_reader_get_uint16_be">
- <doc xml:space="preserve">Read an unsigned 16 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
- <type name="guint16" c:type="guint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint16_le"
- c:identifier="gst_byte_reader_get_uint16_le">
- <doc xml:space="preserve">Read an unsigned 16 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
- <type name="guint16" c:type="guint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint24_be"
- c:identifier="gst_byte_reader_get_uint24_be">
- <doc xml:space="preserve">Read an unsigned 24 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint24_le"
- c:identifier="gst_byte_reader_get_uint24_le">
- <doc xml:space="preserve">Read an unsigned 24 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint32_be"
- c:identifier="gst_byte_reader_get_uint32_be">
- <doc xml:space="preserve">Read an unsigned 32 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint32_le"
- c:identifier="gst_byte_reader_get_uint32_le">
- <doc xml:space="preserve">Read an unsigned 32 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint64_be"
- c:identifier="gst_byte_reader_get_uint64_be">
- <doc xml:space="preserve">Read an unsigned 64 bit big endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint64_le"
- c:identifier="gst_byte_reader_get_uint64_le">
- <doc xml:space="preserve">Read an unsigned 64 bit little endian integer into @val
- and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="get_uint8" c:identifier="gst_byte_reader_get_uint8">
- <doc xml:space="preserve">Read an unsigned 8 bit integer into @val and update the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
- <type name="guint8" c:type="guint8*"/>
- </parameter>
- </parameters>
- </method>
- <method name="init" c:identifier="gst_byte_reader_init">
- <doc xml:space="preserve">Initializes a #GstByteReader instance to read from @data. This function
- can be called on already initialized instances.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">data from which
- the #GstByteReader should read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="masked_scan_uint32"
- c:identifier="gst_byte_reader_masked_scan_uint32">
- <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the byte reader data,
- starting from offset @offset relative to the current position.
- The bytes in @pattern and @mask are interpreted left-to-right, regardless
- of endianness. All four bytes of the pattern must be present in the
- byte reader data for it to match, even if the first or last bytes are masked
- out.
- It is an error to call this function without making sure that there is
- enough data (offset+size bytes) in the byte reader.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">offset of the first match, or -1 if no match was found.
- Example:
- <programlisting>
- // Assume the reader contains 0x00 0x01 0x02 ... 0xfe 0xff
- gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 0, 256);
- // -> returns 0
- gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x00010203, 1, 255);
- // -> returns -1
- gst_byte_reader_masked_scan_uint32 (reader, 0xffffffff, 0x01020304, 1, 255);
- // -> returns 1
- gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0001, 0, 256);
- // -> returns -1
- gst_byte_reader_masked_scan_uint32 (reader, 0xffff, 0x0203, 0, 256);
- // -> returns 0
- gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 256);
- // -> returns 2
- gst_byte_reader_masked_scan_uint32 (reader, 0xffff0000, 0x02030000, 0, 4);
- // -> returns -1
- </programlisting></doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="mask" transfer-ownership="none">
- <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="pattern" transfer-ownership="none">
- <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">offset from which to start scanning, relative to the current
- position</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">number of bytes to scan from offset</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="masked_scan_uint32_peek"
- c:identifier="gst_byte_reader_masked_scan_uint32_peek"
- version="1.6">
- <doc xml:space="preserve">Scan for pattern @pattern with applied mask @mask in the byte reader data,
- starting from offset @offset relative to the current position.
- The bytes in @pattern and @mask are interpreted left-to-right, regardless
- of endianness. All four bytes of the pattern must be present in the
- byte reader data for it to match, even if the first or last bytes are masked
- out.
- It is an error to call this function without making sure that there is
- enough data (offset+size bytes) in the byte reader.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">offset of the first match, or -1 if no match was found.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="mask" transfer-ownership="none">
- <doc xml:space="preserve">mask to apply to data before matching against @pattern</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="pattern" transfer-ownership="none">
- <doc xml:space="preserve">pattern to match (after mask is applied)</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">offset from which to start scanning, relative to the current
- position</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">number of bytes to scan from offset</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="value" transfer-ownership="none">
- <doc xml:space="preserve">pointer to uint32 to return matching data</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_data" c:identifier="gst_byte_reader_peek_data">
- <doc xml:space="preserve">Returns a constant pointer to the current data
- position if at least @size bytes are left and
- keeps the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="size"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Size in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="none">
- <doc xml:space="preserve">address of a
- #guint8 pointer variable in which to store the result</doc>
- <array length="0" zero-terminated="0" c:type="guint8**">
- <type name="guint8" c:type="guint8*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="peek_float32_be"
- c:identifier="gst_byte_reader_peek_float32_be">
- <doc xml:space="preserve">Read a 32 bit big endian floating point value into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
- <type name="gfloat" c:type="gfloat*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_float32_le"
- c:identifier="gst_byte_reader_peek_float32_le">
- <doc xml:space="preserve">Read a 32 bit little endian floating point value into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gfloat to store the result</doc>
- <type name="gfloat" c:type="gfloat*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_float64_be"
- c:identifier="gst_byte_reader_peek_float64_be">
- <doc xml:space="preserve">Read a 64 bit big endian floating point value into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
- <type name="gdouble" c:type="gdouble*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_float64_le"
- c:identifier="gst_byte_reader_peek_float64_le">
- <doc xml:space="preserve">Read a 64 bit little endian floating point value into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gdouble to store the result</doc>
- <type name="gdouble" c:type="gdouble*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int16_be"
- c:identifier="gst_byte_reader_peek_int16_be">
- <doc xml:space="preserve">Read a signed 16 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
- <type name="gint16" c:type="gint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int16_le"
- c:identifier="gst_byte_reader_peek_int16_le">
- <doc xml:space="preserve">Read a signed 16 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint16 to store the result</doc>
- <type name="gint16" c:type="gint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int24_be"
- c:identifier="gst_byte_reader_peek_int24_be">
- <doc xml:space="preserve">Read a signed 24 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int24_le"
- c:identifier="gst_byte_reader_peek_int24_le">
- <doc xml:space="preserve">Read a signed 24 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int32_be"
- c:identifier="gst_byte_reader_peek_int32_be">
- <doc xml:space="preserve">Read a signed 32 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int32_le"
- c:identifier="gst_byte_reader_peek_int32_le">
- <doc xml:space="preserve">Read a signed 32 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint32 to store the result</doc>
- <type name="gint32" c:type="gint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int64_be"
- c:identifier="gst_byte_reader_peek_int64_be">
- <doc xml:space="preserve">Read a signed 64 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
- <type name="gint64" c:type="gint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int64_le"
- c:identifier="gst_byte_reader_peek_int64_le">
- <doc xml:space="preserve">Read a signed 64 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint64 to store the result</doc>
- <type name="gint64" c:type="gint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_int8" c:identifier="gst_byte_reader_peek_int8">
- <doc xml:space="preserve">Read a signed 8 bit integer into @val but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #gint8 to store the result</doc>
- <type name="gint8" c:type="gint8*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_string_utf8"
- c:identifier="gst_byte_reader_peek_string_utf8">
- <doc xml:space="preserve">Returns a constant pointer to the current data position if there is
- a NUL-terminated string in the data (this could be just a NUL terminator).
- The current position will be maintained. This will work for any
- NUL-terminated string with a character width of 8 bits, so ASCII,
- UTF-8, ISO-8859-N etc.
- No input checking for valid UTF-8 is done.
- This function will fail if no NUL-terminator was found in in the data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="str"
- direction="out"
- caller-allocates="0"
- transfer-ownership="none">
- <doc xml:space="preserve">address of a
- #gchar pointer variable in which to store the result</doc>
- <array c:type="gchar**">
- <type name="utf8" c:type="gchar*"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="peek_sub_reader"
- c:identifier="gst_byte_reader_peek_sub_reader"
- version="1.6"
- introspectable="0">
- <doc xml:space="preserve">Initializes a #GstByteReader sub-reader instance to contain @size bytes of
- data from the current position of @reader. This is useful to read chunked
- formats and make sure that one doesn't read beyond the size of the sub-chunk.
- Unlike gst_byte_reader_get_sub_reader(), this function does not modify the
- current position of @reader.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">FALSE on error or if @reader does not contain @size more bytes from
- the current position, and otherwise TRUE</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">an existing and initialized #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="sub_reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance to initialize as sub-reader</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">size of @sub_reader in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint16_be"
- c:identifier="gst_byte_reader_peek_uint16_be">
- <doc xml:space="preserve">Read an unsigned 16 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
- <type name="guint16" c:type="guint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint16_le"
- c:identifier="gst_byte_reader_peek_uint16_le">
- <doc xml:space="preserve">Read an unsigned 16 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint16 to store the result</doc>
- <type name="guint16" c:type="guint16*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint24_be"
- c:identifier="gst_byte_reader_peek_uint24_be">
- <doc xml:space="preserve">Read an unsigned 24 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint24_le"
- c:identifier="gst_byte_reader_peek_uint24_le">
- <doc xml:space="preserve">Read an unsigned 24 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint32_be"
- c:identifier="gst_byte_reader_peek_uint32_be">
- <doc xml:space="preserve">Read an unsigned 32 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint32_le"
- c:identifier="gst_byte_reader_peek_uint32_le">
- <doc xml:space="preserve">Read an unsigned 32 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint32 to store the result</doc>
- <type name="guint32" c:type="guint32*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint64_be"
- c:identifier="gst_byte_reader_peek_uint64_be">
- <doc xml:space="preserve">Read an unsigned 64 bit big endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint64_le"
- c:identifier="gst_byte_reader_peek_uint64_le">
- <doc xml:space="preserve">Read an unsigned 64 bit little endian integer into @val
- but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint64 to store the result</doc>
- <type name="guint64" c:type="guint64*"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek_uint8" c:identifier="gst_byte_reader_peek_uint8">
- <doc xml:space="preserve">Read an unsigned 8 bit integer into @val but keep the current position.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if successful, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="const GstByteReader*"/>
- </instance-parameter>
- <parameter name="val"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full">
- <doc xml:space="preserve">Pointer to a #guint8 to store the result</doc>
- <type name="guint8" c:type="guint8*"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_pos" c:identifier="gst_byte_reader_set_pos">
- <doc xml:space="preserve">Sets the new position of a #GstByteReader instance to @pos in bytes.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the position could be set successfully, %FALSE
- otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="pos" transfer-ownership="none">
- <doc xml:space="preserve">The new position in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="skip" c:identifier="gst_byte_reader_skip">
- <doc xml:space="preserve">Skips @nbytes bytes of the #GstByteReader instance.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if @nbytes bytes could be skipped, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- <parameter name="nbytes" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to skip</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="skip_string_utf16"
- c:identifier="gst_byte_reader_skip_string_utf16">
- <doc xml:space="preserve">Skips a NUL-terminated UTF-16 string in the #GstByteReader instance,
- advancing the current position to the byte after the string.
- No input checking for valid UTF-16 is done.
- This function will fail if no NUL-terminator was found in in the data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="skip_string_utf32"
- c:identifier="gst_byte_reader_skip_string_utf32">
- <doc xml:space="preserve">Skips a NUL-terminated UTF-32 string in the #GstByteReader instance,
- advancing the current position to the byte after the string.
- No input checking for valid UTF-32 is done.
- This function will fail if no NUL-terminator was found in in the data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="skip_string_utf8"
- c:identifier="gst_byte_reader_skip_string_utf8">
- <doc xml:space="preserve">Skips a NUL-terminated string in the #GstByteReader instance, advancing
- the current position to the byte after the string. This will work for
- any NUL-terminated string with a character width of 8 bits, so ASCII,
- UTF-8, ISO-8859-N etc. No input checking for valid UTF-8 is done.
- This function will fail if no NUL-terminator was found in in the data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if a string could be skipped, %FALSE otherwise.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="reader" transfer-ownership="none">
- <doc xml:space="preserve">a #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </instance-parameter>
- </parameters>
- </method>
- <function name="new"
- c:identifier="gst_byte_reader_new"
- introspectable="0">
- <doc xml:space="preserve">Create a new #GstByteReader instance, which will read from @data.
- Free-function: gst_byte_reader_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">data from which the
- #GstByteReader should read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- </record>
- <record name="ByteWriter" c:type="GstByteWriter">
- <doc xml:space="preserve">#GstByteWriter provides a byte writer and reader that can write/read different
- integer and floating point types to/from a memory buffer. It provides functions
- for writing/reading signed/unsigned, little/big endian integers of 8, 16, 24,
- 32 and 64 bits and functions for reading little/big endian floating points numbers of
- 32 and 64 bits. It also provides functions to write/read NUL-terminated strings
- in various character encodings.</doc>
- <field name="parent" writable="1">
- <doc xml:space="preserve">#GstByteReader parent</doc>
- <type name="ByteReader" c:type="GstByteReader"/>
- </field>
- <field name="alloc_size" writable="1">
- <doc xml:space="preserve">Allocation size of the data</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="fixed" writable="1">
- <doc xml:space="preserve">If %TRUE no reallocations are allowed</doc>
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="owned" writable="1">
- <doc xml:space="preserve">If %FALSE no reallocations are allowed and copies of data are returned</doc>
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- <method name="ensure_free_space"
- c:identifier="gst_byte_writer_ensure_free_space">
- <doc xml:space="preserve">Checks if enough free space from the current write cursor is
- available and reallocates if necessary.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if at least @size bytes are still available</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Number of bytes that should be available</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="fill" c:identifier="gst_byte_writer_fill">
- <doc xml:space="preserve">Writes @size bytes containing @value to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="value" transfer-ownership="none">
- <doc xml:space="preserve">Value to be written</doc>
- <type name="guint8" c:type="guint8"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Number of bytes to be written</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="free" c:identifier="gst_byte_writer_free">
- <doc xml:space="preserve">Frees @writer and all memory allocated by it.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="full">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="free_and_get_buffer"
- c:identifier="gst_byte_writer_free_and_get_buffer">
- <doc xml:space="preserve">Frees @writer and all memory allocated by it except
- the current data, which is returned as #GstBuffer.
- Free-function: gst_buffer_unref</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">the current data as buffer. gst_buffer_unref()
- after usage.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="full">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="free_and_get_data"
- c:identifier="gst_byte_writer_free_and_get_data">
- <doc xml:space="preserve">Frees @writer and all memory allocated by it except
- the current data, which is returned.
- Free-function: g_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">the current data. g_free() after usage.</doc>
- <type name="guint8" c:type="guint8*"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="full">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_remaining"
- c:identifier="gst_byte_writer_get_remaining">
- <doc xml:space="preserve">Returns the remaining size of data that can still be written. If
- -1 is returned the remaining size is only limited by system resources.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">the remaining size of data that can still be written</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="const GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="init" c:identifier="gst_byte_writer_init">
- <doc xml:space="preserve">Initializes @writer to an empty instance</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="init_with_data"
- c:identifier="gst_byte_writer_init_with_data">
- <doc xml:space="preserve">Initializes @writer with the given
- memory area. If @initialized is %TRUE it is possible to
- read @size bytes from the #GstByteWriter from the beginning.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">Memory area for writing</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="initialized" transfer-ownership="none">
- <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="init_with_size"
- c:identifier="gst_byte_writer_init_with_size">
- <doc xml:space="preserve">Initializes @writer with the given initial data size.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Initial size of data</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="fixed" transfer-ownership="none">
- <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_buffer" c:identifier="gst_byte_writer_put_buffer">
- <doc xml:space="preserve">Writes @size bytes of @data to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the data could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="buffer" transfer-ownership="none">
- <doc xml:space="preserve">source #GstBuffer</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">offset to copy from</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">total size to copy. If -1, all data is copied</doc>
- <type name="gssize" c:type="gssize"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_data" c:identifier="gst_byte_writer_put_data">
- <doc xml:space="preserve">Writes @size bytes of @data to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">Data to write</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_float32_be"
- c:identifier="gst_byte_writer_put_float32_be">
- <doc xml:space="preserve">Writes a big endian 32 bit float to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gfloat" c:type="gfloat"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_float32_le"
- c:identifier="gst_byte_writer_put_float32_le">
- <doc xml:space="preserve">Writes a little endian 32 bit float to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gfloat" c:type="gfloat"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_float64_be"
- c:identifier="gst_byte_writer_put_float64_be">
- <doc xml:space="preserve">Writes a big endian 64 bit float to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gdouble" c:type="gdouble"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_float64_le"
- c:identifier="gst_byte_writer_put_float64_le">
- <doc xml:space="preserve">Writes a little endian 64 bit float to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gdouble" c:type="gdouble"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int16_be" c:identifier="gst_byte_writer_put_int16_be">
- <doc xml:space="preserve">Writes a signed big endian 16 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint16" c:type="gint16"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int16_le" c:identifier="gst_byte_writer_put_int16_le">
- <doc xml:space="preserve">Writes a signed little endian 16 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint16" c:type="gint16"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int24_be" c:identifier="gst_byte_writer_put_int24_be">
- <doc xml:space="preserve">Writes a signed big endian 24 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint32" c:type="gint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int24_le" c:identifier="gst_byte_writer_put_int24_le">
- <doc xml:space="preserve">Writes a signed little endian 24 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint32" c:type="gint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int32_be" c:identifier="gst_byte_writer_put_int32_be">
- <doc xml:space="preserve">Writes a signed big endian 32 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint32" c:type="gint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int32_le" c:identifier="gst_byte_writer_put_int32_le">
- <doc xml:space="preserve">Writes a signed little endian 32 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint32" c:type="gint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int64_be" c:identifier="gst_byte_writer_put_int64_be">
- <doc xml:space="preserve">Writes a signed big endian 64 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int64_le" c:identifier="gst_byte_writer_put_int64_le">
- <doc xml:space="preserve">Writes a signed little endian 64 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint64" c:type="gint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_int8" c:identifier="gst_byte_writer_put_int8">
- <doc xml:space="preserve">Writes a signed 8 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="gint8" c:type="gint8"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_string_utf16"
- c:identifier="gst_byte_writer_put_string_utf16">
- <doc xml:space="preserve">Writes a NUL-terminated UTF16 string to @writer (including the terminator).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">UTF16 string to write</doc>
- <array c:type="guint16*">
- <type name="guint16" c:type="guint16"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="put_string_utf32"
- c:identifier="gst_byte_writer_put_string_utf32">
- <doc xml:space="preserve">Writes a NUL-terminated UTF32 string to @writer (including the terminator).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">UTF32 string to write</doc>
- <array c:type="guint32*">
- <type name="guint32" c:type="guint32"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="put_string_utf8"
- c:identifier="gst_byte_writer_put_string_utf8">
- <doc xml:space="preserve">Writes a NUL-terminated UTF8 string to @writer (including the terminator).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">UTF8 string to
- write</doc>
- <array c:type="gchar*">
- <type name="utf8" c:type="gchar"/>
- </array>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint16_be"
- c:identifier="gst_byte_writer_put_uint16_be">
- <doc xml:space="preserve">Writes a unsigned big endian 16 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint16" c:type="guint16"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint16_le"
- c:identifier="gst_byte_writer_put_uint16_le">
- <doc xml:space="preserve">Writes a unsigned little endian 16 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint16" c:type="guint16"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint24_be"
- c:identifier="gst_byte_writer_put_uint24_be">
- <doc xml:space="preserve">Writes a unsigned big endian 24 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint24_le"
- c:identifier="gst_byte_writer_put_uint24_le">
- <doc xml:space="preserve">Writes a unsigned little endian 24 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint32_be"
- c:identifier="gst_byte_writer_put_uint32_be">
- <doc xml:space="preserve">Writes a unsigned big endian 32 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint32_le"
- c:identifier="gst_byte_writer_put_uint32_le">
- <doc xml:space="preserve">Writes a unsigned little endian 32 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint32" c:type="guint32"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint64_be"
- c:identifier="gst_byte_writer_put_uint64_be">
- <doc xml:space="preserve">Writes a unsigned big endian 64 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint64_le"
- c:identifier="gst_byte_writer_put_uint64_le">
- <doc xml:space="preserve">Writes a unsigned little endian 64 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- </parameters>
- </method>
- <method name="put_uint8" c:identifier="gst_byte_writer_put_uint8">
- <doc xml:space="preserve">Writes a unsigned 8 bit integer to @writer.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the value could be written</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- <parameter name="val" transfer-ownership="none">
- <doc xml:space="preserve">Value to write</doc>
- <type name="guint8" c:type="guint8"/>
- </parameter>
- </parameters>
- </method>
- <method name="reset" c:identifier="gst_byte_writer_reset">
- <doc xml:space="preserve">Resets @writer and frees the data if it's
- owned by @writer.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="reset_and_get_buffer"
- c:identifier="gst_byte_writer_reset_and_get_buffer">
- <doc xml:space="preserve">Resets @writer and returns the current data as buffer.
- Free-function: gst_buffer_unref</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">the current data as buffer. gst_buffer_unref()
- after usage.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="reset_and_get_data"
- c:identifier="gst_byte_writer_reset_and_get_data">
- <doc xml:space="preserve">Resets @writer and returns the current data.
- Free-function: g_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">the current data. g_free() after
- usage.</doc>
- <array zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </return-value>
- <parameters>
- <instance-parameter name="writer" transfer-ownership="none">
- <doc xml:space="preserve">#GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </instance-parameter>
- </parameters>
- </method>
- <function name="new"
- c:identifier="gst_byte_writer_new"
- introspectable="0">
- <doc xml:space="preserve">Creates a new, empty #GstByteWriter instance
- Free-function: gst_byte_writer_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new, empty #GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </return-value>
- </function>
- <function name="new_with_data"
- c:identifier="gst_byte_writer_new_with_data"
- introspectable="0">
- <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
- memory area. If @initialized is %TRUE it is possible to
- read @size bytes from the #GstByteWriter from the beginning.
- Free-function: gst_byte_writer_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">Memory area for writing</doc>
- <type name="guint8" c:type="guint8*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="initialized" transfer-ownership="none">
- <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </function>
- <function name="new_with_size"
- c:identifier="gst_byte_writer_new_with_size"
- introspectable="0">
- <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
- initial data size.
- Free-function: gst_byte_writer_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </return-value>
- <parameters>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Initial size of data</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="fixed" transfer-ownership="none">
- <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </function>
- </record>
- <record name="CollectData" c:type="GstCollectData">
- <doc xml:space="preserve">Structure used by the collect_pads.</doc>
- <field name="collect" writable="1">
- <doc xml:space="preserve">owner #GstCollectPads</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </field>
- <field name="pad" writable="1">
- <doc xml:space="preserve">#GstPad managed by this data</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </field>
- <field name="buffer" writable="1">
- <doc xml:space="preserve">currently queued buffer.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </field>
- <field name="pos" writable="1">
- <doc xml:space="preserve">position in the buffer</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="segment" writable="1">
- <doc xml:space="preserve">last segment received.</doc>
- <type name="Gst.Segment" c:type="GstSegment"/>
- </field>
- <field name="state" readable="0" private="1">
- <type name="CollectPadsStateFlags" c:type="GstCollectPadsStateFlags"/>
- </field>
- <field name="priv" readable="0" private="1">
- <type name="CollectDataPrivate" c:type="GstCollectDataPrivate*"/>
- </field>
- <union name="ABI" c:type="ABI">
- <record name="abi" c:type="abi">
- <field name="dts" writable="1">
- <type name="gint64" c:type="gint64"/>
- </field>
- </record>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </union>
- </record>
- <callback name="CollectDataDestroyNotify"
- c:type="GstCollectDataDestroyNotify">
- <doc xml:space="preserve">A function that will be called when the #GstCollectData will be freed.
- It is passed the pointer to the structure and should free any custom
- memory and resources allocated for it.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectData that will be freed</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- </parameters>
- </callback>
- <record name="CollectDataPrivate"
- c:type="GstCollectDataPrivate"
- disguised="1">
- </record>
- <class name="CollectPads"
- c:symbol-prefix="collect_pads"
- c:type="GstCollectPads"
- parent="Gst.Object"
- glib:type-name="GstCollectPads"
- glib:get-type="gst_collect_pads_get_type"
- glib:type-struct="CollectPadsClass">
- <doc xml:space="preserve">Manages a set of pads that operate in collect mode. This means that control
- is given to the manager of this object when all pads have data.
- <itemizedlist>
- <listitem><para>
- Collectpads are created with gst_collect_pads_new(). A callback should then
- be installed with gst_collect_pads_set_function ().
- </para></listitem>
- <listitem><para>
- Pads are added to the collection with gst_collect_pads_add_pad()/
- gst_collect_pads_remove_pad(). The pad
- has to be a sinkpad. The chain and event functions of the pad are
- overridden. The element_private of the pad is used to store
- private information for the collectpads.
- </para></listitem>
- <listitem><para>
- For each pad, data is queued in the _chain function or by
- performing a pull_range.
- </para></listitem>
- <listitem><para>
- When data is queued on all pads in waiting mode, the callback function is called.
- </para></listitem>
- <listitem><para>
- Data can be dequeued from the pad with the gst_collect_pads_pop() method.
- One can peek at the data with the gst_collect_pads_peek() function.
- These functions will return %NULL if the pad received an EOS event. When all
- pads return %NULL from a gst_collect_pads_peek(), the element can emit an EOS
- event itself.
- </para></listitem>
- <listitem><para>
- Data can also be dequeued in byte units using the gst_collect_pads_available(),
- gst_collect_pads_read_buffer() and gst_collect_pads_flush() calls.
- </para></listitem>
- <listitem><para>
- Elements should call gst_collect_pads_start() and gst_collect_pads_stop() in
- their state change functions to start and stop the processing of the collectpads.
- The gst_collect_pads_stop() call should be called before calling the parent
- element state change function in the PAUSED_TO_READY state change to ensure
- no pad is blocked and the element can finish streaming.
- </para></listitem>
- <listitem><para>
- gst_collect_pads_set_waiting() sets a pad to waiting or non-waiting mode.
- CollectPads element is not waiting for data to be collected on non-waiting pads.
- Thus these pads may but need not have data when the callback is called.
- All pads are in waiting mode by default.
- </para></listitem>
- </itemizedlist></doc>
- <constructor name="new" c:identifier="gst_collect_pads_new">
- <doc xml:space="preserve">Create a new instance of #GstCollectPads.
- MT safe.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstCollectPads, or %NULL in case of an error.</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </return-value>
- </constructor>
- <method name="add_pad" c:identifier="gst_collect_pads_add_pad">
- <doc xml:space="preserve">Add a pad to the collection of collect pads. The pad has to be
- a sinkpad. The refcount of the pad is incremented. Use
- gst_collect_pads_remove_pad() to remove the pad from the collection
- again.
- You specify a size for the returned #GstCollectData structure
- so that you can use it to store additional information.
- You can also specify a #GstCollectDataDestroyNotify that will be called
- just before the #GstCollectData structure is freed. It is passed the
- pointer to the structure and should free any custom memory and resources
- allocated for it.
- Keeping a pad locked in waiting state is only relevant when using
- the default collection algorithm (providing the oldest buffer).
- It ensures a buffer must be available on this pad for a collection
- to take place. This is of typical use to a muxer element where
- non-subtitle streams should always be in waiting state,
- e.g. to assure that caps information is available on all these streams
- when initial headers have to be written.
- The pad will be automatically activated in push mode when @pads is
- started.
- MT safe.</doc>
- <return-value transfer-ownership="none" nullable="1">
- <doc xml:space="preserve">a new #GstCollectData to identify the
- new pad. Or %NULL if wrong parameters are supplied.</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">the pad to add</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">the size of the returned #GstCollectData structure</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="destroy_notify"
- transfer-ownership="none"
- scope="async">
- <doc xml:space="preserve">function to be called before the returned
- #GstCollectData structure is freed</doc>
- <type name="CollectDataDestroyNotify"
- c:type="GstCollectDataDestroyNotify"/>
- </parameter>
- <parameter name="lock" transfer-ownership="none">
- <doc xml:space="preserve">whether to lock this pad in usual waiting state</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="available" c:identifier="gst_collect_pads_available">
- <doc xml:space="preserve">Query how much bytes can be read from each queued buffer. This means
- that the result of this call is the maximum number of bytes that can
- be read from each of the pads.
- This function should be called with @pads STREAM_LOCK held, such as
- in the callback.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The maximum number of bytes queued on all pads. This function
- returns 0 if a pad has no queued buffer.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to query</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="clip_running_time"
- c:identifier="gst_collect_pads_clip_running_time">
- <doc xml:space="preserve">Convenience clipping function that converts incoming buffer's timestamp
- to running time, or clips the buffer if outside configured segment.
- Since 1.6, this clipping function also sets the DTS parameter of the
- GstCollectData structure. This version of the running time DTS can be
- negative. G_MININT64 is used to indicate invalid value.</doc>
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="cdata" transfer-ownership="none">
- <doc xml:space="preserve">collect data of corresponding pad</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <doc xml:space="preserve">buffer being clipped</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuf"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">output buffer with running time, or NULL if clipped</doc>
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data (unused)</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="event_default"
- c:identifier="gst_collect_pads_event_default">
- <doc xml:space="preserve">Default #GstCollectPads event handling that elements should always
- chain up to to ensure proper operation. Element might however indicate
- event should not be forwarded downstream.</doc>
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">collect data of corresponding pad</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <doc xml:space="preserve">event being processed</doc>
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- <parameter name="discard" transfer-ownership="none">
- <doc xml:space="preserve">process but do not send event downstream</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="flush" c:identifier="gst_collect_pads_flush">
- <doc xml:space="preserve">Flush @size bytes from the pad @data.
- This function should be called with @pads STREAM_LOCK held, such as
- in the callback.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The number of bytes flushed This can be less than @size and
- is 0 if the pad was end-of-stream.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to query</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the data to use</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to flush</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="peek" c:identifier="gst_collect_pads_peek">
- <doc xml:space="preserve">Peek at the buffer currently queued in @data. This function
- should be called with the @pads STREAM_LOCK held, such as in the callback
- handler.
- MT safe.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">The buffer in @data or %NULL if no buffer is queued.
- should unref the buffer after usage.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to peek</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the data to use</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- </parameters>
- </method>
- <method name="pop" c:identifier="gst_collect_pads_pop">
- <doc xml:space="preserve">Pop the buffer currently queued in @data. This function
- should be called with the @pads STREAM_LOCK held, such as in the callback
- handler.
- MT safe.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">The buffer in @data or %NULL if no buffer was
- queued. You should unref the buffer after usage.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to pop</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the data to use</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- </parameters>
- </method>
- <method name="query_default"
- c:identifier="gst_collect_pads_query_default">
- <doc xml:space="preserve">Default #GstCollectPads query handling that elements should always
- chain up to to ensure proper operation. Element might however indicate
- query should not be forwarded downstream.</doc>
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">collect data of corresponding pad</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <doc xml:space="preserve">query being processed</doc>
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- <parameter name="discard" transfer-ownership="none">
- <doc xml:space="preserve">process but do not send event downstream</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="read_buffer" c:identifier="gst_collect_pads_read_buffer">
- <doc xml:space="preserve">Get a subbuffer of @size bytes from the given pad @data.
- This function should be called with @pads STREAM_LOCK held, such as in the
- callback.
- MT safe.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">A sub buffer. The size of the buffer can be less that requested.
- A return of %NULL signals that the pad is end-of-stream.
- Unref the buffer after use.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to query</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the data to use</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="remove_pad" c:identifier="gst_collect_pads_remove_pad">
- <doc xml:space="preserve">Remove a pad from the collection of collect pads. This function will also
- free the #GstCollectData and all the resources that were allocated with
- gst_collect_pads_add_pad().
- The pad will be deactivated automatically when @pads is stopped.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the pad could be removed.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">the pad to remove</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_buffer_function"
- c:identifier="gst_collect_pads_set_buffer_function">
- <doc xml:space="preserve">Set the callback function and user data that will be called with
- the oldest buffer when all pads have been collected, or %NULL on EOS.
- If a buffer is passed, the callback owns a reference and must unref
- it.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="func"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:space="preserve">the function to set</doc>
- <type name="CollectPadsBufferFunction"
- c:type="GstCollectPadsBufferFunction"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data passed to the function</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_clip_function"
- c:identifier="gst_collect_pads_set_clip_function">
- <doc xml:space="preserve">Install a clipping function that is called right after a buffer is received
- on a pad managed by @pads. See #GstCollectPadsClipFunction for more info.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="clipfunc"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:space="preserve">clip function to install</doc>
- <type name="CollectPadsClipFunction"
- c:type="GstCollectPadsClipFunction"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data to pass to @clip_func</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_compare_function"
- c:identifier="gst_collect_pads_set_compare_function">
- <doc xml:space="preserve">Set the timestamp comparison function.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the pads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="func"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:space="preserve">the function to set</doc>
- <type name="CollectPadsCompareFunction"
- c:type="GstCollectPadsCompareFunction"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data passed to the function</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_event_function"
- c:identifier="gst_collect_pads_set_event_function">
- <doc xml:space="preserve">Set the event callback function and user data that will be called when
- collectpads has received an event originating from one of the collected
- pads. If the event being processed is a serialized one, this callback is
- called with @pads STREAM_LOCK held, otherwise not. As this lock should be
- held when calling a number of CollectPads functions, it should be acquired
- if so (unusually) needed.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="func"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:space="preserve">the function to set</doc>
- <type name="CollectPadsEventFunction"
- c:type="GstCollectPadsEventFunction"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data passed to the function</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_flush_function"
- c:identifier="gst_collect_pads_set_flush_function"
- version="1.4">
- <doc xml:space="preserve">Install a flush function that is called when the internal
- state of all pads should be flushed as part of flushing seek
- handling. See #GstCollectPadsFlushFunction for more info.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="func"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:space="preserve">flush function to install</doc>
- <type name="CollectPadsFlushFunction"
- c:type="GstCollectPadsFlushFunction"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data to pass to @func</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_flushing" c:identifier="gst_collect_pads_set_flushing">
- <doc xml:space="preserve">Change the flushing state of all the pads in the collection. No pad
- is able to accept anymore data when @flushing is %TRUE. Calling this
- function with @flushing %FALSE makes @pads accept data again.
- Caller must ensure that downstream streaming (thread) is not blocked,
- e.g. by sending a FLUSH_START downstream.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="flushing" transfer-ownership="none">
- <doc xml:space="preserve">desired state of the pads</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_function" c:identifier="gst_collect_pads_set_function">
- <doc xml:space="preserve">CollectPads provides a default collection algorithm that will determine
- the oldest buffer available on all of its pads, and then delegate
- to a configured callback.
- However, if circumstances are more complicated and/or more control
- is desired, this sets a callback that will be invoked instead when
- all the pads added to the collection have buffers queued.
- Evidently, this callback is not compatible with
- gst_collect_pads_set_buffer_function() callback.
- If this callback is set, the former will be unset.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="func"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:space="preserve">the function to set</doc>
- <type name="CollectPadsFunction" c:type="GstCollectPadsFunction"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data passed to the function</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_query_function"
- c:identifier="gst_collect_pads_set_query_function">
- <doc xml:space="preserve">Set the query callback function and user data that will be called after
- collectpads has received a query originating from one of the collected
- pads. If the query being processed is a serialized one, this callback is
- called with @pads STREAM_LOCK held, otherwise not. As this lock should be
- held when calling a number of CollectPads functions, it should be acquired
- if so (unusually) needed.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="func"
- transfer-ownership="none"
- scope="call"
- closure="1">
- <doc xml:space="preserve">the function to set</doc>
- <type name="CollectPadsQueryFunction"
- c:type="GstCollectPadsQueryFunction"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">user data passed to the function</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_waiting" c:identifier="gst_collect_pads_set_waiting">
- <doc xml:space="preserve">Sets a pad to waiting or non-waiting mode, if at least this pad
- has not been created with locked waiting state,
- in which case nothing happens.
- This function should be called with @pads STREAM_LOCK held, such as
- in the callback.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the data to use</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="waiting" transfer-ownership="none">
- <doc xml:space="preserve">boolean indicating whether this pad should operate
- in waiting or non-waiting mode</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <method name="src_event_default"
- c:identifier="gst_collect_pads_src_event_default"
- version="1.4">
- <doc xml:space="preserve">Default #GstCollectPads event handling for the src pad of elements.
- Elements can chain up to this to let flushing seek event handling
- be done by #GstCollectPads.</doc>
- <return-value transfer-ownership="none">
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectPads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">src #GstPad that received the event</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <doc xml:space="preserve">event being processed</doc>
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- </parameters>
- </method>
- <method name="start" c:identifier="gst_collect_pads_start">
- <doc xml:space="preserve">Starts the processing of data in the collect_pads.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="stop" c:identifier="gst_collect_pads_stop">
- <doc xml:space="preserve">Stops the processing of data in the collect_pads. this function
- will also unblock any blocking operations.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to use</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="take_buffer" c:identifier="gst_collect_pads_take_buffer">
- <doc xml:space="preserve">Get a subbuffer of @size bytes from the given pad @data. Flushes the amount
- of read bytes.
- This function should be called with @pads STREAM_LOCK held, such as in the
- callback.
- MT safe.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">A sub buffer. The size of the buffer can be less that requested.
- A return of %NULL signals that the pad is end-of-stream.
- Unref the buffer after use.</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </return-value>
- <parameters>
- <instance-parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the collectpads to query</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </instance-parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the data to use</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">the number of bytes to read</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <field name="object">
- <type name="Gst.Object" c:type="GstObject"/>
- </field>
- <field name="data">
- <doc xml:space="preserve">#GList of #GstCollectData managed
- by this #GstCollectPads.</doc>
- <type name="GLib.SList" c:type="GSList*">
- <type name="CollectData"/>
- </type>
- </field>
- <field name="stream_lock" readable="0" private="1">
- <type name="GLib.RecMutex" c:type="GRecMutex"/>
- </field>
- <field name="priv" readable="0" private="1">
- <type name="CollectPadsPrivate" c:type="GstCollectPadsPrivate*"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </class>
- <callback name="CollectPadsBufferFunction"
- c:type="GstCollectPadsBufferFunction">
- <doc xml:space="preserve">A function that will be called when a (considered oldest) buffer can be muxed.
- If all pads have reached EOS, this function is called with %NULL @buffer
- and %NULL @data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%GST_FLOW_OK for success</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectData of pad that has received the buffer</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="full">
- <doc xml:space="preserve">the #GstBuffer</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="3">
- <doc xml:space="preserve">user data passed to gst_collect_pads_set_buffer_function()</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <record name="CollectPadsClass"
- c:type="GstCollectPadsClass"
- glib:is-gtype-struct-for="CollectPads">
- <field name="parent_class">
- <type name="Gst.ObjectClass" c:type="GstObjectClass"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <callback name="CollectPadsClipFunction"
- c:type="GstCollectPadsClipFunction">
- <doc xml:space="preserve">A function that will be called when @inbuffer is received on the pad managed
- by @data in the collectpad object @pads.
- The function should use the segment of @data and the negotiated media type on
- the pad to perform clipping of @inbuffer.
- This function takes ownership of @inbuffer and should output a buffer in
- @outbuffer or return %NULL in @outbuffer if the buffer should be dropped.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">a #GstFlowReturn that corresponds to the result of clipping.</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">a #GstCollectPads</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">a #GstCollectData</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="inbuffer" transfer-ownership="full">
- <doc xml:space="preserve">the input #GstBuffer</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="outbuffer" transfer-ownership="none">
- <doc xml:space="preserve">the output #GstBuffer</doc>
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="4">
- <doc xml:space="preserve">user data</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <callback name="CollectPadsCompareFunction"
- c:type="GstCollectPadsCompareFunction">
- <doc xml:space="preserve">A function for comparing two timestamps of buffers or newsegments collected on one pad.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">Integer less than zero when first timestamp is deemed older than the second one.
- Zero if the timestamps are deemed equally old.
- Integer greater than zero when second timestamp is deemed older than the first one.</doc>
- <type name="gint" c:type="gint"/>
- </return-value>
- <parameters>
- <parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectPads that is comparing the timestamps</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </parameter>
- <parameter name="data1" transfer-ownership="none">
- <doc xml:space="preserve">the first #GstCollectData</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="timestamp1" transfer-ownership="none">
- <doc xml:space="preserve">the first timestamp</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- <parameter name="data2" transfer-ownership="none">
- <doc xml:space="preserve">the second #GstCollectData</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="timestamp2" transfer-ownership="none">
- <doc xml:space="preserve">the second timestamp</doc>
- <type name="Gst.ClockTime" c:type="GstClockTime"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="5">
- <doc xml:space="preserve">user data passed to gst_collect_pads_set_compare_function()</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <callback name="CollectPadsEventFunction"
- c:type="GstCollectPadsEventFunction">
- <doc xml:space="preserve">A function that will be called while processing an event. It takes
- ownership of the event and is responsible for chaining up (to
- gst_collect_pads_event_default()) or dropping events (such typical cases
- being handled by the default handler).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the pad could handle the event</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">the #GstPad that received an event</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="event" transfer-ownership="none">
- <doc xml:space="preserve">the #GstEvent received</doc>
- <type name="Gst.Event" c:type="GstEvent*"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="3">
- <doc xml:space="preserve">user data passed to gst_collect_pads_set_event_function()</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <callback name="CollectPadsFlushFunction"
- c:type="GstCollectPadsFlushFunction"
- version="1.4">
- <doc xml:space="preserve">A function that will be called while processing a flushing seek event.
- The function should flush any internal state of the element and the state of
- all the pads. It should clear only the state not directly managed by the
- @pads object. It is therefore not necessary to call
- gst_collect_pads_set_flushing nor gst_collect_pads_clear from this function.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">a #GstCollectPads</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="1">
- <doc xml:space="preserve">user data</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <callback name="CollectPadsFunction" c:type="GstCollectPadsFunction">
- <doc xml:space="preserve">A function that will be called when all pads have received data.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%GST_FLOW_OK for success</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="1">
- <doc xml:space="preserve">user data passed to gst_collect_pads_set_function()</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <record name="CollectPadsPrivate"
- c:type="GstCollectPadsPrivate"
- disguised="1">
- </record>
- <callback name="CollectPadsQueryFunction"
- c:type="GstCollectPadsQueryFunction">
- <doc xml:space="preserve">A function that will be called while processing a query. It takes
- ownership of the query and is responsible for chaining up (to
- events downstream (with gst_pad_event_default()).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the pad could handle the event</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="pads" transfer-ownership="none">
- <doc xml:space="preserve">the #GstCollectPads that triggered the callback</doc>
- <type name="CollectPads" c:type="GstCollectPads*"/>
- </parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">the #GstPad that received an event</doc>
- <type name="CollectData" c:type="GstCollectData*"/>
- </parameter>
- <parameter name="query" transfer-ownership="none">
- <doc xml:space="preserve">the #GstEvent received</doc>
- <type name="Gst.Query" c:type="GstQuery*"/>
- </parameter>
- <parameter name="user_data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="3">
- <doc xml:space="preserve">user data passed to gst_collect_pads_set_query_function()</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <bitfield name="CollectPadsStateFlags" c:type="GstCollectPadsStateFlags">
- <member name="eos" value="1" c:identifier="GST_COLLECT_PADS_STATE_EOS">
- <doc xml:space="preserve">Set if collectdata's pad is EOS.</doc>
- </member>
- <member name="flushing"
- value="2"
- c:identifier="GST_COLLECT_PADS_STATE_FLUSHING">
- <doc xml:space="preserve">Set if collectdata's pad is flushing.</doc>
- </member>
- <member name="new_segment"
- value="4"
- c:identifier="GST_COLLECT_PADS_STATE_NEW_SEGMENT">
- <doc xml:space="preserve">Set if collectdata's pad received a
- new_segment event.</doc>
- </member>
- <member name="waiting"
- value="8"
- c:identifier="GST_COLLECT_PADS_STATE_WAITING">
- <doc xml:space="preserve">Set if collectdata's pad must be waited
- for when collecting.</doc>
- </member>
- <member name="locked"
- value="16"
- c:identifier="GST_COLLECT_PADS_STATE_LOCKED">
- <doc xml:space="preserve">Set collectdata's pad WAITING state must
- not be changed.
- #GstCollectPadsStateFlags indicate private state of a collectdata('s pad).</doc>
- </member>
- </bitfield>
- <class name="DataQueue"
- c:symbol-prefix="data_queue"
- c:type="GstDataQueue"
- parent="GObject.Object"
- glib:type-name="GstDataQueue"
- glib:get-type="gst_data_queue_get_type"
- glib:type-struct="DataQueueClass">
- <doc xml:space="preserve">#GstDataQueue is an object that handles threadsafe queueing of objects. It
- also provides size-related functionality. This object should be used for
- any #GstElement that wishes to provide some sort of queueing functionality.</doc>
- <constructor name="new"
- c:identifier="gst_data_queue_new"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Creates a new #GstDataQueue. If @fullcallback or @emptycallback are supplied, then
- the #GstDataQueue will call the respective callback to signal full or empty condition.
- If the callbacks are NULL the #GstDataQueue will instead emit 'full' and 'empty'
- signals.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </return-value>
- <parameters>
- <parameter name="checkfull" transfer-ownership="none">
- <doc xml:space="preserve">the callback used to tell if the element considers the queue full
- or not.</doc>
- <type name="DataQueueCheckFullFunction"
- c:type="GstDataQueueCheckFullFunction"/>
- </parameter>
- <parameter name="fullcallback" transfer-ownership="none">
- <doc xml:space="preserve">the callback which will be called when the queue is considered full.</doc>
- <type name="DataQueueFullCallback"
- c:type="GstDataQueueFullCallback"/>
- </parameter>
- <parameter name="emptycallback"
- transfer-ownership="none"
- closure="3">
- <doc xml:space="preserve">the callback which will be called when the queue is considered empty.</doc>
- <type name="DataQueueEmptyCallback"
- c:type="GstDataQueueEmptyCallback"/>
- </parameter>
- <parameter name="checkdata"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">a #gpointer that will be passed to the @checkfull, @fullcallback,
- and @emptycallback callbacks.</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </constructor>
- <virtual-method name="empty">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="full">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- </parameters>
- </virtual-method>
- <method name="drop_head"
- c:identifier="gst_data_queue_drop_head"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Pop and unref the head-most #GstMiniObject with the given #GType.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if an element was removed.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">The #GstDataQueue to drop an item from.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- <parameter name="type" transfer-ownership="none">
- <doc xml:space="preserve">The #GType of the item to drop.</doc>
- <type name="GType" c:type="GType"/>
- </parameter>
- </parameters>
- </method>
- <method name="flush"
- c:identifier="gst_data_queue_flush"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Flushes all the contents of the @queue. Any call to #gst_data_queue_push and
- #gst_data_queue_pop will be released.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_level"
- c:identifier="gst_data_queue_get_level"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Get the current level of the queue.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">The #GstDataQueue</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- <parameter name="level" transfer-ownership="none">
- <doc xml:space="preserve">the location to store the result</doc>
- <type name="DataQueueSize" c:type="GstDataQueueSize*"/>
- </parameter>
- </parameters>
- </method>
- <method name="is_empty"
- c:identifier="gst_data_queue_is_empty"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Queries if there are any items in the @queue.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if @queue is empty.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_full"
- c:identifier="gst_data_queue_is_full"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Queries if @queue is full. This check will be done using the
- #GstDataQueueCheckFullFunction registered with @queue.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if @queue is full.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="limits_changed"
- c:identifier="gst_data_queue_limits_changed"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Inform the queue that the limits for the fullness check have changed and that
- any blocking gst_data_queue_push() should be unblocked to recheck the limits.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">The #GstDataQueue</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="peek"
- c:identifier="gst_data_queue_peek"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Retrieves the first @item available on the @queue without removing it.
- If the queue is currently empty, the call will block until at least
- one item is available, OR the @queue is set to the flushing state.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if an @item was successfully retrieved from the @queue.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- <parameter name="item" transfer-ownership="none">
- <doc xml:space="preserve">pointer to store the returned #GstDataQueueItem.</doc>
- <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
- </parameter>
- </parameters>
- </method>
- <method name="pop"
- c:identifier="gst_data_queue_pop"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Retrieves the first @item available on the @queue. If the queue is currently
- empty, the call will block until at least one item is available, OR the
- @queue is set to the flushing state.
- MT safe.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if an @item was successfully retrieved from the @queue.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- <parameter name="item" transfer-ownership="none">
- <doc xml:space="preserve">pointer to store the returned #GstDataQueueItem.</doc>
- <type name="DataQueueItem" c:type="GstDataQueueItem**"/>
- </parameter>
- </parameters>
- </method>
- <method name="push"
- c:identifier="gst_data_queue_push"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
- on the @queue. If the @queue is full, the call will block until space is
- available, OR the @queue is set to flushing state.
- MT safe.
- Note that this function has slightly different semantics than gst_pad_push()
- and gst_pad_push_event(): this function only takes ownership of @item and
- the #GstMiniObject contained in @item if the push was successful. If %FALSE
- is returned, the caller is responsible for freeing @item and its contents.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the @item was successfully pushed on the @queue.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- <parameter name="item" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueueItem.</doc>
- <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
- </parameter>
- </parameters>
- </method>
- <method name="push_force"
- c:identifier="gst_data_queue_push_force"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Pushes a #GstDataQueueItem (or a structure that begins with the same fields)
- on the @queue. It ignores if the @queue is full or not and forces the @item
- to be pushed anyway.
- MT safe.
- Note that this function has slightly different semantics than gst_pad_push()
- and gst_pad_push_event(): this function only takes ownership of @item and
- the #GstMiniObject contained in @item if the push was successful. If %FALSE
- is returned, the caller is responsible for freeing @item and its contents.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the @item was successfully pushed on the @queue.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- <parameter name="item" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueueItem.</doc>
- <type name="DataQueueItem" c:type="GstDataQueueItem*"/>
- </parameter>
- </parameters>
- </method>
- <method name="set_flushing"
- c:identifier="gst_data_queue_set_flushing"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Sets the queue to flushing state if @flushing is %TRUE. If set to flushing
- state, any incoming data on the @queue will be discarded. Any call currently
- blocking on #gst_data_queue_push or #gst_data_queue_pop will return straight
- away with a return value of %FALSE. While the @queue is in flushing state,
- all calls to those two functions will return %FALSE.
- MT Safe.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </instance-parameter>
- <parameter name="flushing" transfer-ownership="none">
- <doc xml:space="preserve">a #gboolean stating if the queue will be flushing or not.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </method>
- <property name="current-level-bytes" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </property>
- <property name="current-level-time" transfer-ownership="none">
- <type name="guint64" c:type="guint64"/>
- </property>
- <property name="current-level-visible" transfer-ownership="none">
- <type name="guint" c:type="guint"/>
- </property>
- <field name="object">
- <doc xml:space="preserve">the parent structure</doc>
- <type name="GObject.Object" c:type="GObject"/>
- </field>
- <field name="priv" readable="0" private="1">
- <type name="DataQueuePrivate" c:type="GstDataQueuePrivate*"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- <glib:signal name="empty" when="first" introspectable="0">
- <doc xml:space="preserve">Reports that the queue became empty (empty).
- A queue is empty if the total amount of visible items inside it (num-visible, time,
- size) is lower than the boundary values which can be set through the GObject
- properties.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </glib:signal>
- <glib:signal name="full" when="first" introspectable="0">
- <doc xml:space="preserve">Reports that the queue became full (full).
- A queue is full if the total amount of data inside it (num-visible, time,
- size) is higher than the boundary values which can be set through the GObject
- properties.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- </glib:signal>
- </class>
- <callback name="DataQueueCheckFullFunction"
- c:type="GstDataQueueCheckFullFunction"
- introspectable="0">
- <doc xml:space="preserve">The prototype of the function used to inform the queue that it should be
- considered as full.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the queue should be considered full.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <parameter name="queue" transfer-ownership="none">
- <doc xml:space="preserve">a #GstDataQueue.</doc>
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </parameter>
- <parameter name="visible" transfer-ownership="none">
- <doc xml:space="preserve">The number of visible items currently in the queue.</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="bytes" transfer-ownership="none">
- <doc xml:space="preserve">The amount of bytes currently in the queue.</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="time" transfer-ownership="none">
- <doc xml:space="preserve">The accumulated duration of the items currently in the queue.</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="checkdata"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">The #gpointer registered when the #GstDataQueue was created.</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <record name="DataQueueClass"
- c:type="GstDataQueueClass"
- glib:is-gtype-struct-for="DataQueue">
- <field name="parent_class">
- <type name="GObject.ObjectClass" c:type="GObjectClass"/>
- </field>
- <field name="empty">
- <callback name="empty">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="queue" transfer-ownership="none">
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="full">
- <callback name="full">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="queue" transfer-ownership="none">
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="_gst_reserved">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <callback name="DataQueueEmptyCallback" c:type="GstDataQueueEmptyCallback">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="queue" transfer-ownership="none">
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </parameter>
- <parameter name="checkdata"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <callback name="DataQueueFullCallback" c:type="GstDataQueueFullCallback">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <parameter name="queue" transfer-ownership="none">
- <type name="DataQueue" c:type="GstDataQueue*"/>
- </parameter>
- <parameter name="checkdata"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </callback>
- <record name="DataQueueItem" c:type="GstDataQueueItem" introspectable="0">
- <doc xml:space="preserve">Structure used by #GstDataQueue. You can supply a different structure, as
- long as the top of the structure is identical to this structure.</doc>
- <field name="object" writable="1">
- <doc xml:space="preserve">the #GstMiniObject to queue.</doc>
- <type name="Gst.MiniObject" c:type="GstMiniObject*"/>
- </field>
- <field name="size" writable="1">
- <doc xml:space="preserve">the size in bytes of the miniobject.</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="duration" writable="1">
- <doc xml:space="preserve">the duration in #GstClockTime of the miniobject. Can not be
- %GST_CLOCK_TIME_NONE.</doc>
- <type name="guint64" c:type="guint64"/>
- </field>
- <field name="visible" writable="1">
- <doc xml:space="preserve">%TRUE if @object should be considered as a visible object.</doc>
- <type name="gboolean" c:type="gboolean"/>
- </field>
- <field name="destroy" writable="1">
- <doc xml:space="preserve">The #GDestroyNotify function to use to free the #GstDataQueueItem.
- This function should also drop the reference to @object the owner of the
- #GstDataQueueItem is assumed to hold.</doc>
- <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <record name="DataQueuePrivate" c:type="GstDataQueuePrivate" disguised="1">
- </record>
- <record name="DataQueueSize" c:type="GstDataQueueSize" introspectable="0">
- <doc xml:space="preserve">Structure describing the size of a queue.</doc>
- <field name="visible" writable="1">
- <doc xml:space="preserve">number of buffers</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="bytes" writable="1">
- <doc xml:space="preserve">number of bytes</doc>
- <type name="guint" c:type="guint"/>
- </field>
- <field name="time" writable="1">
- <doc xml:space="preserve">amount of time</doc>
- <type name="guint64" c:type="guint64"/>
- </field>
- </record>
- <record name="FlowCombiner"
- c:type="GstFlowCombiner"
- version="1.4"
- glib:type-name="GstFlowCombiner"
- glib:get-type="gst_flow_combiner_get_type"
- c:symbol-prefix="flow_combiner">
- <doc xml:space="preserve">Utility struct to help handling #GstFlowReturn combination. Useful for
- #GstElement<!-- -->s that have multiple source pads and need to combine
- the different #GstFlowReturn for those pads.
- #GstFlowCombiner works by using the last #GstFlowReturn for all #GstPad
- it has in its list and computes the combined return value and provides
- it to the caller.
- To add a new pad to the #GstFlowCombiner use gst_flow_combiner_add_pad().
- The new #GstPad is stored with a default value of %GST_FLOW_OK.
- In case you want a #GstPad to be removed, use gst_flow_combiner_remove_pad().
- Please be aware that this struct isn't thread safe as its designed to be
- used by demuxers, those usually will have a single thread operating it.
- These functions will take refs on the passed #GstPad<!-- -->s.
- Aside from reducing the user's code size, the main advantage of using this
- helper struct is to follow the standard rules for #GstFlowReturn combination.
- These rules are:
- * %GST_FLOW_EOS: only if all returns are EOS too
- * %GST_FLOW_NOT_LINKED: only if all returns are NOT_LINKED too
- * %GST_FLOW_ERROR or below: if at least one returns an error return
- * %GST_FLOW_NOT_NEGOTIATED: if at least one returns a not-negotiated return
- * %GST_FLOW_FLUSHING: if at least one returns flushing
- * %GST_FLOW_OK: otherwise
- %GST_FLOW_ERROR or below, GST_FLOW_NOT_NEGOTIATED and GST_FLOW_FLUSHING are
- returned immediatelly from the gst_flow_combiner_update_flow() function.</doc>
- <constructor name="new"
- c:identifier="gst_flow_combiner_new"
- version="1.4">
- <doc xml:space="preserve">Creates a new #GstFlowCombiner, use gst_flow_combiner_free() to free it.</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">A new #GstFlowCombiner</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </return-value>
- </constructor>
- <method name="add_pad"
- c:identifier="gst_flow_combiner_add_pad"
- version="1.4">
- <doc xml:space="preserve">Adds a new #GstPad to the #GstFlowCombiner.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="combiner" transfer-ownership="none">
- <doc xml:space="preserve">the #GstFlowCombiner</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </instance-parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">the #GstPad that is being added</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </parameter>
- </parameters>
- </method>
- <method name="clear"
- c:identifier="gst_flow_combiner_clear"
- version="1.6">
- <doc xml:space="preserve">Removes all pads from a #GstFlowCombiner and resets it to its initial state.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="combiner" transfer-ownership="none">
- <doc xml:space="preserve">the #GstFlowCombiner to clear</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="free" c:identifier="gst_flow_combiner_free" version="1.4">
- <doc xml:space="preserve">Frees a #GstFlowCombiner struct and all its internal data.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="combiner" transfer-ownership="none">
- <doc xml:space="preserve">the #GstFlowCombiner to free</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="remove_pad"
- c:identifier="gst_flow_combiner_remove_pad"
- version="1.4">
- <doc xml:space="preserve">Removes a #GstPad from the #GstFlowCombiner.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="combiner" transfer-ownership="none">
- <doc xml:space="preserve">the #GstFlowCombiner</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </instance-parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">the #GstPad to remove</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </parameter>
- </parameters>
- </method>
- <method name="reset"
- c:identifier="gst_flow_combiner_reset"
- version="1.6">
- <doc xml:space="preserve">Removes all pads from a #GstFlowCombiner and resets it to its initial state.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="combiner" transfer-ownership="none">
- <doc xml:space="preserve">the #GstFlowCombiner to clear</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="update_flow"
- c:identifier="gst_flow_combiner_update_flow"
- version="1.4">
- <doc xml:space="preserve">Computes the combined flow return for the pads in it.
- The #GstFlowReturn parameter should be the last flow return update for a pad
- in this #GstFlowCombiner. It will use this value to be able to shortcut some
- combinations and avoid looking over all pads again. e.g. The last combined
- return is the same as the latest obtained #GstFlowReturn.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The combined #GstFlowReturn</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="combiner" transfer-ownership="none">
- <doc xml:space="preserve">the #GstFlowCombiner</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </instance-parameter>
- <parameter name="fret" transfer-ownership="none">
- <doc xml:space="preserve">the latest #GstFlowReturn received for a pad in this #GstFlowCombiner</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </parameter>
- </parameters>
- </method>
- <method name="update_pad_flow"
- c:identifier="gst_flow_combiner_update_pad_flow"
- version="1.6">
- <doc xml:space="preserve">Sets the provided pad's last flow return to provided value and computes
- the combined flow return for the pads in it.
- The #GstFlowReturn parameter should be the last flow return update for a pad
- in this #GstFlowCombiner. It will use this value to be able to shortcut some
- combinations and avoid looking over all pads again. e.g. The last combined
- return is the same as the latest obtained #GstFlowReturn.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">The combined #GstFlowReturn</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="combiner" transfer-ownership="none">
- <doc xml:space="preserve">the #GstFlowCombiner</doc>
- <type name="FlowCombiner" c:type="GstFlowCombiner*"/>
- </instance-parameter>
- <parameter name="pad" transfer-ownership="none">
- <doc xml:space="preserve">the #GstPad whose #GstFlowReturn to update</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </parameter>
- <parameter name="fret" transfer-ownership="none">
- <doc xml:space="preserve">the latest #GstFlowReturn received for a pad in this #GstFlowCombiner</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </parameter>
- </parameters>
- </method>
- </record>
- <class name="PushSrc"
- c:symbol-prefix="push_src"
- c:type="GstPushSrc"
- parent="BaseSrc"
- glib:type-name="GstPushSrc"
- glib:get-type="gst_push_src_get_type"
- glib:type-struct="PushSrcClass">
- <doc xml:space="preserve">This class is mostly useful for elements that cannot do
- random access, or at least very slowly. The source usually
- prefers to push out a fixed size buffer.
- Subclasses usually operate in a format that is different from the
- default GST_FORMAT_BYTES format of #GstBaseSrc.
- Classes extending this base class will usually be scheduled
- in a push based mode. If the peer accepts to operate without
- offsets and within the limits of the allowed block size, this
- class can operate in getrange based mode automatically. To make
- this possible, the subclass should implement and override the
- SCHEDULING query.
- The subclass should extend the methods from the baseclass in
- addition to the ::create method.
- Seeking, flushing, scheduling and sync is all handled by this
- base class.</doc>
- <virtual-method name="alloc">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="PushSrc" c:type="GstPushSrc*"/>
- </instance-parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="create">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="PushSrc" c:type="GstPushSrc*"/>
- </instance-parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </virtual-method>
- <virtual-method name="fill">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <instance-parameter name="src" transfer-ownership="none">
- <type name="PushSrc" c:type="GstPushSrc*"/>
- </instance-parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </virtual-method>
- <field name="parent">
- <type name="BaseSrc" c:type="GstBaseSrc"/>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </class>
- <record name="PushSrcClass"
- c:type="GstPushSrcClass"
- glib:is-gtype-struct-for="PushSrc">
- <doc xml:space="preserve">Subclasses can override any of the available virtual methods or not, as
- needed. At the minimum, the @fill method should be overridden to produce
- buffers.</doc>
- <field name="parent_class">
- <doc xml:space="preserve">Element parent class</doc>
- <type name="BaseSrcClass" c:type="GstBaseSrcClass"/>
- </field>
- <field name="create">
- <callback name="create">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="PushSrc" c:type="GstPushSrc*"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="alloc">
- <callback name="alloc">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="PushSrc" c:type="GstPushSrc*"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="fill">
- <callback name="fill">
- <return-value transfer-ownership="none">
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <type name="PushSrc" c:type="GstPushSrc*"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- </parameters>
- </callback>
- </field>
- <field name="_gst_reserved" readable="0" private="1">
- <array zero-terminated="0" c:type="gpointer" fixed-size="4">
- <type name="gpointer" c:type="gpointer"/>
- </array>
- </field>
- </record>
- <record name="QueueArray"
- c:type="GstQueueArray"
- disguised="1"
- introspectable="0">
- <doc xml:space="preserve">#GstQueueArray is an object that provides standard queue functionality
- based on an array instead of linked lists. This reduces the overhead
- caused by memory management by a large factor.</doc>
- <method name="drop_element"
- c:identifier="gst_queue_array_drop_element"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Drops the queue element at position @idx from queue @array.</doc>
- <return-value transfer-ownership="none" nullable="1">
- <doc xml:space="preserve">the dropped element</doc>
- <type name="gpointer" c:type="gpointer"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- <parameter name="idx" transfer-ownership="none">
- <doc xml:space="preserve">index to drop</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </method>
- <method name="drop_struct"
- c:identifier="gst_queue_array_drop_struct"
- version="1.6"
- introspectable="0">
- <doc xml:space="preserve">Drops the queue element at position @idx from queue @array and copies the
- data of the element or structure that was removed into @p_struct if
- @p_struct is set (not NULL).</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">TRUE on success, or FALSE on error</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- <parameter name="idx" transfer-ownership="none">
- <doc xml:space="preserve">index to drop</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="p_struct"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">address into which to store the data of the dropped structure, or NULL</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="find"
- c:identifier="gst_queue_array_find"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Finds an element in the queue @array, either by comparing every element
- with @func or by looking up @data if no compare function @func is provided,
- and returning the index of the found element.
- Note that the index is not 0-based, but an internal index number with a
- random offset. The index can be used in connection with
- gst_queue_array_drop_element(). FIXME: return index 0-based and make
- gst_queue_array_drop_element() take a 0-based index.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">Index of the found element or -1 if nothing was found.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- <parameter name="func"
- transfer-ownership="none"
- nullable="1"
- allow-none="1"
- closure="1">
- <doc xml:space="preserve">comparison function, or %NULL to find @data by value</doc>
- <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
- </parameter>
- <parameter name="data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">data for comparison function</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="free"
- c:identifier="gst_queue_array_free"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Frees queue @array and all memory associated to it.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="get_length"
- c:identifier="gst_queue_array_get_length"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Returns the length of the queue @array</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">the length of the queue @array.</doc>
- <type name="guint" c:type="guint"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="is_empty"
- c:identifier="gst_queue_array_is_empty"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Checks if the queue @array is empty.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">%TRUE if the queue @array is empty</doc>
- <type name="gboolean" c:type="gboolean"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="peek_head"
- c:identifier="gst_queue_array_peek_head"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Returns the head of the queue @array and does not
- remove it from the queue.</doc>
- <return-value transfer-ownership="none" nullable="1">
- <doc xml:space="preserve">The head of the queue</doc>
- <type name="gpointer" c:type="gpointer"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="peek_head_struct"
- c:identifier="gst_queue_array_peek_head_struct"
- version="1.6"
- introspectable="0">
- <doc xml:space="preserve">Returns the head of the queue @array without removing it from the queue.</doc>
- <return-value transfer-ownership="none" nullable="1">
- <doc xml:space="preserve">pointer to element or struct, or NULL if @array was empty. The
- data pointed to by the returned pointer stays valid only as long as
- the queue array is not modified further!</doc>
- <type name="gpointer" c:type="gpointer"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="pop_head"
- c:identifier="gst_queue_array_pop_head"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Returns and head of the queue @array and removes
- it from the queue.</doc>
- <return-value transfer-ownership="none" nullable="1">
- <doc xml:space="preserve">The head of the queue</doc>
- <type name="gpointer" c:type="gpointer"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="pop_head_struct"
- c:identifier="gst_queue_array_pop_head_struct"
- version="1.6"
- introspectable="0">
- <doc xml:space="preserve">Returns the head of the queue @array and removes it from the queue.</doc>
- <return-value transfer-ownership="none" nullable="1">
- <doc xml:space="preserve">pointer to element or struct, or NULL if @array was empty. The
- data pointed to by the returned pointer stays valid only as long as
- the queue array is not modified further!</doc>
- <type name="gpointer" c:type="gpointer"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- </parameters>
- </method>
- <method name="push_tail"
- c:identifier="gst_queue_array_push_tail"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Pushes @data to the tail of the queue @array.</doc>
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <doc xml:space="preserve">a #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- <parameter name="data"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">object to push</doc>
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <method name="push_tail_struct"
- c:identifier="gst_queue_array_push_tail_struct">
- <return-value transfer-ownership="none">
- <type name="none" c:type="void"/>
- </return-value>
- <parameters>
- <instance-parameter name="array" transfer-ownership="none">
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </instance-parameter>
- <parameter name="p_struct"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <type name="gpointer" c:type="gpointer"/>
- </parameter>
- </parameters>
- </method>
- <function name="new"
- c:identifier="gst_queue_array_new"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Allocates a new #GstQueueArray object with an initial
- queue size of @initial_size.</doc>
- <return-value>
- <doc xml:space="preserve">a new #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </return-value>
- <parameters>
- <parameter name="initial_size" transfer-ownership="none">
- <doc xml:space="preserve">Initial size of the new queue</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- <function name="new_for_struct"
- c:identifier="gst_queue_array_new_for_struct"
- version="1.6"
- introspectable="0">
- <doc xml:space="preserve">Allocates a new #GstQueueArray object for elements (e.g. structures)
- of size @struct_size, with an initial queue size of @initial_size.</doc>
- <return-value>
- <doc xml:space="preserve">a new #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </return-value>
- <parameters>
- <parameter name="struct_size" transfer-ownership="none">
- <doc xml:space="preserve">Size of each element (e.g. structure) in the array</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="initial_size" transfer-ownership="none">
- <doc xml:space="preserve">Initial size of the new queue</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- </record>
- <callback name="TypeFindHelperGetRangeFunction"
- c:type="GstTypeFindHelperGetRangeFunction">
- <doc xml:space="preserve">This function will be called by gst_type_find_helper_get_range() when
- typefinding functions request to peek at the data of a stream at certain
- offsets. If this function returns GST_FLOW_OK, the result buffer will be
- stored in @buffer. The contents of @buffer is invalid for any other
- return value.
- This function is supposed to behave exactly like a #GstPadGetRangeFunction.</doc>
- <return-value transfer-ownership="none">
- <doc xml:space="preserve">GST_FLOW_OK for success</doc>
- <type name="Gst.FlowReturn" c:type="GstFlowReturn"/>
- </return-value>
- <parameters>
- <parameter name="obj" transfer-ownership="none">
- <doc xml:space="preserve">a #GstObject that will handle the getrange request</doc>
- <type name="Gst.Object" c:type="GstObject*"/>
- </parameter>
- <parameter name="parent"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">the parent of @obj or %NULL</doc>
- <type name="Gst.Object" c:type="GstObject*"/>
- </parameter>
- <parameter name="offset" transfer-ownership="none">
- <doc xml:space="preserve">the offset of the range</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="length" transfer-ownership="none">
- <doc xml:space="preserve">the length of the range</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="buffer" transfer-ownership="none">
- <doc xml:space="preserve">a memory location to hold the result buffer</doc>
- <type name="Gst.Buffer" c:type="GstBuffer**"/>
- </parameter>
- </parameters>
- </callback>
- <function name="bit_reader_new"
- c:identifier="gst_bit_reader_new"
- moved-to="BitReader.new"
- introspectable="0">
- <doc xml:space="preserve">Create a new #GstBitReader instance, which will read from @data.
- Free-function: gst_bit_reader_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstBitReader instance</doc>
- <type name="BitReader" c:type="GstBitReader*"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">Data from which the #GstBitReader
- should read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- <function name="byte_reader_new"
- c:identifier="gst_byte_reader_new"
- moved-to="ByteReader.new"
- introspectable="0">
- <doc xml:space="preserve">Create a new #GstByteReader instance, which will read from @data.
- Free-function: gst_byte_reader_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstByteReader instance</doc>
- <type name="ByteReader" c:type="GstByteReader*"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">data from which the
- #GstByteReader should read</doc>
- <array length="1" zero-terminated="0" c:type="guint8*">
- <type name="guint8" c:type="guint8"/>
- </array>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- <function name="byte_writer_new"
- c:identifier="gst_byte_writer_new"
- moved-to="ByteWriter.new"
- introspectable="0">
- <doc xml:space="preserve">Creates a new, empty #GstByteWriter instance
- Free-function: gst_byte_writer_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new, empty #GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </return-value>
- </function>
- <function name="byte_writer_new_with_data"
- c:identifier="gst_byte_writer_new_with_data"
- moved-to="ByteWriter.new_with_data"
- introspectable="0">
- <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
- memory area. If @initialized is %TRUE it is possible to
- read @size bytes from the #GstByteWriter from the beginning.
- Free-function: gst_byte_writer_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </return-value>
- <parameters>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">Memory area for writing</doc>
- <type name="guint8" c:type="guint8*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Size of @data in bytes</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="initialized" transfer-ownership="none">
- <doc xml:space="preserve">If %TRUE the complete data can be read from the beginning</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </function>
- <function name="byte_writer_new_with_size"
- c:identifier="gst_byte_writer_new_with_size"
- moved-to="ByteWriter.new_with_size"
- introspectable="0">
- <doc xml:space="preserve">Creates a new #GstByteWriter instance with the given
- initial data size.
- Free-function: gst_byte_writer_free</doc>
- <return-value transfer-ownership="full">
- <doc xml:space="preserve">a new #GstByteWriter instance</doc>
- <type name="ByteWriter" c:type="GstByteWriter*"/>
- </return-value>
- <parameters>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">Initial size of data</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- <parameter name="fixed" transfer-ownership="none">
- <doc xml:space="preserve">If %TRUE the data can't be reallocated</doc>
- <type name="gboolean" c:type="gboolean"/>
- </parameter>
- </parameters>
- </function>
- <function name="queue_array_new"
- c:identifier="gst_queue_array_new"
- moved-to="QueueArray.new"
- version="1.2"
- introspectable="0">
- <doc xml:space="preserve">Allocates a new #GstQueueArray object with an initial
- queue size of @initial_size.</doc>
- <return-value>
- <doc xml:space="preserve">a new #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </return-value>
- <parameters>
- <parameter name="initial_size" transfer-ownership="none">
- <doc xml:space="preserve">Initial size of the new queue</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- <function name="queue_array_new_for_struct"
- c:identifier="gst_queue_array_new_for_struct"
- moved-to="QueueArray.new_for_struct"
- version="1.6"
- introspectable="0">
- <doc xml:space="preserve">Allocates a new #GstQueueArray object for elements (e.g. structures)
- of size @struct_size, with an initial queue size of @initial_size.</doc>
- <return-value>
- <doc xml:space="preserve">a new #GstQueueArray object</doc>
- <type name="QueueArray" c:type="GstQueueArray*"/>
- </return-value>
- <parameters>
- <parameter name="struct_size" transfer-ownership="none">
- <doc xml:space="preserve">Size of each element (e.g. structure) in the array</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="initial_size" transfer-ownership="none">
- <doc xml:space="preserve">Initial size of the new queue</doc>
- <type name="guint" c:type="guint"/>
- </parameter>
- </parameters>
- </function>
- <function name="type_find_helper" c:identifier="gst_type_find_helper">
- <doc xml:space="preserve">Tries to find what type of data is flowing from the given source #GstPad.
- Free-function: gst_caps_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">the #GstCaps corresponding to the data
- stream. Returns %NULL if no #GstCaps matches the data stream.</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="src" transfer-ownership="none">
- <doc xml:space="preserve">A source #GstPad</doc>
- <type name="Gst.Pad" c:type="GstPad*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">The length in bytes</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- </parameters>
- </function>
- <function name="type_find_helper_for_buffer"
- c:identifier="gst_type_find_helper_for_buffer">
- <doc xml:space="preserve">Tries to find what type of data is contained in the given #GstBuffer, the
- assumption being that the buffer represents the beginning of the stream or
- file.
- All available typefinders will be called on the data in order of rank. If
- a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
- typefinding is stopped immediately and the found caps will be returned
- right away. Otherwise, all available typefind functions will the tried,
- and the caps with the highest probability will be returned, or %NULL if
- the content of the buffer could not be identified.
- Free-function: gst_caps_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">the #GstCaps corresponding to the data,
- or %NULL if no type could be found. The caller should free the caps
- returned with gst_caps_unref().</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="obj"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
- <type name="Gst.Object" c:type="GstObject*"/>
- </parameter>
- <parameter name="buf" transfer-ownership="none">
- <doc xml:space="preserve">a #GstBuffer with data to typefind</doc>
- <type name="Gst.Buffer" c:type="GstBuffer*"/>
- </parameter>
- <parameter name="prob"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">location to store the probability of the found
- caps, or %NULL</doc>
- <type name="Gst.TypeFindProbability"
- c:type="GstTypeFindProbability*"/>
- </parameter>
- </parameters>
- </function>
- <function name="type_find_helper_for_data"
- c:identifier="gst_type_find_helper_for_data">
- <doc xml:space="preserve">Tries to find what type of data is contained in the given @data, the
- assumption being that the data represents the beginning of the stream or
- file.
- All available typefinders will be called on the data in order of rank. If
- a typefinding function returns a probability of %GST_TYPE_FIND_MAXIMUM,
- typefinding is stopped immediately and the found caps will be returned
- right away. Otherwise, all available typefind functions will the tried,
- and the caps with the highest probability will be returned, or %NULL if
- the content of @data could not be identified.
- Free-function: gst_caps_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">the #GstCaps corresponding to the data,
- or %NULL if no type could be found. The caller should free the caps
- returned with gst_caps_unref().</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="obj"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
- <type name="Gst.Object" c:type="GstObject*"/>
- </parameter>
- <parameter name="data" transfer-ownership="none">
- <doc xml:space="preserve">a pointer with data to typefind</doc>
- <type name="guint8" c:type="const guint8*"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">the size of @data</doc>
- <type name="gsize" c:type="gsize"/>
- </parameter>
- <parameter name="prob"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">location to store the probability of the found
- caps, or %NULL</doc>
- <type name="Gst.TypeFindProbability"
- c:type="GstTypeFindProbability*"/>
- </parameter>
- </parameters>
- </function>
- <function name="type_find_helper_for_extension"
- c:identifier="gst_type_find_helper_for_extension">
- <doc xml:space="preserve">Tries to find the best #GstCaps associated with @extension.
- All available typefinders will be checked against the extension in order
- of rank. The caps of the first typefinder that can handle @extension will be
- returned.
- Free-function: gst_caps_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">the #GstCaps corresponding to
- @extension, or %NULL if no type could be found. The caller should free
- the caps returned with gst_caps_unref().</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="obj"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">object doing the typefinding, or %NULL (used for logging)</doc>
- <type name="Gst.Object" c:type="GstObject*"/>
- </parameter>
- <parameter name="extension" transfer-ownership="none">
- <doc xml:space="preserve">an extension</doc>
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- </parameters>
- </function>
- <function name="type_find_helper_get_range"
- c:identifier="gst_type_find_helper_get_range">
- <doc xml:space="preserve">Utility function to do pull-based typefinding. Unlike gst_type_find_helper()
- however, this function will use the specified function @func to obtain the
- data needed by the typefind functions, rather than operating on a given
- source pad. This is useful mostly for elements like tag demuxers which
- strip off data at the beginning and/or end of a file and want to typefind
- the stripped data stream before adding their own source pad (the specified
- callback can then call the upstream peer pad with offsets adjusted for the
- tag size, for example).
- When @extension is not %NULL, this function will first try the typefind
- functions for the given extension, which might speed up the typefinding
- in many cases.
- Free-function: gst_caps_unref</doc>
- <return-value transfer-ownership="full" nullable="1">
- <doc xml:space="preserve">the #GstCaps corresponding to the data
- stream. Returns %NULL if no #GstCaps matches the data stream.</doc>
- <type name="Gst.Caps" c:type="GstCaps*"/>
- </return-value>
- <parameters>
- <parameter name="obj" transfer-ownership="none">
- <doc xml:space="preserve">A #GstObject that will be passed as first argument to @func</doc>
- <type name="Gst.Object" c:type="GstObject*"/>
- </parameter>
- <parameter name="parent"
- transfer-ownership="none"
- nullable="1"
- allow-none="1">
- <doc xml:space="preserve">the parent of @obj or %NULL</doc>
- <type name="Gst.Object" c:type="GstObject*"/>
- </parameter>
- <parameter name="func" transfer-ownership="none" scope="call">
- <doc xml:space="preserve">A generic #GstTypeFindHelperGetRangeFunction that will
- be used to access data at random offsets when doing the typefinding</doc>
- <type name="TypeFindHelperGetRangeFunction"
- c:type="GstTypeFindHelperGetRangeFunction"/>
- </parameter>
- <parameter name="size" transfer-ownership="none">
- <doc xml:space="preserve">The length in bytes</doc>
- <type name="guint64" c:type="guint64"/>
- </parameter>
- <parameter name="extension" transfer-ownership="none">
- <doc xml:space="preserve">extension of the media</doc>
- <type name="utf8" c:type="const gchar*"/>
- </parameter>
- <parameter name="prob"
- direction="out"
- caller-allocates="0"
- transfer-ownership="full"
- optional="1"
- allow-none="1">
- <doc xml:space="preserve">location to store the probability of the found
- caps, or %NULL</doc>
- <type name="Gst.TypeFindProbability"
- c:type="GstTypeFindProbability*"/>
- </parameter>
- </parameters>
- </function>
- </namespace>
- </repository>
|