{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) GstElement is the abstract base class needed to construct an element that can be used in a GStreamer pipeline. Please refer to the plugin writers guide for more information on creating 'GI.Gst.Objects.Element.Element' subclasses. The name of a 'GI.Gst.Objects.Element.Element' can be get with @/gst_element_get_name()/@ and set with @/gst_element_set_name()/@. For speed, @/GST_ELEMENT_NAME()/@ can be used in the core when using the appropriate locking. Do not use this in plug-ins or applications in order to retain ABI compatibility. Elements can have pads (of the type 'GI.Gst.Objects.Pad.Pad'). These pads link to pads on other elements. 'GI.Gst.Structs.Buffer.Buffer' flow between these linked pads. A 'GI.Gst.Objects.Element.Element' has a 'GI.GLib.Structs.List.List' of 'GI.Gst.Objects.Pad.Pad' structures for all their input (or sink) and output (or source) pads. Core and plug-in writers can add and remove pads with 'GI.Gst.Objects.Element.elementAddPad' and 'GI.Gst.Objects.Element.elementRemovePad'. An existing pad of an element can be retrieved by name with 'GI.Gst.Objects.Element.elementGetStaticPad'. A new dynamic pad can be created using 'GI.Gst.Objects.Element.elementRequestPad' with a 'GI.Gst.Objects.PadTemplate.PadTemplate'. An iterator of all pads can be retrieved with 'GI.Gst.Objects.Element.elementIteratePads'. Elements can be linked through their pads. If the link is straightforward, use the 'GI.Gst.Objects.Element.elementLink' convenience function to link two elements, or @/gst_element_link_many()/@ for more elements in a row. Use 'GI.Gst.Objects.Element.elementLinkFiltered' to link two elements constrained by a specified set of 'GI.Gst.Structs.Caps.Caps'. For finer control, use 'GI.Gst.Objects.Element.elementLinkPads' and 'GI.Gst.Objects.Element.elementLinkPadsFiltered' to specify the pads to link on each element by name. Each element has a state (see 'GI.Gst.Enums.State'). You can get and set the state of an element with 'GI.Gst.Objects.Element.elementGetState' and 'GI.Gst.Objects.Element.elementSetState'. Setting a state triggers a 'GI.Gst.Enums.StateChange'. To get a string representation of a 'GI.Gst.Enums.State', use 'GI.Gst.Objects.Element.elementStateGetName'. You can get and set a 'GI.Gst.Objects.Clock.Clock' on an element using 'GI.Gst.Objects.Element.elementGetClock' and 'GI.Gst.Objects.Element.elementSetClock'. Some elements can provide a clock for the pipeline if the @/GST_ELEMENT_FLAG_PROVIDE_CLOCK/@ flag is set. With the 'GI.Gst.Objects.Element.elementProvideClock' method one can retrieve the clock provided by such an element. Not all elements require a clock to operate correctly. If the @/GST_ELEMENT_FLAG_REQUIRE_CLOCK/@() flag is set, a clock should be set on the element with 'GI.Gst.Objects.Element.elementSetClock'. Note that clock selection and distribution is normally handled by the toplevel 'GI.Gst.Objects.Pipeline.Pipeline' so the clock functions are only to be used in very specific situations. -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gst.Objects.Element ( -- * Exported types Element(..) , IsElement , toElement , noElement , -- * Methods -- ** abortState #method:abortState# #if ENABLE_OVERLOADING ElementAbortStateMethodInfo , #endif elementAbortState , -- ** addPad #method:addPad# #if ENABLE_OVERLOADING ElementAddPadMethodInfo , #endif elementAddPad , -- ** addPropertyDeepNotifyWatch #method:addPropertyDeepNotifyWatch# #if ENABLE_OVERLOADING ElementAddPropertyDeepNotifyWatchMethodInfo, #endif elementAddPropertyDeepNotifyWatch , -- ** addPropertyNotifyWatch #method:addPropertyNotifyWatch# #if ENABLE_OVERLOADING ElementAddPropertyNotifyWatchMethodInfo , #endif elementAddPropertyNotifyWatch , -- ** callAsync #method:callAsync# #if ENABLE_OVERLOADING ElementCallAsyncMethodInfo , #endif elementCallAsync , -- ** changeState #method:changeState# #if ENABLE_OVERLOADING ElementChangeStateMethodInfo , #endif elementChangeState , -- ** continueState #method:continueState# #if ENABLE_OVERLOADING ElementContinueStateMethodInfo , #endif elementContinueState , -- ** createAllPads #method:createAllPads# #if ENABLE_OVERLOADING ElementCreateAllPadsMethodInfo , #endif elementCreateAllPads , -- ** foreachPad #method:foreachPad# #if ENABLE_OVERLOADING ElementForeachPadMethodInfo , #endif elementForeachPad , -- ** foreachSinkPad #method:foreachSinkPad# #if ENABLE_OVERLOADING ElementForeachSinkPadMethodInfo , #endif elementForeachSinkPad , -- ** foreachSrcPad #method:foreachSrcPad# #if ENABLE_OVERLOADING ElementForeachSrcPadMethodInfo , #endif elementForeachSrcPad , -- ** getBaseTime #method:getBaseTime# #if ENABLE_OVERLOADING ElementGetBaseTimeMethodInfo , #endif elementGetBaseTime , -- ** getBus #method:getBus# #if ENABLE_OVERLOADING ElementGetBusMethodInfo , #endif elementGetBus , -- ** getClock #method:getClock# #if ENABLE_OVERLOADING ElementGetClockMethodInfo , #endif elementGetClock , -- ** getCompatiblePad #method:getCompatiblePad# #if ENABLE_OVERLOADING ElementGetCompatiblePadMethodInfo , #endif elementGetCompatiblePad , -- ** getCompatiblePadTemplate #method:getCompatiblePadTemplate# #if ENABLE_OVERLOADING ElementGetCompatiblePadTemplateMethodInfo, #endif elementGetCompatiblePadTemplate , -- ** getContext #method:getContext# #if ENABLE_OVERLOADING ElementGetContextMethodInfo , #endif elementGetContext , -- ** getContextUnlocked #method:getContextUnlocked# #if ENABLE_OVERLOADING ElementGetContextUnlockedMethodInfo , #endif elementGetContextUnlocked , -- ** getContexts #method:getContexts# #if ENABLE_OVERLOADING ElementGetContextsMethodInfo , #endif elementGetContexts , -- ** getFactory #method:getFactory# #if ENABLE_OVERLOADING ElementGetFactoryMethodInfo , #endif elementGetFactory , -- ** getMetadata #method:getMetadata# #if ENABLE_OVERLOADING ElementGetMetadataMethodInfo , #endif elementGetMetadata , -- ** getPadTemplate #method:getPadTemplate# #if ENABLE_OVERLOADING ElementGetPadTemplateMethodInfo , #endif elementGetPadTemplate , -- ** getPadTemplateList #method:getPadTemplateList# #if ENABLE_OVERLOADING ElementGetPadTemplateListMethodInfo , #endif elementGetPadTemplateList , -- ** getRequestPad #method:getRequestPad# #if ENABLE_OVERLOADING ElementGetRequestPadMethodInfo , #endif elementGetRequestPad , -- ** getStartTime #method:getStartTime# #if ENABLE_OVERLOADING ElementGetStartTimeMethodInfo , #endif elementGetStartTime , -- ** getState #method:getState# #if ENABLE_OVERLOADING ElementGetStateMethodInfo , #endif elementGetState , -- ** getStaticPad #method:getStaticPad# #if ENABLE_OVERLOADING ElementGetStaticPadMethodInfo , #endif elementGetStaticPad , -- ** isLockedState #method:isLockedState# #if ENABLE_OVERLOADING ElementIsLockedStateMethodInfo , #endif elementIsLockedState , -- ** iteratePads #method:iteratePads# #if ENABLE_OVERLOADING ElementIteratePadsMethodInfo , #endif elementIteratePads , -- ** iterateSinkPads #method:iterateSinkPads# #if ENABLE_OVERLOADING ElementIterateSinkPadsMethodInfo , #endif elementIterateSinkPads , -- ** iterateSrcPads #method:iterateSrcPads# #if ENABLE_OVERLOADING ElementIterateSrcPadsMethodInfo , #endif elementIterateSrcPads , -- ** link #method:link# #if ENABLE_OVERLOADING ElementLinkMethodInfo , #endif elementLink , -- ** linkFiltered #method:linkFiltered# #if ENABLE_OVERLOADING ElementLinkFilteredMethodInfo , #endif elementLinkFiltered , -- ** linkPads #method:linkPads# #if ENABLE_OVERLOADING ElementLinkPadsMethodInfo , #endif elementLinkPads , -- ** linkPadsFiltered #method:linkPadsFiltered# #if ENABLE_OVERLOADING ElementLinkPadsFilteredMethodInfo , #endif elementLinkPadsFiltered , -- ** linkPadsFull #method:linkPadsFull# #if ENABLE_OVERLOADING ElementLinkPadsFullMethodInfo , #endif elementLinkPadsFull , -- ** lostState #method:lostState# #if ENABLE_OVERLOADING ElementLostStateMethodInfo , #endif elementLostState , -- ** makeFromUri #method:makeFromUri# elementMakeFromUri , -- ** messageFull #method:messageFull# #if ENABLE_OVERLOADING ElementMessageFullMethodInfo , #endif elementMessageFull , -- ** messageFullWithDetails #method:messageFullWithDetails# #if ENABLE_OVERLOADING ElementMessageFullWithDetailsMethodInfo , #endif elementMessageFullWithDetails , -- ** noMorePads #method:noMorePads# #if ENABLE_OVERLOADING ElementNoMorePadsMethodInfo , #endif elementNoMorePads , -- ** postMessage #method:postMessage# #if ENABLE_OVERLOADING ElementPostMessageMethodInfo , #endif elementPostMessage , -- ** provideClock #method:provideClock# #if ENABLE_OVERLOADING ElementProvideClockMethodInfo , #endif elementProvideClock , -- ** query #method:query# #if ENABLE_OVERLOADING ElementQueryMethodInfo , #endif elementQuery , -- ** queryConvert #method:queryConvert# #if ENABLE_OVERLOADING ElementQueryConvertMethodInfo , #endif elementQueryConvert , -- ** queryDuration #method:queryDuration# #if ENABLE_OVERLOADING ElementQueryDurationMethodInfo , #endif elementQueryDuration , -- ** queryPosition #method:queryPosition# #if ENABLE_OVERLOADING ElementQueryPositionMethodInfo , #endif elementQueryPosition , -- ** register #method:register# elementRegister , -- ** releaseRequestPad #method:releaseRequestPad# #if ENABLE_OVERLOADING ElementReleaseRequestPadMethodInfo , #endif elementReleaseRequestPad , -- ** removePad #method:removePad# #if ENABLE_OVERLOADING ElementRemovePadMethodInfo , #endif elementRemovePad , -- ** removePropertyNotifyWatch #method:removePropertyNotifyWatch# #if ENABLE_OVERLOADING ElementRemovePropertyNotifyWatchMethodInfo, #endif elementRemovePropertyNotifyWatch , -- ** requestPad #method:requestPad# #if ENABLE_OVERLOADING ElementRequestPadMethodInfo , #endif elementRequestPad , -- ** seek #method:seek# #if ENABLE_OVERLOADING ElementSeekMethodInfo , #endif elementSeek , -- ** seekSimple #method:seekSimple# #if ENABLE_OVERLOADING ElementSeekSimpleMethodInfo , #endif elementSeekSimple , -- ** sendEvent #method:sendEvent# #if ENABLE_OVERLOADING ElementSendEventMethodInfo , #endif elementSendEvent , -- ** setBaseTime #method:setBaseTime# #if ENABLE_OVERLOADING ElementSetBaseTimeMethodInfo , #endif elementSetBaseTime , -- ** setBus #method:setBus# #if ENABLE_OVERLOADING ElementSetBusMethodInfo , #endif elementSetBus , -- ** setClock #method:setClock# #if ENABLE_OVERLOADING ElementSetClockMethodInfo , #endif elementSetClock , -- ** setContext #method:setContext# #if ENABLE_OVERLOADING ElementSetContextMethodInfo , #endif elementSetContext , -- ** setLockedState #method:setLockedState# #if ENABLE_OVERLOADING ElementSetLockedStateMethodInfo , #endif elementSetLockedState , -- ** setStartTime #method:setStartTime# #if ENABLE_OVERLOADING ElementSetStartTimeMethodInfo , #endif elementSetStartTime , -- ** setState #method:setState# #if ENABLE_OVERLOADING ElementSetStateMethodInfo , #endif elementSetState , -- ** stateChangeReturnGetName #method:stateChangeReturnGetName# elementStateChangeReturnGetName , -- ** stateGetName #method:stateGetName# elementStateGetName , -- ** syncStateWithParent #method:syncStateWithParent# #if ENABLE_OVERLOADING ElementSyncStateWithParentMethodInfo , #endif elementSyncStateWithParent , -- ** unlink #method:unlink# #if ENABLE_OVERLOADING ElementUnlinkMethodInfo , #endif elementUnlink , -- ** unlinkPads #method:unlinkPads# #if ENABLE_OVERLOADING ElementUnlinkPadsMethodInfo , #endif elementUnlinkPads , -- * Signals -- ** noMorePads #signal:noMorePads# C_ElementNoMorePadsCallback , ElementNoMorePadsCallback , #if ENABLE_OVERLOADING ElementNoMorePadsSignalInfo , #endif afterElementNoMorePads , genClosure_ElementNoMorePads , mk_ElementNoMorePadsCallback , noElementNoMorePadsCallback , onElementNoMorePads , wrap_ElementNoMorePadsCallback , -- ** padAdded #signal:padAdded# C_ElementPadAddedCallback , ElementPadAddedCallback , #if ENABLE_OVERLOADING ElementPadAddedSignalInfo , #endif afterElementPadAdded , genClosure_ElementPadAdded , mk_ElementPadAddedCallback , noElementPadAddedCallback , onElementPadAdded , wrap_ElementPadAddedCallback , -- ** padRemoved #signal:padRemoved# C_ElementPadRemovedCallback , ElementPadRemovedCallback , #if ENABLE_OVERLOADING ElementPadRemovedSignalInfo , #endif afterElementPadRemoved , genClosure_ElementPadRemoved , mk_ElementPadRemovedCallback , noElementPadRemovedCallback , onElementPadRemoved , wrap_ElementPadRemovedCallback , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GLib.Callbacks as GLib.Callbacks import qualified GI.GObject.Objects.Object as GObject.Object import qualified GI.Gst.Callbacks as Gst.Callbacks import {-# SOURCE #-} qualified GI.Gst.Enums as Gst.Enums import {-# SOURCE #-} qualified GI.Gst.Flags as Gst.Flags import {-# SOURCE #-} qualified GI.Gst.Objects.Bus as Gst.Bus import {-# SOURCE #-} qualified GI.Gst.Objects.Clock as Gst.Clock import {-# SOURCE #-} qualified GI.Gst.Objects.ElementFactory as Gst.ElementFactory import {-# SOURCE #-} qualified GI.Gst.Objects.Object as Gst.Object import {-# SOURCE #-} qualified GI.Gst.Objects.Pad as Gst.Pad import {-# SOURCE #-} qualified GI.Gst.Objects.PadTemplate as Gst.PadTemplate import {-# SOURCE #-} qualified GI.Gst.Objects.Plugin as Gst.Plugin import {-# SOURCE #-} qualified GI.Gst.Structs.Caps as Gst.Caps import {-# SOURCE #-} qualified GI.Gst.Structs.Context as Gst.Context import {-# SOURCE #-} qualified GI.Gst.Structs.Event as Gst.Event import {-# SOURCE #-} qualified GI.Gst.Structs.Iterator as Gst.Iterator import {-# SOURCE #-} qualified GI.Gst.Structs.Message as Gst.Message import {-# SOURCE #-} qualified GI.Gst.Structs.Query as Gst.Query import {-# SOURCE #-} qualified GI.Gst.Structs.Structure as Gst.Structure -- | Memory-managed wrapper type. newtype Element = Element (ManagedPtr Element) foreign import ccall "gst_element_get_type" c_gst_element_get_type :: IO GType instance GObject Element where gobjectType = c_gst_element_get_type -- | Type class for types which can be safely cast to `Element`, for instance with `toElement`. class (GObject o, O.IsDescendantOf Element o) => IsElement o instance (GObject o, O.IsDescendantOf Element o) => IsElement o instance O.HasParentTypes Element type instance O.ParentTypes Element = '[Gst.Object.Object, GObject.Object.Object] -- | Cast to `Element`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toElement :: (MonadIO m, IsElement o) => o -> m Element toElement = liftIO . unsafeCastTo Element -- | A convenience alias for `Nothing` :: `Maybe` `Element`. noElement :: Maybe Element noElement = Nothing #if ENABLE_OVERLOADING type family ResolveElementMethod (t :: Symbol) (o :: *) :: * where ResolveElementMethod "abortState" o = ElementAbortStateMethodInfo ResolveElementMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo ResolveElementMethod "addPad" o = ElementAddPadMethodInfo ResolveElementMethod "addPropertyDeepNotifyWatch" o = ElementAddPropertyDeepNotifyWatchMethodInfo ResolveElementMethod "addPropertyNotifyWatch" o = ElementAddPropertyNotifyWatchMethodInfo ResolveElementMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveElementMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveElementMethod "callAsync" o = ElementCallAsyncMethodInfo ResolveElementMethod "changeState" o = ElementChangeStateMethodInfo ResolveElementMethod "continueState" o = ElementContinueStateMethodInfo ResolveElementMethod "createAllPads" o = ElementCreateAllPadsMethodInfo ResolveElementMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo ResolveElementMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveElementMethod "foreachPad" o = ElementForeachPadMethodInfo ResolveElementMethod "foreachSinkPad" o = ElementForeachSinkPadMethodInfo ResolveElementMethod "foreachSrcPad" o = ElementForeachSrcPadMethodInfo ResolveElementMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveElementMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveElementMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo ResolveElementMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo ResolveElementMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo ResolveElementMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo ResolveElementMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveElementMethod "isLockedState" o = ElementIsLockedStateMethodInfo ResolveElementMethod "iteratePads" o = ElementIteratePadsMethodInfo ResolveElementMethod "iterateSinkPads" o = ElementIterateSinkPadsMethodInfo ResolveElementMethod "iterateSrcPads" o = ElementIterateSrcPadsMethodInfo ResolveElementMethod "link" o = ElementLinkMethodInfo ResolveElementMethod "linkFiltered" o = ElementLinkFilteredMethodInfo ResolveElementMethod "linkPads" o = ElementLinkPadsMethodInfo ResolveElementMethod "linkPadsFiltered" o = ElementLinkPadsFilteredMethodInfo ResolveElementMethod "linkPadsFull" o = ElementLinkPadsFullMethodInfo ResolveElementMethod "lostState" o = ElementLostStateMethodInfo ResolveElementMethod "messageFull" o = ElementMessageFullMethodInfo ResolveElementMethod "messageFullWithDetails" o = ElementMessageFullWithDetailsMethodInfo ResolveElementMethod "noMorePads" o = ElementNoMorePadsMethodInfo ResolveElementMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveElementMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveElementMethod "postMessage" o = ElementPostMessageMethodInfo ResolveElementMethod "provideClock" o = ElementProvideClockMethodInfo ResolveElementMethod "query" o = ElementQueryMethodInfo ResolveElementMethod "queryConvert" o = ElementQueryConvertMethodInfo ResolveElementMethod "queryDuration" o = ElementQueryDurationMethodInfo ResolveElementMethod "queryPosition" o = ElementQueryPositionMethodInfo ResolveElementMethod "ref" o = Gst.Object.ObjectRefMethodInfo ResolveElementMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveElementMethod "releaseRequestPad" o = ElementReleaseRequestPadMethodInfo ResolveElementMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo ResolveElementMethod "removePad" o = ElementRemovePadMethodInfo ResolveElementMethod "removePropertyNotifyWatch" o = ElementRemovePropertyNotifyWatchMethodInfo ResolveElementMethod "requestPad" o = ElementRequestPadMethodInfo ResolveElementMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveElementMethod "seek" o = ElementSeekMethodInfo ResolveElementMethod "seekSimple" o = ElementSeekSimpleMethodInfo ResolveElementMethod "sendEvent" o = ElementSendEventMethodInfo ResolveElementMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveElementMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveElementMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo ResolveElementMethod "syncStateWithParent" o = ElementSyncStateWithParentMethodInfo ResolveElementMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo ResolveElementMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveElementMethod "unlink" o = ElementUnlinkMethodInfo ResolveElementMethod "unlinkPads" o = ElementUnlinkPadsMethodInfo ResolveElementMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo ResolveElementMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo ResolveElementMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveElementMethod "getBaseTime" o = ElementGetBaseTimeMethodInfo ResolveElementMethod "getBus" o = ElementGetBusMethodInfo ResolveElementMethod "getClock" o = ElementGetClockMethodInfo ResolveElementMethod "getCompatiblePad" o = ElementGetCompatiblePadMethodInfo ResolveElementMethod "getCompatiblePadTemplate" o = ElementGetCompatiblePadTemplateMethodInfo ResolveElementMethod "getContext" o = ElementGetContextMethodInfo ResolveElementMethod "getContextUnlocked" o = ElementGetContextUnlockedMethodInfo ResolveElementMethod "getContexts" o = ElementGetContextsMethodInfo ResolveElementMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo ResolveElementMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo ResolveElementMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveElementMethod "getFactory" o = ElementGetFactoryMethodInfo ResolveElementMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo ResolveElementMethod "getMetadata" o = ElementGetMetadataMethodInfo ResolveElementMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo ResolveElementMethod "getPadTemplate" o = ElementGetPadTemplateMethodInfo ResolveElementMethod "getPadTemplateList" o = ElementGetPadTemplateListMethodInfo ResolveElementMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo ResolveElementMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo ResolveElementMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveElementMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveElementMethod "getRequestPad" o = ElementGetRequestPadMethodInfo ResolveElementMethod "getStartTime" o = ElementGetStartTimeMethodInfo ResolveElementMethod "getState" o = ElementGetStateMethodInfo ResolveElementMethod "getStaticPad" o = ElementGetStaticPadMethodInfo ResolveElementMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo ResolveElementMethod "setBaseTime" o = ElementSetBaseTimeMethodInfo ResolveElementMethod "setBus" o = ElementSetBusMethodInfo ResolveElementMethod "setClock" o = ElementSetClockMethodInfo ResolveElementMethod "setContext" o = ElementSetContextMethodInfo ResolveElementMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo ResolveElementMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo ResolveElementMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo ResolveElementMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveElementMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo ResolveElementMethod "setLockedState" o = ElementSetLockedStateMethodInfo ResolveElementMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo ResolveElementMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo ResolveElementMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveElementMethod "setStartTime" o = ElementSetStartTimeMethodInfo ResolveElementMethod "setState" o = ElementSetStateMethodInfo ResolveElementMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveElementMethod t Element, O.MethodInfo info Element p) => OL.IsLabel t (Element -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- signal Element::no-more-pads {- | This signals that the element will not generate more dynamic pads. Note that this signal will usually be emitted from the context of the streaming thread. -} type ElementNoMorePadsCallback = IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `ElementNoMorePadsCallback`@. noElementNoMorePadsCallback :: Maybe ElementNoMorePadsCallback noElementNoMorePadsCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_ElementNoMorePadsCallback = Ptr () -> -- object Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_ElementNoMorePadsCallback`. foreign import ccall "wrapper" mk_ElementNoMorePadsCallback :: C_ElementNoMorePadsCallback -> IO (FunPtr C_ElementNoMorePadsCallback) -- | Wrap the callback into a `GClosure`. genClosure_ElementNoMorePads :: MonadIO m => ElementNoMorePadsCallback -> m (GClosure C_ElementNoMorePadsCallback) genClosure_ElementNoMorePads cb = liftIO $ do let cb' = wrap_ElementNoMorePadsCallback cb mk_ElementNoMorePadsCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `ElementNoMorePadsCallback` into a `C_ElementNoMorePadsCallback`. wrap_ElementNoMorePadsCallback :: ElementNoMorePadsCallback -> C_ElementNoMorePadsCallback wrap_ElementNoMorePadsCallback _cb _ _ = do _cb {- | Connect a signal handler for the “@no-more-pads@” signal, to be run before the default handler. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' element #noMorePads callback @ -} onElementNoMorePads :: (IsElement a, MonadIO m) => a -> ElementNoMorePadsCallback -> m SignalHandlerId onElementNoMorePads obj cb = liftIO $ do let cb' = wrap_ElementNoMorePadsCallback cb cb'' <- mk_ElementNoMorePadsCallback cb' connectSignalFunPtr obj "no-more-pads" cb'' SignalConnectBefore {- | Connect a signal handler for the “@no-more-pads@” signal, to be run after the default handler. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' element #noMorePads callback @ -} afterElementNoMorePads :: (IsElement a, MonadIO m) => a -> ElementNoMorePadsCallback -> m SignalHandlerId afterElementNoMorePads obj cb = liftIO $ do let cb' = wrap_ElementNoMorePadsCallback cb cb'' <- mk_ElementNoMorePadsCallback cb' connectSignalFunPtr obj "no-more-pads" cb'' SignalConnectAfter -- signal Element::pad-added {- | a new 'GI.Gst.Objects.Pad.Pad' has been added to the element. Note that this signal will usually be emitted from the context of the streaming thread. Also keep in mind that if you add new elements to the pipeline in the signal handler you will need to set them to the desired target state with 'GI.Gst.Objects.Element.elementSetState' or 'GI.Gst.Objects.Element.elementSyncStateWithParent'. -} type ElementPadAddedCallback = Gst.Pad.Pad {- ^ /@newPad@/: the pad that has been added -} -> IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `ElementPadAddedCallback`@. noElementPadAddedCallback :: Maybe ElementPadAddedCallback noElementPadAddedCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_ElementPadAddedCallback = Ptr () -> -- object Ptr Gst.Pad.Pad -> Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_ElementPadAddedCallback`. foreign import ccall "wrapper" mk_ElementPadAddedCallback :: C_ElementPadAddedCallback -> IO (FunPtr C_ElementPadAddedCallback) -- | Wrap the callback into a `GClosure`. genClosure_ElementPadAdded :: MonadIO m => ElementPadAddedCallback -> m (GClosure C_ElementPadAddedCallback) genClosure_ElementPadAdded cb = liftIO $ do let cb' = wrap_ElementPadAddedCallback cb mk_ElementPadAddedCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `ElementPadAddedCallback` into a `C_ElementPadAddedCallback`. wrap_ElementPadAddedCallback :: ElementPadAddedCallback -> C_ElementPadAddedCallback wrap_ElementPadAddedCallback _cb _ newPad _ = do newPad' <- (newObject Gst.Pad.Pad) newPad _cb newPad' {- | Connect a signal handler for the “@pad-added@” signal, to be run before the default handler. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' element #padAdded callback @ -} onElementPadAdded :: (IsElement a, MonadIO m) => a -> ElementPadAddedCallback -> m SignalHandlerId onElementPadAdded obj cb = liftIO $ do let cb' = wrap_ElementPadAddedCallback cb cb'' <- mk_ElementPadAddedCallback cb' connectSignalFunPtr obj "pad-added" cb'' SignalConnectBefore {- | Connect a signal handler for the “@pad-added@” signal, to be run after the default handler. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' element #padAdded callback @ -} afterElementPadAdded :: (IsElement a, MonadIO m) => a -> ElementPadAddedCallback -> m SignalHandlerId afterElementPadAdded obj cb = liftIO $ do let cb' = wrap_ElementPadAddedCallback cb cb'' <- mk_ElementPadAddedCallback cb' connectSignalFunPtr obj "pad-added" cb'' SignalConnectAfter -- signal Element::pad-removed {- | a 'GI.Gst.Objects.Pad.Pad' has been removed from the element -} type ElementPadRemovedCallback = Gst.Pad.Pad {- ^ /@oldPad@/: the pad that has been removed -} -> IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `ElementPadRemovedCallback`@. noElementPadRemovedCallback :: Maybe ElementPadRemovedCallback noElementPadRemovedCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_ElementPadRemovedCallback = Ptr () -> -- object Ptr Gst.Pad.Pad -> Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_ElementPadRemovedCallback`. foreign import ccall "wrapper" mk_ElementPadRemovedCallback :: C_ElementPadRemovedCallback -> IO (FunPtr C_ElementPadRemovedCallback) -- | Wrap the callback into a `GClosure`. genClosure_ElementPadRemoved :: MonadIO m => ElementPadRemovedCallback -> m (GClosure C_ElementPadRemovedCallback) genClosure_ElementPadRemoved cb = liftIO $ do let cb' = wrap_ElementPadRemovedCallback cb mk_ElementPadRemovedCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `ElementPadRemovedCallback` into a `C_ElementPadRemovedCallback`. wrap_ElementPadRemovedCallback :: ElementPadRemovedCallback -> C_ElementPadRemovedCallback wrap_ElementPadRemovedCallback _cb _ oldPad _ = do oldPad' <- (newObject Gst.Pad.Pad) oldPad _cb oldPad' {- | Connect a signal handler for the “@pad-removed@” signal, to be run before the default handler. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' element #padRemoved callback @ -} onElementPadRemoved :: (IsElement a, MonadIO m) => a -> ElementPadRemovedCallback -> m SignalHandlerId onElementPadRemoved obj cb = liftIO $ do let cb' = wrap_ElementPadRemovedCallback cb cb'' <- mk_ElementPadRemovedCallback cb' connectSignalFunPtr obj "pad-removed" cb'' SignalConnectBefore {- | Connect a signal handler for the “@pad-removed@” signal, to be run after the default handler. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' element #padRemoved callback @ -} afterElementPadRemoved :: (IsElement a, MonadIO m) => a -> ElementPadRemovedCallback -> m SignalHandlerId afterElementPadRemoved obj cb = liftIO $ do let cb' = wrap_ElementPadRemovedCallback cb cb'' <- mk_ElementPadRemovedCallback cb' connectSignalFunPtr obj "pad-removed" cb'' SignalConnectAfter #if ENABLE_OVERLOADING instance O.HasAttributeList Element type instance O.AttributeList Element = ElementAttributeList type ElementAttributeList = ('[ '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo)] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING data ElementNoMorePadsSignalInfo instance SignalInfo ElementNoMorePadsSignalInfo where type HaskellCallbackType ElementNoMorePadsSignalInfo = ElementNoMorePadsCallback connectSignal _ obj cb connectMode = do let cb' = wrap_ElementNoMorePadsCallback cb cb'' <- mk_ElementNoMorePadsCallback cb' connectSignalFunPtr obj "no-more-pads" cb'' connectMode data ElementPadAddedSignalInfo instance SignalInfo ElementPadAddedSignalInfo where type HaskellCallbackType ElementPadAddedSignalInfo = ElementPadAddedCallback connectSignal _ obj cb connectMode = do let cb' = wrap_ElementPadAddedCallback cb cb'' <- mk_ElementPadAddedCallback cb' connectSignalFunPtr obj "pad-added" cb'' connectMode data ElementPadRemovedSignalInfo instance SignalInfo ElementPadRemovedSignalInfo where type HaskellCallbackType ElementPadRemovedSignalInfo = ElementPadRemovedCallback connectSignal _ obj cb connectMode = do let cb' = wrap_ElementPadRemovedCallback cb cb'' <- mk_ElementPadRemovedCallback cb' connectSignalFunPtr obj "pad-removed" cb'' connectMode type instance O.SignalList Element = ElementSignalList type ElementSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", ElementPadAddedSignalInfo), '("padRemoved", ElementPadRemovedSignalInfo)] :: [(Symbol, *)]) #endif -- method Element::abort_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to abort the state of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_abort_state" gst_element_abort_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO () {- | Abort the state change of the element. This function is used by elements that do asynchronous state changes and find out something is wrong. This function should be called with the STATE_LOCK held. MT safe. -} elementAbortState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to abort the state of. -} -> m () elementAbortState element = liftIO $ do element' <- unsafeManagedPtrCastPtr element gst_element_abort_state element' touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementAbortStateMethodInfo instance (signature ~ (m ()), MonadIO m, IsElement a) => O.MethodInfo ElementAbortStateMethodInfo a signature where overloadedMethod _ = elementAbortState #endif -- method Element::add_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to add the pad to.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pad", argType = TInterface (Name {namespace = "Gst", name = "Pad"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstPad to add to the element.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_add_pad" gst_element_add_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Pad.Pad -> -- pad : TInterface (Name {namespace = "Gst", name = "Pad"}) IO CInt {- | Adds a pad (link point) to /@element@/. /@pad@/\'s parent will be set to /@element@/; see 'GI.Gst.Objects.Object.objectSetParent' for refcounting information. Pads are automatically activated when added in the PAUSED or PLAYING state. The pad and the element should be unlocked when calling this function. This function will emit the 'GI.Gst.Objects.Element.Element'::@/pad-added/@ signal on the element. -} elementAddPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.Pad.IsPad b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to add the pad to. -} -> b {- ^ /@pad@/: the 'GI.Gst.Objects.Pad.Pad' to add to the element. -} -> m Bool {- ^ __Returns:__ 'True' if the pad could be added. This function can fail when a pad with the same name already existed or the pad already had another parent. MT safe. -} elementAddPad element pad = liftIO $ do element' <- unsafeManagedPtrCastPtr element pad' <- unsafeManagedPtrCastPtr pad result <- gst_element_add_pad element' pad' let result' = (/= 0) result touchManagedPtr element touchManagedPtr pad return result' #if ENABLE_OVERLOADING data ElementAddPadMethodInfo instance (signature ~ (b -> m Bool), MonadIO m, IsElement a, Gst.Pad.IsPad b) => O.MethodInfo ElementAddPadMethodInfo a signature where overloadedMethod _ = elementAddPad #endif -- method Element::add_property_deep_notify_watch -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to watch (recursively) for property changes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "name of property to watch for changes, or\n NULL to watch all properties", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "include_value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether to include the new property value in the message", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TULong) -- throws : False -- Skip return : False foreign import ccall "gst_element_add_property_deep_notify_watch" gst_element_add_property_deep_notify_watch :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- property_name : TBasicType TUTF8 CInt -> -- include_value : TBasicType TBoolean IO CULong {- | /No description available in the introspection data./ /Since: 1.10/ -} elementAddPropertyDeepNotifyWatch :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to watch (recursively) for property changes -} -> Maybe (T.Text) {- ^ /@propertyName@/: name of property to watch for changes, or NULL to watch all properties -} -> Bool {- ^ /@includeValue@/: whether to include the new property value in the message -} -> m CULong {- ^ __Returns:__ a watch id, which can be used in connection with 'GI.Gst.Objects.Element.elementRemovePropertyNotifyWatch' to remove the watch again. -} elementAddPropertyDeepNotifyWatch element propertyName includeValue = liftIO $ do element' <- unsafeManagedPtrCastPtr element maybePropertyName <- case propertyName of Nothing -> return nullPtr Just jPropertyName -> do jPropertyName' <- textToCString jPropertyName return jPropertyName' let includeValue' = (fromIntegral . fromEnum) includeValue result <- gst_element_add_property_deep_notify_watch element' maybePropertyName includeValue' touchManagedPtr element freeMem maybePropertyName return result #if ENABLE_OVERLOADING data ElementAddPropertyDeepNotifyWatchMethodInfo instance (signature ~ (Maybe (T.Text) -> Bool -> m CULong), MonadIO m, IsElement a) => O.MethodInfo ElementAddPropertyDeepNotifyWatchMethodInfo a signature where overloadedMethod _ = elementAddPropertyDeepNotifyWatch #endif -- method Element::add_property_notify_watch -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to watch for property changes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "property_name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "name of property to watch for changes, or\n NULL to watch all properties", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "include_value", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "whether to include the new property value in the message", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TULong) -- throws : False -- Skip return : False foreign import ccall "gst_element_add_property_notify_watch" gst_element_add_property_notify_watch :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- property_name : TBasicType TUTF8 CInt -> -- include_value : TBasicType TBoolean IO CULong {- | /No description available in the introspection data./ /Since: 1.10/ -} elementAddPropertyNotifyWatch :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to watch for property changes -} -> Maybe (T.Text) {- ^ /@propertyName@/: name of property to watch for changes, or NULL to watch all properties -} -> Bool {- ^ /@includeValue@/: whether to include the new property value in the message -} -> m CULong {- ^ __Returns:__ a watch id, which can be used in connection with 'GI.Gst.Objects.Element.elementRemovePropertyNotifyWatch' to remove the watch again. -} elementAddPropertyNotifyWatch element propertyName includeValue = liftIO $ do element' <- unsafeManagedPtrCastPtr element maybePropertyName <- case propertyName of Nothing -> return nullPtr Just jPropertyName -> do jPropertyName' <- textToCString jPropertyName return jPropertyName' let includeValue' = (fromIntegral . fromEnum) includeValue result <- gst_element_add_property_notify_watch element' maybePropertyName includeValue' touchManagedPtr element freeMem maybePropertyName return result #if ENABLE_OVERLOADING data ElementAddPropertyNotifyWatchMethodInfo instance (signature ~ (Maybe (T.Text) -> Bool -> m CULong), MonadIO m, IsElement a) => O.MethodInfo ElementAddPropertyNotifyWatchMethodInfo a signature where overloadedMethod _ = elementAddPropertyNotifyWatch #endif -- method Element::call_async -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "ElementCallAsyncFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Function to call asynchronously from another thread", sinceVersion = Nothing}, argScope = ScopeTypeNotified, argClosure = 2, argDestroy = 3, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "Data to pass to @func", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destroy_notify", argType = TInterface (Name {namespace = "GLib", name = "DestroyNotify"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "GDestroyNotify for @user_data", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_call_async" gst_element_call_async :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) FunPtr Gst.Callbacks.C_ElementCallAsyncFunc -> -- func : TInterface (Name {namespace = "Gst", name = "ElementCallAsyncFunc"}) Ptr () -> -- user_data : TBasicType TPtr FunPtr GLib.Callbacks.C_DestroyNotify -> -- destroy_notify : TInterface (Name {namespace = "GLib", name = "DestroyNotify"}) IO () {- | Calls /@func@/ from another thread and passes /@userData@/ to it. This is to be used for cases when a state change has to be performed from a streaming thread, directly via 'GI.Gst.Objects.Element.elementSetState' or indirectly e.g. via SEEK events. Calling those functions directly from the streaming thread will cause deadlocks in many situations, as they might involve waiting for the streaming thread to shut down from this very streaming thread. MT safe. /Since: 1.10/ -} elementCallAsync :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' -} -> Gst.Callbacks.ElementCallAsyncFunc {- ^ /@func@/: Function to call asynchronously from another thread -} -> m () elementCallAsync element func = liftIO $ do element' <- unsafeManagedPtrCastPtr element func' <- Gst.Callbacks.mk_ElementCallAsyncFunc (Gst.Callbacks.wrap_ElementCallAsyncFunc Nothing (Gst.Callbacks.drop_closures_ElementCallAsyncFunc func)) let userData = castFunPtrToPtr func' let destroyNotify = safeFreeFunPtrPtr gst_element_call_async element' func' userData destroyNotify touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementCallAsyncMethodInfo instance (signature ~ (Gst.Callbacks.ElementCallAsyncFunc -> m ()), MonadIO m, IsElement a) => O.MethodInfo ElementCallAsyncMethodInfo a signature where overloadedMethod _ = elementCallAsync #endif -- method Element::change_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "transition", argType = TInterface (Name {namespace = "Gst", name = "StateChange"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the requested transition", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "StateChangeReturn"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_change_state" gst_element_change_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- transition : TInterface (Name {namespace = "Gst", name = "StateChange"}) IO CUInt {- | Perform /@transition@/ on /@element@/. This function must be called with STATE_LOCK held and is mainly used internally. -} elementChangeState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' -} -> Gst.Enums.StateChange {- ^ /@transition@/: the requested transition -} -> m Gst.Enums.StateChangeReturn {- ^ __Returns:__ the 'GI.Gst.Enums.StateChangeReturn' of the state transition. -} elementChangeState element transition = liftIO $ do element' <- unsafeManagedPtrCastPtr element let transition' = (fromIntegral . fromEnum) transition result <- gst_element_change_state element' transition' let result' = (toEnum . fromIntegral) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementChangeStateMethodInfo instance (signature ~ (Gst.Enums.StateChange -> m Gst.Enums.StateChangeReturn), MonadIO m, IsElement a) => O.MethodInfo ElementChangeStateMethodInfo a signature where overloadedMethod _ = elementChangeState #endif -- method Element::continue_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to continue the state change of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ret", argType = TInterface (Name {namespace = "Gst", name = "StateChangeReturn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The previous state return value", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "StateChangeReturn"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_continue_state" gst_element_continue_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- ret : TInterface (Name {namespace = "Gst", name = "StateChangeReturn"}) IO CUInt {- | Commit the state change of the element and proceed to the next pending state if any. This function is used by elements that do asynchronous state changes. The core will normally call this method automatically when an element returned 'GI.Gst.Enums.StateChangeReturnSuccess' from the state change function. If after calling this method the element still has not reached the pending state, the next state change is performed. This method is used internally and should normally not be called by plugins or applications. This function must be called with STATE_LOCK held. -} elementContinueState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to continue the state change of. -} -> Gst.Enums.StateChangeReturn {- ^ /@ret@/: The previous state return value -} -> m Gst.Enums.StateChangeReturn {- ^ __Returns:__ The result of the commit state change. MT safe. -} elementContinueState element ret = liftIO $ do element' <- unsafeManagedPtrCastPtr element let ret' = (fromIntegral . fromEnum) ret result <- gst_element_continue_state element' ret' let result' = (toEnum . fromIntegral) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementContinueStateMethodInfo instance (signature ~ (Gst.Enums.StateChangeReturn -> m Gst.Enums.StateChangeReturn), MonadIO m, IsElement a) => O.MethodInfo ElementContinueStateMethodInfo a signature where overloadedMethod _ = elementContinueState #endif -- method Element::create_all_pads -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to create pads for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_create_all_pads" gst_element_create_all_pads :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO () {- | Creates a pad for each pad template that is always available. This function is only useful during object initialization of subclasses of 'GI.Gst.Objects.Element.Element'. -} elementCreateAllPads :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to create pads for -} -> m () elementCreateAllPads element = liftIO $ do element' <- unsafeManagedPtrCastPtr element gst_element_create_all_pads element' touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementCreateAllPadsMethodInfo instance (signature ~ (m ()), MonadIO m, IsElement a) => O.MethodInfo ElementCreateAllPadsMethodInfo a signature where overloadedMethod _ = elementCreateAllPads #endif -- method Element::foreach_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to iterate pads of", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "ElementForeachPadFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "function to call for each pad", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to @func", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_foreach_pad" gst_element_foreach_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) FunPtr Gst.Callbacks.C_ElementForeachPadFunc -> -- func : TInterface (Name {namespace = "Gst", name = "ElementForeachPadFunc"}) Ptr () -> -- user_data : TBasicType TPtr IO CInt {- | Call /@func@/ with /@userData@/ for each of /@element@/\'s pads. /@func@/ will be called exactly once for each pad that exists at the time of this call, unless one of the calls to /@func@/ returns 'False' in which case we will stop iterating pads and return early. If new pads are added or pads are removed while pads are being iterated, this will not be taken into account until next time this function is used. /Since: 1.14/ -} elementForeachPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to iterate pads of -} -> Gst.Callbacks.ElementForeachPadFunc {- ^ /@func@/: function to call for each pad -} -> m Bool {- ^ __Returns:__ 'False' if /@element@/ had no pads or if one of the calls to /@func@/ returned 'False'. -} elementForeachPad element func = liftIO $ do element' <- unsafeManagedPtrCastPtr element func' <- Gst.Callbacks.mk_ElementForeachPadFunc (Gst.Callbacks.wrap_ElementForeachPadFunc Nothing (Gst.Callbacks.drop_closures_ElementForeachPadFunc func)) let userData = nullPtr result <- gst_element_foreach_pad element' func' userData let result' = (/= 0) result safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementForeachPadMethodInfo instance (signature ~ (Gst.Callbacks.ElementForeachPadFunc -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementForeachPadMethodInfo a signature where overloadedMethod _ = elementForeachPad #endif -- method Element::foreach_sink_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to iterate sink pads of", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "ElementForeachPadFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "function to call for each sink pad", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to @func", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_foreach_sink_pad" gst_element_foreach_sink_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) FunPtr Gst.Callbacks.C_ElementForeachPadFunc -> -- func : TInterface (Name {namespace = "Gst", name = "ElementForeachPadFunc"}) Ptr () -> -- user_data : TBasicType TPtr IO CInt {- | Call /@func@/ with /@userData@/ for each of /@element@/\'s sink pads. /@func@/ will be called exactly once for each sink pad that exists at the time of this call, unless one of the calls to /@func@/ returns 'False' in which case we will stop iterating pads and return early. If new sink pads are added or sink pads are removed while the sink pads are being iterated, this will not be taken into account until next time this function is used. /Since: 1.14/ -} elementForeachSinkPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to iterate sink pads of -} -> Gst.Callbacks.ElementForeachPadFunc {- ^ /@func@/: function to call for each sink pad -} -> m Bool {- ^ __Returns:__ 'False' if /@element@/ had no sink pads or if one of the calls to /@func@/ returned 'False'. -} elementForeachSinkPad element func = liftIO $ do element' <- unsafeManagedPtrCastPtr element func' <- Gst.Callbacks.mk_ElementForeachPadFunc (Gst.Callbacks.wrap_ElementForeachPadFunc Nothing (Gst.Callbacks.drop_closures_ElementForeachPadFunc func)) let userData = nullPtr result <- gst_element_foreach_sink_pad element' func' userData let result' = (/= 0) result safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementForeachSinkPadMethodInfo instance (signature ~ (Gst.Callbacks.ElementForeachPadFunc -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementForeachSinkPadMethodInfo a signature where overloadedMethod _ = elementForeachSinkPad #endif -- method Element::foreach_src_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to iterate source pads of", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "ElementForeachPadFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "function to call for each source pad", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to @func", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_foreach_src_pad" gst_element_foreach_src_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) FunPtr Gst.Callbacks.C_ElementForeachPadFunc -> -- func : TInterface (Name {namespace = "Gst", name = "ElementForeachPadFunc"}) Ptr () -> -- user_data : TBasicType TPtr IO CInt {- | Call /@func@/ with /@userData@/ for each of /@element@/\'s source pads. /@func@/ will be called exactly once for each source pad that exists at the time of this call, unless one of the calls to /@func@/ returns 'False' in which case we will stop iterating pads and return early. If new source pads are added or source pads are removed while the source pads are being iterated, this will not be taken into account until next time this function is used. /Since: 1.14/ -} elementForeachSrcPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to iterate source pads of -} -> Gst.Callbacks.ElementForeachPadFunc {- ^ /@func@/: function to call for each source pad -} -> m Bool {- ^ __Returns:__ 'False' if /@element@/ had no source pads or if one of the calls to /@func@/ returned 'False'. -} elementForeachSrcPad element func = liftIO $ do element' <- unsafeManagedPtrCastPtr element func' <- Gst.Callbacks.mk_ElementForeachPadFunc (Gst.Callbacks.wrap_ElementForeachPadFunc Nothing (Gst.Callbacks.drop_closures_ElementForeachPadFunc func)) let userData = nullPtr result <- gst_element_foreach_src_pad element' func' userData let result' = (/= 0) result safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementForeachSrcPadMethodInfo instance (signature ~ (Gst.Callbacks.ElementForeachPadFunc -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementForeachSrcPadMethodInfo a signature where overloadedMethod _ = elementForeachSrcPad #endif -- method Element::get_base_time -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_base_time" gst_element_get_base_time :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO Word64 {- | Returns the base time of the element. The base time is the absolute time of the clock when this element was last put to PLAYING. Subtracting the base time from the clock time gives the running time of the element. -} elementGetBaseTime :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> m Word64 {- ^ __Returns:__ the base time of the element. MT safe. -} elementGetBaseTime element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_get_base_time element' touchManagedPtr element return result #if ENABLE_OVERLOADING data ElementGetBaseTimeMethodInfo instance (signature ~ (m Word64), MonadIO m, IsElement a) => O.MethodInfo ElementGetBaseTimeMethodInfo a signature where overloadedMethod _ = elementGetBaseTime #endif -- method Element::get_bus -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get the bus of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Bus"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_bus" gst_element_get_bus :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr Gst.Bus.Bus) {- | Returns the bus of the element. Note that only a 'GI.Gst.Objects.Pipeline.Pipeline' will provide a bus for the application. -} elementGetBus :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get the bus of. -} -> m (Maybe Gst.Bus.Bus) {- ^ __Returns:__ the element\'s 'GI.Gst.Objects.Bus.Bus'. unref after usage. MT safe. -} elementGetBus element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_get_bus element' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Gst.Bus.Bus) result' return result'' touchManagedPtr element return maybeResult #if ENABLE_OVERLOADING data ElementGetBusMethodInfo instance (signature ~ (m (Maybe Gst.Bus.Bus)), MonadIO m, IsElement a) => O.MethodInfo ElementGetBusMethodInfo a signature where overloadedMethod _ = elementGetBus #endif -- method Element::get_clock -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get the clock of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Clock"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_clock" gst_element_get_clock :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr Gst.Clock.Clock) {- | Gets the currently configured clock of the element. This is the clock as was last set with 'GI.Gst.Objects.Element.elementSetClock'. Elements in a pipeline will only have their clock set when the pipeline is in the PLAYING state. -} elementGetClock :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get the clock of. -} -> m (Maybe Gst.Clock.Clock) {- ^ __Returns:__ the 'GI.Gst.Objects.Clock.Clock' of the element. unref after usage. MT safe. -} elementGetClock element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_get_clock element' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Gst.Clock.Clock) result' return result'' touchManagedPtr element return maybeResult #if ENABLE_OVERLOADING data ElementGetClockMethodInfo instance (signature ~ (m (Maybe Gst.Clock.Clock)), MonadIO m, IsElement a) => O.MethodInfo ElementGetClockMethodInfo a signature where overloadedMethod _ = elementGetClock #endif -- method Element::get_compatible_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement in which the pad should be found.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pad", argType = TInterface (Name {namespace = "Gst", name = "Pad"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstPad to find a compatible one for.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstCaps to use as a filter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Pad"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_compatible_pad" gst_element_get_compatible_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Pad.Pad -> -- pad : TInterface (Name {namespace = "Gst", name = "Pad"}) Ptr Gst.Caps.Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Gst.Pad.Pad) {- | Looks for an unlinked pad to which the given pad can link. It is not guaranteed that linking the pads will work, though it should work in most cases. This function will first attempt to find a compatible unlinked ALWAYS pad, and if none can be found, it will request a compatible REQUEST pad by looking at the templates of /@element@/. -} elementGetCompatiblePad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.Pad.IsPad b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' in which the pad should be found. -} -> b {- ^ /@pad@/: the 'GI.Gst.Objects.Pad.Pad' to find a compatible one for. -} -> Maybe (Gst.Caps.Caps) {- ^ /@caps@/: the 'GI.Gst.Structs.Caps.Caps' to use as a filter. -} -> m (Maybe Gst.Pad.Pad) {- ^ __Returns:__ the 'GI.Gst.Objects.Pad.Pad' to which a link can be made, or 'Nothing' if one cannot be found. 'GI.Gst.Objects.Object.objectUnref' after usage. -} elementGetCompatiblePad element pad caps = liftIO $ do element' <- unsafeManagedPtrCastPtr element pad' <- unsafeManagedPtrCastPtr pad maybeCaps <- case caps of Nothing -> return nullPtr Just jCaps -> do jCaps' <- unsafeManagedPtrGetPtr jCaps return jCaps' result <- gst_element_get_compatible_pad element' pad' maybeCaps maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Gst.Pad.Pad) result' return result'' touchManagedPtr element touchManagedPtr pad whenJust caps touchManagedPtr return maybeResult #if ENABLE_OVERLOADING data ElementGetCompatiblePadMethodInfo instance (signature ~ (b -> Maybe (Gst.Caps.Caps) -> m (Maybe Gst.Pad.Pad)), MonadIO m, IsElement a, Gst.Pad.IsPad b) => O.MethodInfo ElementGetCompatiblePadMethodInfo a signature where overloadedMethod _ = elementGetCompatiblePad #endif -- method Element::get_compatible_pad_template -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get a compatible pad template for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "compattempl", argType = TInterface (Name {namespace = "Gst", name = "PadTemplate"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstPadTemplate to find a compatible\n template for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "PadTemplate"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_compatible_pad_template" gst_element_get_compatible_pad_template :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.PadTemplate.PadTemplate -> -- compattempl : TInterface (Name {namespace = "Gst", name = "PadTemplate"}) IO (Ptr Gst.PadTemplate.PadTemplate) {- | Retrieves a pad template from /@element@/ that is compatible with /@compattempl@/. Pads from compatible templates can be linked together. -} elementGetCompatiblePadTemplate :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.PadTemplate.IsPadTemplate b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get a compatible pad template for -} -> b {- ^ /@compattempl@/: the 'GI.Gst.Objects.PadTemplate.PadTemplate' to find a compatible template for -} -> m (Maybe Gst.PadTemplate.PadTemplate) {- ^ __Returns:__ a compatible 'GI.Gst.Objects.PadTemplate.PadTemplate', or 'Nothing' if none was found. No unreferencing is necessary. -} elementGetCompatiblePadTemplate element compattempl = liftIO $ do element' <- unsafeManagedPtrCastPtr element compattempl' <- unsafeManagedPtrCastPtr compattempl result <- gst_element_get_compatible_pad_template element' compattempl' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newObject Gst.PadTemplate.PadTemplate) result' return result'' touchManagedPtr element touchManagedPtr compattempl return maybeResult #if ENABLE_OVERLOADING data ElementGetCompatiblePadTemplateMethodInfo instance (signature ~ (b -> m (Maybe Gst.PadTemplate.PadTemplate)), MonadIO m, IsElement a, Gst.PadTemplate.IsPadTemplate b) => O.MethodInfo ElementGetCompatiblePadTemplateMethodInfo a signature where overloadedMethod _ = elementGetCompatiblePadTemplate #endif -- method Element::get_context -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get the context of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a name of a context to retrieve", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Context"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_context" gst_element_get_context :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- context_type : TBasicType TUTF8 IO (Ptr Gst.Context.Context) {- | Gets the context with /@contextType@/ set on the element or NULL. MT safe. /Since: 1.8/ -} elementGetContext :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get the context of. -} -> T.Text {- ^ /@contextType@/: a name of a context to retrieve -} -> m Gst.Context.Context {- ^ __Returns:__ A 'GI.Gst.Structs.Context.Context' or NULL -} elementGetContext element contextType = liftIO $ do element' <- unsafeManagedPtrCastPtr element contextType' <- textToCString contextType result <- gst_element_get_context element' contextType' checkUnexpectedReturnNULL "elementGetContext" result result' <- (wrapBoxed Gst.Context.Context) result touchManagedPtr element freeMem contextType' return result' #if ENABLE_OVERLOADING data ElementGetContextMethodInfo instance (signature ~ (T.Text -> m Gst.Context.Context), MonadIO m, IsElement a) => O.MethodInfo ElementGetContextMethodInfo a signature where overloadedMethod _ = elementGetContext #endif -- method Element::get_context_unlocked -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get the context of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context_type", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a name of a context to retrieve", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Context"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_context_unlocked" gst_element_get_context_unlocked :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- context_type : TBasicType TUTF8 IO (Ptr Gst.Context.Context) {- | Gets the context with /@contextType@/ set on the element or NULL. /Since: 1.8/ -} elementGetContextUnlocked :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get the context of. -} -> T.Text {- ^ /@contextType@/: a name of a context to retrieve -} -> m (Maybe Gst.Context.Context) {- ^ __Returns:__ A 'GI.Gst.Structs.Context.Context' or NULL -} elementGetContextUnlocked element contextType = liftIO $ do element' <- unsafeManagedPtrCastPtr element contextType' <- textToCString contextType result <- gst_element_get_context_unlocked element' contextType' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Gst.Context.Context) result' return result'' touchManagedPtr element freeMem contextType' return maybeResult #if ENABLE_OVERLOADING data ElementGetContextUnlockedMethodInfo instance (signature ~ (T.Text -> m (Maybe Gst.Context.Context)), MonadIO m, IsElement a) => O.MethodInfo ElementGetContextUnlockedMethodInfo a signature where overloadedMethod _ = elementGetContextUnlocked #endif -- method Element::get_contexts -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to set the context of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TGList (TInterface (Name {namespace = "Gst", name = "Context"}))) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_contexts" gst_element_get_contexts :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr (GList (Ptr Gst.Context.Context))) {- | Gets the contexts set on the element. MT safe. /Since: 1.8/ -} elementGetContexts :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to set the context of. -} -> m [Gst.Context.Context] {- ^ __Returns:__ List of 'GI.Gst.Structs.Context.Context' -} elementGetContexts element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_get_contexts element' result' <- unpackGList result result'' <- mapM (wrapBoxed Gst.Context.Context) result' g_list_free result touchManagedPtr element return result'' #if ENABLE_OVERLOADING data ElementGetContextsMethodInfo instance (signature ~ (m [Gst.Context.Context]), MonadIO m, IsElement a) => O.MethodInfo ElementGetContextsMethodInfo a signature where overloadedMethod _ = elementGetContexts #endif -- method Element::get_factory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to request the element factory of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "ElementFactory"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_factory" gst_element_get_factory :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr Gst.ElementFactory.ElementFactory) {- | Retrieves the factory that was used to create this element. -} elementGetFactory :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to request the element factory of. -} -> m (Maybe Gst.ElementFactory.ElementFactory) {- ^ __Returns:__ the 'GI.Gst.Objects.ElementFactory.ElementFactory' used for creating this element or 'Nothing' if element has not been registered (static element). no refcounting is needed. -} elementGetFactory element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_get_factory element' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newObject Gst.ElementFactory.ElementFactory) result' return result'' touchManagedPtr element return maybeResult #if ENABLE_OVERLOADING data ElementGetFactoryMethodInfo instance (signature ~ (m (Maybe Gst.ElementFactory.ElementFactory)), MonadIO m, IsElement a) => O.MethodInfo ElementGetFactoryMethodInfo a signature where overloadedMethod _ = elementGetFactory #endif -- method Element::get_metadata -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "class to get metadata for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "key", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the key to get", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_metadata" gst_element_get_metadata :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- key : TBasicType TUTF8 IO CString {- | Get metadata with /@key@/ in /@klass@/. /Since: 1.14/ -} elementGetMetadata :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: class to get metadata for -} -> T.Text {- ^ /@key@/: the key to get -} -> m T.Text {- ^ __Returns:__ the metadata for /@key@/. -} elementGetMetadata element key = liftIO $ do element' <- unsafeManagedPtrCastPtr element key' <- textToCString key result <- gst_element_get_metadata element' key' checkUnexpectedReturnNULL "elementGetMetadata" result result' <- cstringToText result touchManagedPtr element freeMem key' return result' #if ENABLE_OVERLOADING data ElementGetMetadataMethodInfo instance (signature ~ (T.Text -> m T.Text), MonadIO m, IsElement a) => O.MethodInfo ElementGetMetadataMethodInfo a signature where overloadedMethod _ = elementGetMetadata #endif -- method Element::get_pad_template -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get the pad template of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the #GstPadTemplate to get.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "PadTemplate"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_pad_template" gst_element_get_pad_template :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- name : TBasicType TUTF8 IO (Ptr Gst.PadTemplate.PadTemplate) {- | Retrieves a padtemplate from /@element@/ with the given name. /Since: 1.14/ -} elementGetPadTemplate :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get the pad template of. -} -> T.Text {- ^ /@name@/: the name of the 'GI.Gst.Objects.PadTemplate.PadTemplate' to get. -} -> m (Maybe Gst.PadTemplate.PadTemplate) {- ^ __Returns:__ the 'GI.Gst.Objects.PadTemplate.PadTemplate' with the given name, or 'Nothing' if none was found. No unreferencing is necessary. -} elementGetPadTemplate element name = liftIO $ do element' <- unsafeManagedPtrCastPtr element name' <- textToCString name result <- gst_element_get_pad_template element' name' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newObject Gst.PadTemplate.PadTemplate) result' return result'' touchManagedPtr element freeMem name' return maybeResult #if ENABLE_OVERLOADING data ElementGetPadTemplateMethodInfo instance (signature ~ (T.Text -> m (Maybe Gst.PadTemplate.PadTemplate)), MonadIO m, IsElement a) => O.MethodInfo ElementGetPadTemplateMethodInfo a signature where overloadedMethod _ = elementGetPadTemplate #endif -- method Element::get_pad_template_list -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get pad templates of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TGList (TInterface (Name {namespace = "Gst", name = "PadTemplate"}))) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_pad_template_list" gst_element_get_pad_template_list :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr (GList (Ptr Gst.PadTemplate.PadTemplate))) {- | Retrieves a list of the pad templates associated with /@element@/. The list must not be modified by the calling code. /Since: 1.14/ -} elementGetPadTemplateList :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get pad templates of. -} -> m [Gst.PadTemplate.PadTemplate] {- ^ __Returns:__ the 'GI.GLib.Structs.List.List' of pad templates. -} elementGetPadTemplateList element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_get_pad_template_list element' result' <- unpackGList result result'' <- mapM (newObject Gst.PadTemplate.PadTemplate) result' touchManagedPtr element return result'' #if ENABLE_OVERLOADING data ElementGetPadTemplateListMethodInfo instance (signature ~ (m [Gst.PadTemplate.PadTemplate]), MonadIO m, IsElement a) => O.MethodInfo ElementGetPadTemplateListMethodInfo a signature where overloadedMethod _ = elementGetPadTemplateList #endif -- method Element::get_request_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to find a request pad of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the request #GstPad to retrieve.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Pad"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_request_pad" gst_element_get_request_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- name : TBasicType TUTF8 IO (Ptr Gst.Pad.Pad) {- | Retrieves a pad from the element by name (e.g. \"src_%d\"). This version only retrieves request pads. The pad should be released with 'GI.Gst.Objects.Element.elementReleaseRequestPad'. This method is slower than manually getting the pad template and calling 'GI.Gst.Objects.Element.elementRequestPad' if the pads should have a specific name (e.g. /@name@/ is \"src_1\" instead of \"src_%u\"). -} elementGetRequestPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to find a request pad of. -} -> T.Text {- ^ /@name@/: the name of the request 'GI.Gst.Objects.Pad.Pad' to retrieve. -} -> m (Maybe Gst.Pad.Pad) {- ^ __Returns:__ requested 'GI.Gst.Objects.Pad.Pad' if found, otherwise 'Nothing'. Release after usage. -} elementGetRequestPad element name = liftIO $ do element' <- unsafeManagedPtrCastPtr element name' <- textToCString name result <- gst_element_get_request_pad element' name' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Gst.Pad.Pad) result' return result'' touchManagedPtr element freeMem name' return maybeResult #if ENABLE_OVERLOADING data ElementGetRequestPadMethodInfo instance (signature ~ (T.Text -> m (Maybe Gst.Pad.Pad)), MonadIO m, IsElement a) => O.MethodInfo ElementGetRequestPadMethodInfo a signature where overloadedMethod _ = elementGetRequestPad #endif -- method Element::get_start_time -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_start_time" gst_element_get_start_time :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO Word64 {- | Returns the start time of the element. The start time is the running time of the clock when this element was last put to PAUSED. Usually the start_time is managed by a toplevel element such as 'GI.Gst.Objects.Pipeline.Pipeline'. MT safe. -} elementGetStartTime :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> m Word64 {- ^ __Returns:__ the start time of the element. -} elementGetStartTime element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_get_start_time element' touchManagedPtr element return result #if ENABLE_OVERLOADING data ElementGetStartTimeMethodInfo instance (signature ~ (m Word64), MonadIO m, IsElement a) => O.MethodInfo ElementGetStartTimeMethodInfo a signature where overloadedMethod _ = elementGetStartTime #endif -- method Element::get_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to get the state of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface (Name {namespace = "Gst", name = "State"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to #GstState to hold the state.\n Can be %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "pending", argType = TInterface (Name {namespace = "Gst", name = "State"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to #GstState to hold the pending\n state. Can be %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "timeout", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstClockTime to specify the timeout for an async\n state change or %GST_CLOCK_TIME_NONE for infinite timeout.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "StateChangeReturn"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_state" gst_element_get_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr CUInt -> -- state : TInterface (Name {namespace = "Gst", name = "State"}) Ptr CUInt -> -- pending : TInterface (Name {namespace = "Gst", name = "State"}) Word64 -> -- timeout : TBasicType TUInt64 IO CUInt {- | Gets the state of the element. For elements that performed an ASYNC state change, as reported by 'GI.Gst.Objects.Element.elementSetState', this function will block up to the specified timeout value for the state change to complete. If the element completes the state change or goes into an error, this function returns immediately with a return value of 'GI.Gst.Enums.StateChangeReturnSuccess' or 'GI.Gst.Enums.StateChangeReturnFailure' respectively. For elements that did not return 'GI.Gst.Enums.StateChangeReturnAsync', this function returns the current and pending state immediately. This function returns 'GI.Gst.Enums.StateChangeReturnNoPreroll' if the element successfully changed its state but is not able to provide data yet. This mostly happens for live sources that only produce data in 'GI.Gst.Enums.StatePlaying'. While the state change return is equivalent to 'GI.Gst.Enums.StateChangeReturnSuccess', it is returned to the application to signal that some sink elements might not be able to complete their state change because an element is not producing data to complete the preroll. When setting the element to playing, the preroll will complete and playback will start. -} elementGetState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to get the state of. -} -> Word64 {- ^ /@timeout@/: a @/GstClockTime/@ to specify the timeout for an async state change or 'GI.Gst.Constants.CLOCK_TIME_NONE' for infinite timeout. -} -> m ((Gst.Enums.StateChangeReturn, Gst.Enums.State, Gst.Enums.State)) {- ^ __Returns:__ 'GI.Gst.Enums.StateChangeReturnSuccess' if the element has no more pending state and the last state change succeeded, 'GI.Gst.Enums.StateChangeReturnAsync' if the element is still performing a state change or 'GI.Gst.Enums.StateChangeReturnFailure' if the last state change failed. MT safe. -} elementGetState element timeout = liftIO $ do element' <- unsafeManagedPtrCastPtr element state <- allocMem :: IO (Ptr CUInt) pending <- allocMem :: IO (Ptr CUInt) result <- gst_element_get_state element' state pending timeout let result' = (toEnum . fromIntegral) result state' <- peek state let state'' = (toEnum . fromIntegral) state' pending' <- peek pending let pending'' = (toEnum . fromIntegral) pending' touchManagedPtr element freeMem state freeMem pending return (result', state'', pending'') #if ENABLE_OVERLOADING data ElementGetStateMethodInfo instance (signature ~ (Word64 -> m ((Gst.Enums.StateChangeReturn, Gst.Enums.State, Gst.Enums.State))), MonadIO m, IsElement a) => O.MethodInfo ElementGetStateMethodInfo a signature where overloadedMethod _ = elementGetState #endif -- method Element::get_static_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to find a static pad of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the static #GstPad to retrieve.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Pad"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_get_static_pad" gst_element_get_static_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- name : TBasicType TUTF8 IO (Ptr Gst.Pad.Pad) {- | Retrieves a pad from /@element@/ by name. This version only retrieves already-existing (i.e. \'static\') pads. -} elementGetStaticPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to find a static pad of. -} -> T.Text {- ^ /@name@/: the name of the static 'GI.Gst.Objects.Pad.Pad' to retrieve. -} -> m (Maybe Gst.Pad.Pad) {- ^ __Returns:__ the requested 'GI.Gst.Objects.Pad.Pad' if found, otherwise 'Nothing'. unref after usage. MT safe. -} elementGetStaticPad element name = liftIO $ do element' <- unsafeManagedPtrCastPtr element name' <- textToCString name result <- gst_element_get_static_pad element' name' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Gst.Pad.Pad) result' return result'' touchManagedPtr element freeMem name' return maybeResult #if ENABLE_OVERLOADING data ElementGetStaticPadMethodInfo instance (signature ~ (T.Text -> m (Maybe Gst.Pad.Pad)), MonadIO m, IsElement a) => O.MethodInfo ElementGetStaticPadMethodInfo a signature where overloadedMethod _ = elementGetStaticPad #endif -- method Element::is_locked_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_is_locked_state" gst_element_is_locked_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO CInt {- | Checks if the state of an element is locked. If the state of an element is locked, state changes of the parent don\'t affect the element. This way you can leave currently unused elements inside bins. Just lock their state before changing the state from @/GST_STATE_NULL/@. MT safe. -} elementIsLockedState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> m Bool {- ^ __Returns:__ 'True', if the element\'s state is locked. -} elementIsLockedState element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_is_locked_state element' let result' = (/= 0) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementIsLockedStateMethodInfo instance (signature ~ (m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementIsLockedStateMethodInfo a signature where overloadedMethod _ = elementIsLockedState #endif -- method Element::iterate_pads -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to iterate pads of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Iterator"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_iterate_pads" gst_element_iterate_pads :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr Gst.Iterator.Iterator) {- | Retrieves an iterator of /@element@/\'s pads. The iterator should be freed after usage. Also more specialized iterators exists such as 'GI.Gst.Objects.Element.elementIterateSrcPads' or 'GI.Gst.Objects.Element.elementIterateSinkPads'. The order of pads returned by the iterator will be the order in which the pads were added to the element. -} elementIteratePads :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to iterate pads of. -} -> m Gst.Iterator.Iterator {- ^ __Returns:__ the 'GI.Gst.Structs.Iterator.Iterator' of 'GI.Gst.Objects.Pad.Pad'. MT safe. -} elementIteratePads element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_iterate_pads element' checkUnexpectedReturnNULL "elementIteratePads" result result' <- (wrapBoxed Gst.Iterator.Iterator) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementIteratePadsMethodInfo instance (signature ~ (m Gst.Iterator.Iterator), MonadIO m, IsElement a) => O.MethodInfo ElementIteratePadsMethodInfo a signature where overloadedMethod _ = elementIteratePads #endif -- method Element::iterate_sink_pads -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Iterator"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_iterate_sink_pads" gst_element_iterate_sink_pads :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr Gst.Iterator.Iterator) {- | Retrieves an iterator of /@element@/\'s sink pads. The order of pads returned by the iterator will be the order in which the pads were added to the element. -} elementIterateSinkPads :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> m Gst.Iterator.Iterator {- ^ __Returns:__ the 'GI.Gst.Structs.Iterator.Iterator' of 'GI.Gst.Objects.Pad.Pad'. MT safe. -} elementIterateSinkPads element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_iterate_sink_pads element' checkUnexpectedReturnNULL "elementIterateSinkPads" result result' <- (wrapBoxed Gst.Iterator.Iterator) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementIterateSinkPadsMethodInfo instance (signature ~ (m Gst.Iterator.Iterator), MonadIO m, IsElement a) => O.MethodInfo ElementIterateSinkPadsMethodInfo a signature where overloadedMethod _ = elementIterateSinkPads #endif -- method Element::iterate_src_pads -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Iterator"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_iterate_src_pads" gst_element_iterate_src_pads :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr Gst.Iterator.Iterator) {- | Retrieves an iterator of /@element@/\'s source pads. The order of pads returned by the iterator will be the order in which the pads were added to the element. -} elementIterateSrcPads :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> m Gst.Iterator.Iterator {- ^ __Returns:__ the 'GI.Gst.Structs.Iterator.Iterator' of 'GI.Gst.Objects.Pad.Pad'. MT safe. -} elementIterateSrcPads element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_iterate_src_pads element' checkUnexpectedReturnNULL "elementIterateSrcPads" result result' <- (wrapBoxed Gst.Iterator.Iterator) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementIterateSrcPadsMethodInfo instance (signature ~ (m Gst.Iterator.Iterator), MonadIO m, IsElement a) => O.MethodInfo ElementIterateSrcPadsMethodInfo a signature where overloadedMethod _ = elementIterateSrcPads #endif -- method Element::link -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement containing the source pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstElement containing the destination pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_link" gst_element_link :: Ptr Element -> -- src : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Element -> -- dest : TInterface (Name {namespace = "Gst", name = "Element"}) IO CInt {- | Links /@src@/ to /@dest@/. The link must be from source to destination; the other direction will not be tried. The function looks for existing pads that aren\'t linked yet. It will request new pads if necessary. Such pads need to be released manually when unlinking. If multiple links are possible, only one is established. Make sure you have added your elements to a bin or pipeline with 'GI.Gst.Objects.Bin.binAdd' before trying to link them. -} elementLink :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, IsElement b) => a {- ^ /@src@/: a 'GI.Gst.Objects.Element.Element' containing the source pad. -} -> b {- ^ /@dest@/: the 'GI.Gst.Objects.Element.Element' containing the destination pad. -} -> m Bool {- ^ __Returns:__ 'True' if the elements could be linked, 'False' otherwise. -} elementLink src dest = liftIO $ do src' <- unsafeManagedPtrCastPtr src dest' <- unsafeManagedPtrCastPtr dest result <- gst_element_link src' dest' let result' = (/= 0) result touchManagedPtr src touchManagedPtr dest return result' #if ENABLE_OVERLOADING data ElementLinkMethodInfo instance (signature ~ (b -> m Bool), MonadIO m, IsElement a, IsElement b) => O.MethodInfo ElementLinkMethodInfo a signature where overloadedMethod _ = elementLink #endif -- method Element::link_filtered -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement containing the source pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstElement containing the destination pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstCaps to filter the link,\n or %NULL for no filter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_link_filtered" gst_element_link_filtered :: Ptr Element -> -- src : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Element -> -- dest : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Caps.Caps -> -- filter : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Links /@src@/ to /@dest@/ using the given caps as filtercaps. The link must be from source to destination; the other direction will not be tried. The function looks for existing pads that aren\'t linked yet. It will request new pads if necessary. If multiple links are possible, only one is established. Make sure you have added your elements to a bin or pipeline with 'GI.Gst.Objects.Bin.binAdd' before trying to link them. -} elementLinkFiltered :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, IsElement b) => a {- ^ /@src@/: a 'GI.Gst.Objects.Element.Element' containing the source pad. -} -> b {- ^ /@dest@/: the 'GI.Gst.Objects.Element.Element' containing the destination pad. -} -> Maybe (Gst.Caps.Caps) {- ^ /@filter@/: the 'GI.Gst.Structs.Caps.Caps' to filter the link, or 'Nothing' for no filter. -} -> m Bool {- ^ __Returns:__ 'True' if the pads could be linked, 'False' otherwise. -} elementLinkFiltered src dest filter = liftIO $ do src' <- unsafeManagedPtrCastPtr src dest' <- unsafeManagedPtrCastPtr dest maybeFilter <- case filter of Nothing -> return nullPtr Just jFilter -> do jFilter' <- unsafeManagedPtrGetPtr jFilter return jFilter' result <- gst_element_link_filtered src' dest' maybeFilter let result' = (/= 0) result touchManagedPtr src touchManagedPtr dest whenJust filter touchManagedPtr return result' #if ENABLE_OVERLOADING data ElementLinkFilteredMethodInfo instance (signature ~ (b -> Maybe (Gst.Caps.Caps) -> m Bool), MonadIO m, IsElement a, IsElement b) => O.MethodInfo ElementLinkFilteredMethodInfo a signature where overloadedMethod _ = elementLinkFiltered #endif -- method Element::link_pads -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement containing the source pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "srcpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in source element\n or %NULL for any pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstElement containing the destination pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in destination element,\nor %NULL for any pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_link_pads" gst_element_link_pads :: Ptr Element -> -- src : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- srcpadname : TBasicType TUTF8 Ptr Element -> -- dest : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- destpadname : TBasicType TUTF8 IO CInt {- | Links the two named pads of the source and destination elements. Side effect is that if one of the pads has no parent, it becomes a child of the parent of the other element. If they have different parents, the link fails. -} elementLinkPads :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, IsElement b) => a {- ^ /@src@/: a 'GI.Gst.Objects.Element.Element' containing the source pad. -} -> Maybe (T.Text) {- ^ /@srcpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in source element or 'Nothing' for any pad. -} -> b {- ^ /@dest@/: the 'GI.Gst.Objects.Element.Element' containing the destination pad. -} -> Maybe (T.Text) {- ^ /@destpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in destination element, or 'Nothing' for any pad. -} -> m Bool {- ^ __Returns:__ 'True' if the pads could be linked, 'False' otherwise. -} elementLinkPads src srcpadname dest destpadname = liftIO $ do src' <- unsafeManagedPtrCastPtr src maybeSrcpadname <- case srcpadname of Nothing -> return nullPtr Just jSrcpadname -> do jSrcpadname' <- textToCString jSrcpadname return jSrcpadname' dest' <- unsafeManagedPtrCastPtr dest maybeDestpadname <- case destpadname of Nothing -> return nullPtr Just jDestpadname -> do jDestpadname' <- textToCString jDestpadname return jDestpadname' result <- gst_element_link_pads src' maybeSrcpadname dest' maybeDestpadname let result' = (/= 0) result touchManagedPtr src touchManagedPtr dest freeMem maybeSrcpadname freeMem maybeDestpadname return result' #if ENABLE_OVERLOADING data ElementLinkPadsMethodInfo instance (signature ~ (Maybe (T.Text) -> b -> Maybe (T.Text) -> m Bool), MonadIO m, IsElement a, IsElement b) => O.MethodInfo ElementLinkPadsMethodInfo a signature where overloadedMethod _ = elementLinkPads #endif -- method Element::link_pads_filtered -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement containing the source pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "srcpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in source element\n or %NULL for any pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstElement containing the destination pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in destination element\n or %NULL for any pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "filter", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstCaps to filter the link,\n or %NULL for no filter.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_link_pads_filtered" gst_element_link_pads_filtered :: Ptr Element -> -- src : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- srcpadname : TBasicType TUTF8 Ptr Element -> -- dest : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- destpadname : TBasicType TUTF8 Ptr Gst.Caps.Caps -> -- filter : TInterface (Name {namespace = "Gst", name = "Caps"}) IO CInt {- | Links the two named pads of the source and destination elements. Side effect is that if one of the pads has no parent, it becomes a child of the parent of the other element. If they have different parents, the link fails. If /@caps@/ is not 'Nothing', makes sure that the caps of the link is a subset of /@caps@/. -} elementLinkPadsFiltered :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, IsElement b) => a {- ^ /@src@/: a 'GI.Gst.Objects.Element.Element' containing the source pad. -} -> Maybe (T.Text) {- ^ /@srcpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in source element or 'Nothing' for any pad. -} -> b {- ^ /@dest@/: the 'GI.Gst.Objects.Element.Element' containing the destination pad. -} -> Maybe (T.Text) {- ^ /@destpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in destination element or 'Nothing' for any pad. -} -> Maybe (Gst.Caps.Caps) {- ^ /@filter@/: the 'GI.Gst.Structs.Caps.Caps' to filter the link, or 'Nothing' for no filter. -} -> m Bool {- ^ __Returns:__ 'True' if the pads could be linked, 'False' otherwise. -} elementLinkPadsFiltered src srcpadname dest destpadname filter = liftIO $ do src' <- unsafeManagedPtrCastPtr src maybeSrcpadname <- case srcpadname of Nothing -> return nullPtr Just jSrcpadname -> do jSrcpadname' <- textToCString jSrcpadname return jSrcpadname' dest' <- unsafeManagedPtrCastPtr dest maybeDestpadname <- case destpadname of Nothing -> return nullPtr Just jDestpadname -> do jDestpadname' <- textToCString jDestpadname return jDestpadname' maybeFilter <- case filter of Nothing -> return nullPtr Just jFilter -> do jFilter' <- unsafeManagedPtrGetPtr jFilter return jFilter' result <- gst_element_link_pads_filtered src' maybeSrcpadname dest' maybeDestpadname maybeFilter let result' = (/= 0) result touchManagedPtr src touchManagedPtr dest whenJust filter touchManagedPtr freeMem maybeSrcpadname freeMem maybeDestpadname return result' #if ENABLE_OVERLOADING data ElementLinkPadsFilteredMethodInfo instance (signature ~ (Maybe (T.Text) -> b -> Maybe (T.Text) -> Maybe (Gst.Caps.Caps) -> m Bool), MonadIO m, IsElement a, IsElement b) => O.MethodInfo ElementLinkPadsFilteredMethodInfo a signature where overloadedMethod _ = elementLinkPadsFiltered #endif -- method Element::link_pads_full -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement containing the source pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "srcpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in source element\n or %NULL for any pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstElement containing the destination pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in destination element,\nor %NULL for any pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "PadLinkCheck"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstPadLinkCheck to be performed when linking pads.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_link_pads_full" gst_element_link_pads_full :: Ptr Element -> -- src : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- srcpadname : TBasicType TUTF8 Ptr Element -> -- dest : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- destpadname : TBasicType TUTF8 CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "PadLinkCheck"}) IO CInt {- | Links the two named pads of the source and destination elements. Side effect is that if one of the pads has no parent, it becomes a child of the parent of the other element. If they have different parents, the link fails. Calling 'GI.Gst.Objects.Element.elementLinkPadsFull' with /@flags@/ == 'GI.Gst.Flags.PadLinkCheckDefault' is the same as calling 'GI.Gst.Objects.Element.elementLinkPads' and the recommended way of linking pads with safety checks applied. This is a convenience function for 'GI.Gst.Objects.Pad.padLinkFull'. -} elementLinkPadsFull :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, IsElement b) => a {- ^ /@src@/: a 'GI.Gst.Objects.Element.Element' containing the source pad. -} -> Maybe (T.Text) {- ^ /@srcpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in source element or 'Nothing' for any pad. -} -> b {- ^ /@dest@/: the 'GI.Gst.Objects.Element.Element' containing the destination pad. -} -> Maybe (T.Text) {- ^ /@destpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in destination element, or 'Nothing' for any pad. -} -> [Gst.Flags.PadLinkCheck] {- ^ /@flags@/: the 'GI.Gst.Flags.PadLinkCheck' to be performed when linking pads. -} -> m Bool {- ^ __Returns:__ 'True' if the pads could be linked, 'False' otherwise. -} elementLinkPadsFull src srcpadname dest destpadname flags = liftIO $ do src' <- unsafeManagedPtrCastPtr src maybeSrcpadname <- case srcpadname of Nothing -> return nullPtr Just jSrcpadname -> do jSrcpadname' <- textToCString jSrcpadname return jSrcpadname' dest' <- unsafeManagedPtrCastPtr dest maybeDestpadname <- case destpadname of Nothing -> return nullPtr Just jDestpadname -> do jDestpadname' <- textToCString jDestpadname return jDestpadname' let flags' = gflagsToWord flags result <- gst_element_link_pads_full src' maybeSrcpadname dest' maybeDestpadname flags' let result' = (/= 0) result touchManagedPtr src touchManagedPtr dest freeMem maybeSrcpadname freeMem maybeDestpadname return result' #if ENABLE_OVERLOADING data ElementLinkPadsFullMethodInfo instance (signature ~ (Maybe (T.Text) -> b -> Maybe (T.Text) -> [Gst.Flags.PadLinkCheck] -> m Bool), MonadIO m, IsElement a, IsElement b) => O.MethodInfo ElementLinkPadsFullMethodInfo a signature where overloadedMethod _ = elementLinkPadsFull #endif -- method Element::lost_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement the state is lost of", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_lost_state" gst_element_lost_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO () {- | Brings the element to the lost state. The current state of the element is copied to the pending state so that any call to 'GI.Gst.Objects.Element.elementGetState' will return 'GI.Gst.Enums.StateChangeReturnAsync'. An ASYNC_START message is posted. If the element was PLAYING, it will go to PAUSED. The element will be restored to its PLAYING state by the parent pipeline when it prerolls again. This is mostly used for elements that lost their preroll buffer in the 'GI.Gst.Enums.StatePaused' or 'GI.Gst.Enums.StatePlaying' state after a flush, they will go to their pending state again when a new preroll buffer is queued. This function can only be called when the element is currently not in error or an async state change. This function is used internally and should normally not be called from plugins or applications. -} elementLostState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' the state is lost of -} -> m () elementLostState element = liftIO $ do element' <- unsafeManagedPtrCastPtr element gst_element_lost_state element' touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementLostStateMethodInfo instance (signature ~ (m ()), MonadIO m, IsElement a) => O.MethodInfo ElementLostStateMethodInfo a signature where overloadedMethod _ = elementLostState #endif -- method Element::message_full -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to send message from", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface (Name {namespace = "Gst", name = "MessageType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstMessageType", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the GStreamer GError domain this message belongs to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "code", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the GError code belonging to the domain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "an allocated text string to be used\n as a replacement for the default message connected to code,\n or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "debug", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "an allocated debug message to be\n used as a replacement for the default debugging information,\n or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "file", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source code file where the error was generated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source code function where the error was generated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source code line where the error was generated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_message_full" gst_element_message_full :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- type : TInterface (Name {namespace = "Gst", name = "MessageType"}) Word32 -> -- domain : TBasicType TUInt32 Int32 -> -- code : TBasicType TInt CString -> -- text : TBasicType TUTF8 CString -> -- debug : TBasicType TUTF8 CString -> -- file : TBasicType TUTF8 CString -> -- function : TBasicType TUTF8 Int32 -> -- line : TBasicType TInt IO () {- | Post an error, warning or info message on the bus from inside an element. /@type@/ must be of @/GST_MESSAGE_ERROR/@, @/GST_MESSAGE_WARNING/@ or @/GST_MESSAGE_INFO/@. MT safe. -} elementMessageFull :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to send message from -} -> [Gst.Flags.MessageType] {- ^ /@type@/: the 'GI.Gst.Flags.MessageType' -} -> Word32 {- ^ /@domain@/: the GStreamer GError domain this message belongs to -} -> Int32 {- ^ /@code@/: the GError code belonging to the domain -} -> Maybe (T.Text) {- ^ /@text@/: an allocated text string to be used as a replacement for the default message connected to code, or 'Nothing' -} -> Maybe (T.Text) {- ^ /@debug@/: an allocated debug message to be used as a replacement for the default debugging information, or 'Nothing' -} -> T.Text {- ^ /@file@/: the source code file where the error was generated -} -> T.Text {- ^ /@function@/: the source code function where the error was generated -} -> Int32 {- ^ /@line@/: the source code line where the error was generated -} -> m () elementMessageFull element type_ domain code text debug file function line = liftIO $ do element' <- unsafeManagedPtrCastPtr element let type_' = gflagsToWord type_ maybeText <- case text of Nothing -> return nullPtr Just jText -> do jText' <- textToCString jText return jText' maybeDebug <- case debug of Nothing -> return nullPtr Just jDebug -> do jDebug' <- textToCString jDebug return jDebug' file' <- textToCString file function' <- textToCString function gst_element_message_full element' type_' domain code maybeText maybeDebug file' function' line touchManagedPtr element freeMem file' freeMem function' return () #if ENABLE_OVERLOADING data ElementMessageFullMethodInfo instance (signature ~ ([Gst.Flags.MessageType] -> Word32 -> Int32 -> Maybe (T.Text) -> Maybe (T.Text) -> T.Text -> T.Text -> Int32 -> m ()), MonadIO m, IsElement a) => O.MethodInfo ElementMessageFullMethodInfo a signature where overloadedMethod _ = elementMessageFull #endif -- method Element::message_full_with_details -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to send message from", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TInterface (Name {namespace = "Gst", name = "MessageType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstMessageType", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "domain", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the GStreamer GError domain this message belongs to", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "code", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the GError code belonging to the domain", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "text", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "an allocated text string to be used\n as a replacement for the default message connected to code,\n or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "debug", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "an allocated debug message to be\n used as a replacement for the default debugging information,\n or %NULL", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "file", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source code file where the error was generated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "function", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source code function where the error was generated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "line", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source code line where the error was generated", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "structure", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "optional details structure", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_message_full_with_details" gst_element_message_full_with_details :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- type : TInterface (Name {namespace = "Gst", name = "MessageType"}) Word32 -> -- domain : TBasicType TUInt32 Int32 -> -- code : TBasicType TInt CString -> -- text : TBasicType TUTF8 CString -> -- debug : TBasicType TUTF8 CString -> -- file : TBasicType TUTF8 CString -> -- function : TBasicType TUTF8 Int32 -> -- line : TBasicType TInt Ptr Gst.Structure.Structure -> -- structure : TInterface (Name {namespace = "Gst", name = "Structure"}) IO () {- | Post an error, warning or info message on the bus from inside an element. /@type@/ must be of @/GST_MESSAGE_ERROR/@, @/GST_MESSAGE_WARNING/@ or @/GST_MESSAGE_INFO/@. /Since: 1.10/ -} elementMessageFullWithDetails :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to send message from -} -> [Gst.Flags.MessageType] {- ^ /@type@/: the 'GI.Gst.Flags.MessageType' -} -> Word32 {- ^ /@domain@/: the GStreamer GError domain this message belongs to -} -> Int32 {- ^ /@code@/: the GError code belonging to the domain -} -> Maybe (T.Text) {- ^ /@text@/: an allocated text string to be used as a replacement for the default message connected to code, or 'Nothing' -} -> Maybe (T.Text) {- ^ /@debug@/: an allocated debug message to be used as a replacement for the default debugging information, or 'Nothing' -} -> T.Text {- ^ /@file@/: the source code file where the error was generated -} -> T.Text {- ^ /@function@/: the source code function where the error was generated -} -> Int32 {- ^ /@line@/: the source code line where the error was generated -} -> Gst.Structure.Structure {- ^ /@structure@/: optional details structure -} -> m () elementMessageFullWithDetails element type_ domain code text debug file function line structure = liftIO $ do element' <- unsafeManagedPtrCastPtr element let type_' = gflagsToWord type_ maybeText <- case text of Nothing -> return nullPtr Just jText -> do jText' <- textToCString jText return jText' maybeDebug <- case debug of Nothing -> return nullPtr Just jDebug -> do jDebug' <- textToCString jDebug return jDebug' file' <- textToCString file function' <- textToCString function structure' <- B.ManagedPtr.disownBoxed structure gst_element_message_full_with_details element' type_' domain code maybeText maybeDebug file' function' line structure' touchManagedPtr element touchManagedPtr structure freeMem file' freeMem function' return () #if ENABLE_OVERLOADING data ElementMessageFullWithDetailsMethodInfo instance (signature ~ ([Gst.Flags.MessageType] -> Word32 -> Int32 -> Maybe (T.Text) -> Maybe (T.Text) -> T.Text -> T.Text -> Int32 -> Gst.Structure.Structure -> m ()), MonadIO m, IsElement a) => O.MethodInfo ElementMessageFullWithDetailsMethodInfo a signature where overloadedMethod _ = elementMessageFullWithDetails #endif -- method Element::no_more_pads -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_no_more_pads" gst_element_no_more_pads :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO () {- | Use this function to signal that the element does not expect any more pads to show up in the current pipeline. This function should be called whenever pads have been added by the element itself. Elements with @/GST_PAD_SOMETIMES/@ pad templates use this in combination with autopluggers to figure out that the element is done initializing its pads. This function emits the 'GI.Gst.Objects.Element.Element'::@/no-more-pads/@ signal. MT safe. -} elementNoMorePads :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' -} -> m () elementNoMorePads element = liftIO $ do element' <- unsafeManagedPtrCastPtr element gst_element_no_more_pads element' touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementNoMorePadsMethodInfo instance (signature ~ (m ()), MonadIO m, IsElement a) => O.MethodInfo ElementNoMorePadsMethodInfo a signature where overloadedMethod _ = elementNoMorePads #endif -- method Element::post_message -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement posting the message", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "message", argType = TInterface (Name {namespace = "Gst", name = "Message"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMessage to post", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_post_message" gst_element_post_message :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Message.Message -> -- message : TInterface (Name {namespace = "Gst", name = "Message"}) IO CInt {- | Post a message on the element\'s 'GI.Gst.Objects.Bus.Bus'. This function takes ownership of the message; if you want to access the message after this call, you should add an additional reference before calling. -} elementPostMessage :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' posting the message -} -> Gst.Message.Message {- ^ /@message@/: a 'GI.Gst.Structs.Message.Message' to post -} -> m Bool {- ^ __Returns:__ 'True' if the message was successfully posted. The function returns 'False' if the element did not have a bus. MT safe. -} elementPostMessage element message = liftIO $ do element' <- unsafeManagedPtrCastPtr element message' <- B.ManagedPtr.disownBoxed message result <- gst_element_post_message element' message' let result' = (/= 0) result touchManagedPtr element touchManagedPtr message return result' #if ENABLE_OVERLOADING data ElementPostMessageMethodInfo instance (signature ~ (Gst.Message.Message -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementPostMessageMethodInfo a signature where overloadedMethod _ = elementPostMessage #endif -- method Element::provide_clock -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to query", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Clock"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_provide_clock" gst_element_provide_clock :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO (Ptr Gst.Clock.Clock) {- | Get the clock provided by the given element. > An element is only required to provide a clock in the PAUSED > state. Some elements can provide a clock in other states. -} elementProvideClock :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to query -} -> m (Maybe Gst.Clock.Clock) {- ^ __Returns:__ the GstClock provided by the element or 'Nothing' if no clock could be provided. Unref after usage. MT safe. -} elementProvideClock element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_provide_clock element' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Gst.Clock.Clock) result' return result'' touchManagedPtr element return maybeResult #if ENABLE_OVERLOADING data ElementProvideClockMethodInfo instance (signature ~ (m (Maybe Gst.Clock.Clock)), MonadIO m, IsElement a) => O.MethodInfo ElementProvideClockMethodInfo a signature where overloadedMethod _ = elementProvideClock #endif -- method Element::query -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to perform the query on.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "query", argType = TInterface (Name {namespace = "Gst", name = "Query"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstQuery.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_query" gst_element_query :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Query.Query -> -- query : TInterface (Name {namespace = "Gst", name = "Query"}) IO CInt {- | Performs a query on the given element. For elements that don\'t implement a query handler, this function forwards the query to a random srcpad or to the peer of a random linked sinkpad of this element. Please note that some queries might need a running pipeline to work. -} elementQuery :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to perform the query on. -} -> Gst.Query.Query {- ^ /@query@/: the 'GI.Gst.Structs.Query.Query'. -} -> m Bool {- ^ __Returns:__ 'True' if the query could be performed. MT safe. -} elementQuery element query = liftIO $ do element' <- unsafeManagedPtrCastPtr element query' <- unsafeManagedPtrGetPtr query result <- gst_element_query element' query' let result' = (/= 0) result touchManagedPtr element touchManagedPtr query return result' #if ENABLE_OVERLOADING data ElementQueryMethodInfo instance (signature ~ (Gst.Query.Query -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementQueryMethodInfo a signature where overloadedMethod _ = elementQuery #endif -- method Element::query_convert -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to invoke the convert query on.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_format", argType = TInterface (Name {namespace = "Gst", name = "Format"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstFormat to convert from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src_val", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a value to convert.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_format", argType = TInterface (Name {namespace = "Gst", name = "Format"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstFormat to convert to.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest_val", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to the result.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_query_convert" gst_element_query_convert :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- src_format : TInterface (Name {namespace = "Gst", name = "Format"}) Int64 -> -- src_val : TBasicType TInt64 CUInt -> -- dest_format : TInterface (Name {namespace = "Gst", name = "Format"}) Ptr Int64 -> -- dest_val : TBasicType TInt64 IO CInt {- | Queries an element to convert /@srcVal@/ in /@srcFormat@/ to /@destFormat@/. -} elementQueryConvert :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to invoke the convert query on. -} -> Gst.Enums.Format {- ^ /@srcFormat@/: a 'GI.Gst.Enums.Format' to convert from. -} -> Int64 {- ^ /@srcVal@/: a value to convert. -} -> Gst.Enums.Format {- ^ /@destFormat@/: the 'GI.Gst.Enums.Format' to convert to. -} -> m ((Bool, Int64)) {- ^ __Returns:__ 'True' if the query could be performed. -} elementQueryConvert element srcFormat srcVal destFormat = liftIO $ do element' <- unsafeManagedPtrCastPtr element let srcFormat' = (fromIntegral . fromEnum) srcFormat let destFormat' = (fromIntegral . fromEnum) destFormat destVal <- allocMem :: IO (Ptr Int64) result <- gst_element_query_convert element' srcFormat' srcVal destFormat' destVal let result' = (/= 0) result destVal' <- peek destVal touchManagedPtr element freeMem destVal return (result', destVal') #if ENABLE_OVERLOADING data ElementQueryConvertMethodInfo instance (signature ~ (Gst.Enums.Format -> Int64 -> Gst.Enums.Format -> m ((Bool, Int64))), MonadIO m, IsElement a) => O.MethodInfo ElementQueryConvertMethodInfo a signature where overloadedMethod _ = elementQueryConvert #endif -- method Element::query_duration -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to invoke the duration query on.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gst", name = "Format"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstFormat requested", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "duration", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A location in which to store the total duration, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_query_duration" gst_element_query_duration :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- format : TInterface (Name {namespace = "Gst", name = "Format"}) Ptr Int64 -> -- duration : TBasicType TInt64 IO CInt {- | Queries an element (usually top-level pipeline or playbin element) for the total stream duration in nanoseconds. This query will only work once the pipeline is prerolled (i.e. reached PAUSED or PLAYING state). The application will receive an ASYNC_DONE message on the pipeline bus when that is the case. If the duration changes for some reason, you will get a DURATION_CHANGED message on the pipeline bus, in which case you should re-query the duration using this function. -} elementQueryDuration :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to invoke the duration query on. -} -> Gst.Enums.Format {- ^ /@format@/: the 'GI.Gst.Enums.Format' requested -} -> m ((Bool, Int64)) {- ^ __Returns:__ 'True' if the query could be performed. -} elementQueryDuration element format = liftIO $ do element' <- unsafeManagedPtrCastPtr element let format' = (fromIntegral . fromEnum) format duration <- allocMem :: IO (Ptr Int64) result <- gst_element_query_duration element' format' duration let result' = (/= 0) result duration' <- peek duration touchManagedPtr element freeMem duration return (result', duration') #if ENABLE_OVERLOADING data ElementQueryDurationMethodInfo instance (signature ~ (Gst.Enums.Format -> m ((Bool, Int64))), MonadIO m, IsElement a) => O.MethodInfo ElementQueryDurationMethodInfo a signature where overloadedMethod _ = elementQueryDuration #endif -- method Element::query_position -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to invoke the position query on.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gst", name = "Format"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstFormat requested", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "cur", argType = TBasicType TInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a location in which to store the current\n position, or %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_query_position" gst_element_query_position :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- format : TInterface (Name {namespace = "Gst", name = "Format"}) Ptr Int64 -> -- cur : TBasicType TInt64 IO CInt {- | Queries an element (usually top-level pipeline or playbin element) for the stream position in nanoseconds. This will be a value between 0 and the stream duration (if the stream duration is known). This query will usually only work once the pipeline is prerolled (i.e. reached PAUSED or PLAYING state). The application will receive an ASYNC_DONE message on the pipeline bus when that is the case. If one repeatedly calls this function one can also create a query and reuse it in 'GI.Gst.Objects.Element.elementQuery'. -} elementQueryPosition :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to invoke the position query on. -} -> Gst.Enums.Format {- ^ /@format@/: the 'GI.Gst.Enums.Format' requested -} -> m ((Bool, Int64)) {- ^ __Returns:__ 'True' if the query could be performed. -} elementQueryPosition element format = liftIO $ do element' <- unsafeManagedPtrCastPtr element let format' = (fromIntegral . fromEnum) format cur <- allocMem :: IO (Ptr Int64) result <- gst_element_query_position element' format' cur let result' = (/= 0) result cur' <- peek cur touchManagedPtr element freeMem cur return (result', cur') #if ENABLE_OVERLOADING data ElementQueryPositionMethodInfo instance (signature ~ (Gst.Enums.Format -> m ((Bool, Int64))), MonadIO m, IsElement a) => O.MethodInfo ElementQueryPositionMethodInfo a signature where overloadedMethod _ = elementQueryPosition #endif -- method Element::release_request_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to release the request pad of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pad", argType = TInterface (Name {namespace = "Gst", name = "Pad"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstPad to release.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_release_request_pad" gst_element_release_request_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Pad.Pad -> -- pad : TInterface (Name {namespace = "Gst", name = "Pad"}) IO () {- | Makes the element free the previously requested pad as obtained with 'GI.Gst.Objects.Element.elementRequestPad'. This does not unref the pad. If the pad was created by using 'GI.Gst.Objects.Element.elementRequestPad', 'GI.Gst.Objects.Element.elementReleaseRequestPad' needs to be followed by 'GI.Gst.Objects.Object.objectUnref' to free the /@pad@/. MT safe. -} elementReleaseRequestPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.Pad.IsPad b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to release the request pad of. -} -> b {- ^ /@pad@/: the 'GI.Gst.Objects.Pad.Pad' to release. -} -> m () elementReleaseRequestPad element pad = liftIO $ do element' <- unsafeManagedPtrCastPtr element pad' <- unsafeManagedPtrCastPtr pad gst_element_release_request_pad element' pad' touchManagedPtr element touchManagedPtr pad return () #if ENABLE_OVERLOADING data ElementReleaseRequestPadMethodInfo instance (signature ~ (b -> m ()), MonadIO m, IsElement a, Gst.Pad.IsPad b) => O.MethodInfo ElementReleaseRequestPadMethodInfo a signature where overloadedMethod _ = elementReleaseRequestPad #endif -- method Element::remove_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to remove pad from.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "pad", argType = TInterface (Name {namespace = "Gst", name = "Pad"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstPad to remove from the element.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_remove_pad" gst_element_remove_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Pad.Pad -> -- pad : TInterface (Name {namespace = "Gst", name = "Pad"}) IO CInt {- | Removes /@pad@/ from /@element@/. /@pad@/ will be destroyed if it has not been referenced elsewhere using 'GI.Gst.Objects.Object.objectUnparent'. This function is used by plugin developers and should not be used by applications. Pads that were dynamically requested from elements with 'GI.Gst.Objects.Element.elementRequestPad' should be released with the 'GI.Gst.Objects.Element.elementReleaseRequestPad' function instead. Pads are not automatically deactivated so elements should perform the needed steps to deactivate the pad in case this pad is removed in the PAUSED or PLAYING state. See 'GI.Gst.Objects.Pad.padSetActive' for more information about deactivating pads. The pad and the element should be unlocked when calling this function. This function will emit the 'GI.Gst.Objects.Element.Element'::@/pad-removed/@ signal on the element. -} elementRemovePad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.Pad.IsPad b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to remove pad from. -} -> b {- ^ /@pad@/: the 'GI.Gst.Objects.Pad.Pad' to remove from the element. -} -> m Bool {- ^ __Returns:__ 'True' if the pad could be removed. Can return 'False' if the pad does not belong to the provided element. MT safe. -} elementRemovePad element pad = liftIO $ do element' <- unsafeManagedPtrCastPtr element pad' <- unsafeManagedPtrCastPtr pad result <- gst_element_remove_pad element' pad' let result' = (/= 0) result touchManagedPtr element touchManagedPtr pad return result' #if ENABLE_OVERLOADING data ElementRemovePadMethodInfo instance (signature ~ (b -> m Bool), MonadIO m, IsElement a, Gst.Pad.IsPad b) => O.MethodInfo ElementRemovePadMethodInfo a signature where overloadedMethod _ = elementRemovePad #endif -- method Element::remove_property_notify_watch -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement being watched for property changes", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "watch_id", argType = TBasicType TULong, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "watch id to remove", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_remove_property_notify_watch" gst_element_remove_property_notify_watch :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CULong -> -- watch_id : TBasicType TULong IO () {- | /No description available in the introspection data./ /Since: 1.10/ -} elementRemovePropertyNotifyWatch :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' being watched for property changes -} -> CULong {- ^ /@watchId@/: watch id to remove -} -> m () elementRemovePropertyNotifyWatch element watchId = liftIO $ do element' <- unsafeManagedPtrCastPtr element gst_element_remove_property_notify_watch element' watchId touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementRemovePropertyNotifyWatchMethodInfo instance (signature ~ (CULong -> m ()), MonadIO m, IsElement a) => O.MethodInfo ElementRemovePropertyNotifyWatchMethodInfo a signature where overloadedMethod _ = elementRemovePropertyNotifyWatch #endif -- method Element::request_pad -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to find a request pad of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "templ", argType = TInterface (Name {namespace = "Gst", name = "PadTemplate"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstPadTemplate of which we want a pad of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the name of the request #GstPad\nto retrieve. Can be %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "caps", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the caps of the pad we want to\nrequest. Can be %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Pad"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_request_pad" gst_element_request_pad :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.PadTemplate.PadTemplate -> -- templ : TInterface (Name {namespace = "Gst", name = "PadTemplate"}) CString -> -- name : TBasicType TUTF8 Ptr Gst.Caps.Caps -> -- caps : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Gst.Pad.Pad) {- | Retrieves a request pad from the element according to the provided template. Pad templates can be looked up using 'GI.Gst.Objects.ElementFactory.elementFactoryGetStaticPadTemplates'. The pad should be released with 'GI.Gst.Objects.Element.elementReleaseRequestPad'. -} elementRequestPad :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.PadTemplate.IsPadTemplate b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to find a request pad of. -} -> b {- ^ /@templ@/: a 'GI.Gst.Objects.PadTemplate.PadTemplate' of which we want a pad of. -} -> Maybe (T.Text) {- ^ /@name@/: the name of the request 'GI.Gst.Objects.Pad.Pad' to retrieve. Can be 'Nothing'. -} -> Maybe (Gst.Caps.Caps) {- ^ /@caps@/: the caps of the pad we want to request. Can be 'Nothing'. -} -> m (Maybe Gst.Pad.Pad) {- ^ __Returns:__ requested 'GI.Gst.Objects.Pad.Pad' if found, otherwise 'Nothing'. Release after usage. -} elementRequestPad element templ name caps = liftIO $ do element' <- unsafeManagedPtrCastPtr element templ' <- unsafeManagedPtrCastPtr templ maybeName <- case name of Nothing -> return nullPtr Just jName -> do jName' <- textToCString jName return jName' maybeCaps <- case caps of Nothing -> return nullPtr Just jCaps -> do jCaps' <- unsafeManagedPtrGetPtr jCaps return jCaps' result <- gst_element_request_pad element' templ' maybeName maybeCaps maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapObject Gst.Pad.Pad) result' return result'' touchManagedPtr element touchManagedPtr templ whenJust caps touchManagedPtr freeMem maybeName return maybeResult #if ENABLE_OVERLOADING data ElementRequestPadMethodInfo instance (signature ~ (b -> Maybe (T.Text) -> Maybe (Gst.Caps.Caps) -> m (Maybe Gst.Pad.Pad)), MonadIO m, IsElement a, Gst.PadTemplate.IsPadTemplate b) => O.MethodInfo ElementRequestPadMethodInfo a signature where overloadedMethod _ = elementRequestPad #endif -- method Element::seek -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to send the event to.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rate", argType = TBasicType TDouble, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The new playback rate", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gst", name = "Format"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The format of the seek values", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "SeekFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The optional seek flags.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start_type", argType = TInterface (Name {namespace = "Gst", name = "SeekType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The type and flags for the new start position", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "start", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The value of the new start position", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stop_type", argType = TInterface (Name {namespace = "Gst", name = "SeekType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The type and flags for the new stop position", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "stop", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The value of the new stop position", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_seek" gst_element_seek :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CDouble -> -- rate : TBasicType TDouble CUInt -> -- format : TInterface (Name {namespace = "Gst", name = "Format"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "SeekFlags"}) CUInt -> -- start_type : TInterface (Name {namespace = "Gst", name = "SeekType"}) Int64 -> -- start : TBasicType TInt64 CUInt -> -- stop_type : TInterface (Name {namespace = "Gst", name = "SeekType"}) Int64 -> -- stop : TBasicType TInt64 IO CInt {- | Sends a seek event to an element. See 'GI.Gst.Structs.Event.eventNewSeek' for the details of the parameters. The seek event is sent to the element using 'GI.Gst.Objects.Element.elementSendEvent'. MT safe. -} elementSeek :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to send the event to. -} -> Double {- ^ /@rate@/: The new playback rate -} -> Gst.Enums.Format {- ^ /@format@/: The format of the seek values -} -> [Gst.Flags.SeekFlags] {- ^ /@flags@/: The optional seek flags. -} -> Gst.Enums.SeekType {- ^ /@startType@/: The type and flags for the new start position -} -> Int64 {- ^ /@start@/: The value of the new start position -} -> Gst.Enums.SeekType {- ^ /@stopType@/: The type and flags for the new stop position -} -> Int64 {- ^ /@stop@/: The value of the new stop position -} -> m Bool {- ^ __Returns:__ 'True' if the event was handled. Flushing seeks will trigger a preroll, which will emit 'GI.Gst.Flags.MessageTypeAsyncDone'. -} elementSeek element rate format flags startType start stopType stop = liftIO $ do element' <- unsafeManagedPtrCastPtr element let rate' = realToFrac rate let format' = (fromIntegral . fromEnum) format let flags' = gflagsToWord flags let startType' = (fromIntegral . fromEnum) startType let stopType' = (fromIntegral . fromEnum) stopType result <- gst_element_seek element' rate' format' flags' startType' start stopType' stop let result' = (/= 0) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementSeekMethodInfo instance (signature ~ (Double -> Gst.Enums.Format -> [Gst.Flags.SeekFlags] -> Gst.Enums.SeekType -> Int64 -> Gst.Enums.SeekType -> Int64 -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementSeekMethodInfo a signature where overloadedMethod _ = elementSeek #endif -- method Element::seek_simple -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to seek on", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "format", argType = TInterface (Name {namespace = "Gst", name = "Format"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstFormat to execute the seek in, such as #GST_FORMAT_TIME", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "seek_flags", argType = TInterface (Name {namespace = "Gst", name = "SeekFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "seek options; playback applications will usually want to use\n GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT here", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "seek_pos", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "position to seek to (relative to the start); if you are doing\n a seek in #GST_FORMAT_TIME this value is in nanoseconds -\n multiply with #GST_SECOND to convert seconds to nanoseconds or\n with #GST_MSECOND to convert milliseconds to nanoseconds.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_seek_simple" gst_element_seek_simple :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- format : TInterface (Name {namespace = "Gst", name = "Format"}) CUInt -> -- seek_flags : TInterface (Name {namespace = "Gst", name = "SeekFlags"}) Int64 -> -- seek_pos : TBasicType TInt64 IO CInt {- | Simple API to perform a seek on the given element, meaning it just seeks to the given position relative to the start of the stream. For more complex operations like segment seeks (e.g. for looping) or changing the playback rate or seeking relative to the last configured playback segment you should use 'GI.Gst.Objects.Element.elementSeek'. In a completely prerolled PAUSED or PLAYING pipeline, seeking is always guaranteed to return 'True' on a seekable media type or 'False' when the media type is certainly not seekable (such as a live stream). Some elements allow for seeking in the READY state, in this case they will store the seek event and execute it when they are put to PAUSED. If the element supports seek in READY, it will always return 'True' when it receives the event in the READY state. -} elementSeekSimple :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to seek on -} -> Gst.Enums.Format {- ^ /@format@/: a 'GI.Gst.Enums.Format' to execute the seek in, such as @/GST_FORMAT_TIME/@ -} -> [Gst.Flags.SeekFlags] {- ^ /@seekFlags@/: seek options; playback applications will usually want to use GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT here -} -> Int64 {- ^ /@seekPos@/: position to seek to (relative to the start); if you are doing a seek in @/GST_FORMAT_TIME/@ this value is in nanoseconds - multiply with 'GI.Gst.Constants.SECOND' to convert seconds to nanoseconds or with 'GI.Gst.Constants.MSECOND' to convert milliseconds to nanoseconds. -} -> m Bool {- ^ __Returns:__ 'True' if the seek operation succeeded. Flushing seeks will trigger a preroll, which will emit 'GI.Gst.Flags.MessageTypeAsyncDone'. -} elementSeekSimple element format seekFlags seekPos = liftIO $ do element' <- unsafeManagedPtrCastPtr element let format' = (fromIntegral . fromEnum) format let seekFlags' = gflagsToWord seekFlags result <- gst_element_seek_simple element' format' seekFlags' seekPos let result' = (/= 0) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementSeekSimpleMethodInfo instance (signature ~ (Gst.Enums.Format -> [Gst.Flags.SeekFlags] -> Int64 -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementSeekSimpleMethodInfo a signature where overloadedMethod _ = elementSeekSimple #endif -- method Element::send_event -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to send the event to.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "event", argType = TInterface (Name {namespace = "Gst", name = "Event"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstEvent to send to the element.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_send_event" gst_element_send_event :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Event.Event -> -- event : TInterface (Name {namespace = "Gst", name = "Event"}) IO CInt {- | Sends an event to an element. If the element doesn\'t implement an event handler, the event will be pushed on a random linked sink pad for downstream events or a random linked source pad for upstream events. This function takes ownership of the provided event so you should @/gst_event_ref()/@ it if you want to reuse the event after this call. MT safe. -} elementSendEvent :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to send the event to. -} -> Gst.Event.Event {- ^ /@event@/: the 'GI.Gst.Structs.Event.Event' to send to the element. -} -> m Bool {- ^ __Returns:__ 'True' if the event was handled. Events that trigger a preroll (such as flushing seeks and steps) will emit 'GI.Gst.Flags.MessageTypeAsyncDone'. -} elementSendEvent element event = liftIO $ do element' <- unsafeManagedPtrCastPtr element event' <- B.ManagedPtr.disownBoxed event result <- gst_element_send_event element' event' let result' = (/= 0) result touchManagedPtr element touchManagedPtr event return result' #if ENABLE_OVERLOADING data ElementSendEventMethodInfo instance (signature ~ (Gst.Event.Event -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementSendEventMethodInfo a signature where overloadedMethod _ = elementSendEvent #endif -- method Element::set_base_time -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the base time to set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_set_base_time" gst_element_set_base_time :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Word64 -> -- time : TBasicType TUInt64 IO () {- | Set the base time of an element. See 'GI.Gst.Objects.Element.elementGetBaseTime'. MT safe. -} elementSetBaseTime :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> Word64 {- ^ /@time@/: the base time to set. -} -> m () elementSetBaseTime element time = liftIO $ do element' <- unsafeManagedPtrCastPtr element gst_element_set_base_time element' time touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementSetBaseTimeMethodInfo instance (signature ~ (Word64 -> m ()), MonadIO m, IsElement a) => O.MethodInfo ElementSetBaseTimeMethodInfo a signature where overloadedMethod _ = elementSetBaseTime #endif -- method Element::set_bus -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to set the bus of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "bus", argType = TInterface (Name {namespace = "Gst", name = "Bus"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstBus to set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_set_bus" gst_element_set_bus :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Bus.Bus -> -- bus : TInterface (Name {namespace = "Gst", name = "Bus"}) IO () {- | Sets the bus of the element. Increases the refcount on the bus. For internal use only, unless you\'re testing elements. MT safe. -} elementSetBus :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.Bus.IsBus b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to set the bus of. -} -> Maybe (b) {- ^ /@bus@/: the 'GI.Gst.Objects.Bus.Bus' to set. -} -> m () elementSetBus element bus = liftIO $ do element' <- unsafeManagedPtrCastPtr element maybeBus <- case bus of Nothing -> return nullPtr Just jBus -> do jBus' <- unsafeManagedPtrCastPtr jBus return jBus' gst_element_set_bus element' maybeBus touchManagedPtr element whenJust bus touchManagedPtr return () #if ENABLE_OVERLOADING data ElementSetBusMethodInfo instance (signature ~ (Maybe (b) -> m ()), MonadIO m, IsElement a, Gst.Bus.IsBus b) => O.MethodInfo ElementSetBusMethodInfo a signature where overloadedMethod _ = elementSetBus #endif -- method Element::set_clock -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to set the clock for.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "clock", argType = TInterface (Name {namespace = "Gst", name = "Clock"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstClock to set for the element.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_set_clock" gst_element_set_clock :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Clock.Clock -> -- clock : TInterface (Name {namespace = "Gst", name = "Clock"}) IO CInt {- | Sets the clock for the element. This function increases the refcount on the clock. Any previously set clock on the object is unreffed. -} elementSetClock :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, Gst.Clock.IsClock b) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to set the clock for. -} -> Maybe (b) {- ^ /@clock@/: the 'GI.Gst.Objects.Clock.Clock' to set for the element. -} -> m Bool {- ^ __Returns:__ 'True' if the element accepted the clock. An element can refuse a clock when it, for example, is not able to slave its internal clock to the /@clock@/ or when it requires a specific clock to operate. MT safe. -} elementSetClock element clock = liftIO $ do element' <- unsafeManagedPtrCastPtr element maybeClock <- case clock of Nothing -> return nullPtr Just jClock -> do jClock' <- unsafeManagedPtrCastPtr jClock return jClock' result <- gst_element_set_clock element' maybeClock let result' = (/= 0) result touchManagedPtr element whenJust clock touchManagedPtr return result' #if ENABLE_OVERLOADING data ElementSetClockMethodInfo instance (signature ~ (Maybe (b) -> m Bool), MonadIO m, IsElement a, Gst.Clock.IsClock b) => O.MethodInfo ElementSetClockMethodInfo a signature where overloadedMethod _ = elementSetClock #endif -- method Element::set_context -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to set the context of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "context", argType = TInterface (Name {namespace = "Gst", name = "Context"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstContext to set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_set_context" gst_element_set_context :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Gst.Context.Context -> -- context : TInterface (Name {namespace = "Gst", name = "Context"}) IO () {- | Sets the context of the element. Increases the refcount of the context. MT safe. -} elementSetContext :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to set the context of. -} -> Gst.Context.Context {- ^ /@context@/: the 'GI.Gst.Structs.Context.Context' to set. -} -> m () elementSetContext element context = liftIO $ do element' <- unsafeManagedPtrCastPtr element context' <- unsafeManagedPtrGetPtr context gst_element_set_context element' context' touchManagedPtr element touchManagedPtr context return () #if ENABLE_OVERLOADING data ElementSetContextMethodInfo instance (signature ~ (Gst.Context.Context -> m ()), MonadIO m, IsElement a) => O.MethodInfo ElementSetContextMethodInfo a signature where overloadedMethod _ = elementSetContext #endif -- method Element::set_locked_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "locked_state", argType = TBasicType TBoolean, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "%TRUE to lock the element's state", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_set_locked_state" gst_element_set_locked_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CInt -> -- locked_state : TBasicType TBoolean IO CInt {- | Locks the state of an element, so state changes of the parent don\'t affect this element anymore. Note that this is racy if the state lock of the parent bin is not taken. The parent bin might\'ve just checked the flag in another thread and as the next step proceed to change the child element\'s state. MT safe. -} elementSetLockedState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' -} -> Bool {- ^ /@lockedState@/: 'True' to lock the element\'s state -} -> m Bool {- ^ __Returns:__ 'True' if the state was changed, 'False' if bad parameters were given or the elements state-locking needed no change. -} elementSetLockedState element lockedState = liftIO $ do element' <- unsafeManagedPtrCastPtr element let lockedState' = (fromIntegral . fromEnum) lockedState result <- gst_element_set_locked_state element' lockedState' let result' = (/= 0) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementSetLockedStateMethodInfo instance (signature ~ (Bool -> m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementSetLockedStateMethodInfo a signature where overloadedMethod _ = elementSetLockedState #endif -- method Element::set_start_time -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "time", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the base time to set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_set_start_time" gst_element_set_start_time :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) Word64 -> -- time : TBasicType TUInt64 IO () {- | Set the start time of an element. The start time of the element is the running time of the element when it last went to the PAUSED state. In READY or after a flushing seek, it is set to 0. Toplevel elements like 'GI.Gst.Objects.Pipeline.Pipeline' will manage the start_time and base_time on its children. Setting the start_time to 'GI.Gst.Constants.CLOCK_TIME_NONE' on such a toplevel element will disable the distribution of the base_time to the children and can be useful if the application manages the base_time itself, for example if you want to synchronize capture from multiple pipelines, and you can also ensure that the pipelines have the same clock. MT safe. -} elementSetStartTime :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> Word64 {- ^ /@time@/: the base time to set. -} -> m () elementSetStartTime element time = liftIO $ do element' <- unsafeManagedPtrCastPtr element gst_element_set_start_time element' time touchManagedPtr element return () #if ENABLE_OVERLOADING data ElementSetStartTimeMethodInfo instance (signature ~ (Word64 -> m ()), MonadIO m, IsElement a) => O.MethodInfo ElementSetStartTimeMethodInfo a signature where overloadedMethod _ = elementSetStartTime #endif -- method Element::set_state -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement to change state of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "state", argType = TInterface (Name {namespace = "Gst", name = "State"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the element's new #GstState.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "StateChangeReturn"})) -- throws : False -- Skip return : False foreign import ccall "gst_element_set_state" gst_element_set_state :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) CUInt -> -- state : TInterface (Name {namespace = "Gst", name = "State"}) IO CUInt {- | Sets the state of the element. This function will try to set the requested state by going through all the intermediary states and calling the class\'s state change function for each. This function can return @/GST_STATE_CHANGE_ASYNC/@, in which case the element will perform the remainder of the state change asynchronously in another thread. An application can use 'GI.Gst.Objects.Element.elementGetState' to wait for the completion of the state change or it can wait for a 'GI.Gst.Flags.MessageTypeAsyncDone' or 'GI.Gst.Flags.MessageTypeStateChanged' on the bus. State changes to 'GI.Gst.Enums.StateReady' or 'GI.Gst.Enums.StateNull' never return @/GST_STATE_CHANGE_ASYNC/@. -} elementSetState :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element' to change state of. -} -> Gst.Enums.State {- ^ /@state@/: the element\'s new 'GI.Gst.Enums.State'. -} -> m Gst.Enums.StateChangeReturn {- ^ __Returns:__ Result of the state change using 'GI.Gst.Enums.StateChangeReturn'. MT safe. -} elementSetState element state = liftIO $ do element' <- unsafeManagedPtrCastPtr element let state' = (fromIntegral . fromEnum) state result <- gst_element_set_state element' state' let result' = (toEnum . fromIntegral) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementSetStateMethodInfo instance (signature ~ (Gst.Enums.State -> m Gst.Enums.StateChangeReturn), MonadIO m, IsElement a) => O.MethodInfo ElementSetStateMethodInfo a signature where overloadedMethod _ = elementSetState #endif -- method Element::sync_state_with_parent -- method type : OrdinaryMethod -- Args : [Arg {argCName = "element", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_sync_state_with_parent" gst_element_sync_state_with_parent :: Ptr Element -> -- element : TInterface (Name {namespace = "Gst", name = "Element"}) IO CInt {- | Tries to change the state of the element to the same as its parent. If this function returns 'False', the state of element is undefined. -} elementSyncStateWithParent :: (B.CallStack.HasCallStack, MonadIO m, IsElement a) => a {- ^ /@element@/: a 'GI.Gst.Objects.Element.Element'. -} -> m Bool {- ^ __Returns:__ 'True', if the element\'s state could be synced to the parent\'s state. MT safe. -} elementSyncStateWithParent element = liftIO $ do element' <- unsafeManagedPtrCastPtr element result <- gst_element_sync_state_with_parent element' let result' = (/= 0) result touchManagedPtr element return result' #if ENABLE_OVERLOADING data ElementSyncStateWithParentMethodInfo instance (signature ~ (m Bool), MonadIO m, IsElement a) => O.MethodInfo ElementSyncStateWithParentMethodInfo a signature where overloadedMethod _ = elementSyncStateWithParent #endif -- method Element::unlink -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source #GstElement to unlink.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the sink #GstElement to unlink.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_unlink" gst_element_unlink :: Ptr Element -> -- src : TInterface (Name {namespace = "Gst", name = "Element"}) Ptr Element -> -- dest : TInterface (Name {namespace = "Gst", name = "Element"}) IO () {- | Unlinks all source pads of the source element with all sink pads of the sink element to which they are linked. If the link has been made using 'GI.Gst.Objects.Element.elementLink', it could have created an requestpad, which has to be released using 'GI.Gst.Objects.Element.elementReleaseRequestPad'. -} elementUnlink :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, IsElement b) => a {- ^ /@src@/: the source 'GI.Gst.Objects.Element.Element' to unlink. -} -> b {- ^ /@dest@/: the sink 'GI.Gst.Objects.Element.Element' to unlink. -} -> m () elementUnlink src dest = liftIO $ do src' <- unsafeManagedPtrCastPtr src dest' <- unsafeManagedPtrCastPtr dest gst_element_unlink src' dest' touchManagedPtr src touchManagedPtr dest return () #if ENABLE_OVERLOADING data ElementUnlinkMethodInfo instance (signature ~ (b -> m ()), MonadIO m, IsElement a, IsElement b) => O.MethodInfo ElementUnlinkMethodInfo a signature where overloadedMethod _ = elementUnlink #endif -- method Element::unlink_pads -- method type : OrdinaryMethod -- Args : [Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a (transfer none): #GstElement containing the source pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "srcpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in source element.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Element"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstElement containing the destination pad.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "destpadname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the name of the #GstPad in destination element.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_element_unlink_pads" gst_element_unlink_pads :: Ptr Element -> -- src : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- srcpadname : TBasicType TUTF8 Ptr Element -> -- dest : TInterface (Name {namespace = "Gst", name = "Element"}) CString -> -- destpadname : TBasicType TUTF8 IO () {- | Unlinks the two named pads of the source and destination elements. This is a convenience function for 'GI.Gst.Objects.Pad.padUnlink'. -} elementUnlinkPads :: (B.CallStack.HasCallStack, MonadIO m, IsElement a, IsElement b) => a {- ^ /@src@/: a (transfer none): 'GI.Gst.Objects.Element.Element' containing the source pad. -} -> T.Text {- ^ /@srcpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in source element. -} -> b {- ^ /@dest@/: a 'GI.Gst.Objects.Element.Element' containing the destination pad. -} -> T.Text {- ^ /@destpadname@/: the name of the 'GI.Gst.Objects.Pad.Pad' in destination element. -} -> m () elementUnlinkPads src srcpadname dest destpadname = liftIO $ do src' <- unsafeManagedPtrCastPtr src srcpadname' <- textToCString srcpadname dest' <- unsafeManagedPtrCastPtr dest destpadname' <- textToCString destpadname gst_element_unlink_pads src' srcpadname' dest' destpadname' touchManagedPtr src touchManagedPtr dest freeMem srcpadname' freeMem destpadname' return () #if ENABLE_OVERLOADING data ElementUnlinkPadsMethodInfo instance (signature ~ (T.Text -> b -> T.Text -> m ()), MonadIO m, IsElement a, IsElement b) => O.MethodInfo ElementUnlinkPadsMethodInfo a signature where overloadedMethod _ = elementUnlinkPads #endif -- method Element::make_from_uri -- method type : MemberFunction -- Args : [Arg {argCName = "type", argType = TInterface (Name {namespace = "Gst", name = "URIType"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "Whether to create a source or a sink", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "uri", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "URI to create an element for", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "elementname", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "Name of created element, can be %NULL.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Element"})) -- throws : True -- Skip return : False foreign import ccall "gst_element_make_from_uri" gst_element_make_from_uri :: CUInt -> -- type : TInterface (Name {namespace = "Gst", name = "URIType"}) CString -> -- uri : TBasicType TUTF8 CString -> -- elementname : TBasicType TUTF8 Ptr (Ptr GError) -> -- error IO (Ptr Element) {- | Creates an element for handling the given URI. -} elementMakeFromUri :: (B.CallStack.HasCallStack, MonadIO m) => Gst.Enums.URIType {- ^ /@type@/: Whether to create a source or a sink -} -> T.Text {- ^ /@uri@/: URI to create an element for -} -> Maybe (T.Text) {- ^ /@elementname@/: Name of created element, can be 'Nothing'. -} -> m (Maybe Element) {- ^ __Returns:__ a new element or 'Nothing' if none could be created /(Can throw 'Data.GI.Base.GError.GError')/ -} elementMakeFromUri type_ uri elementname = liftIO $ do let type_' = (fromIntegral . fromEnum) type_ uri' <- textToCString uri maybeElementname <- case elementname of Nothing -> return nullPtr Just jElementname -> do jElementname' <- textToCString jElementname return jElementname' onException (do result <- propagateGError $ gst_element_make_from_uri type_' uri' maybeElementname maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newObject Element) result' return result'' freeMem uri' freeMem maybeElementname return maybeResult ) (do freeMem uri' freeMem maybeElementname ) #if ENABLE_OVERLOADING #endif -- method Element::register -- method type : MemberFunction -- Args : [Arg {argCName = "plugin", argType = TInterface (Name {namespace = "Gst", name = "Plugin"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "#GstPlugin to register the element with, or %NULL for\n a static element.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "name of elements of this type", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "rank", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "rank of element (higher rank means more importance when autoplugging)", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "GType of element to register", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_element_register" gst_element_register :: Ptr Gst.Plugin.Plugin -> -- plugin : TInterface (Name {namespace = "Gst", name = "Plugin"}) CString -> -- name : TBasicType TUTF8 Word32 -> -- rank : TBasicType TUInt CGType -> -- type : TBasicType TGType IO CInt {- | Create a new elementfactory capable of instantiating objects of the /@type@/ and add the factory to /@plugin@/. -} elementRegister :: (B.CallStack.HasCallStack, MonadIO m, Gst.Plugin.IsPlugin a) => Maybe (a) {- ^ /@plugin@/: 'GI.Gst.Objects.Plugin.Plugin' to register the element with, or 'Nothing' for a static element. -} -> T.Text {- ^ /@name@/: name of elements of this type -} -> Word32 {- ^ /@rank@/: rank of element (higher rank means more importance when autoplugging) -} -> GType {- ^ /@type@/: GType of element to register -} -> m Bool {- ^ __Returns:__ 'True', if the registering succeeded, 'False' on error -} elementRegister plugin name rank type_ = liftIO $ do maybePlugin <- case plugin of Nothing -> return nullPtr Just jPlugin -> do jPlugin' <- unsafeManagedPtrCastPtr jPlugin return jPlugin' name' <- textToCString name let type_' = gtypeToCGType type_ result <- gst_element_register maybePlugin name' rank type_' let result' = (/= 0) result whenJust plugin touchManagedPtr freeMem name' return result' #if ENABLE_OVERLOADING #endif -- method Element::state_change_return_get_name -- method type : MemberFunction -- Args : [Arg {argCName = "state_ret", argType = TInterface (Name {namespace = "Gst", name = "StateChangeReturn"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstStateChangeReturn to get the name of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "gst_element_state_change_return_get_name" gst_element_state_change_return_get_name :: CUInt -> -- state_ret : TInterface (Name {namespace = "Gst", name = "StateChangeReturn"}) IO CString {- | Gets a string representing the given state change result. -} elementStateChangeReturnGetName :: (B.CallStack.HasCallStack, MonadIO m) => Gst.Enums.StateChangeReturn {- ^ /@stateRet@/: a 'GI.Gst.Enums.StateChangeReturn' to get the name of. -} -> m T.Text {- ^ __Returns:__ a string with the name of the state result. -} elementStateChangeReturnGetName stateRet = liftIO $ do let stateRet' = (fromIntegral . fromEnum) stateRet result <- gst_element_state_change_return_get_name stateRet' checkUnexpectedReturnNULL "elementStateChangeReturnGetName" result result' <- cstringToText result return result' #if ENABLE_OVERLOADING #endif -- method Element::state_get_name -- method type : MemberFunction -- Args : [Arg {argCName = "state", argType = TInterface (Name {namespace = "Gst", name = "State"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstState to get the name of.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUTF8) -- throws : False -- Skip return : False foreign import ccall "gst_element_state_get_name" gst_element_state_get_name :: CUInt -> -- state : TInterface (Name {namespace = "Gst", name = "State"}) IO CString {- | Gets a string representing the given state. -} elementStateGetName :: (B.CallStack.HasCallStack, MonadIO m) => Gst.Enums.State {- ^ /@state@/: a 'GI.Gst.Enums.State' to get the name of. -} -> m T.Text {- ^ __Returns:__ a string with the name of the state. -} elementStateGetName state = liftIO $ do let state' = (fromIntegral . fromEnum) state result <- gst_element_state_get_name state' checkUnexpectedReturnNULL "elementStateGetName" result result' <- cstringToText result return result' #if ENABLE_OVERLOADING #endif