gi-gstbase-1.0.18: GI/GstBase/Objects/PushSrc.hs
{- |
Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License : LGPL-2.1
Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc)
This class is mostly useful for elements that cannot do
random access, or at least very slowly. The source usually
prefers to push out a fixed size buffer.
Subclasses usually operate in a format that is different from the
default GST_FORMAT_BYTES format of 'GI.GstBase.Objects.BaseSrc.BaseSrc'.
Classes extending this base class will usually be scheduled
in a push based mode. If the peer accepts to operate without
offsets and within the limits of the allowed block size, this
class can operate in getrange based mode automatically. To make
this possible, the subclass should implement and override the
SCHEDULING query.
The subclass should extend the methods from the baseclass in
addition to the ::create method.
Seeking, flushing, scheduling and sync is all handled by this
base class.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.GstBase.Objects.PushSrc
(
-- * Exported types
PushSrc(..) ,
IsPushSrc ,
toPushSrc ,
noPushSrc ,
) 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.GObject.Objects.Object as GObject.Object
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object
import {-# SOURCE #-} qualified GI.GstBase.Objects.BaseSrc as GstBase.BaseSrc
-- | Memory-managed wrapper type.
newtype PushSrc = PushSrc (ManagedPtr PushSrc)
foreign import ccall "gst_push_src_get_type"
c_gst_push_src_get_type :: IO GType
instance GObject PushSrc where
gobjectType = c_gst_push_src_get_type
-- | Type class for types which can be safely cast to `PushSrc`, for instance with `toPushSrc`.
class (GObject o, O.IsDescendantOf PushSrc o) => IsPushSrc o
instance (GObject o, O.IsDescendantOf PushSrc o) => IsPushSrc o
instance O.HasParentTypes PushSrc
type instance O.ParentTypes PushSrc = '[GstBase.BaseSrc.BaseSrc, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]
-- | Cast to `PushSrc`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toPushSrc :: (MonadIO m, IsPushSrc o) => o -> m PushSrc
toPushSrc = liftIO . unsafeCastTo PushSrc
-- | A convenience alias for `Nothing` :: `Maybe` `PushSrc`.
noPushSrc :: Maybe PushSrc
noPushSrc = Nothing
#if ENABLE_OVERLOADING
type family ResolvePushSrcMethod (t :: Symbol) (o :: *) :: * where
ResolvePushSrcMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
ResolvePushSrcMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
ResolvePushSrcMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
ResolvePushSrcMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
ResolvePushSrcMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
ResolvePushSrcMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolvePushSrcMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolvePushSrcMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
ResolvePushSrcMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
ResolvePushSrcMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
ResolvePushSrcMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
ResolvePushSrcMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
ResolvePushSrcMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolvePushSrcMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
ResolvePushSrcMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
ResolvePushSrcMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
ResolvePushSrcMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolvePushSrcMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolvePushSrcMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
ResolvePushSrcMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
ResolvePushSrcMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
ResolvePushSrcMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
ResolvePushSrcMethod "isAsync" o = GstBase.BaseSrc.BaseSrcIsAsyncMethodInfo
ResolvePushSrcMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolvePushSrcMethod "isLive" o = GstBase.BaseSrc.BaseSrcIsLiveMethodInfo
ResolvePushSrcMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
ResolvePushSrcMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
ResolvePushSrcMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
ResolvePushSrcMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
ResolvePushSrcMethod "link" o = Gst.Element.ElementLinkMethodInfo
ResolvePushSrcMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
ResolvePushSrcMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
ResolvePushSrcMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
ResolvePushSrcMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
ResolvePushSrcMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
ResolvePushSrcMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
ResolvePushSrcMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
ResolvePushSrcMethod "newSeamlessSegment" o = GstBase.BaseSrc.BaseSrcNewSeamlessSegmentMethodInfo
ResolvePushSrcMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
ResolvePushSrcMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolvePushSrcMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolvePushSrcMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
ResolvePushSrcMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
ResolvePushSrcMethod "query" o = Gst.Element.ElementQueryMethodInfo
ResolvePushSrcMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
ResolvePushSrcMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
ResolvePushSrcMethod "queryLatency" o = GstBase.BaseSrc.BaseSrcQueryLatencyMethodInfo
ResolvePushSrcMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
ResolvePushSrcMethod "ref" o = Gst.Object.ObjectRefMethodInfo
ResolvePushSrcMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolvePushSrcMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
ResolvePushSrcMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
ResolvePushSrcMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
ResolvePushSrcMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
ResolvePushSrcMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
ResolvePushSrcMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolvePushSrcMethod "seek" o = Gst.Element.ElementSeekMethodInfo
ResolvePushSrcMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
ResolvePushSrcMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
ResolvePushSrcMethod "startComplete" o = GstBase.BaseSrc.BaseSrcStartCompleteMethodInfo
ResolvePushSrcMethod "startWait" o = GstBase.BaseSrc.BaseSrcStartWaitMethodInfo
ResolvePushSrcMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolvePushSrcMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolvePushSrcMethod "submitBufferList" o = GstBase.BaseSrc.BaseSrcSubmitBufferListMethodInfo
ResolvePushSrcMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
ResolvePushSrcMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
ResolvePushSrcMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
ResolvePushSrcMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolvePushSrcMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
ResolvePushSrcMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
ResolvePushSrcMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
ResolvePushSrcMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
ResolvePushSrcMethod "waitPlaying" o = GstBase.BaseSrc.BaseSrcWaitPlayingMethodInfo
ResolvePushSrcMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolvePushSrcMethod "getAllocator" o = GstBase.BaseSrc.BaseSrcGetAllocatorMethodInfo
ResolvePushSrcMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
ResolvePushSrcMethod "getBlocksize" o = GstBase.BaseSrc.BaseSrcGetBlocksizeMethodInfo
ResolvePushSrcMethod "getBufferPool" o = GstBase.BaseSrc.BaseSrcGetBufferPoolMethodInfo
ResolvePushSrcMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
ResolvePushSrcMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
ResolvePushSrcMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
ResolvePushSrcMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
ResolvePushSrcMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
ResolvePushSrcMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
ResolvePushSrcMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
ResolvePushSrcMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
ResolvePushSrcMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
ResolvePushSrcMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolvePushSrcMethod "getDoTimestamp" o = GstBase.BaseSrc.BaseSrcGetDoTimestampMethodInfo
ResolvePushSrcMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
ResolvePushSrcMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
ResolvePushSrcMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
ResolvePushSrcMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
ResolvePushSrcMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
ResolvePushSrcMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
ResolvePushSrcMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
ResolvePushSrcMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
ResolvePushSrcMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolvePushSrcMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolvePushSrcMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
ResolvePushSrcMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
ResolvePushSrcMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
ResolvePushSrcMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
ResolvePushSrcMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
ResolvePushSrcMethod "setAsync" o = GstBase.BaseSrc.BaseSrcSetAsyncMethodInfo
ResolvePushSrcMethod "setAutomaticEos" o = GstBase.BaseSrc.BaseSrcSetAutomaticEosMethodInfo
ResolvePushSrcMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
ResolvePushSrcMethod "setBlocksize" o = GstBase.BaseSrc.BaseSrcSetBlocksizeMethodInfo
ResolvePushSrcMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
ResolvePushSrcMethod "setCaps" o = GstBase.BaseSrc.BaseSrcSetCapsMethodInfo
ResolvePushSrcMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
ResolvePushSrcMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
ResolvePushSrcMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
ResolvePushSrcMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
ResolvePushSrcMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
ResolvePushSrcMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolvePushSrcMethod "setDoTimestamp" o = GstBase.BaseSrc.BaseSrcSetDoTimestampMethodInfo
ResolvePushSrcMethod "setDynamicSize" o = GstBase.BaseSrc.BaseSrcSetDynamicSizeMethodInfo
ResolvePushSrcMethod "setFormat" o = GstBase.BaseSrc.BaseSrcSetFormatMethodInfo
ResolvePushSrcMethod "setLive" o = GstBase.BaseSrc.BaseSrcSetLiveMethodInfo
ResolvePushSrcMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
ResolvePushSrcMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
ResolvePushSrcMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
ResolvePushSrcMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolvePushSrcMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
ResolvePushSrcMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
ResolvePushSrcMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolvePushSrcMethod t PushSrc, O.MethodInfo info PushSrc p) => OL.IsLabel t (PushSrc -> 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
#if ENABLE_OVERLOADING
instance O.HasAttributeList PushSrc
type instance O.AttributeList PushSrc = PushSrcAttributeList
type PushSrcAttributeList = ('[ '("blocksize", GstBase.BaseSrc.BaseSrcBlocksizePropertyInfo), '("doTimestamp", GstBase.BaseSrc.BaseSrcDoTimestampPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("numBuffers", GstBase.BaseSrc.BaseSrcNumBuffersPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("typefind", GstBase.BaseSrc.BaseSrcTypefindPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList PushSrc = PushSrcSignalList
type PushSrcSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])
#endif