{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Subclasses must use (a subclass of) t'GI.GstAudio.Objects.AudioAggregatorPad.AudioAggregatorPad' for both
-- their source and sink pads,
-- 'GI.Gst.Structs.ElementClass.elementClassAddStaticPadTemplateWithGtype' is a convenient
-- helper.
-- 
-- t'GI.GstAudio.Objects.AudioAggregator.AudioAggregator' can perform conversion on the data arriving
-- on its sink pads, based on the format expected downstream: in order
-- to enable that behaviour, the GType of the sink pads must either be
-- a (subclass of) t'GI.GstAudio.Objects.AudioAggregatorConvertPad.AudioAggregatorConvertPad' to use the default
-- t'GI.GstAudio.Structs.AudioConverter.AudioConverter' implementation, or a subclass of t'GI.GstAudio.Objects.AudioAggregatorPad.AudioAggregatorPad'
-- implementing t'GI.GstAudio.Structs.AudioAggregatorPadClass.AudioAggregatorPadClass'.@/convert_buffer/@.
-- 
-- To allow for the output caps to change, the mechanism is the same as
-- above, with the GType of the source pad.
-- 
-- See @/GstAudioMixer/@ for an example.
-- 
-- When conversion is enabled, t'GI.GstAudio.Objects.AudioAggregator.AudioAggregator' will accept
-- any type of raw audio caps and perform conversion
-- on the data arriving on its sink pads, with whatever downstream
-- expects as the target format.
-- 
-- In case downstream caps are not fully fixated, it will use
-- the first configured sink pad to finish fixating its source pad
-- caps.
-- 
-- A notable exception for now is the sample rate, sink pads must
-- have the same sample rate as either the downstream requirement,
-- or the first configured pad, or a combination of both (when
-- downstream specifies a range or a set of acceptable rates).
-- 
-- The [samplesSelected]("GI.GstBase.Objects.Aggregator#g:signal:samplesSelected") signal is provided with some
-- additional information about the output buffer:
-- 
-- * \"offset\"  G_TYPE_UINT64   Offset in samples since segment start
-- for the position that is next to be filled in the output buffer.
-- * \"frames\"  G_TYPE_UINT   Number of frames per output buffer.
-- 
-- 
-- In addition the 'GI.GstBase.Objects.Aggregator.aggregatorPeekNextSample' function returns
-- additional information in the info t'GI.Gst.Structs.Structure.Structure' of the returned sample:
-- 
-- * \"output-offset\"  G_TYPE_UINT64   Sample offset in output segment relative to
-- the output segment\'s start where the current position of this input
-- buffer would be placed
-- * \"position\"  G_TYPE_UINT   current position in the input buffer in samples
-- * \"size\"  G_TYPE_UINT   size of the input buffer in samples
-- 
-- 
-- /Since: 1.14/

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GstAudio.Objects.AudioAggregator
    ( 

-- * Exported types
    AudioAggregator(..)                     ,
    IsAudioAggregator                       ,
    toAudioAggregator                       ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [abortState]("GI.Gst.Objects.Element#g:method:abortState"), [addControlBinding]("GI.Gst.Objects.Object#g:method:addControlBinding"), [addPad]("GI.Gst.Objects.Element#g:method:addPad"), [addPropertyDeepNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyDeepNotifyWatch"), [addPropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:addPropertyNotifyWatch"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [callAsync]("GI.Gst.Objects.Element#g:method:callAsync"), [changeState]("GI.Gst.Objects.Element#g:method:changeState"), [continueState]("GI.Gst.Objects.Element#g:method:continueState"), [createAllPads]("GI.Gst.Objects.Element#g:method:createAllPads"), [defaultError]("GI.Gst.Objects.Object#g:method:defaultError"), [finishBuffer]("GI.GstBase.Objects.Aggregator#g:method:finishBuffer"), [finishBufferList]("GI.GstBase.Objects.Aggregator#g:method:finishBufferList"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreachPad]("GI.Gst.Objects.Element#g:method:foreachPad"), [foreachSinkPad]("GI.Gst.Objects.Element#g:method:foreachSinkPad"), [foreachSrcPad]("GI.Gst.Objects.Element#g:method:foreachSrcPad"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [hasActiveControlBindings]("GI.Gst.Objects.Object#g:method:hasActiveControlBindings"), [hasAncestor]("GI.Gst.Objects.Object#g:method:hasAncestor"), [hasAsAncestor]("GI.Gst.Objects.Object#g:method:hasAsAncestor"), [hasAsParent]("GI.Gst.Objects.Object#g:method:hasAsParent"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isLockedState]("GI.Gst.Objects.Element#g:method:isLockedState"), [iteratePads]("GI.Gst.Objects.Element#g:method:iteratePads"), [iterateSinkPads]("GI.Gst.Objects.Element#g:method:iterateSinkPads"), [iterateSrcPads]("GI.Gst.Objects.Element#g:method:iterateSrcPads"), [link]("GI.Gst.Objects.Element#g:method:link"), [linkFiltered]("GI.Gst.Objects.Element#g:method:linkFiltered"), [linkPads]("GI.Gst.Objects.Element#g:method:linkPads"), [linkPadsFiltered]("GI.Gst.Objects.Element#g:method:linkPadsFiltered"), [linkPadsFull]("GI.Gst.Objects.Element#g:method:linkPadsFull"), [lostState]("GI.Gst.Objects.Element#g:method:lostState"), [messageFull]("GI.Gst.Objects.Element#g:method:messageFull"), [messageFullWithDetails]("GI.Gst.Objects.Element#g:method:messageFullWithDetails"), [negotiate]("GI.GstBase.Objects.Aggregator#g:method:negotiate"), [noMorePads]("GI.Gst.Objects.Element#g:method:noMorePads"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [peekNextSample]("GI.GstBase.Objects.Aggregator#g:method:peekNextSample"), [postMessage]("GI.Gst.Objects.Element#g:method:postMessage"), [provideClock]("GI.Gst.Objects.Element#g:method:provideClock"), [query]("GI.Gst.Objects.Element#g:method:query"), [queryConvert]("GI.Gst.Objects.Element#g:method:queryConvert"), [queryDuration]("GI.Gst.Objects.Element#g:method:queryDuration"), [queryPosition]("GI.Gst.Objects.Element#g:method:queryPosition"), [ref]("GI.Gst.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [releaseRequestPad]("GI.Gst.Objects.Element#g:method:releaseRequestPad"), [removeControlBinding]("GI.Gst.Objects.Object#g:method:removeControlBinding"), [removePad]("GI.Gst.Objects.Element#g:method:removePad"), [removePropertyNotifyWatch]("GI.Gst.Objects.Element#g:method:removePropertyNotifyWatch"), [requestPad]("GI.Gst.Objects.Element#g:method:requestPad"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [seek]("GI.Gst.Objects.Element#g:method:seek"), [seekSimple]("GI.Gst.Objects.Element#g:method:seekSimple"), [selectedSamples]("GI.GstBase.Objects.Aggregator#g:method:selectedSamples"), [sendEvent]("GI.Gst.Objects.Element#g:method:sendEvent"), [simpleGetNextTime]("GI.GstBase.Objects.Aggregator#g:method:simpleGetNextTime"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [suggestNextSync]("GI.Gst.Objects.Object#g:method:suggestNextSync"), [syncStateWithParent]("GI.Gst.Objects.Element#g:method:syncStateWithParent"), [syncValues]("GI.Gst.Objects.Object#g:method:syncValues"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [unlink]("GI.Gst.Objects.Element#g:method:unlink"), [unlinkPads]("GI.Gst.Objects.Element#g:method:unlinkPads"), [unparent]("GI.Gst.Objects.Object#g:method:unparent"), [unref]("GI.Gst.Objects.Object#g:method:unref"), [updateSegment]("GI.GstBase.Objects.Aggregator#g:method:updateSegment"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getAllocator]("GI.GstBase.Objects.Aggregator#g:method:getAllocator"), [getBaseTime]("GI.Gst.Objects.Element#g:method:getBaseTime"), [getBufferPool]("GI.GstBase.Objects.Aggregator#g:method:getBufferPool"), [getBus]("GI.Gst.Objects.Element#g:method:getBus"), [getClock]("GI.Gst.Objects.Element#g:method:getClock"), [getCompatiblePad]("GI.Gst.Objects.Element#g:method:getCompatiblePad"), [getCompatiblePadTemplate]("GI.Gst.Objects.Element#g:method:getCompatiblePadTemplate"), [getContext]("GI.Gst.Objects.Element#g:method:getContext"), [getContextUnlocked]("GI.Gst.Objects.Element#g:method:getContextUnlocked"), [getContexts]("GI.Gst.Objects.Element#g:method:getContexts"), [getControlBinding]("GI.Gst.Objects.Object#g:method:getControlBinding"), [getControlRate]("GI.Gst.Objects.Object#g:method:getControlRate"), [getCurrentClockTime]("GI.Gst.Objects.Element#g:method:getCurrentClockTime"), [getCurrentRunningTime]("GI.Gst.Objects.Element#g:method:getCurrentRunningTime"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getFactory]("GI.Gst.Objects.Element#g:method:getFactory"), [getGValueArray]("GI.Gst.Objects.Object#g:method:getGValueArray"), [getLatency]("GI.GstBase.Objects.Aggregator#g:method:getLatency"), [getMetadata]("GI.Gst.Objects.Element#g:method:getMetadata"), [getName]("GI.Gst.Objects.Object#g:method:getName"), [getPadTemplate]("GI.Gst.Objects.Element#g:method:getPadTemplate"), [getPadTemplateList]("GI.Gst.Objects.Element#g:method:getPadTemplateList"), [getParent]("GI.Gst.Objects.Object#g:method:getParent"), [getPathString]("GI.Gst.Objects.Object#g:method:getPathString"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getRequestPad]("GI.Gst.Objects.Element#g:method:getRequestPad"), [getStartTime]("GI.Gst.Objects.Element#g:method:getStartTime"), [getState]("GI.Gst.Objects.Element#g:method:getState"), [getStaticPad]("GI.Gst.Objects.Element#g:method:getStaticPad"), [getValue]("GI.Gst.Objects.Object#g:method:getValue").
-- 
-- ==== Setters
-- [setBaseTime]("GI.Gst.Objects.Element#g:method:setBaseTime"), [setBus]("GI.Gst.Objects.Element#g:method:setBus"), [setClock]("GI.Gst.Objects.Element#g:method:setClock"), [setContext]("GI.Gst.Objects.Element#g:method:setContext"), [setControlBindingDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingDisabled"), [setControlBindingsDisabled]("GI.Gst.Objects.Object#g:method:setControlBindingsDisabled"), [setControlRate]("GI.Gst.Objects.Object#g:method:setControlRate"), [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setLatency]("GI.GstBase.Objects.Aggregator#g:method:setLatency"), [setLockedState]("GI.Gst.Objects.Element#g:method:setLockedState"), [setName]("GI.Gst.Objects.Object#g:method:setName"), [setParent]("GI.Gst.Objects.Object#g:method:setParent"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setSinkCaps]("GI.GstAudio.Objects.AudioAggregator#g:method:setSinkCaps"), [setSrcCaps]("GI.GstBase.Objects.Aggregator#g:method:setSrcCaps"), [setStartTime]("GI.Gst.Objects.Element#g:method:setStartTime"), [setState]("GI.Gst.Objects.Element#g:method:setState").

#if defined(ENABLE_OVERLOADING)
    ResolveAudioAggregatorMethod            ,
#endif

-- ** setSinkCaps #method:setSinkCaps#

#if defined(ENABLE_OVERLOADING)
    AudioAggregatorSetSinkCapsMethodInfo    ,
#endif
    audioAggregatorSetSinkCaps              ,




 -- * Properties


-- ** alignmentThreshold #attr:alignmentThreshold#
-- | /No description available in the introspection data./

#if defined(ENABLE_OVERLOADING)
    AudioAggregatorAlignmentThresholdPropertyInfo,
#endif
#if defined(ENABLE_OVERLOADING)
    audioAggregatorAlignmentThreshold       ,
#endif
    constructAudioAggregatorAlignmentThreshold,
    getAudioAggregatorAlignmentThreshold    ,
    setAudioAggregatorAlignmentThreshold    ,


-- ** discontWait #attr:discontWait#
-- | /No description available in the introspection data./

#if defined(ENABLE_OVERLOADING)
    AudioAggregatorDiscontWaitPropertyInfo  ,
#endif
#if defined(ENABLE_OVERLOADING)
    audioAggregatorDiscontWait              ,
#endif
    constructAudioAggregatorDiscontWait     ,
    getAudioAggregatorDiscontWait           ,
    setAudioAggregatorDiscontWait           ,


-- ** outputBufferDuration #attr:outputBufferDuration#
-- | /No description available in the introspection data./

#if defined(ENABLE_OVERLOADING)
    AudioAggregatorOutputBufferDurationPropertyInfo,
#endif
#if defined(ENABLE_OVERLOADING)
    audioAggregatorOutputBufferDuration     ,
#endif
    constructAudioAggregatorOutputBufferDuration,
    getAudioAggregatorOutputBufferDuration  ,
    setAudioAggregatorOutputBufferDuration  ,


-- ** outputBufferDurationFraction #attr:outputBufferDurationFraction#

#if defined(ENABLE_OVERLOADING)
    AudioAggregatorOutputBufferDurationFractionPropertyInfo,
#endif
#if defined(ENABLE_OVERLOADING)
    audioAggregatorOutputBufferDurationFraction,
#endif




    ) 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.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
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.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
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 GHC.Records as R

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 qualified GI.Gst.Structs.Caps as Gst.Caps
import {-# SOURCE #-} qualified GI.GstAudio.Objects.AudioAggregatorPad as GstAudio.AudioAggregatorPad
import qualified GI.GstBase.Objects.Aggregator as GstBase.Aggregator

-- | Memory-managed wrapper type.
newtype AudioAggregator = AudioAggregator (SP.ManagedPtr AudioAggregator)
    deriving (AudioAggregator -> AudioAggregator -> Bool
(AudioAggregator -> AudioAggregator -> Bool)
-> (AudioAggregator -> AudioAggregator -> Bool)
-> Eq AudioAggregator
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AudioAggregator -> AudioAggregator -> Bool
$c/= :: AudioAggregator -> AudioAggregator -> Bool
== :: AudioAggregator -> AudioAggregator -> Bool
$c== :: AudioAggregator -> AudioAggregator -> Bool
Eq)

instance SP.ManagedPtrNewtype AudioAggregator where
    toManagedPtr :: AudioAggregator -> ManagedPtr AudioAggregator
toManagedPtr (AudioAggregator ManagedPtr AudioAggregator
p) = ManagedPtr AudioAggregator
p

foreign import ccall "gst_audio_aggregator_get_type"
    c_gst_audio_aggregator_get_type :: IO B.Types.GType

instance B.Types.TypedObject AudioAggregator where
    glibType :: IO GType
glibType = IO GType
c_gst_audio_aggregator_get_type

instance B.Types.GObject AudioAggregator

-- | Type class for types which can be safely cast to `AudioAggregator`, for instance with `toAudioAggregator`.
class (SP.GObject o, O.IsDescendantOf AudioAggregator o) => IsAudioAggregator o
instance (SP.GObject o, O.IsDescendantOf AudioAggregator o) => IsAudioAggregator o

instance O.HasParentTypes AudioAggregator
type instance O.ParentTypes AudioAggregator = '[GstBase.Aggregator.Aggregator, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object]

-- | Cast to `AudioAggregator`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toAudioAggregator :: (MIO.MonadIO m, IsAudioAggregator o) => o -> m AudioAggregator
toAudioAggregator :: forall (m :: * -> *) o.
(MonadIO m, IsAudioAggregator o) =>
o -> m AudioAggregator
toAudioAggregator = IO AudioAggregator -> m AudioAggregator
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO AudioAggregator -> m AudioAggregator)
-> (o -> IO AudioAggregator) -> o -> m AudioAggregator
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr AudioAggregator -> AudioAggregator)
-> o -> IO AudioAggregator
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr AudioAggregator -> AudioAggregator
AudioAggregator

-- | Convert 'AudioAggregator' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe AudioAggregator) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_audio_aggregator_get_type
    gvalueSet_ :: Ptr GValue -> Maybe AudioAggregator -> IO ()
gvalueSet_ Ptr GValue
gv Maybe AudioAggregator
P.Nothing = Ptr GValue -> Ptr AudioAggregator -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr AudioAggregator
forall a. Ptr a
FP.nullPtr :: FP.Ptr AudioAggregator)
    gvalueSet_ Ptr GValue
gv (P.Just AudioAggregator
obj) = AudioAggregator -> (Ptr AudioAggregator -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr AudioAggregator
obj (Ptr GValue -> Ptr AudioAggregator -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe AudioAggregator)
gvalueGet_ Ptr GValue
gv = do
        Ptr AudioAggregator
ptr <- Ptr GValue -> IO (Ptr AudioAggregator)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr AudioAggregator)
        if Ptr AudioAggregator
ptr Ptr AudioAggregator -> Ptr AudioAggregator -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr AudioAggregator
forall a. Ptr a
FP.nullPtr
        then AudioAggregator -> Maybe AudioAggregator
forall a. a -> Maybe a
P.Just (AudioAggregator -> Maybe AudioAggregator)
-> IO AudioAggregator -> IO (Maybe AudioAggregator)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr AudioAggregator -> AudioAggregator)
-> Ptr AudioAggregator -> IO AudioAggregator
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr AudioAggregator -> AudioAggregator
AudioAggregator Ptr AudioAggregator
ptr
        else Maybe AudioAggregator -> IO (Maybe AudioAggregator)
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe AudioAggregator
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveAudioAggregatorMethod (t :: Symbol) (o :: *) :: * where
    ResolveAudioAggregatorMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
    ResolveAudioAggregatorMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveAudioAggregatorMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
    ResolveAudioAggregatorMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
    ResolveAudioAggregatorMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
    ResolveAudioAggregatorMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveAudioAggregatorMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveAudioAggregatorMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
    ResolveAudioAggregatorMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
    ResolveAudioAggregatorMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
    ResolveAudioAggregatorMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
    ResolveAudioAggregatorMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveAudioAggregatorMethod "finishBuffer" o = GstBase.Aggregator.AggregatorFinishBufferMethodInfo
    ResolveAudioAggregatorMethod "finishBufferList" o = GstBase.Aggregator.AggregatorFinishBufferListMethodInfo
    ResolveAudioAggregatorMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveAudioAggregatorMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
    ResolveAudioAggregatorMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
    ResolveAudioAggregatorMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
    ResolveAudioAggregatorMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveAudioAggregatorMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveAudioAggregatorMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveAudioAggregatorMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveAudioAggregatorMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveAudioAggregatorMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveAudioAggregatorMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveAudioAggregatorMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
    ResolveAudioAggregatorMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
    ResolveAudioAggregatorMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
    ResolveAudioAggregatorMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
    ResolveAudioAggregatorMethod "link" o = Gst.Element.ElementLinkMethodInfo
    ResolveAudioAggregatorMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
    ResolveAudioAggregatorMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
    ResolveAudioAggregatorMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
    ResolveAudioAggregatorMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
    ResolveAudioAggregatorMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
    ResolveAudioAggregatorMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
    ResolveAudioAggregatorMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
    ResolveAudioAggregatorMethod "negotiate" o = GstBase.Aggregator.AggregatorNegotiateMethodInfo
    ResolveAudioAggregatorMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
    ResolveAudioAggregatorMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveAudioAggregatorMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveAudioAggregatorMethod "peekNextSample" o = GstBase.Aggregator.AggregatorPeekNextSampleMethodInfo
    ResolveAudioAggregatorMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
    ResolveAudioAggregatorMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
    ResolveAudioAggregatorMethod "query" o = Gst.Element.ElementQueryMethodInfo
    ResolveAudioAggregatorMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
    ResolveAudioAggregatorMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
    ResolveAudioAggregatorMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
    ResolveAudioAggregatorMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveAudioAggregatorMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveAudioAggregatorMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
    ResolveAudioAggregatorMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveAudioAggregatorMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
    ResolveAudioAggregatorMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
    ResolveAudioAggregatorMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
    ResolveAudioAggregatorMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveAudioAggregatorMethod "seek" o = Gst.Element.ElementSeekMethodInfo
    ResolveAudioAggregatorMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
    ResolveAudioAggregatorMethod "selectedSamples" o = GstBase.Aggregator.AggregatorSelectedSamplesMethodInfo
    ResolveAudioAggregatorMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
    ResolveAudioAggregatorMethod "simpleGetNextTime" o = GstBase.Aggregator.AggregatorSimpleGetNextTimeMethodInfo
    ResolveAudioAggregatorMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveAudioAggregatorMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveAudioAggregatorMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveAudioAggregatorMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
    ResolveAudioAggregatorMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveAudioAggregatorMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveAudioAggregatorMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
    ResolveAudioAggregatorMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
    ResolveAudioAggregatorMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveAudioAggregatorMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveAudioAggregatorMethod "updateSegment" o = GstBase.Aggregator.AggregatorUpdateSegmentMethodInfo
    ResolveAudioAggregatorMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveAudioAggregatorMethod "getAllocator" o = GstBase.Aggregator.AggregatorGetAllocatorMethodInfo
    ResolveAudioAggregatorMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
    ResolveAudioAggregatorMethod "getBufferPool" o = GstBase.Aggregator.AggregatorGetBufferPoolMethodInfo
    ResolveAudioAggregatorMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
    ResolveAudioAggregatorMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
    ResolveAudioAggregatorMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
    ResolveAudioAggregatorMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
    ResolveAudioAggregatorMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
    ResolveAudioAggregatorMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
    ResolveAudioAggregatorMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
    ResolveAudioAggregatorMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveAudioAggregatorMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveAudioAggregatorMethod "getCurrentClockTime" o = Gst.Element.ElementGetCurrentClockTimeMethodInfo
    ResolveAudioAggregatorMethod "getCurrentRunningTime" o = Gst.Element.ElementGetCurrentRunningTimeMethodInfo
    ResolveAudioAggregatorMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveAudioAggregatorMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
    ResolveAudioAggregatorMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveAudioAggregatorMethod "getLatency" o = GstBase.Aggregator.AggregatorGetLatencyMethodInfo
    ResolveAudioAggregatorMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
    ResolveAudioAggregatorMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveAudioAggregatorMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
    ResolveAudioAggregatorMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
    ResolveAudioAggregatorMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveAudioAggregatorMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveAudioAggregatorMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveAudioAggregatorMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveAudioAggregatorMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
    ResolveAudioAggregatorMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
    ResolveAudioAggregatorMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
    ResolveAudioAggregatorMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
    ResolveAudioAggregatorMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveAudioAggregatorMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
    ResolveAudioAggregatorMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
    ResolveAudioAggregatorMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
    ResolveAudioAggregatorMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
    ResolveAudioAggregatorMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveAudioAggregatorMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveAudioAggregatorMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveAudioAggregatorMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveAudioAggregatorMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveAudioAggregatorMethod "setLatency" o = GstBase.Aggregator.AggregatorSetLatencyMethodInfo
    ResolveAudioAggregatorMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
    ResolveAudioAggregatorMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveAudioAggregatorMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveAudioAggregatorMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveAudioAggregatorMethod "setSinkCaps" o = AudioAggregatorSetSinkCapsMethodInfo
    ResolveAudioAggregatorMethod "setSrcCaps" o = GstBase.Aggregator.AggregatorSetSrcCapsMethodInfo
    ResolveAudioAggregatorMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
    ResolveAudioAggregatorMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
    ResolveAudioAggregatorMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveAudioAggregatorMethod t AudioAggregator, O.OverloadedMethod info AudioAggregator p) => OL.IsLabel t (AudioAggregator -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveAudioAggregatorMethod t AudioAggregator, O.OverloadedMethod info AudioAggregator p, R.HasField t AudioAggregator p) => R.HasField t AudioAggregator p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveAudioAggregatorMethod t AudioAggregator, O.OverloadedMethodInfo info AudioAggregator) => OL.IsLabel t (O.MethodProxy info AudioAggregator) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif

