gi-gstaudio-1.0.17: GI/GstAudio/Objects/AudioSrc.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 is the most simple base class for audio sources that only requires
subclasses to implement a set of simple functions:
* @open()@ :Open the device.
* @prepare()@ :Configure the device with the specified format.
* @read()@ :Read samples from the device.
* @reset()@ :Unblock reads and flush the device.
* @delay()@ :Get the number of samples in the device but not yet read.
* @unprepare()@ :Undo operations done by prepare.
* @close()@ :Close the device.
All scheduling of samples and timestamps is done in this base class
together with 'GI.GstAudio.Objects.AudioBaseSrc.AudioBaseSrc' using a default implementation of a
'GI.GstAudio.Objects.AudioRingBuffer.AudioRingBuffer' that uses threads.
-}
#define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \
&& !defined(__HADDOCK_VERSION__))
module GI.GstAudio.Objects.AudioSrc
(
-- * Exported types
AudioSrc(..) ,
IsAudioSrc ,
toAudioSrc ,
noAudioSrc ,
) 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.GstAudio.Objects.AudioBaseSrc as GstAudio.AudioBaseSrc
import qualified GI.GstBase.Objects.BaseSrc as GstBase.BaseSrc
import qualified GI.GstBase.Objects.PushSrc as GstBase.PushSrc
-- | Memory-managed wrapper type.
newtype AudioSrc = AudioSrc (ManagedPtr AudioSrc)
foreign import ccall "gst_audio_src_get_type"
c_gst_audio_src_get_type :: IO GType
instance GObject AudioSrc where
gobjectType = c_gst_audio_src_get_type
-- | Type class for types which can be safely cast to `AudioSrc`, for instance with `toAudioSrc`.
class (GObject o, O.IsDescendantOf AudioSrc o) => IsAudioSrc o
instance (GObject o, O.IsDescendantOf AudioSrc o) => IsAudioSrc o
instance O.HasParentTypes AudioSrc
type instance O.ParentTypes AudioSrc = '[GstAudio.AudioBaseSrc.AudioBaseSrc, GstBase.PushSrc.PushSrc, GstBase.BaseSrc.BaseSrc, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]
-- | Cast to `AudioSrc`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toAudioSrc :: (MonadIO m, IsAudioSrc o) => o -> m AudioSrc
toAudioSrc = liftIO . unsafeCastTo AudioSrc
-- | A convenience alias for `Nothing` :: `Maybe` `AudioSrc`.
noAudioSrc :: Maybe AudioSrc
noAudioSrc = Nothing
#if ENABLE_OVERLOADING
type family ResolveAudioSrcMethod (t :: Symbol) (o :: *) :: * where
ResolveAudioSrcMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
ResolveAudioSrcMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
ResolveAudioSrcMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
ResolveAudioSrcMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
ResolveAudioSrcMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
ResolveAudioSrcMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
ResolveAudioSrcMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
ResolveAudioSrcMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
ResolveAudioSrcMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
ResolveAudioSrcMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
ResolveAudioSrcMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
ResolveAudioSrcMethod "createRingbuffer" o = GstAudio.AudioBaseSrc.AudioBaseSrcCreateRingbufferMethodInfo
ResolveAudioSrcMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
ResolveAudioSrcMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
ResolveAudioSrcMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
ResolveAudioSrcMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
ResolveAudioSrcMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
ResolveAudioSrcMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
ResolveAudioSrcMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
ResolveAudioSrcMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
ResolveAudioSrcMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
ResolveAudioSrcMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
ResolveAudioSrcMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
ResolveAudioSrcMethod "isAsync" o = GstBase.BaseSrc.BaseSrcIsAsyncMethodInfo
ResolveAudioSrcMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
ResolveAudioSrcMethod "isLive" o = GstBase.BaseSrc.BaseSrcIsLiveMethodInfo
ResolveAudioSrcMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
ResolveAudioSrcMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
ResolveAudioSrcMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
ResolveAudioSrcMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
ResolveAudioSrcMethod "link" o = Gst.Element.ElementLinkMethodInfo
ResolveAudioSrcMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
ResolveAudioSrcMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
ResolveAudioSrcMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
ResolveAudioSrcMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
ResolveAudioSrcMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
ResolveAudioSrcMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
ResolveAudioSrcMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
ResolveAudioSrcMethod "newSeamlessSegment" o = GstBase.BaseSrc.BaseSrcNewSeamlessSegmentMethodInfo
ResolveAudioSrcMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
ResolveAudioSrcMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
ResolveAudioSrcMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
ResolveAudioSrcMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
ResolveAudioSrcMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
ResolveAudioSrcMethod "query" o = Gst.Element.ElementQueryMethodInfo
ResolveAudioSrcMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
ResolveAudioSrcMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
ResolveAudioSrcMethod "queryLatency" o = GstBase.BaseSrc.BaseSrcQueryLatencyMethodInfo
ResolveAudioSrcMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
ResolveAudioSrcMethod "ref" o = Gst.Object.ObjectRefMethodInfo
ResolveAudioSrcMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
ResolveAudioSrcMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
ResolveAudioSrcMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
ResolveAudioSrcMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
ResolveAudioSrcMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
ResolveAudioSrcMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
ResolveAudioSrcMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
ResolveAudioSrcMethod "seek" o = Gst.Element.ElementSeekMethodInfo
ResolveAudioSrcMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
ResolveAudioSrcMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
ResolveAudioSrcMethod "startComplete" o = GstBase.BaseSrc.BaseSrcStartCompleteMethodInfo
ResolveAudioSrcMethod "startWait" o = GstBase.BaseSrc.BaseSrcStartWaitMethodInfo
ResolveAudioSrcMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
ResolveAudioSrcMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
ResolveAudioSrcMethod "submitBufferList" o = GstBase.BaseSrc.BaseSrcSubmitBufferListMethodInfo
ResolveAudioSrcMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
ResolveAudioSrcMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
ResolveAudioSrcMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
ResolveAudioSrcMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
ResolveAudioSrcMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
ResolveAudioSrcMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
ResolveAudioSrcMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
ResolveAudioSrcMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
ResolveAudioSrcMethod "waitPlaying" o = GstBase.BaseSrc.BaseSrcWaitPlayingMethodInfo
ResolveAudioSrcMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
ResolveAudioSrcMethod "getAllocator" o = GstBase.BaseSrc.BaseSrcGetAllocatorMethodInfo
ResolveAudioSrcMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
ResolveAudioSrcMethod "getBlocksize" o = GstBase.BaseSrc.BaseSrcGetBlocksizeMethodInfo
ResolveAudioSrcMethod "getBufferPool" o = GstBase.BaseSrc.BaseSrcGetBufferPoolMethodInfo
ResolveAudioSrcMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
ResolveAudioSrcMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
ResolveAudioSrcMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
ResolveAudioSrcMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
ResolveAudioSrcMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
ResolveAudioSrcMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
ResolveAudioSrcMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
ResolveAudioSrcMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
ResolveAudioSrcMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
ResolveAudioSrcMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
ResolveAudioSrcMethod "getDoTimestamp" o = GstBase.BaseSrc.BaseSrcGetDoTimestampMethodInfo
ResolveAudioSrcMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
ResolveAudioSrcMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
ResolveAudioSrcMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
ResolveAudioSrcMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
ResolveAudioSrcMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
ResolveAudioSrcMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
ResolveAudioSrcMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
ResolveAudioSrcMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
ResolveAudioSrcMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
ResolveAudioSrcMethod "getProvideClock" o = GstAudio.AudioBaseSrc.AudioBaseSrcGetProvideClockMethodInfo
ResolveAudioSrcMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
ResolveAudioSrcMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
ResolveAudioSrcMethod "getSlaveMethod" o = GstAudio.AudioBaseSrc.AudioBaseSrcGetSlaveMethodMethodInfo
ResolveAudioSrcMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
ResolveAudioSrcMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
ResolveAudioSrcMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
ResolveAudioSrcMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
ResolveAudioSrcMethod "setAsync" o = GstBase.BaseSrc.BaseSrcSetAsyncMethodInfo
ResolveAudioSrcMethod "setAutomaticEos" o = GstBase.BaseSrc.BaseSrcSetAutomaticEosMethodInfo
ResolveAudioSrcMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
ResolveAudioSrcMethod "setBlocksize" o = GstBase.BaseSrc.BaseSrcSetBlocksizeMethodInfo
ResolveAudioSrcMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
ResolveAudioSrcMethod "setCaps" o = GstBase.BaseSrc.BaseSrcSetCapsMethodInfo
ResolveAudioSrcMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
ResolveAudioSrcMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
ResolveAudioSrcMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
ResolveAudioSrcMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
ResolveAudioSrcMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
ResolveAudioSrcMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
ResolveAudioSrcMethod "setDoTimestamp" o = GstBase.BaseSrc.BaseSrcSetDoTimestampMethodInfo
ResolveAudioSrcMethod "setDynamicSize" o = GstBase.BaseSrc.BaseSrcSetDynamicSizeMethodInfo
ResolveAudioSrcMethod "setFormat" o = GstBase.BaseSrc.BaseSrcSetFormatMethodInfo
ResolveAudioSrcMethod "setLive" o = GstBase.BaseSrc.BaseSrcSetLiveMethodInfo
ResolveAudioSrcMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
ResolveAudioSrcMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
ResolveAudioSrcMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
ResolveAudioSrcMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
ResolveAudioSrcMethod "setProvideClock" o = GstAudio.AudioBaseSrc.AudioBaseSrcSetProvideClockMethodInfo
ResolveAudioSrcMethod "setSlaveMethod" o = GstAudio.AudioBaseSrc.AudioBaseSrcSetSlaveMethodMethodInfo
ResolveAudioSrcMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
ResolveAudioSrcMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
ResolveAudioSrcMethod l o = O.MethodResolutionFailed l o
instance (info ~ ResolveAudioSrcMethod t AudioSrc, O.MethodInfo info AudioSrc p) => OL.IsLabel t (AudioSrc -> 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 AudioSrc
type instance O.AttributeList AudioSrc = AudioSrcAttributeList
type AudioSrcAttributeList = ('[ '("actualBufferTime", GstAudio.AudioBaseSrc.AudioBaseSrcActualBufferTimePropertyInfo), '("actualLatencyTime", GstAudio.AudioBaseSrc.AudioBaseSrcActualLatencyTimePropertyInfo), '("blocksize", GstBase.BaseSrc.BaseSrcBlocksizePropertyInfo), '("bufferTime", GstAudio.AudioBaseSrc.AudioBaseSrcBufferTimePropertyInfo), '("doTimestamp", GstBase.BaseSrc.BaseSrcDoTimestampPropertyInfo), '("latencyTime", GstAudio.AudioBaseSrc.AudioBaseSrcLatencyTimePropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("numBuffers", GstBase.BaseSrc.BaseSrcNumBuffersPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("provideClock", GstAudio.AudioBaseSrc.AudioBaseSrcProvideClockPropertyInfo), '("slaveMethod", GstAudio.AudioBaseSrc.AudioBaseSrcSlaveMethodPropertyInfo), '("typefind", GstBase.BaseSrc.BaseSrcTypefindPropertyInfo)] :: [(Symbol, *)])
#endif
#if ENABLE_OVERLOADING
#endif
#if ENABLE_OVERLOADING
type instance O.SignalList AudioSrc = AudioSrcSignalList
type AudioSrcSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])
#endif