{- |
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 sinks that only requires
subclasses to implement a set of simple functions:

* @open()@ :Open the device.

* @prepare()@ :Configure the device with the specified format.

* @write()@ :Write samples to the device.

* @reset()@ :Unblock writes and flush the device.

* @delay()@ :Get the number of samples written but not yet played
by the device.

* @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.AudioBaseSink.AudioBaseSink' 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.AudioSink
    (

-- * Exported types
    AudioSink(..)                           ,
    IsAudioSink                             ,
    toAudioSink                             ,
    noAudioSink                             ,


    ) 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.AudioBaseSink as GstAudio.AudioBaseSink
import qualified GI.GstBase.Objects.BaseSink as GstBase.BaseSink

-- | Memory-managed wrapper type.
newtype AudioSink = AudioSink (ManagedPtr AudioSink)
foreign import ccall "gst_audio_sink_get_type"
    c_gst_audio_sink_get_type :: IO GType

instance GObject AudioSink where
    gobjectType = c_gst_audio_sink_get_type


-- | Type class for types which can be safely cast to `AudioSink`, for instance with `toAudioSink`.
class (GObject o, O.IsDescendantOf AudioSink o) => IsAudioSink o
instance (GObject o, O.IsDescendantOf AudioSink o) => IsAudioSink o

instance O.HasParentTypes AudioSink
type instance O.ParentTypes AudioSink = '[GstAudio.AudioBaseSink.AudioBaseSink, GstBase.BaseSink.BaseSink, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]

-- | Cast to `AudioSink`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toAudioSink :: (MonadIO m, IsAudioSink o) => o -> m AudioSink
toAudioSink = liftIO . unsafeCastTo AudioSink

-- | A convenience alias for `Nothing` :: `Maybe` `AudioSink`.
noAudioSink :: Maybe AudioSink
noAudioSink = Nothing

#if ENABLE_OVERLOADING
type family ResolveAudioSinkMethod (t :: Symbol) (o :: *) :: * where
    ResolveAudioSinkMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
    ResolveAudioSinkMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveAudioSinkMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
    ResolveAudioSinkMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
    ResolveAudioSinkMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
    ResolveAudioSinkMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveAudioSinkMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveAudioSinkMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
    ResolveAudioSinkMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
    ResolveAudioSinkMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
    ResolveAudioSinkMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
    ResolveAudioSinkMethod "createRingbuffer" o = GstAudio.AudioBaseSink.AudioBaseSinkCreateRingbufferMethodInfo
    ResolveAudioSinkMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveAudioSinkMethod "doPreroll" o = GstBase.BaseSink.BaseSinkDoPrerollMethodInfo
    ResolveAudioSinkMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveAudioSinkMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
    ResolveAudioSinkMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
    ResolveAudioSinkMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
    ResolveAudioSinkMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveAudioSinkMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveAudioSinkMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveAudioSinkMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveAudioSinkMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveAudioSinkMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveAudioSinkMethod "isAsyncEnabled" o = GstBase.BaseSink.BaseSinkIsAsyncEnabledMethodInfo
    ResolveAudioSinkMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveAudioSinkMethod "isLastSampleEnabled" o = GstBase.BaseSink.BaseSinkIsLastSampleEnabledMethodInfo
    ResolveAudioSinkMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
    ResolveAudioSinkMethod "isQosEnabled" o = GstBase.BaseSink.BaseSinkIsQosEnabledMethodInfo
    ResolveAudioSinkMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
    ResolveAudioSinkMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
    ResolveAudioSinkMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
    ResolveAudioSinkMethod "link" o = Gst.Element.ElementLinkMethodInfo
    ResolveAudioSinkMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
    ResolveAudioSinkMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
    ResolveAudioSinkMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
    ResolveAudioSinkMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
    ResolveAudioSinkMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
    ResolveAudioSinkMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
    ResolveAudioSinkMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
    ResolveAudioSinkMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
    ResolveAudioSinkMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveAudioSinkMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveAudioSinkMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
    ResolveAudioSinkMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
    ResolveAudioSinkMethod "query" o = Gst.Element.ElementQueryMethodInfo
    ResolveAudioSinkMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
    ResolveAudioSinkMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
    ResolveAudioSinkMethod "queryLatency" o = GstBase.BaseSink.BaseSinkQueryLatencyMethodInfo
    ResolveAudioSinkMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
    ResolveAudioSinkMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveAudioSinkMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveAudioSinkMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
    ResolveAudioSinkMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveAudioSinkMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
    ResolveAudioSinkMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
    ResolveAudioSinkMethod "reportDeviceFailure" o = GstAudio.AudioBaseSink.AudioBaseSinkReportDeviceFailureMethodInfo
    ResolveAudioSinkMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
    ResolveAudioSinkMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveAudioSinkMethod "seek" o = Gst.Element.ElementSeekMethodInfo
    ResolveAudioSinkMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
    ResolveAudioSinkMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
    ResolveAudioSinkMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveAudioSinkMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveAudioSinkMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveAudioSinkMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
    ResolveAudioSinkMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveAudioSinkMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveAudioSinkMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
    ResolveAudioSinkMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
    ResolveAudioSinkMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveAudioSinkMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveAudioSinkMethod "wait" o = GstBase.BaseSink.BaseSinkWaitMethodInfo
    ResolveAudioSinkMethod "waitClock" o = GstBase.BaseSink.BaseSinkWaitClockMethodInfo
    ResolveAudioSinkMethod "waitPreroll" o = GstBase.BaseSink.BaseSinkWaitPrerollMethodInfo
    ResolveAudioSinkMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveAudioSinkMethod "getAlignmentThreshold" o = GstAudio.AudioBaseSink.AudioBaseSinkGetAlignmentThresholdMethodInfo
    ResolveAudioSinkMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
    ResolveAudioSinkMethod "getBlocksize" o = GstBase.BaseSink.BaseSinkGetBlocksizeMethodInfo
    ResolveAudioSinkMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
    ResolveAudioSinkMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
    ResolveAudioSinkMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
    ResolveAudioSinkMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
    ResolveAudioSinkMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
    ResolveAudioSinkMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
    ResolveAudioSinkMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
    ResolveAudioSinkMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveAudioSinkMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveAudioSinkMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveAudioSinkMethod "getDiscontWait" o = GstAudio.AudioBaseSink.AudioBaseSinkGetDiscontWaitMethodInfo
    ResolveAudioSinkMethod "getDriftTolerance" o = GstAudio.AudioBaseSink.AudioBaseSinkGetDriftToleranceMethodInfo
    ResolveAudioSinkMethod "getDropOutOfSegment" o = GstBase.BaseSink.BaseSinkGetDropOutOfSegmentMethodInfo
    ResolveAudioSinkMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
    ResolveAudioSinkMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveAudioSinkMethod "getLastSample" o = GstBase.BaseSink.BaseSinkGetLastSampleMethodInfo
    ResolveAudioSinkMethod "getLatency" o = GstBase.BaseSink.BaseSinkGetLatencyMethodInfo
    ResolveAudioSinkMethod "getMaxBitrate" o = GstBase.BaseSink.BaseSinkGetMaxBitrateMethodInfo
    ResolveAudioSinkMethod "getMaxLateness" o = GstBase.BaseSink.BaseSinkGetMaxLatenessMethodInfo
    ResolveAudioSinkMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
    ResolveAudioSinkMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveAudioSinkMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
    ResolveAudioSinkMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
    ResolveAudioSinkMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveAudioSinkMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveAudioSinkMethod "getProcessingDeadline" o = GstBase.BaseSink.BaseSinkGetProcessingDeadlineMethodInfo
    ResolveAudioSinkMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveAudioSinkMethod "getProvideClock" o = GstAudio.AudioBaseSink.AudioBaseSinkGetProvideClockMethodInfo
    ResolveAudioSinkMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveAudioSinkMethod "getRenderDelay" o = GstBase.BaseSink.BaseSinkGetRenderDelayMethodInfo
    ResolveAudioSinkMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
    ResolveAudioSinkMethod "getSlaveMethod" o = GstAudio.AudioBaseSink.AudioBaseSinkGetSlaveMethodMethodInfo
    ResolveAudioSinkMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
    ResolveAudioSinkMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
    ResolveAudioSinkMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
    ResolveAudioSinkMethod "getSync" o = GstBase.BaseSink.BaseSinkGetSyncMethodInfo
    ResolveAudioSinkMethod "getThrottleTime" o = GstBase.BaseSink.BaseSinkGetThrottleTimeMethodInfo
    ResolveAudioSinkMethod "getTsOffset" o = GstBase.BaseSink.BaseSinkGetTsOffsetMethodInfo
    ResolveAudioSinkMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveAudioSinkMethod "setAlignmentThreshold" o = GstAudio.AudioBaseSink.AudioBaseSinkSetAlignmentThresholdMethodInfo
    ResolveAudioSinkMethod "setAsyncEnabled" o = GstBase.BaseSink.BaseSinkSetAsyncEnabledMethodInfo
    ResolveAudioSinkMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
    ResolveAudioSinkMethod "setBlocksize" o = GstBase.BaseSink.BaseSinkSetBlocksizeMethodInfo
    ResolveAudioSinkMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
    ResolveAudioSinkMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
    ResolveAudioSinkMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
    ResolveAudioSinkMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveAudioSinkMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveAudioSinkMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveAudioSinkMethod "setCustomSlavingCallback" o = GstAudio.AudioBaseSink.AudioBaseSinkSetCustomSlavingCallbackMethodInfo
    ResolveAudioSinkMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveAudioSinkMethod "setDiscontWait" o = GstAudio.AudioBaseSink.AudioBaseSinkSetDiscontWaitMethodInfo
    ResolveAudioSinkMethod "setDriftTolerance" o = GstAudio.AudioBaseSink.AudioBaseSinkSetDriftToleranceMethodInfo
    ResolveAudioSinkMethod "setDropOutOfSegment" o = GstBase.BaseSink.BaseSinkSetDropOutOfSegmentMethodInfo
    ResolveAudioSinkMethod "setLastSampleEnabled" o = GstBase.BaseSink.BaseSinkSetLastSampleEnabledMethodInfo
    ResolveAudioSinkMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
    ResolveAudioSinkMethod "setMaxBitrate" o = GstBase.BaseSink.BaseSinkSetMaxBitrateMethodInfo
    ResolveAudioSinkMethod "setMaxLateness" o = GstBase.BaseSink.BaseSinkSetMaxLatenessMethodInfo
    ResolveAudioSinkMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveAudioSinkMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveAudioSinkMethod "setProcessingDeadline" o = GstBase.BaseSink.BaseSinkSetProcessingDeadlineMethodInfo
    ResolveAudioSinkMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveAudioSinkMethod "setProvideClock" o = GstAudio.AudioBaseSink.AudioBaseSinkSetProvideClockMethodInfo
    ResolveAudioSinkMethod "setQosEnabled" o = GstBase.BaseSink.BaseSinkSetQosEnabledMethodInfo
    ResolveAudioSinkMethod "setRenderDelay" o = GstBase.BaseSink.BaseSinkSetRenderDelayMethodInfo
    ResolveAudioSinkMethod "setSlaveMethod" o = GstAudio.AudioBaseSink.AudioBaseSinkSetSlaveMethodMethodInfo
    ResolveAudioSinkMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
    ResolveAudioSinkMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
    ResolveAudioSinkMethod "setSync" o = GstBase.BaseSink.BaseSinkSetSyncMethodInfo
    ResolveAudioSinkMethod "setThrottleTime" o = GstBase.BaseSink.BaseSinkSetThrottleTimeMethodInfo
    ResolveAudioSinkMethod "setTsOffset" o = GstBase.BaseSink.BaseSinkSetTsOffsetMethodInfo
    ResolveAudioSinkMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveAudioSinkMethod t AudioSink, O.MethodInfo info AudioSink p) => OL.IsLabel t (AudioSink -> 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 AudioSink
type instance O.AttributeList AudioSink = AudioSinkAttributeList
type AudioSinkAttributeList = ('[ '("alignmentThreshold", GstAudio.AudioBaseSink.AudioBaseSinkAlignmentThresholdPropertyInfo), '("async", GstBase.BaseSink.BaseSinkAsyncPropertyInfo), '("blocksize", GstBase.BaseSink.BaseSinkBlocksizePropertyInfo), '("bufferTime", GstAudio.AudioBaseSink.AudioBaseSinkBufferTimePropertyInfo), '("canActivatePull", GstAudio.AudioBaseSink.AudioBaseSinkCanActivatePullPropertyInfo), '("discontWait", GstAudio.AudioBaseSink.AudioBaseSinkDiscontWaitPropertyInfo), '("driftTolerance", GstAudio.AudioBaseSink.AudioBaseSinkDriftTolerancePropertyInfo), '("enableLastSample", GstBase.BaseSink.BaseSinkEnableLastSamplePropertyInfo), '("lastSample", GstBase.BaseSink.BaseSinkLastSamplePropertyInfo), '("latencyTime", GstAudio.AudioBaseSink.AudioBaseSinkLatencyTimePropertyInfo), '("maxBitrate", GstBase.BaseSink.BaseSinkMaxBitratePropertyInfo), '("maxLateness", GstBase.BaseSink.BaseSinkMaxLatenessPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("processingDeadline", GstBase.BaseSink.BaseSinkProcessingDeadlinePropertyInfo), '("provideClock", GstAudio.AudioBaseSink.AudioBaseSinkProvideClockPropertyInfo), '("qos", GstBase.BaseSink.BaseSinkQosPropertyInfo), '("renderDelay", GstBase.BaseSink.BaseSinkRenderDelayPropertyInfo), '("slaveMethod", GstAudio.AudioBaseSink.AudioBaseSinkSlaveMethodPropertyInfo), '("sync", GstBase.BaseSink.BaseSinkSyncPropertyInfo), '("throttleTime", GstBase.BaseSink.BaseSinkThrottleTimePropertyInfo), '("tsOffset", GstBase.BaseSink.BaseSinkTsOffsetPropertyInfo)] :: [(Symbol, *)])
#endif

#if ENABLE_OVERLOADING
#endif

#if ENABLE_OVERLOADING
type instance O.SignalList AudioSink = AudioSinkSignalList
type AudioSinkSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo)] :: [(Symbol, *)])

#endif