-- VVV Prop "alignment-threshold"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@alignment-threshold@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioAggregator #alignmentThreshold
-- @
getAudioAggregatorAlignmentThreshold :: (MonadIO m, IsAudioAggregator o) => o -> m Word64
getAudioAggregatorAlignmentThreshold :: forall (m :: * -> *) o.
(MonadIO m, IsAudioAggregator o) =>
o -> m Word64
getAudioAggregatorAlignmentThreshold o
obj = IO Word64 -> m Word64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Word64
forall a. GObject a => a -> String -> IO Word64
B.Properties.getObjectPropertyUInt64 o
obj String
"alignment-threshold"

-- | Set the value of the “@alignment-threshold@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioAggregator [ #alignmentThreshold 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioAggregatorAlignmentThreshold :: (MonadIO m, IsAudioAggregator o) => o -> Word64 -> m ()
setAudioAggregatorAlignmentThreshold :: forall (m :: * -> *) o.
(MonadIO m, IsAudioAggregator o) =>
o -> Word64 -> m ()
setAudioAggregatorAlignmentThreshold o
obj Word64
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Word64 -> IO ()
forall a. GObject a => a -> String -> Word64 -> IO ()
B.Properties.setObjectPropertyUInt64 o
obj String
"alignment-threshold" Word64
val

-- | Construct a `GValueConstruct` with valid value for the “@alignment-threshold@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAudioAggregatorAlignmentThreshold :: (IsAudioAggregator o, MIO.MonadIO m) => Word64 -> m (GValueConstruct o)
constructAudioAggregatorAlignmentThreshold :: forall o (m :: * -> *).
(IsAudioAggregator o, MonadIO m) =>
Word64 -> m (GValueConstruct o)
constructAudioAggregatorAlignmentThreshold Word64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Word64 -> IO (GValueConstruct o)
forall o. String -> Word64 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyUInt64 String
"alignment-threshold" Word64
val

#if defined(ENABLE_OVERLOADING)
data AudioAggregatorAlignmentThresholdPropertyInfo
instance AttrInfo AudioAggregatorAlignmentThresholdPropertyInfo where
    type AttrAllowedOps AudioAggregatorAlignmentThresholdPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AudioAggregatorAlignmentThresholdPropertyInfo = IsAudioAggregator
    type AttrSetTypeConstraint AudioAggregatorAlignmentThresholdPropertyInfo = (~) Word64
    type AttrTransferTypeConstraint AudioAggregatorAlignmentThresholdPropertyInfo = (~) Word64
    type AttrTransferType AudioAggregatorAlignmentThresholdPropertyInfo = Word64
    type AttrGetType AudioAggregatorAlignmentThresholdPropertyInfo = Word64
    type AttrLabel AudioAggregatorAlignmentThresholdPropertyInfo = "alignment-threshold"
    type AttrOrigin AudioAggregatorAlignmentThresholdPropertyInfo = AudioAggregator
    attrGet = getAudioAggregatorAlignmentThreshold
    attrSet = setAudioAggregatorAlignmentThreshold
    attrTransfer _ v = do
        return v
    attrConstruct = constructAudioAggregatorAlignmentThreshold
    attrClear = undefined
#endif

-- VVV Prop "discont-wait"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@discont-wait@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioAggregator #discontWait
-- @
getAudioAggregatorDiscontWait :: (MonadIO m, IsAudioAggregator o) => o -> m Word64
getAudioAggregatorDiscontWait :: forall (m :: * -> *) o.
(MonadIO m, IsAudioAggregator o) =>
o -> m Word64
getAudioAggregatorDiscontWait o
obj = IO Word64 -> m Word64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Word64
forall a. GObject a => a -> String -> IO Word64
B.Properties.getObjectPropertyUInt64 o
obj String
"discont-wait"

-- | Set the value of the “@discont-wait@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioAggregator [ #discontWait 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioAggregatorDiscontWait :: (MonadIO m, IsAudioAggregator o) => o -> Word64 -> m ()
setAudioAggregatorDiscontWait :: forall (m :: * -> *) o.
(MonadIO m, IsAudioAggregator o) =>
o -> Word64 -> m ()
setAudioAggregatorDiscontWait o
obj Word64
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Word64 -> IO ()
forall a. GObject a => a -> String -> Word64 -> IO ()
B.Properties.setObjectPropertyUInt64 o
obj String
"discont-wait" Word64
val

-- | Construct a `GValueConstruct` with valid value for the “@discont-wait@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAudioAggregatorDiscontWait :: (IsAudioAggregator o, MIO.MonadIO m) => Word64 -> m (GValueConstruct o)
constructAudioAggregatorDiscontWait :: forall o (m :: * -> *).
(IsAudioAggregator o, MonadIO m) =>
Word64 -> m (GValueConstruct o)
constructAudioAggregatorDiscontWait Word64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Word64 -> IO (GValueConstruct o)
forall o. String -> Word64 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyUInt64 String
"discont-wait" Word64
val

#if defined(ENABLE_OVERLOADING)
data AudioAggregatorDiscontWaitPropertyInfo
instance AttrInfo AudioAggregatorDiscontWaitPropertyInfo where
    type AttrAllowedOps AudioAggregatorDiscontWaitPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AudioAggregatorDiscontWaitPropertyInfo = IsAudioAggregator
    type AttrSetTypeConstraint AudioAggregatorDiscontWaitPropertyInfo = (~) Word64
    type AttrTransferTypeConstraint AudioAggregatorDiscontWaitPropertyInfo = (~) Word64
    type AttrTransferType AudioAggregatorDiscontWaitPropertyInfo = Word64
    type AttrGetType AudioAggregatorDiscontWaitPropertyInfo = Word64
    type AttrLabel AudioAggregatorDiscontWaitPropertyInfo = "discont-wait"
    type AttrOrigin AudioAggregatorDiscontWaitPropertyInfo = AudioAggregator
    attrGet = getAudioAggregatorDiscontWait
    attrSet = setAudioAggregatorDiscontWait
    attrTransfer _ v = do
        return v
    attrConstruct = constructAudioAggregatorDiscontWait
    attrClear = undefined
#endif

-- VVV Prop "output-buffer-duration"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@output-buffer-duration@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' audioAggregator #outputBufferDuration
-- @
getAudioAggregatorOutputBufferDuration :: (MonadIO m, IsAudioAggregator o) => o -> m Word64
getAudioAggregatorOutputBufferDuration :: forall (m :: * -> *) o.
(MonadIO m, IsAudioAggregator o) =>
o -> m Word64
getAudioAggregatorOutputBufferDuration o
obj = IO Word64 -> m Word64
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Word64
forall a. GObject a => a -> String -> IO Word64
B.Properties.getObjectPropertyUInt64 o
obj String
"output-buffer-duration"

-- | Set the value of the “@output-buffer-duration@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' audioAggregator [ #outputBufferDuration 'Data.GI.Base.Attributes.:=' value ]
-- @
setAudioAggregatorOutputBufferDuration :: (MonadIO m, IsAudioAggregator o) => o -> Word64 -> m ()
setAudioAggregatorOutputBufferDuration :: forall (m :: * -> *) o.
(MonadIO m, IsAudioAggregator o) =>
o -> Word64 -> m ()
setAudioAggregatorOutputBufferDuration o
obj Word64
val = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    o -> String -> Word64 -> IO ()
forall a. GObject a => a -> String -> Word64 -> IO ()
B.Properties.setObjectPropertyUInt64 o
obj String
"output-buffer-duration" Word64
val

-- | Construct a `GValueConstruct` with valid value for the “@output-buffer-duration@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAudioAggregatorOutputBufferDuration :: (IsAudioAggregator o, MIO.MonadIO m) => Word64 -> m (GValueConstruct o)
constructAudioAggregatorOutputBufferDuration :: forall o (m :: * -> *).
(IsAudioAggregator o, MonadIO m) =>
Word64 -> m (GValueConstruct o)
constructAudioAggregatorOutputBufferDuration Word64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> m (GValueConstruct o))
-> IO (GValueConstruct o) -> m (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ do
    IO (GValueConstruct o) -> IO (GValueConstruct o)
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (GValueConstruct o) -> IO (GValueConstruct o))
-> IO (GValueConstruct o) -> IO (GValueConstruct o)
forall a b. (a -> b) -> a -> b
$ String -> Word64 -> IO (GValueConstruct o)
forall o. String -> Word64 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyUInt64 String
"output-buffer-duration" Word64
val

#if defined(ENABLE_OVERLOADING)
data AudioAggregatorOutputBufferDurationPropertyInfo
instance AttrInfo AudioAggregatorOutputBufferDurationPropertyInfo where
    type AttrAllowedOps AudioAggregatorOutputBufferDurationPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AudioAggregatorOutputBufferDurationPropertyInfo = IsAudioAggregator
    type AttrSetTypeConstraint AudioAggregatorOutputBufferDurationPropertyInfo = (~) Word64
    type AttrTransferTypeConstraint AudioAggregatorOutputBufferDurationPropertyInfo = (~) Word64
    type AttrTransferType AudioAggregatorOutputBufferDurationPropertyInfo = Word64
    type AttrGetType AudioAggregatorOutputBufferDurationPropertyInfo = Word64
    type AttrLabel AudioAggregatorOutputBufferDurationPropertyInfo = "output-buffer-duration"
    type AttrOrigin AudioAggregatorOutputBufferDurationPropertyInfo = AudioAggregator
    attrGet = getAudioAggregatorOutputBufferDuration
    attrSet = setAudioAggregatorOutputBufferDuration
    attrTransfer _ v = do
        return v
    attrConstruct = constructAudioAggregatorOutputBufferDuration
    attrClear = undefined
#endif

-- XXX Generation of property "output-buffer-duration-fraction" of object "AudioAggregator" failed.
-- Not implemented: Non-GObject object property without known gvalue_set and/or gvalue_get: TInterface (Name {namespace = "Gst", name = "Fraction"})
#if defined(ENABLE_OVERLOADING)
-- XXX Placeholder
data AudioAggregatorOutputBufferDurationFractionPropertyInfo
instance AttrInfo AudioAggregatorOutputBufferDurationFractionPropertyInfo where
    type AttrAllowedOps AudioAggregatorOutputBufferDurationFractionPropertyInfo = '[]
    type AttrSetTypeConstraint AudioAggregatorOutputBufferDurationFractionPropertyInfo = (~) ()
    type AttrTransferTypeConstraint AudioAggregatorOutputBufferDurationFractionPropertyInfo = (~) ()
    type AttrTransferType AudioAggregatorOutputBufferDurationFractionPropertyInfo = ()
    type AttrBaseTypeConstraint AudioAggregatorOutputBufferDurationFractionPropertyInfo = (~) ()
    type AttrGetType AudioAggregatorOutputBufferDurationFractionPropertyInfo = ()
    type AttrLabel AudioAggregatorOutputBufferDurationFractionPropertyInfo = ""
    type AttrOrigin AudioAggregatorOutputBufferDurationFractionPropertyInfo = AudioAggregator
    attrGet = undefined
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList AudioAggregator
type instance O.AttributeList AudioAggregator = AudioAggregatorAttributeList
type AudioAggregatorAttributeList = ('[ '("alignmentThreshold", AudioAggregatorAlignmentThresholdPropertyInfo), '("discontWait", AudioAggregatorDiscontWaitPropertyInfo), '("emitSignals", GstBase.Aggregator.AggregatorEmitSignalsPropertyInfo), '("latency", GstBase.Aggregator.AggregatorLatencyPropertyInfo), '("minUpstreamLatency", GstBase.Aggregator.AggregatorMinUpstreamLatencyPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("outputBufferDuration", AudioAggregatorOutputBufferDurationPropertyInfo), '("outputBufferDurationFraction", AudioAggregatorOutputBufferDurationFractionPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("startTime", GstBase.Aggregator.AggregatorStartTimePropertyInfo), '("startTimeSelection", GstBase.Aggregator.AggregatorStartTimeSelectionPropertyInfo)] :: [(Symbol, *)])
#endif

#if defined(ENABLE_OVERLOADING)
audioAggregatorAlignmentThreshold :: AttrLabelProxy "alignmentThreshold"
audioAggregatorAlignmentThreshold = AttrLabelProxy

audioAggregatorDiscontWait :: AttrLabelProxy "discontWait"
audioAggregatorDiscontWait = AttrLabelProxy

audioAggregatorOutputBufferDuration :: AttrLabelProxy "outputBufferDuration"
audioAggregatorOutputBufferDuration = AttrLabelProxy

audioAggregatorOutputBufferDurationFraction :: AttrLabelProxy "outputBufferDurationFraction"
audioAggregatorOutputBufferDurationFraction = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList AudioAggregator = AudioAggregatorSignalList
type AudioAggregatorSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo), '("samplesSelected", GstBase.Aggregator.AggregatorSamplesSelectedSignalInfo)] :: [(Symbol, *)])

#endif

-- method AudioAggregator::set_sink_caps
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "aagg"
--           , argType =
--               TInterface
--                 Name { namespace = "GstAudio" , name = "AudioAggregator" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "pad"
--           , argType =
--               TInterface
--                 Name { namespace = "GstAudio" , name = "AudioAggregatorPad" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , 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 = False
--           , argDoc =
--               Documentation { rawDocText = Nothing , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_audio_aggregator_set_sink_caps" gst_audio_aggregator_set_sink_caps :: 
    Ptr AudioAggregator ->                  -- aagg : TInterface (Name {namespace = "GstAudio", name = "AudioAggregator"})
    Ptr GstAudio.AudioAggregatorPad.AudioAggregatorPad -> -- pad : TInterface (Name {namespace = "GstAudio", name = "AudioAggregatorPad"})
    Ptr Gst.Caps.Caps ->                    -- caps : TInterface (Name {namespace = "Gst", name = "Caps"})
    IO ()

-- | /No description available in the introspection data./
audioAggregatorSetSinkCaps ::
    (B.CallStack.HasCallStack, MonadIO m, IsAudioAggregator a, GstAudio.AudioAggregatorPad.IsAudioAggregatorPad b) =>
    a
    -> b
    -> Gst.Caps.Caps
    -> m ()
audioAggregatorSetSinkCaps :: forall (m :: * -> *) a b.
(HasCallStack, MonadIO m, IsAudioAggregator a,
 IsAudioAggregatorPad b) =>
a -> b -> Caps -> m ()
audioAggregatorSetSinkCaps a
aagg b
pad Caps
caps = IO () -> m ()
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AudioAggregator
aagg' <- a -> IO (Ptr AudioAggregator)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
aagg
    Ptr AudioAggregatorPad
pad' <- b -> IO (Ptr AudioAggregatorPad)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr b
pad
    Ptr Caps
caps' <- Caps -> IO (Ptr Caps)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Caps
caps
    Ptr AudioAggregator -> Ptr AudioAggregatorPad -> Ptr Caps -> IO ()
gst_audio_aggregator_set_sink_caps Ptr AudioAggregator
aagg' Ptr AudioAggregatorPad
pad' Ptr Caps
caps'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
aagg
    b -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr b
pad
    Caps -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Caps
caps
    () -> IO ()
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AudioAggregatorSetSinkCapsMethodInfo
instance (signature ~ (b -> Gst.Caps.Caps -> m ()), MonadIO m, IsAudioAggregator a, GstAudio.AudioAggregatorPad.IsAudioAggregatorPad b) => O.OverloadedMethod AudioAggregatorSetSinkCapsMethodInfo a signature where
    overloadedMethod = audioAggregatorSetSinkCaps

instance O.OverloadedMethodInfo AudioAggregatorSetSinkCapsMethodInfo a where
    overloadedMethodInfo = O.MethodInfo {
        O.overloadedMethodName = "GI.GstAudio.Objects.AudioAggregator.audioAggregatorSetSinkCaps",
        O.overloadedMethodURL = "https://hackage.haskell.org/package/gi-gstaudio-1.0.23/docs/GI-GstAudio-Objects-AudioAggregator.html#v:audioAggregatorSetSinkCaps"
        }


#endif