{-# LANGUAGE ImplicitParams, RankNTypes, TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- The appsrc element can be used by applications to insert data into a
-- GStreamer pipeline. Unlike most GStreamer elements, appsrc provides
-- external API functions.
-- 
-- appsrc can be used by linking with the libgstapp library to access the
-- methods directly or by using the appsrc action signals.
-- 
-- Before operating appsrc, the caps property must be set to fixed caps
-- describing the format of the data that will be pushed with appsrc. An
-- exception to this is when pushing buffers with unknown caps, in which case no
-- caps should be set. This is typically true of file-like sources that push raw
-- byte buffers. If you don\'t want to explicitly set the caps, you can use
-- gst_app_src_push_sample. This method gets the caps associated with the
-- sample and sets them on the appsrc replacing any previously set caps (if
-- different from sample\'s caps).
-- 
-- The main way of handing data to the appsrc element is by calling the
-- 'GI.GstApp.Objects.AppSrc.appSrcPushBuffer' method or by emitting the push-buffer action signal.
-- This will put the buffer onto a queue from which appsrc will read from in its
-- streaming thread. It is important to note that data transport will not happen
-- from the thread that performed the push-buffer call.
-- 
-- The \"max-bytes\", \"max-buffers\" and \"max-time\" properties control how much
-- data can be queued in appsrc before appsrc considers the queue full. A
-- filled internal queue will always signal the \"enough-data\" signal, which
-- signals the application that it should stop pushing data into appsrc. The
-- \"block\" property will cause appsrc to block the push-buffer method until
-- free data becomes available again.
-- 
-- When the internal queue is running out of data, the \"need-data\" signal is
-- emitted, which signals the application that it should start pushing more data
-- into appsrc.
-- 
-- In addition to the \"need-data\" and \"enough-data\" signals, appsrc can emit the
-- \"seek-data\" signal when the \"stream-mode\" property is set to \"seekable\" or
-- \"random-access\". The signal argument will contain the new desired position in
-- the stream expressed in the unit set with the \"format\" property. After
-- receiving the seek-data signal, the application should push-buffers from the
-- new position.
-- 
-- These signals allow the application to operate the appsrc in two different
-- ways:
-- 
-- The push mode, in which the application repeatedly calls the push-buffer\/push-sample
-- method with a new buffer\/sample. Optionally, the queue size in the appsrc
-- can be controlled with the enough-data and need-data signals by respectively
-- stopping\/starting the push-buffer\/push-sample calls. This is a typical
-- mode of operation for the stream-type \"stream\" and \"seekable\". Use this
-- mode when implementing various network protocols or hardware devices.
-- 
-- The pull mode, in which the need-data signal triggers the next push-buffer call.
-- This mode is typically used in the \"random-access\" stream-type. Use this
-- mode for file access or other randomly accessible sources. In this mode, a
-- buffer of exactly the amount of bytes given by the need-data signal should be
-- pushed into appsrc.
-- 
-- In all modes, the size property on appsrc should contain the total stream
-- size in bytes. Setting this property is mandatory in the random-access mode.
-- For the stream and seekable modes, setting this property is optional but
-- recommended.
-- 
-- When the application has finished pushing data into appsrc, it should call
-- 'GI.GstApp.Objects.AppSrc.appSrcEndOfStream' or emit the end-of-stream action signal. After
-- this call, no more buffers can be pushed into appsrc until a flushing seek
-- occurs or the state of the appsrc has gone through READY.

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

module GI.GstApp.Objects.AppSrc
    ( 

-- * Exported types
    AppSrc(..)                              ,
    IsAppSrc                                ,
    toAppSrc                                ,


 -- * 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"), [endOfStream]("GI.GstApp.Objects.AppSrc#g:method:endOfStream"), [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"), [isAsync]("GI.GstBase.Objects.BaseSrc#g:method:isAsync"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [isLive]("GI.GstBase.Objects.BaseSrc#g:method:isLive"), [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.BaseSrc#g:method:negotiate"), [newSeamlessSegment]("GI.GstBase.Objects.BaseSrc#g:method:newSeamlessSegment"), [newSegment]("GI.GstBase.Objects.BaseSrc#g:method:newSegment"), [noMorePads]("GI.Gst.Objects.Element#g:method:noMorePads"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [postMessage]("GI.Gst.Objects.Element#g:method:postMessage"), [provideClock]("GI.Gst.Objects.Element#g:method:provideClock"), [pushBuffer]("GI.GstApp.Objects.AppSrc#g:method:pushBuffer"), [pushBufferList]("GI.GstApp.Objects.AppSrc#g:method:pushBufferList"), [pushSample]("GI.GstApp.Objects.AppSrc#g:method:pushSample"), [query]("GI.Gst.Objects.Element#g:method:query"), [queryConvert]("GI.Gst.Objects.Element#g:method:queryConvert"), [queryDuration]("GI.Gst.Objects.Element#g:method:queryDuration"), [queryLatency]("GI.GstBase.Objects.BaseSrc#g:method:queryLatency"), [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"), [requestPadSimple]("GI.Gst.Objects.Element#g:method:requestPadSimple"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [seek]("GI.Gst.Objects.Element#g:method:seek"), [seekSimple]("GI.Gst.Objects.Element#g:method:seekSimple"), [sendEvent]("GI.Gst.Objects.Element#g:method:sendEvent"), [startComplete]("GI.GstBase.Objects.BaseSrc#g:method:startComplete"), [startWait]("GI.GstBase.Objects.BaseSrc#g:method:startWait"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [submitBufferList]("GI.GstBase.Objects.BaseSrc#g:method:submitBufferList"), [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"), [waitPlaying]("GI.GstBase.Objects.BaseSrc#g:method:waitPlaying"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getAllocator]("GI.GstBase.Objects.BaseSrc#g:method:getAllocator"), [getBaseTime]("GI.Gst.Objects.Element#g:method:getBaseTime"), [getBlocksize]("GI.GstBase.Objects.BaseSrc#g:method:getBlocksize"), [getBufferPool]("GI.GstBase.Objects.BaseSrc#g:method:getBufferPool"), [getBus]("GI.Gst.Objects.Element#g:method:getBus"), [getCaps]("GI.GstApp.Objects.AppSrc#g:method:getCaps"), [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"), [getCurrentLevelBuffers]("GI.GstApp.Objects.AppSrc#g:method:getCurrentLevelBuffers"), [getCurrentLevelBytes]("GI.GstApp.Objects.AppSrc#g:method:getCurrentLevelBytes"), [getCurrentLevelTime]("GI.GstApp.Objects.AppSrc#g:method:getCurrentLevelTime"), [getCurrentRunningTime]("GI.Gst.Objects.Element#g:method:getCurrentRunningTime"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDoTimestamp]("GI.GstBase.Objects.BaseSrc#g:method:getDoTimestamp"), [getDuration]("GI.GstApp.Objects.AppSrc#g:method:getDuration"), [getEmitSignals]("GI.GstApp.Objects.AppSrc#g:method:getEmitSignals"), [getFactory]("GI.Gst.Objects.Element#g:method:getFactory"), [getGValueArray]("GI.Gst.Objects.Object#g:method:getGValueArray"), [getLatency]("GI.GstApp.Objects.AppSrc#g:method:getLatency"), [getLeakyType]("GI.GstApp.Objects.AppSrc#g:method:getLeakyType"), [getMaxBuffers]("GI.GstApp.Objects.AppSrc#g:method:getMaxBuffers"), [getMaxBytes]("GI.GstApp.Objects.AppSrc#g:method:getMaxBytes"), [getMaxTime]("GI.GstApp.Objects.AppSrc#g:method:getMaxTime"), [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"), [getProtocols]("GI.Gst.Interfaces.URIHandler#g:method:getProtocols"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getRequestPad]("GI.Gst.Objects.Element#g:method:getRequestPad"), [getSize]("GI.GstApp.Objects.AppSrc#g:method:getSize"), [getStartTime]("GI.Gst.Objects.Element#g:method:getStartTime"), [getState]("GI.Gst.Objects.Element#g:method:getState"), [getStaticPad]("GI.Gst.Objects.Element#g:method:getStaticPad"), [getStreamType]("GI.GstApp.Objects.AppSrc#g:method:getStreamType"), [getUri]("GI.Gst.Interfaces.URIHandler#g:method:getUri"), [getUriType]("GI.Gst.Interfaces.URIHandler#g:method:getUriType"), [getValue]("GI.Gst.Objects.Object#g:method:getValue").
-- 
-- ==== Setters
-- [setAsync]("GI.GstBase.Objects.BaseSrc#g:method:setAsync"), [setAutomaticEos]("GI.GstBase.Objects.BaseSrc#g:method:setAutomaticEos"), [setBaseTime]("GI.Gst.Objects.Element#g:method:setBaseTime"), [setBlocksize]("GI.GstBase.Objects.BaseSrc#g:method:setBlocksize"), [setBus]("GI.Gst.Objects.Element#g:method:setBus"), [setCaps]("GI.GstApp.Objects.AppSrc#g:method:setCaps"), [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"), [setDoTimestamp]("GI.GstBase.Objects.BaseSrc#g:method:setDoTimestamp"), [setDuration]("GI.GstApp.Objects.AppSrc#g:method:setDuration"), [setDynamicSize]("GI.GstBase.Objects.BaseSrc#g:method:setDynamicSize"), [setEmitSignals]("GI.GstApp.Objects.AppSrc#g:method:setEmitSignals"), [setFormat]("GI.GstBase.Objects.BaseSrc#g:method:setFormat"), [setLatency]("GI.GstApp.Objects.AppSrc#g:method:setLatency"), [setLeakyType]("GI.GstApp.Objects.AppSrc#g:method:setLeakyType"), [setLive]("GI.GstBase.Objects.BaseSrc#g:method:setLive"), [setLockedState]("GI.Gst.Objects.Element#g:method:setLockedState"), [setMaxBuffers]("GI.GstApp.Objects.AppSrc#g:method:setMaxBuffers"), [setMaxBytes]("GI.GstApp.Objects.AppSrc#g:method:setMaxBytes"), [setMaxTime]("GI.GstApp.Objects.AppSrc#g:method:setMaxTime"), [setName]("GI.Gst.Objects.Object#g:method:setName"), [setParent]("GI.Gst.Objects.Object#g:method:setParent"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setSize]("GI.GstApp.Objects.AppSrc#g:method:setSize"), [setStartTime]("GI.Gst.Objects.Element#g:method:setStartTime"), [setState]("GI.Gst.Objects.Element#g:method:setState"), [setStreamType]("GI.GstApp.Objects.AppSrc#g:method:setStreamType"), [setUri]("GI.Gst.Interfaces.URIHandler#g:method:setUri").

#if defined(ENABLE_OVERLOADING)
    ResolveAppSrcMethod                     ,
#endif

-- ** endOfStream #method:endOfStream#

#if defined(ENABLE_OVERLOADING)
    AppSrcEndOfStreamMethodInfo             ,
#endif
    appSrcEndOfStream                       ,


-- ** getCaps #method:getCaps#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetCapsMethodInfo                 ,
#endif
    appSrcGetCaps                           ,


-- ** getCurrentLevelBuffers #method:getCurrentLevelBuffers#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetCurrentLevelBuffersMethodInfo  ,
#endif
    appSrcGetCurrentLevelBuffers            ,


-- ** getCurrentLevelBytes #method:getCurrentLevelBytes#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetCurrentLevelBytesMethodInfo    ,
#endif
    appSrcGetCurrentLevelBytes              ,


-- ** getCurrentLevelTime #method:getCurrentLevelTime#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetCurrentLevelTimeMethodInfo     ,
#endif
    appSrcGetCurrentLevelTime               ,


-- ** getDuration #method:getDuration#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetDurationMethodInfo             ,
#endif
    appSrcGetDuration                       ,


-- ** getEmitSignals #method:getEmitSignals#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetEmitSignalsMethodInfo          ,
#endif
    appSrcGetEmitSignals                    ,


-- ** getLatency #method:getLatency#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetLatencyMethodInfo              ,
#endif
    appSrcGetLatency                        ,


-- ** getLeakyType #method:getLeakyType#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetLeakyTypeMethodInfo            ,
#endif
    appSrcGetLeakyType                      ,


-- ** getMaxBuffers #method:getMaxBuffers#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetMaxBuffersMethodInfo           ,
#endif
    appSrcGetMaxBuffers                     ,


-- ** getMaxBytes #method:getMaxBytes#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetMaxBytesMethodInfo             ,
#endif
    appSrcGetMaxBytes                       ,


-- ** getMaxTime #method:getMaxTime#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetMaxTimeMethodInfo              ,
#endif
    appSrcGetMaxTime                        ,


-- ** getSize #method:getSize#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetSizeMethodInfo                 ,
#endif
    appSrcGetSize                           ,


-- ** getStreamType #method:getStreamType#

#if defined(ENABLE_OVERLOADING)
    AppSrcGetStreamTypeMethodInfo           ,
#endif
    appSrcGetStreamType                     ,


-- ** pushBuffer #method:pushBuffer#

#if defined(ENABLE_OVERLOADING)
    AppSrcPushBufferMethodInfo              ,
#endif
    appSrcPushBuffer                        ,


-- ** pushBufferList #method:pushBufferList#

#if defined(ENABLE_OVERLOADING)
    AppSrcPushBufferListMethodInfo          ,
#endif
    appSrcPushBufferList                    ,


-- ** pushSample #method:pushSample#

#if defined(ENABLE_OVERLOADING)
    AppSrcPushSampleMethodInfo              ,
#endif
    appSrcPushSample                        ,


-- ** setCaps #method:setCaps#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetCapsMethodInfo                 ,
#endif
    appSrcSetCaps                           ,


-- ** setDuration #method:setDuration#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetDurationMethodInfo             ,
#endif
    appSrcSetDuration                       ,


-- ** setEmitSignals #method:setEmitSignals#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetEmitSignalsMethodInfo          ,
#endif
    appSrcSetEmitSignals                    ,


-- ** setLatency #method:setLatency#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetLatencyMethodInfo              ,
#endif
    appSrcSetLatency                        ,


-- ** setLeakyType #method:setLeakyType#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetLeakyTypeMethodInfo            ,
#endif
    appSrcSetLeakyType                      ,


-- ** setMaxBuffers #method:setMaxBuffers#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetMaxBuffersMethodInfo           ,
#endif
    appSrcSetMaxBuffers                     ,


-- ** setMaxBytes #method:setMaxBytes#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetMaxBytesMethodInfo             ,
#endif
    appSrcSetMaxBytes                       ,


-- ** setMaxTime #method:setMaxTime#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetMaxTimeMethodInfo              ,
#endif
    appSrcSetMaxTime                        ,


-- ** setSize #method:setSize#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetSizeMethodInfo                 ,
#endif
    appSrcSetSize                           ,


-- ** setStreamType #method:setStreamType#

#if defined(ENABLE_OVERLOADING)
    AppSrcSetStreamTypeMethodInfo           ,
#endif
    appSrcSetStreamType                     ,




 -- * Properties


-- ** block #attr:block#
-- | When max-bytes are queued and after the enough-data signal has been emitted,
-- block any further push-buffer calls until the amount of queued bytes drops
-- below the max-bytes limit.

#if defined(ENABLE_OVERLOADING)
    AppSrcBlockPropertyInfo                 ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcBlock                             ,
#endif
    constructAppSrcBlock                    ,
    getAppSrcBlock                          ,
    setAppSrcBlock                          ,


-- ** caps #attr:caps#
-- | The GstCaps that will negotiated downstream and will be put
-- on outgoing buffers.

#if defined(ENABLE_OVERLOADING)
    AppSrcCapsPropertyInfo                  ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcCaps                              ,
#endif
    clearAppSrcCaps                         ,
    constructAppSrcCaps                     ,
    getAppSrcCaps                           ,
    setAppSrcCaps                           ,


-- ** currentLevelBuffers #attr:currentLevelBuffers#
-- | The number of currently queued buffers inside appsrc.
-- 
-- /Since: 1.20/

#if defined(ENABLE_OVERLOADING)
    AppSrcCurrentLevelBuffersPropertyInfo   ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcCurrentLevelBuffers               ,
#endif
    getAppSrcCurrentLevelBuffers            ,


-- ** currentLevelBytes #attr:currentLevelBytes#
-- | The number of currently queued bytes inside appsrc.
-- 
-- /Since: 1.2/

#if defined(ENABLE_OVERLOADING)
    AppSrcCurrentLevelBytesPropertyInfo     ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcCurrentLevelBytes                 ,
#endif
    getAppSrcCurrentLevelBytes              ,


-- ** currentLevelTime #attr:currentLevelTime#
-- | The amount of currently queued time inside appsrc.
-- 
-- /Since: 1.20/

#if defined(ENABLE_OVERLOADING)
    AppSrcCurrentLevelTimePropertyInfo      ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcCurrentLevelTime                  ,
#endif
    getAppSrcCurrentLevelTime               ,


-- ** duration #attr:duration#
-- | The total duration in nanoseconds of the data stream. If the total duration is known, it
-- is recommended to configure it with this property.
-- 
-- /Since: 1.10/

#if defined(ENABLE_OVERLOADING)
    AppSrcDurationPropertyInfo              ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcDuration                          ,
#endif
    constructAppSrcDuration                 ,
    getAppSrcDuration                       ,
    setAppSrcDuration                       ,


-- ** emitSignals #attr:emitSignals#
-- | Make appsrc emit the \"need-data\", \"enough-data\" and \"seek-data\" signals.
-- This option is by default enabled for backwards compatibility reasons but
-- can disabled when needed because signal emission is expensive.

#if defined(ENABLE_OVERLOADING)
    AppSrcEmitSignalsPropertyInfo           ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcEmitSignals                       ,
#endif
    constructAppSrcEmitSignals              ,
    getAppSrcEmitSignals                    ,
    setAppSrcEmitSignals                    ,


-- ** format #attr:format#
-- | The format to use for segment events. When the source is producing
-- timestamped buffers this property should be set to GST_FORMAT_TIME.

#if defined(ENABLE_OVERLOADING)
    AppSrcFormatPropertyInfo                ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcFormat                            ,
#endif
    constructAppSrcFormat                   ,
    getAppSrcFormat                         ,
    setAppSrcFormat                         ,


-- ** handleSegmentChange #attr:handleSegmentChange#
-- | When enabled, appsrc will check GstSegment in GstSample which was
-- pushed via 'GI.GstApp.Objects.AppSrc.appSrcPushSample' or \"push-sample\" signal action.
-- If a GstSegment is changed, corresponding segment event will be followed
-- by next data flow.
-- 
-- FIXME: currently only GST_FORMAT_TIME format is supported and therefore
-- GstAppSrc[format](#g:signal:format) should be time. However, possibly t'GI.GstApp.Objects.AppSrc.AppSrc' can support
-- other formats.
-- 
-- /Since: 1.18/

#if defined(ENABLE_OVERLOADING)
    AppSrcHandleSegmentChangePropertyInfo   ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcHandleSegmentChange               ,
#endif
    constructAppSrcHandleSegmentChange      ,
    getAppSrcHandleSegmentChange            ,
    setAppSrcHandleSegmentChange            ,


-- ** isLive #attr:isLive#
-- | Instruct the source to behave like a live source. This includes that it
-- will only push out buffers in the PLAYING state.

#if defined(ENABLE_OVERLOADING)
    AppSrcIsLivePropertyInfo                ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcIsLive                            ,
#endif
    constructAppSrcIsLive                   ,
    getAppSrcIsLive                         ,
    setAppSrcIsLive                         ,


-- ** leakyType #attr:leakyType#
-- | When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsrc
-- will drop any buffers that are pushed into it once its internal queue is
-- full. The selected type defines whether to drop the oldest or new
-- buffers.
-- 
-- /Since: 1.20/

#if defined(ENABLE_OVERLOADING)
    AppSrcLeakyTypePropertyInfo             ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcLeakyType                         ,
#endif
    constructAppSrcLeakyType                ,
    getAppSrcLeakyType                      ,
    setAppSrcLeakyType                      ,


-- ** maxBuffers #attr:maxBuffers#
-- | The maximum amount of buffers that can be queued internally.
-- After the maximum amount of buffers are queued, appsrc will emit the
-- \"enough-data\" signal.
-- 
-- /Since: 1.20/

#if defined(ENABLE_OVERLOADING)
    AppSrcMaxBuffersPropertyInfo            ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcMaxBuffers                        ,
#endif
    constructAppSrcMaxBuffers               ,
    getAppSrcMaxBuffers                     ,
    setAppSrcMaxBuffers                     ,


-- ** maxBytes #attr:maxBytes#
-- | The maximum amount of bytes that can be queued internally.
-- After the maximum amount of bytes are queued, appsrc will emit the
-- \"enough-data\" signal.

#if defined(ENABLE_OVERLOADING)
    AppSrcMaxBytesPropertyInfo              ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcMaxBytes                          ,
#endif
    constructAppSrcMaxBytes                 ,
    getAppSrcMaxBytes                       ,
    setAppSrcMaxBytes                       ,


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

#if defined(ENABLE_OVERLOADING)
    AppSrcMaxLatencyPropertyInfo            ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcMaxLatency                        ,
#endif
    constructAppSrcMaxLatency               ,
    getAppSrcMaxLatency                     ,
    setAppSrcMaxLatency                     ,


-- ** maxTime #attr:maxTime#
-- | The maximum amount of time that can be queued internally.
-- After the maximum amount of time are queued, appsrc will emit the
-- \"enough-data\" signal.
-- 
-- /Since: 1.20/

#if defined(ENABLE_OVERLOADING)
    AppSrcMaxTimePropertyInfo               ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcMaxTime                           ,
#endif
    constructAppSrcMaxTime                  ,
    getAppSrcMaxTime                        ,
    setAppSrcMaxTime                        ,


-- ** minLatency #attr:minLatency#
-- | The minimum latency of the source. A value of -1 will use the default
-- latency calculations of t'GI.GstBase.Objects.BaseSrc.BaseSrc'.

#if defined(ENABLE_OVERLOADING)
    AppSrcMinLatencyPropertyInfo            ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcMinLatency                        ,
#endif
    constructAppSrcMinLatency               ,
    getAppSrcMinLatency                     ,
    setAppSrcMinLatency                     ,


-- ** minPercent #attr:minPercent#
-- | Make appsrc emit the \"need-data\" signal when the amount of bytes in the
-- queue drops below this percentage of max-bytes.

#if defined(ENABLE_OVERLOADING)
    AppSrcMinPercentPropertyInfo            ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcMinPercent                        ,
#endif
    constructAppSrcMinPercent               ,
    getAppSrcMinPercent                     ,
    setAppSrcMinPercent                     ,


-- ** size #attr:size#
-- | The total size in bytes of the data stream. If the total size is known, it
-- is recommended to configure it with this property.

#if defined(ENABLE_OVERLOADING)
    AppSrcSizePropertyInfo                  ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcSize                              ,
#endif
    constructAppSrcSize                     ,
    getAppSrcSize                           ,
    setAppSrcSize                           ,


-- ** streamType #attr:streamType#
-- | The type of stream that this source is producing.  For seekable streams the
-- application should connect to the seek-data signal.

#if defined(ENABLE_OVERLOADING)
    AppSrcStreamTypePropertyInfo            ,
#endif
#if defined(ENABLE_OVERLOADING)
    appSrcStreamType                        ,
#endif
    constructAppSrcStreamType               ,
    getAppSrcStreamType                     ,
    setAppSrcStreamType                     ,




 -- * Signals


-- ** endOfStream #signal:endOfStream#

    AppSrcEndOfStreamCallback               ,
#if defined(ENABLE_OVERLOADING)
    AppSrcEndOfStreamSignalInfo             ,
#endif
    afterAppSrcEndOfStream                  ,
    onAppSrcEndOfStream                     ,


-- ** enoughData #signal:enoughData#

    AppSrcEnoughDataCallback                ,
#if defined(ENABLE_OVERLOADING)
    AppSrcEnoughDataSignalInfo              ,
#endif
    afterAppSrcEnoughData                   ,
    onAppSrcEnoughData                      ,


-- ** needData #signal:needData#

    AppSrcNeedDataCallback                  ,
#if defined(ENABLE_OVERLOADING)
    AppSrcNeedDataSignalInfo                ,
#endif
    afterAppSrcNeedData                     ,
    onAppSrcNeedData                        ,


-- ** pushBuffer #signal:pushBuffer#

    AppSrcPushBufferCallback                ,
#if defined(ENABLE_OVERLOADING)
    AppSrcPushBufferSignalInfo              ,
#endif
    afterAppSrcPushBuffer                   ,
    onAppSrcPushBuffer                      ,


-- ** pushBufferList #signal:pushBufferList#

    AppSrcPushBufferListCallback            ,
#if defined(ENABLE_OVERLOADING)
    AppSrcPushBufferListSignalInfo          ,
#endif
    afterAppSrcPushBufferList               ,
    onAppSrcPushBufferList                  ,


-- ** pushSample #signal:pushSample#

    AppSrcPushSampleCallback                ,
#if defined(ENABLE_OVERLOADING)
    AppSrcPushSampleSignalInfo              ,
#endif
    afterAppSrcPushSample                   ,
    onAppSrcPushSample                      ,


-- ** seekData #signal:seekData#

    AppSrcSeekDataCallback                  ,
#if defined(ENABLE_OVERLOADING)
    AppSrcSeekDataSignalInfo                ,
#endif
    afterAppSrcSeekData                     ,
    onAppSrcSeekData                        ,




    ) 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.GHashTable as B.GHT
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.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
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.Enums as Gst.Enums
import qualified GI.Gst.Interfaces.URIHandler as Gst.URIHandler
import qualified GI.Gst.Objects.Element as Gst.Element
import qualified GI.Gst.Objects.Object as Gst.Object
import qualified GI.Gst.Structs.Buffer as Gst.Buffer
import qualified GI.Gst.Structs.BufferList as Gst.BufferList
import qualified GI.Gst.Structs.Caps as Gst.Caps
import qualified GI.Gst.Structs.Sample as Gst.Sample
import {-# SOURCE #-} qualified GI.GstApp.Enums as GstApp.Enums
import qualified GI.GstBase.Objects.BaseSrc as GstBase.BaseSrc

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

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

foreign import ccall "gst_app_src_get_type"
    c_gst_app_src_get_type :: IO B.Types.GType

instance B.Types.TypedObject AppSrc where
    glibType :: IO GType
glibType = IO GType
c_gst_app_src_get_type

instance B.Types.GObject AppSrc

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

instance O.HasParentTypes AppSrc
type instance O.ParentTypes AppSrc = '[GstBase.BaseSrc.BaseSrc, Gst.Element.Element, Gst.Object.Object, GObject.Object.Object, Gst.URIHandler.URIHandler]

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

-- | Convert 'AppSrc' 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 AppSrc) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_gst_app_src_get_type
    gvalueSet_ :: Ptr GValue -> Maybe AppSrc -> IO ()
gvalueSet_ Ptr GValue
gv Maybe AppSrc
P.Nothing = Ptr GValue -> Ptr AppSrc -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr AppSrc
forall a. Ptr a
FP.nullPtr :: FP.Ptr AppSrc)
    gvalueSet_ Ptr GValue
gv (P.Just AppSrc
obj) = AppSrc -> (Ptr AppSrc -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr AppSrc
obj (Ptr GValue -> Ptr AppSrc -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe AppSrc)
gvalueGet_ Ptr GValue
gv = do
        Ptr AppSrc
ptr <- Ptr GValue -> IO (Ptr AppSrc)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr AppSrc)
        if Ptr AppSrc
ptr Ptr AppSrc -> Ptr AppSrc -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr AppSrc
forall a. Ptr a
FP.nullPtr
        then AppSrc -> Maybe AppSrc
forall a. a -> Maybe a
P.Just (AppSrc -> Maybe AppSrc) -> IO AppSrc -> IO (Maybe AppSrc)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr AppSrc -> AppSrc) -> Ptr AppSrc -> IO AppSrc
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr AppSrc -> AppSrc
AppSrc Ptr AppSrc
ptr
        else Maybe AppSrc -> IO (Maybe AppSrc)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe AppSrc
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveAppSrcMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveAppSrcMethod "abortState" o = Gst.Element.ElementAbortStateMethodInfo
    ResolveAppSrcMethod "addControlBinding" o = Gst.Object.ObjectAddControlBindingMethodInfo
    ResolveAppSrcMethod "addPad" o = Gst.Element.ElementAddPadMethodInfo
    ResolveAppSrcMethod "addPropertyDeepNotifyWatch" o = Gst.Element.ElementAddPropertyDeepNotifyWatchMethodInfo
    ResolveAppSrcMethod "addPropertyNotifyWatch" o = Gst.Element.ElementAddPropertyNotifyWatchMethodInfo
    ResolveAppSrcMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveAppSrcMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveAppSrcMethod "callAsync" o = Gst.Element.ElementCallAsyncMethodInfo
    ResolveAppSrcMethod "changeState" o = Gst.Element.ElementChangeStateMethodInfo
    ResolveAppSrcMethod "continueState" o = Gst.Element.ElementContinueStateMethodInfo
    ResolveAppSrcMethod "createAllPads" o = Gst.Element.ElementCreateAllPadsMethodInfo
    ResolveAppSrcMethod "defaultError" o = Gst.Object.ObjectDefaultErrorMethodInfo
    ResolveAppSrcMethod "endOfStream" o = AppSrcEndOfStreamMethodInfo
    ResolveAppSrcMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveAppSrcMethod "foreachPad" o = Gst.Element.ElementForeachPadMethodInfo
    ResolveAppSrcMethod "foreachSinkPad" o = Gst.Element.ElementForeachSinkPadMethodInfo
    ResolveAppSrcMethod "foreachSrcPad" o = Gst.Element.ElementForeachSrcPadMethodInfo
    ResolveAppSrcMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveAppSrcMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveAppSrcMethod "hasActiveControlBindings" o = Gst.Object.ObjectHasActiveControlBindingsMethodInfo
    ResolveAppSrcMethod "hasAncestor" o = Gst.Object.ObjectHasAncestorMethodInfo
    ResolveAppSrcMethod "hasAsAncestor" o = Gst.Object.ObjectHasAsAncestorMethodInfo
    ResolveAppSrcMethod "hasAsParent" o = Gst.Object.ObjectHasAsParentMethodInfo
    ResolveAppSrcMethod "isAsync" o = GstBase.BaseSrc.BaseSrcIsAsyncMethodInfo
    ResolveAppSrcMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveAppSrcMethod "isLive" o = GstBase.BaseSrc.BaseSrcIsLiveMethodInfo
    ResolveAppSrcMethod "isLockedState" o = Gst.Element.ElementIsLockedStateMethodInfo
    ResolveAppSrcMethod "iteratePads" o = Gst.Element.ElementIteratePadsMethodInfo
    ResolveAppSrcMethod "iterateSinkPads" o = Gst.Element.ElementIterateSinkPadsMethodInfo
    ResolveAppSrcMethod "iterateSrcPads" o = Gst.Element.ElementIterateSrcPadsMethodInfo
    ResolveAppSrcMethod "link" o = Gst.Element.ElementLinkMethodInfo
    ResolveAppSrcMethod "linkFiltered" o = Gst.Element.ElementLinkFilteredMethodInfo
    ResolveAppSrcMethod "linkPads" o = Gst.Element.ElementLinkPadsMethodInfo
    ResolveAppSrcMethod "linkPadsFiltered" o = Gst.Element.ElementLinkPadsFilteredMethodInfo
    ResolveAppSrcMethod "linkPadsFull" o = Gst.Element.ElementLinkPadsFullMethodInfo
    ResolveAppSrcMethod "lostState" o = Gst.Element.ElementLostStateMethodInfo
    ResolveAppSrcMethod "messageFull" o = Gst.Element.ElementMessageFullMethodInfo
    ResolveAppSrcMethod "messageFullWithDetails" o = Gst.Element.ElementMessageFullWithDetailsMethodInfo
    ResolveAppSrcMethod "negotiate" o = GstBase.BaseSrc.BaseSrcNegotiateMethodInfo
    ResolveAppSrcMethod "newSeamlessSegment" o = GstBase.BaseSrc.BaseSrcNewSeamlessSegmentMethodInfo
    ResolveAppSrcMethod "newSegment" o = GstBase.BaseSrc.BaseSrcNewSegmentMethodInfo
    ResolveAppSrcMethod "noMorePads" o = Gst.Element.ElementNoMorePadsMethodInfo
    ResolveAppSrcMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveAppSrcMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveAppSrcMethod "postMessage" o = Gst.Element.ElementPostMessageMethodInfo
    ResolveAppSrcMethod "provideClock" o = Gst.Element.ElementProvideClockMethodInfo
    ResolveAppSrcMethod "pushBuffer" o = AppSrcPushBufferMethodInfo
    ResolveAppSrcMethod "pushBufferList" o = AppSrcPushBufferListMethodInfo
    ResolveAppSrcMethod "pushSample" o = AppSrcPushSampleMethodInfo
    ResolveAppSrcMethod "query" o = Gst.Element.ElementQueryMethodInfo
    ResolveAppSrcMethod "queryConvert" o = Gst.Element.ElementQueryConvertMethodInfo
    ResolveAppSrcMethod "queryDuration" o = Gst.Element.ElementQueryDurationMethodInfo
    ResolveAppSrcMethod "queryLatency" o = GstBase.BaseSrc.BaseSrcQueryLatencyMethodInfo
    ResolveAppSrcMethod "queryPosition" o = Gst.Element.ElementQueryPositionMethodInfo
    ResolveAppSrcMethod "ref" o = Gst.Object.ObjectRefMethodInfo
    ResolveAppSrcMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveAppSrcMethod "releaseRequestPad" o = Gst.Element.ElementReleaseRequestPadMethodInfo
    ResolveAppSrcMethod "removeControlBinding" o = Gst.Object.ObjectRemoveControlBindingMethodInfo
    ResolveAppSrcMethod "removePad" o = Gst.Element.ElementRemovePadMethodInfo
    ResolveAppSrcMethod "removePropertyNotifyWatch" o = Gst.Element.ElementRemovePropertyNotifyWatchMethodInfo
    ResolveAppSrcMethod "requestPad" o = Gst.Element.ElementRequestPadMethodInfo
    ResolveAppSrcMethod "requestPadSimple" o = Gst.Element.ElementRequestPadSimpleMethodInfo
    ResolveAppSrcMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveAppSrcMethod "seek" o = Gst.Element.ElementSeekMethodInfo
    ResolveAppSrcMethod "seekSimple" o = Gst.Element.ElementSeekSimpleMethodInfo
    ResolveAppSrcMethod "sendEvent" o = Gst.Element.ElementSendEventMethodInfo
    ResolveAppSrcMethod "startComplete" o = GstBase.BaseSrc.BaseSrcStartCompleteMethodInfo
    ResolveAppSrcMethod "startWait" o = GstBase.BaseSrc.BaseSrcStartWaitMethodInfo
    ResolveAppSrcMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveAppSrcMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveAppSrcMethod "submitBufferList" o = GstBase.BaseSrc.BaseSrcSubmitBufferListMethodInfo
    ResolveAppSrcMethod "suggestNextSync" o = Gst.Object.ObjectSuggestNextSyncMethodInfo
    ResolveAppSrcMethod "syncStateWithParent" o = Gst.Element.ElementSyncStateWithParentMethodInfo
    ResolveAppSrcMethod "syncValues" o = Gst.Object.ObjectSyncValuesMethodInfo
    ResolveAppSrcMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveAppSrcMethod "unlink" o = Gst.Element.ElementUnlinkMethodInfo
    ResolveAppSrcMethod "unlinkPads" o = Gst.Element.ElementUnlinkPadsMethodInfo
    ResolveAppSrcMethod "unparent" o = Gst.Object.ObjectUnparentMethodInfo
    ResolveAppSrcMethod "unref" o = Gst.Object.ObjectUnrefMethodInfo
    ResolveAppSrcMethod "waitPlaying" o = GstBase.BaseSrc.BaseSrcWaitPlayingMethodInfo
    ResolveAppSrcMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveAppSrcMethod "getAllocator" o = GstBase.BaseSrc.BaseSrcGetAllocatorMethodInfo
    ResolveAppSrcMethod "getBaseTime" o = Gst.Element.ElementGetBaseTimeMethodInfo
    ResolveAppSrcMethod "getBlocksize" o = GstBase.BaseSrc.BaseSrcGetBlocksizeMethodInfo
    ResolveAppSrcMethod "getBufferPool" o = GstBase.BaseSrc.BaseSrcGetBufferPoolMethodInfo
    ResolveAppSrcMethod "getBus" o = Gst.Element.ElementGetBusMethodInfo
    ResolveAppSrcMethod "getCaps" o = AppSrcGetCapsMethodInfo
    ResolveAppSrcMethod "getClock" o = Gst.Element.ElementGetClockMethodInfo
    ResolveAppSrcMethod "getCompatiblePad" o = Gst.Element.ElementGetCompatiblePadMethodInfo
    ResolveAppSrcMethod "getCompatiblePadTemplate" o = Gst.Element.ElementGetCompatiblePadTemplateMethodInfo
    ResolveAppSrcMethod "getContext" o = Gst.Element.ElementGetContextMethodInfo
    ResolveAppSrcMethod "getContextUnlocked" o = Gst.Element.ElementGetContextUnlockedMethodInfo
    ResolveAppSrcMethod "getContexts" o = Gst.Element.ElementGetContextsMethodInfo
    ResolveAppSrcMethod "getControlBinding" o = Gst.Object.ObjectGetControlBindingMethodInfo
    ResolveAppSrcMethod "getControlRate" o = Gst.Object.ObjectGetControlRateMethodInfo
    ResolveAppSrcMethod "getCurrentClockTime" o = Gst.Element.ElementGetCurrentClockTimeMethodInfo
    ResolveAppSrcMethod "getCurrentLevelBuffers" o = AppSrcGetCurrentLevelBuffersMethodInfo
    ResolveAppSrcMethod "getCurrentLevelBytes" o = AppSrcGetCurrentLevelBytesMethodInfo
    ResolveAppSrcMethod "getCurrentLevelTime" o = AppSrcGetCurrentLevelTimeMethodInfo
    ResolveAppSrcMethod "getCurrentRunningTime" o = Gst.Element.ElementGetCurrentRunningTimeMethodInfo
    ResolveAppSrcMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveAppSrcMethod "getDoTimestamp" o = GstBase.BaseSrc.BaseSrcGetDoTimestampMethodInfo
    ResolveAppSrcMethod "getDuration" o = AppSrcGetDurationMethodInfo
    ResolveAppSrcMethod "getEmitSignals" o = AppSrcGetEmitSignalsMethodInfo
    ResolveAppSrcMethod "getFactory" o = Gst.Element.ElementGetFactoryMethodInfo
    ResolveAppSrcMethod "getGValueArray" o = Gst.Object.ObjectGetGValueArrayMethodInfo
    ResolveAppSrcMethod "getLatency" o = AppSrcGetLatencyMethodInfo
    ResolveAppSrcMethod "getLeakyType" o = AppSrcGetLeakyTypeMethodInfo
    ResolveAppSrcMethod "getMaxBuffers" o = AppSrcGetMaxBuffersMethodInfo
    ResolveAppSrcMethod "getMaxBytes" o = AppSrcGetMaxBytesMethodInfo
    ResolveAppSrcMethod "getMaxTime" o = AppSrcGetMaxTimeMethodInfo
    ResolveAppSrcMethod "getMetadata" o = Gst.Element.ElementGetMetadataMethodInfo
    ResolveAppSrcMethod "getName" o = Gst.Object.ObjectGetNameMethodInfo
    ResolveAppSrcMethod "getPadTemplate" o = Gst.Element.ElementGetPadTemplateMethodInfo
    ResolveAppSrcMethod "getPadTemplateList" o = Gst.Element.ElementGetPadTemplateListMethodInfo
    ResolveAppSrcMethod "getParent" o = Gst.Object.ObjectGetParentMethodInfo
    ResolveAppSrcMethod "getPathString" o = Gst.Object.ObjectGetPathStringMethodInfo
    ResolveAppSrcMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveAppSrcMethod "getProtocols" o = Gst.URIHandler.URIHandlerGetProtocolsMethodInfo
    ResolveAppSrcMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveAppSrcMethod "getRequestPad" o = Gst.Element.ElementGetRequestPadMethodInfo
    ResolveAppSrcMethod "getSize" o = AppSrcGetSizeMethodInfo
    ResolveAppSrcMethod "getStartTime" o = Gst.Element.ElementGetStartTimeMethodInfo
    ResolveAppSrcMethod "getState" o = Gst.Element.ElementGetStateMethodInfo
    ResolveAppSrcMethod "getStaticPad" o = Gst.Element.ElementGetStaticPadMethodInfo
    ResolveAppSrcMethod "getStreamType" o = AppSrcGetStreamTypeMethodInfo
    ResolveAppSrcMethod "getUri" o = Gst.URIHandler.URIHandlerGetUriMethodInfo
    ResolveAppSrcMethod "getUriType" o = Gst.URIHandler.URIHandlerGetUriTypeMethodInfo
    ResolveAppSrcMethod "getValue" o = Gst.Object.ObjectGetValueMethodInfo
    ResolveAppSrcMethod "setAsync" o = GstBase.BaseSrc.BaseSrcSetAsyncMethodInfo
    ResolveAppSrcMethod "setAutomaticEos" o = GstBase.BaseSrc.BaseSrcSetAutomaticEosMethodInfo
    ResolveAppSrcMethod "setBaseTime" o = Gst.Element.ElementSetBaseTimeMethodInfo
    ResolveAppSrcMethod "setBlocksize" o = GstBase.BaseSrc.BaseSrcSetBlocksizeMethodInfo
    ResolveAppSrcMethod "setBus" o = Gst.Element.ElementSetBusMethodInfo
    ResolveAppSrcMethod "setCaps" o = AppSrcSetCapsMethodInfo
    ResolveAppSrcMethod "setClock" o = Gst.Element.ElementSetClockMethodInfo
    ResolveAppSrcMethod "setContext" o = Gst.Element.ElementSetContextMethodInfo
    ResolveAppSrcMethod "setControlBindingDisabled" o = Gst.Object.ObjectSetControlBindingDisabledMethodInfo
    ResolveAppSrcMethod "setControlBindingsDisabled" o = Gst.Object.ObjectSetControlBindingsDisabledMethodInfo
    ResolveAppSrcMethod "setControlRate" o = Gst.Object.ObjectSetControlRateMethodInfo
    ResolveAppSrcMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveAppSrcMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveAppSrcMethod "setDoTimestamp" o = GstBase.BaseSrc.BaseSrcSetDoTimestampMethodInfo
    ResolveAppSrcMethod "setDuration" o = AppSrcSetDurationMethodInfo
    ResolveAppSrcMethod "setDynamicSize" o = GstBase.BaseSrc.BaseSrcSetDynamicSizeMethodInfo
    ResolveAppSrcMethod "setEmitSignals" o = AppSrcSetEmitSignalsMethodInfo
    ResolveAppSrcMethod "setFormat" o = GstBase.BaseSrc.BaseSrcSetFormatMethodInfo
    ResolveAppSrcMethod "setLatency" o = AppSrcSetLatencyMethodInfo
    ResolveAppSrcMethod "setLeakyType" o = AppSrcSetLeakyTypeMethodInfo
    ResolveAppSrcMethod "setLive" o = GstBase.BaseSrc.BaseSrcSetLiveMethodInfo
    ResolveAppSrcMethod "setLockedState" o = Gst.Element.ElementSetLockedStateMethodInfo
    ResolveAppSrcMethod "setMaxBuffers" o = AppSrcSetMaxBuffersMethodInfo
    ResolveAppSrcMethod "setMaxBytes" o = AppSrcSetMaxBytesMethodInfo
    ResolveAppSrcMethod "setMaxTime" o = AppSrcSetMaxTimeMethodInfo
    ResolveAppSrcMethod "setName" o = Gst.Object.ObjectSetNameMethodInfo
    ResolveAppSrcMethod "setParent" o = Gst.Object.ObjectSetParentMethodInfo
    ResolveAppSrcMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveAppSrcMethod "setSize" o = AppSrcSetSizeMethodInfo
    ResolveAppSrcMethod "setStartTime" o = Gst.Element.ElementSetStartTimeMethodInfo
    ResolveAppSrcMethod "setState" o = Gst.Element.ElementSetStateMethodInfo
    ResolveAppSrcMethod "setStreamType" o = AppSrcSetStreamTypeMethodInfo
    ResolveAppSrcMethod "setUri" o = Gst.URIHandler.URIHandlerSetUriMethodInfo
    ResolveAppSrcMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveAppSrcMethod t AppSrc, O.OverloadedMethod info AppSrc p) => OL.IsLabel t (AppSrc -> 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 ~ ResolveAppSrcMethod t AppSrc, O.OverloadedMethod info AppSrc p, R.HasField t AppSrc p) => R.HasField t AppSrc p where
    getField = O.overloadedMethod @info

#endif

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

#endif

-- signal AppSrc::end-of-stream
-- | Notify /@appsrc@/ that no more buffer are available.
type AppSrcEndOfStreamCallback =
    IO Gst.Enums.FlowReturn

type C_AppSrcEndOfStreamCallback =
    Ptr AppSrc ->                           -- object
    Ptr () ->                               -- user_data
    IO CInt

-- | Generate a function pointer callable from C code, from a `C_AppSrcEndOfStreamCallback`.
foreign import ccall "wrapper"
    mk_AppSrcEndOfStreamCallback :: C_AppSrcEndOfStreamCallback -> IO (FunPtr C_AppSrcEndOfStreamCallback)

wrap_AppSrcEndOfStreamCallback :: 
    GObject a => (a -> AppSrcEndOfStreamCallback) ->
    C_AppSrcEndOfStreamCallback
wrap_AppSrcEndOfStreamCallback :: forall a.
GObject a =>
(a -> AppSrcEndOfStreamCallback) -> C_AppSrcEndOfStreamCallback
wrap_AppSrcEndOfStreamCallback a -> AppSrcEndOfStreamCallback
gi'cb Ptr AppSrc
gi'selfPtr Ptr ()
_ = do
    FlowReturn
result <- Ptr AppSrc
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr AppSrc
gi'selfPtr ((AppSrc -> AppSrcEndOfStreamCallback)
 -> AppSrcEndOfStreamCallback)
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall a b. (a -> b) -> a -> b
$ \AppSrc
gi'self -> a -> AppSrcEndOfStreamCallback
gi'cb (AppSrc -> a
forall a b. Coercible a b => a -> b
Coerce.coerce AppSrc
gi'self) 
    let result' :: CInt
result' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (FlowReturn -> Int) -> FlowReturn -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FlowReturn -> Int
forall a. Enum a => a -> Int
fromEnum) FlowReturn
result
    CInt -> IO CInt
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CInt
result'


-- | Connect a signal handler for the [endOfStream](#signal:endOfStream) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' appSrc #endOfStream callback
-- @
-- 
-- 
onAppSrcEndOfStream :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcEndOfStreamCallback) -> m SignalHandlerId
onAppSrcEndOfStream :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcEndOfStreamCallback) -> m SignalHandlerId
onAppSrcEndOfStream a
obj (?self::a) => AppSrcEndOfStreamCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcEndOfStreamCallback
wrapped a
self = let ?self = a
?self::a
self in AppSrcEndOfStreamCallback
(?self::a) => AppSrcEndOfStreamCallback
cb
    let wrapped' :: C_AppSrcEndOfStreamCallback
wrapped' = (a -> AppSrcEndOfStreamCallback) -> C_AppSrcEndOfStreamCallback
forall a.
GObject a =>
(a -> AppSrcEndOfStreamCallback) -> C_AppSrcEndOfStreamCallback
wrap_AppSrcEndOfStreamCallback a -> AppSrcEndOfStreamCallback
wrapped
    FunPtr C_AppSrcEndOfStreamCallback
wrapped'' <- C_AppSrcEndOfStreamCallback
-> IO (FunPtr C_AppSrcEndOfStreamCallback)
mk_AppSrcEndOfStreamCallback C_AppSrcEndOfStreamCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcEndOfStreamCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"end-of-stream" FunPtr C_AppSrcEndOfStreamCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [endOfStream](#signal:endOfStream) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' appSrc #endOfStream callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterAppSrcEndOfStream :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcEndOfStreamCallback) -> m SignalHandlerId
afterAppSrcEndOfStream :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcEndOfStreamCallback) -> m SignalHandlerId
afterAppSrcEndOfStream a
obj (?self::a) => AppSrcEndOfStreamCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcEndOfStreamCallback
wrapped a
self = let ?self = a
?self::a
self in AppSrcEndOfStreamCallback
(?self::a) => AppSrcEndOfStreamCallback
cb
    let wrapped' :: C_AppSrcEndOfStreamCallback
wrapped' = (a -> AppSrcEndOfStreamCallback) -> C_AppSrcEndOfStreamCallback
forall a.
GObject a =>
(a -> AppSrcEndOfStreamCallback) -> C_AppSrcEndOfStreamCallback
wrap_AppSrcEndOfStreamCallback a -> AppSrcEndOfStreamCallback
wrapped
    FunPtr C_AppSrcEndOfStreamCallback
wrapped'' <- C_AppSrcEndOfStreamCallback
-> IO (FunPtr C_AppSrcEndOfStreamCallback)
mk_AppSrcEndOfStreamCallback C_AppSrcEndOfStreamCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcEndOfStreamCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"end-of-stream" FunPtr C_AppSrcEndOfStreamCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data AppSrcEndOfStreamSignalInfo
instance SignalInfo AppSrcEndOfStreamSignalInfo where
    type HaskellCallbackType AppSrcEndOfStreamSignalInfo = AppSrcEndOfStreamCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_AppSrcEndOfStreamCallback cb
        cb'' <- mk_AppSrcEndOfStreamCallback cb'
        connectSignalFunPtr obj "end-of-stream" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc::end-of-stream"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:signal:endOfStream"})

#endif

-- signal AppSrc::enough-data
-- | Signal that the source has enough data. It is recommended that the
-- application stops calling push-buffer until the need-data signal is
-- emitted again to avoid excessive buffer queueing.
type AppSrcEnoughDataCallback =
    IO ()

type C_AppSrcEnoughDataCallback =
    Ptr AppSrc ->                           -- object
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_AppSrcEnoughDataCallback`.
foreign import ccall "wrapper"
    mk_AppSrcEnoughDataCallback :: C_AppSrcEnoughDataCallback -> IO (FunPtr C_AppSrcEnoughDataCallback)

wrap_AppSrcEnoughDataCallback :: 
    GObject a => (a -> AppSrcEnoughDataCallback) ->
    C_AppSrcEnoughDataCallback
wrap_AppSrcEnoughDataCallback :: forall a. GObject a => (a -> IO ()) -> C_AppSrcEnoughDataCallback
wrap_AppSrcEnoughDataCallback a -> IO ()
gi'cb Ptr AppSrc
gi'selfPtr Ptr ()
_ = do
    Ptr AppSrc -> (AppSrc -> IO ()) -> IO ()
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr AppSrc
gi'selfPtr ((AppSrc -> IO ()) -> IO ()) -> (AppSrc -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \AppSrc
gi'self -> a -> IO ()
gi'cb (AppSrc -> a
forall a b. Coercible a b => a -> b
Coerce.coerce AppSrc
gi'self) 


-- | Connect a signal handler for the [enoughData](#signal:enoughData) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' appSrc #enoughData callback
-- @
-- 
-- 
onAppSrcEnoughData :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcEnoughDataCallback) -> m SignalHandlerId
onAppSrcEnoughData :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
onAppSrcEnoughData a
obj (?self::a) => IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> IO ()
wrapped a
self = let ?self = a
?self::a
self in IO ()
(?self::a) => IO ()
cb
    let wrapped' :: C_AppSrcEnoughDataCallback
wrapped' = (a -> IO ()) -> C_AppSrcEnoughDataCallback
forall a. GObject a => (a -> IO ()) -> C_AppSrcEnoughDataCallback
wrap_AppSrcEnoughDataCallback a -> IO ()
wrapped
    FunPtr C_AppSrcEnoughDataCallback
wrapped'' <- C_AppSrcEnoughDataCallback
-> IO (FunPtr C_AppSrcEnoughDataCallback)
mk_AppSrcEnoughDataCallback C_AppSrcEnoughDataCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcEnoughDataCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"enough-data" FunPtr C_AppSrcEnoughDataCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [enoughData](#signal:enoughData) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' appSrc #enoughData callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterAppSrcEnoughData :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcEnoughDataCallback) -> m SignalHandlerId
afterAppSrcEnoughData :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => IO ()) -> m SignalHandlerId
afterAppSrcEnoughData a
obj (?self::a) => IO ()
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> IO ()
wrapped a
self = let ?self = a
?self::a
self in IO ()
(?self::a) => IO ()
cb
    let wrapped' :: C_AppSrcEnoughDataCallback
wrapped' = (a -> IO ()) -> C_AppSrcEnoughDataCallback
forall a. GObject a => (a -> IO ()) -> C_AppSrcEnoughDataCallback
wrap_AppSrcEnoughDataCallback a -> IO ()
wrapped
    FunPtr C_AppSrcEnoughDataCallback
wrapped'' <- C_AppSrcEnoughDataCallback
-> IO (FunPtr C_AppSrcEnoughDataCallback)
mk_AppSrcEnoughDataCallback C_AppSrcEnoughDataCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcEnoughDataCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"enough-data" FunPtr C_AppSrcEnoughDataCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data AppSrcEnoughDataSignalInfo
instance SignalInfo AppSrcEnoughDataSignalInfo where
    type HaskellCallbackType AppSrcEnoughDataSignalInfo = AppSrcEnoughDataCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_AppSrcEnoughDataCallback cb
        cb'' <- mk_AppSrcEnoughDataCallback cb'
        connectSignalFunPtr obj "enough-data" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc::enough-data"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:signal:enoughData"})

#endif

-- signal AppSrc::need-data
-- | Signal that the source needs more data. In the callback or from another
-- thread you should call push-buffer or end-of-stream.
-- 
-- /@length@/ is just a hint and when it is set to -1, any number of bytes can be
-- pushed into /@appsrc@/.
-- 
-- You can call push-buffer multiple times until the enough-data signal is
-- fired.
type AppSrcNeedDataCallback =
    Word32
    -- ^ /@length@/: the amount of bytes needed.
    -> IO ()

type C_AppSrcNeedDataCallback =
    Ptr AppSrc ->                           -- object
    Word32 ->
    Ptr () ->                               -- user_data
    IO ()

-- | Generate a function pointer callable from C code, from a `C_AppSrcNeedDataCallback`.
foreign import ccall "wrapper"
    mk_AppSrcNeedDataCallback :: C_AppSrcNeedDataCallback -> IO (FunPtr C_AppSrcNeedDataCallback)

wrap_AppSrcNeedDataCallback :: 
    GObject a => (a -> AppSrcNeedDataCallback) ->
    C_AppSrcNeedDataCallback
wrap_AppSrcNeedDataCallback :: forall a.
GObject a =>
(a -> AppSrcNeedDataCallback) -> C_AppSrcNeedDataCallback
wrap_AppSrcNeedDataCallback a -> AppSrcNeedDataCallback
gi'cb Ptr AppSrc
gi'selfPtr Word32
length_ Ptr ()
_ = do
    Ptr AppSrc -> (AppSrc -> IO ()) -> IO ()
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr AppSrc
gi'selfPtr ((AppSrc -> IO ()) -> IO ()) -> (AppSrc -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \AppSrc
gi'self -> a -> AppSrcNeedDataCallback
gi'cb (AppSrc -> a
forall a b. Coercible a b => a -> b
Coerce.coerce AppSrc
gi'self)  Word32
length_


-- | Connect a signal handler for the [needData](#signal:needData) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' appSrc #needData callback
-- @
-- 
-- 
onAppSrcNeedData :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcNeedDataCallback) -> m SignalHandlerId
onAppSrcNeedData :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcNeedDataCallback) -> m SignalHandlerId
onAppSrcNeedData a
obj (?self::a) => AppSrcNeedDataCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcNeedDataCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcNeedDataCallback
AppSrcNeedDataCallback
cb
    let wrapped' :: C_AppSrcNeedDataCallback
wrapped' = (a -> AppSrcNeedDataCallback) -> C_AppSrcNeedDataCallback
forall a.
GObject a =>
(a -> AppSrcNeedDataCallback) -> C_AppSrcNeedDataCallback
wrap_AppSrcNeedDataCallback a -> AppSrcNeedDataCallback
wrapped
    FunPtr C_AppSrcNeedDataCallback
wrapped'' <- C_AppSrcNeedDataCallback -> IO (FunPtr C_AppSrcNeedDataCallback)
mk_AppSrcNeedDataCallback C_AppSrcNeedDataCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcNeedDataCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"need-data" FunPtr C_AppSrcNeedDataCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [needData](#signal:needData) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' appSrc #needData callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterAppSrcNeedData :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcNeedDataCallback) -> m SignalHandlerId
afterAppSrcNeedData :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcNeedDataCallback) -> m SignalHandlerId
afterAppSrcNeedData a
obj (?self::a) => AppSrcNeedDataCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcNeedDataCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcNeedDataCallback
AppSrcNeedDataCallback
cb
    let wrapped' :: C_AppSrcNeedDataCallback
wrapped' = (a -> AppSrcNeedDataCallback) -> C_AppSrcNeedDataCallback
forall a.
GObject a =>
(a -> AppSrcNeedDataCallback) -> C_AppSrcNeedDataCallback
wrap_AppSrcNeedDataCallback a -> AppSrcNeedDataCallback
wrapped
    FunPtr C_AppSrcNeedDataCallback
wrapped'' <- C_AppSrcNeedDataCallback -> IO (FunPtr C_AppSrcNeedDataCallback)
mk_AppSrcNeedDataCallback C_AppSrcNeedDataCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcNeedDataCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"need-data" FunPtr C_AppSrcNeedDataCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data AppSrcNeedDataSignalInfo
instance SignalInfo AppSrcNeedDataSignalInfo where
    type HaskellCallbackType AppSrcNeedDataSignalInfo = AppSrcNeedDataCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_AppSrcNeedDataCallback cb
        cb'' <- mk_AppSrcNeedDataCallback cb'
        connectSignalFunPtr obj "need-data" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc::need-data"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:signal:needData"})

#endif

-- signal AppSrc::push-buffer
-- | Adds a buffer to the queue of buffers that the appsrc element will
-- push to its source pad.
-- 
-- This function does not take ownership of the buffer, but it takes a
-- reference so the buffer can be unreffed at any time after calling this
-- function.
-- 
-- When the block property is TRUE, this function can block until free space
-- becomes available in the queue.
type AppSrcPushBufferCallback =
    Gst.Buffer.Buffer
    -- ^ /@buffer@/: a buffer to push
    -> IO Gst.Enums.FlowReturn

type C_AppSrcPushBufferCallback =
    Ptr AppSrc ->                           -- object
    Ptr Gst.Buffer.Buffer ->
    Ptr () ->                               -- user_data
    IO CInt

-- | Generate a function pointer callable from C code, from a `C_AppSrcPushBufferCallback`.
foreign import ccall "wrapper"
    mk_AppSrcPushBufferCallback :: C_AppSrcPushBufferCallback -> IO (FunPtr C_AppSrcPushBufferCallback)

wrap_AppSrcPushBufferCallback :: 
    GObject a => (a -> AppSrcPushBufferCallback) ->
    C_AppSrcPushBufferCallback
wrap_AppSrcPushBufferCallback :: forall a.
GObject a =>
(a -> AppSrcPushBufferCallback) -> C_AppSrcPushBufferCallback
wrap_AppSrcPushBufferCallback a -> AppSrcPushBufferCallback
gi'cb Ptr AppSrc
gi'selfPtr Ptr Buffer
buffer Ptr ()
_ = do
    Ptr Buffer -> (Buffer -> IO CInt) -> IO CInt
forall a b.
(HasCallStack, ManagedPtrNewtype a) =>
Ptr a -> (a -> IO b) -> IO b
B.ManagedPtr.withTransient  Ptr Buffer
buffer ((Buffer -> IO CInt) -> IO CInt) -> (Buffer -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Buffer
buffer' -> do
        FlowReturn
result <- Ptr AppSrc
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr AppSrc
gi'selfPtr ((AppSrc -> AppSrcEndOfStreamCallback)
 -> AppSrcEndOfStreamCallback)
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall a b. (a -> b) -> a -> b
$ \AppSrc
gi'self -> a -> AppSrcPushBufferCallback
gi'cb (AppSrc -> a
forall a b. Coercible a b => a -> b
Coerce.coerce AppSrc
gi'self)  Buffer
buffer'
        let result' :: CInt
result' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (FlowReturn -> Int) -> FlowReturn -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FlowReturn -> Int
forall a. Enum a => a -> Int
fromEnum) FlowReturn
result
        CInt -> IO CInt
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CInt
result'


-- | Connect a signal handler for the [pushBuffer](#signal:pushBuffer) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' appSrc #pushBuffer callback
-- @
-- 
-- 
onAppSrcPushBuffer :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcPushBufferCallback) -> m SignalHandlerId
onAppSrcPushBuffer :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcPushBufferCallback) -> m SignalHandlerId
onAppSrcPushBuffer a
obj (?self::a) => AppSrcPushBufferCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcPushBufferCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcPushBufferCallback
AppSrcPushBufferCallback
cb
    let wrapped' :: C_AppSrcPushBufferCallback
wrapped' = (a -> AppSrcPushBufferCallback) -> C_AppSrcPushBufferCallback
forall a.
GObject a =>
(a -> AppSrcPushBufferCallback) -> C_AppSrcPushBufferCallback
wrap_AppSrcPushBufferCallback a -> AppSrcPushBufferCallback
wrapped
    FunPtr C_AppSrcPushBufferCallback
wrapped'' <- C_AppSrcPushBufferCallback
-> IO (FunPtr C_AppSrcPushBufferCallback)
mk_AppSrcPushBufferCallback C_AppSrcPushBufferCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcPushBufferCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"push-buffer" FunPtr C_AppSrcPushBufferCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [pushBuffer](#signal:pushBuffer) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' appSrc #pushBuffer callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterAppSrcPushBuffer :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcPushBufferCallback) -> m SignalHandlerId
afterAppSrcPushBuffer :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcPushBufferCallback) -> m SignalHandlerId
afterAppSrcPushBuffer a
obj (?self::a) => AppSrcPushBufferCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcPushBufferCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcPushBufferCallback
AppSrcPushBufferCallback
cb
    let wrapped' :: C_AppSrcPushBufferCallback
wrapped' = (a -> AppSrcPushBufferCallback) -> C_AppSrcPushBufferCallback
forall a.
GObject a =>
(a -> AppSrcPushBufferCallback) -> C_AppSrcPushBufferCallback
wrap_AppSrcPushBufferCallback a -> AppSrcPushBufferCallback
wrapped
    FunPtr C_AppSrcPushBufferCallback
wrapped'' <- C_AppSrcPushBufferCallback
-> IO (FunPtr C_AppSrcPushBufferCallback)
mk_AppSrcPushBufferCallback C_AppSrcPushBufferCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcPushBufferCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"push-buffer" FunPtr C_AppSrcPushBufferCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data AppSrcPushBufferSignalInfo
instance SignalInfo AppSrcPushBufferSignalInfo where
    type HaskellCallbackType AppSrcPushBufferSignalInfo = AppSrcPushBufferCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_AppSrcPushBufferCallback cb
        cb'' <- mk_AppSrcPushBufferCallback cb'
        connectSignalFunPtr obj "push-buffer" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc::push-buffer"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:signal:pushBuffer"})

#endif

-- signal AppSrc::push-buffer-list
-- | Adds a buffer list to the queue of buffers and buffer lists that the
-- appsrc element will push to its source pad.
-- 
-- This function does not take ownership of the buffer list, but it takes a
-- reference so the buffer list can be unreffed at any time after calling
-- this function.
-- 
-- When the block property is TRUE, this function can block until free space
-- becomes available in the queue.
-- 
-- /Since: 1.14/
type AppSrcPushBufferListCallback =
    Gst.BufferList.BufferList
    -- ^ /@bufferList@/: a buffer list to push
    -> IO Gst.Enums.FlowReturn

type C_AppSrcPushBufferListCallback =
    Ptr AppSrc ->                           -- object
    Ptr Gst.BufferList.BufferList ->
    Ptr () ->                               -- user_data
    IO CInt

-- | Generate a function pointer callable from C code, from a `C_AppSrcPushBufferListCallback`.
foreign import ccall "wrapper"
    mk_AppSrcPushBufferListCallback :: C_AppSrcPushBufferListCallback -> IO (FunPtr C_AppSrcPushBufferListCallback)

wrap_AppSrcPushBufferListCallback :: 
    GObject a => (a -> AppSrcPushBufferListCallback) ->
    C_AppSrcPushBufferListCallback
wrap_AppSrcPushBufferListCallback :: forall a.
GObject a =>
(a -> AppSrcPushBufferListCallback)
-> C_AppSrcPushBufferListCallback
wrap_AppSrcPushBufferListCallback a -> AppSrcPushBufferListCallback
gi'cb Ptr AppSrc
gi'selfPtr Ptr BufferList
bufferList Ptr ()
_ = do
    Ptr BufferList -> (BufferList -> IO CInt) -> IO CInt
forall a b.
(HasCallStack, ManagedPtrNewtype a) =>
Ptr a -> (a -> IO b) -> IO b
B.ManagedPtr.withTransient  Ptr BufferList
bufferList ((BufferList -> IO CInt) -> IO CInt)
-> (BufferList -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \BufferList
bufferList' -> do
        FlowReturn
result <- Ptr AppSrc
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr AppSrc
gi'selfPtr ((AppSrc -> AppSrcEndOfStreamCallback)
 -> AppSrcEndOfStreamCallback)
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall a b. (a -> b) -> a -> b
$ \AppSrc
gi'self -> a -> AppSrcPushBufferListCallback
gi'cb (AppSrc -> a
forall a b. Coercible a b => a -> b
Coerce.coerce AppSrc
gi'self)  BufferList
bufferList'
        let result' :: CInt
result' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (FlowReturn -> Int) -> FlowReturn -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FlowReturn -> Int
forall a. Enum a => a -> Int
fromEnum) FlowReturn
result
        CInt -> IO CInt
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CInt
result'


-- | Connect a signal handler for the [pushBufferList](#signal:pushBufferList) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' appSrc #pushBufferList callback
-- @
-- 
-- 
onAppSrcPushBufferList :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcPushBufferListCallback) -> m SignalHandlerId
onAppSrcPushBufferList :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a
-> ((?self::a) => AppSrcPushBufferListCallback)
-> m SignalHandlerId
onAppSrcPushBufferList a
obj (?self::a) => AppSrcPushBufferListCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcPushBufferListCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcPushBufferListCallback
AppSrcPushBufferListCallback
cb
    let wrapped' :: C_AppSrcPushBufferListCallback
wrapped' = (a -> AppSrcPushBufferListCallback)
-> C_AppSrcPushBufferListCallback
forall a.
GObject a =>
(a -> AppSrcPushBufferListCallback)
-> C_AppSrcPushBufferListCallback
wrap_AppSrcPushBufferListCallback a -> AppSrcPushBufferListCallback
wrapped
    FunPtr C_AppSrcPushBufferListCallback
wrapped'' <- C_AppSrcPushBufferListCallback
-> IO (FunPtr C_AppSrcPushBufferListCallback)
mk_AppSrcPushBufferListCallback C_AppSrcPushBufferListCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcPushBufferListCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"push-buffer-list" FunPtr C_AppSrcPushBufferListCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [pushBufferList](#signal:pushBufferList) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' appSrc #pushBufferList callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterAppSrcPushBufferList :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcPushBufferListCallback) -> m SignalHandlerId
afterAppSrcPushBufferList :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a
-> ((?self::a) => AppSrcPushBufferListCallback)
-> m SignalHandlerId
afterAppSrcPushBufferList a
obj (?self::a) => AppSrcPushBufferListCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcPushBufferListCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcPushBufferListCallback
AppSrcPushBufferListCallback
cb
    let wrapped' :: C_AppSrcPushBufferListCallback
wrapped' = (a -> AppSrcPushBufferListCallback)
-> C_AppSrcPushBufferListCallback
forall a.
GObject a =>
(a -> AppSrcPushBufferListCallback)
-> C_AppSrcPushBufferListCallback
wrap_AppSrcPushBufferListCallback a -> AppSrcPushBufferListCallback
wrapped
    FunPtr C_AppSrcPushBufferListCallback
wrapped'' <- C_AppSrcPushBufferListCallback
-> IO (FunPtr C_AppSrcPushBufferListCallback)
mk_AppSrcPushBufferListCallback C_AppSrcPushBufferListCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcPushBufferListCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"push-buffer-list" FunPtr C_AppSrcPushBufferListCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data AppSrcPushBufferListSignalInfo
instance SignalInfo AppSrcPushBufferListSignalInfo where
    type HaskellCallbackType AppSrcPushBufferListSignalInfo = AppSrcPushBufferListCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_AppSrcPushBufferListCallback cb
        cb'' <- mk_AppSrcPushBufferListCallback cb'
        connectSignalFunPtr obj "push-buffer-list" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc::push-buffer-list"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:signal:pushBufferList"})

#endif

-- signal AppSrc::push-sample
-- | Extract a buffer from the provided sample and adds the extracted buffer
-- to the queue of buffers that the appsrc element will
-- push to its source pad. This function set the appsrc caps based on the caps
-- in the sample and reset the caps if they change.
-- Only the caps and the buffer of the provided sample are used and not
-- for example the segment in the sample.
-- 
-- This function does not take ownership of the sample, but it takes a
-- reference so the sample can be unreffed at any time after calling this
-- function.
-- 
-- When the block property is TRUE, this function can block until free space
-- becomes available in the queue.
-- 
-- /Since: 1.6/
type AppSrcPushSampleCallback =
    Gst.Sample.Sample
    -- ^ /@sample@/: a sample from which extract buffer to push
    -> IO Gst.Enums.FlowReturn

type C_AppSrcPushSampleCallback =
    Ptr AppSrc ->                           -- object
    Ptr Gst.Sample.Sample ->
    Ptr () ->                               -- user_data
    IO CInt

-- | Generate a function pointer callable from C code, from a `C_AppSrcPushSampleCallback`.
foreign import ccall "wrapper"
    mk_AppSrcPushSampleCallback :: C_AppSrcPushSampleCallback -> IO (FunPtr C_AppSrcPushSampleCallback)

wrap_AppSrcPushSampleCallback :: 
    GObject a => (a -> AppSrcPushSampleCallback) ->
    C_AppSrcPushSampleCallback
wrap_AppSrcPushSampleCallback :: forall a.
GObject a =>
(a -> AppSrcPushSampleCallback) -> C_AppSrcPushSampleCallback
wrap_AppSrcPushSampleCallback a -> AppSrcPushSampleCallback
gi'cb Ptr AppSrc
gi'selfPtr Ptr Sample
sample Ptr ()
_ = do
    Ptr Sample -> (Sample -> IO CInt) -> IO CInt
forall a b.
(HasCallStack, ManagedPtrNewtype a) =>
Ptr a -> (a -> IO b) -> IO b
B.ManagedPtr.withTransient  Ptr Sample
sample ((Sample -> IO CInt) -> IO CInt) -> (Sample -> IO CInt) -> IO CInt
forall a b. (a -> b) -> a -> b
$ \Sample
sample' -> do
        FlowReturn
result <- Ptr AppSrc
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr AppSrc
gi'selfPtr ((AppSrc -> AppSrcEndOfStreamCallback)
 -> AppSrcEndOfStreamCallback)
-> (AppSrc -> AppSrcEndOfStreamCallback)
-> AppSrcEndOfStreamCallback
forall a b. (a -> b) -> a -> b
$ \AppSrc
gi'self -> a -> AppSrcPushSampleCallback
gi'cb (AppSrc -> a
forall a b. Coercible a b => a -> b
Coerce.coerce AppSrc
gi'self)  Sample
sample'
        let result' :: CInt
result' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CInt) -> (FlowReturn -> Int) -> FlowReturn -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. FlowReturn -> Int
forall a. Enum a => a -> Int
fromEnum) FlowReturn
result
        CInt -> IO CInt
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CInt
result'


-- | Connect a signal handler for the [pushSample](#signal:pushSample) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' appSrc #pushSample callback
-- @
-- 
-- 
onAppSrcPushSample :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcPushSampleCallback) -> m SignalHandlerId
onAppSrcPushSample :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcPushSampleCallback) -> m SignalHandlerId
onAppSrcPushSample a
obj (?self::a) => AppSrcPushSampleCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcPushSampleCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcPushSampleCallback
AppSrcPushSampleCallback
cb
    let wrapped' :: C_AppSrcPushSampleCallback
wrapped' = (a -> AppSrcPushSampleCallback) -> C_AppSrcPushSampleCallback
forall a.
GObject a =>
(a -> AppSrcPushSampleCallback) -> C_AppSrcPushSampleCallback
wrap_AppSrcPushSampleCallback a -> AppSrcPushSampleCallback
wrapped
    FunPtr C_AppSrcPushSampleCallback
wrapped'' <- C_AppSrcPushSampleCallback
-> IO (FunPtr C_AppSrcPushSampleCallback)
mk_AppSrcPushSampleCallback C_AppSrcPushSampleCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcPushSampleCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"push-sample" FunPtr C_AppSrcPushSampleCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [pushSample](#signal:pushSample) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' appSrc #pushSample callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterAppSrcPushSample :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcPushSampleCallback) -> m SignalHandlerId
afterAppSrcPushSample :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcPushSampleCallback) -> m SignalHandlerId
afterAppSrcPushSample a
obj (?self::a) => AppSrcPushSampleCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcPushSampleCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcPushSampleCallback
AppSrcPushSampleCallback
cb
    let wrapped' :: C_AppSrcPushSampleCallback
wrapped' = (a -> AppSrcPushSampleCallback) -> C_AppSrcPushSampleCallback
forall a.
GObject a =>
(a -> AppSrcPushSampleCallback) -> C_AppSrcPushSampleCallback
wrap_AppSrcPushSampleCallback a -> AppSrcPushSampleCallback
wrapped
    FunPtr C_AppSrcPushSampleCallback
wrapped'' <- C_AppSrcPushSampleCallback
-> IO (FunPtr C_AppSrcPushSampleCallback)
mk_AppSrcPushSampleCallback C_AppSrcPushSampleCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcPushSampleCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"push-sample" FunPtr C_AppSrcPushSampleCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data AppSrcPushSampleSignalInfo
instance SignalInfo AppSrcPushSampleSignalInfo where
    type HaskellCallbackType AppSrcPushSampleSignalInfo = AppSrcPushSampleCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_AppSrcPushSampleCallback cb
        cb'' <- mk_AppSrcPushSampleCallback cb'
        connectSignalFunPtr obj "push-sample" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc::push-sample"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:signal:pushSample"})

#endif

-- signal AppSrc::seek-data
-- | Seek to the given offset. The next push-buffer should produce buffers from
-- the new /@offset@/.
-- This callback is only called for seekable stream types.
type AppSrcSeekDataCallback =
    Word64
    -- ^ /@offset@/: the offset to seek to
    -> IO Bool
    -- ^ __Returns:__ 'P.True' if the seek succeeded.

type C_AppSrcSeekDataCallback =
    Ptr AppSrc ->                           -- object
    Word64 ->
    Ptr () ->                               -- user_data
    IO CInt

-- | Generate a function pointer callable from C code, from a `C_AppSrcSeekDataCallback`.
foreign import ccall "wrapper"
    mk_AppSrcSeekDataCallback :: C_AppSrcSeekDataCallback -> IO (FunPtr C_AppSrcSeekDataCallback)

wrap_AppSrcSeekDataCallback :: 
    GObject a => (a -> AppSrcSeekDataCallback) ->
    C_AppSrcSeekDataCallback
wrap_AppSrcSeekDataCallback :: forall a.
GObject a =>
(a -> AppSrcSeekDataCallback) -> C_AppSrcSeekDataCallback
wrap_AppSrcSeekDataCallback a -> AppSrcSeekDataCallback
gi'cb Ptr AppSrc
gi'selfPtr Word64
offset Ptr ()
_ = do
    Bool
result <- Ptr AppSrc -> (AppSrc -> IO Bool) -> IO Bool
forall o b.
(HasCallStack, GObject o) =>
Ptr o -> (o -> IO b) -> IO b
B.ManagedPtr.withNewObject Ptr AppSrc
gi'selfPtr ((AppSrc -> IO Bool) -> IO Bool) -> (AppSrc -> IO Bool) -> IO Bool
forall a b. (a -> b) -> a -> b
$ \AppSrc
gi'self -> a -> AppSrcSeekDataCallback
gi'cb (AppSrc -> a
forall a b. Coercible a b => a -> b
Coerce.coerce AppSrc
gi'self)  Word64
offset
    let result' :: CInt
result' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
P.fromEnum) Bool
result
    CInt -> IO CInt
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return CInt
result'


-- | Connect a signal handler for the [seekData](#signal:seekData) signal, to be run before the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.on' appSrc #seekData callback
-- @
-- 
-- 
onAppSrcSeekData :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcSeekDataCallback) -> m SignalHandlerId
onAppSrcSeekData :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcSeekDataCallback) -> m SignalHandlerId
onAppSrcSeekData a
obj (?self::a) => AppSrcSeekDataCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcSeekDataCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcSeekDataCallback
AppSrcSeekDataCallback
cb
    let wrapped' :: C_AppSrcSeekDataCallback
wrapped' = (a -> AppSrcSeekDataCallback) -> C_AppSrcSeekDataCallback
forall a.
GObject a =>
(a -> AppSrcSeekDataCallback) -> C_AppSrcSeekDataCallback
wrap_AppSrcSeekDataCallback a -> AppSrcSeekDataCallback
wrapped
    FunPtr C_AppSrcSeekDataCallback
wrapped'' <- C_AppSrcSeekDataCallback -> IO (FunPtr C_AppSrcSeekDataCallback)
mk_AppSrcSeekDataCallback C_AppSrcSeekDataCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcSeekDataCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"seek-data" FunPtr C_AppSrcSeekDataCallback
wrapped'' SignalConnectMode
SignalConnectBefore Maybe Text
forall a. Maybe a
Nothing

-- | Connect a signal handler for the [seekData](#signal:seekData) signal, to be run after the default handler.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Signals.after' appSrc #seekData callback
-- @
-- 
-- 
-- 
-- By default the object invoking the signal is not passed to the callback.
-- If you need to access it, you can use the implit @?self@ parameter.
-- Note that this requires activating the @ImplicitParams@ GHC extension.
-- 
afterAppSrcSeekData :: (IsAppSrc a, MonadIO m) => a -> ((?self :: a) => AppSrcSeekDataCallback) -> m SignalHandlerId
afterAppSrcSeekData :: forall a (m :: * -> *).
(IsAppSrc a, MonadIO m) =>
a -> ((?self::a) => AppSrcSeekDataCallback) -> m SignalHandlerId
afterAppSrcSeekData a
obj (?self::a) => AppSrcSeekDataCallback
cb = IO SignalHandlerId -> m SignalHandlerId
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO SignalHandlerId -> m SignalHandlerId)
-> IO SignalHandlerId -> m SignalHandlerId
forall a b. (a -> b) -> a -> b
$ do
    let wrapped :: a -> AppSrcSeekDataCallback
wrapped a
self = let ?self = a
?self::a
self in (?self::a) => AppSrcSeekDataCallback
AppSrcSeekDataCallback
cb
    let wrapped' :: C_AppSrcSeekDataCallback
wrapped' = (a -> AppSrcSeekDataCallback) -> C_AppSrcSeekDataCallback
forall a.
GObject a =>
(a -> AppSrcSeekDataCallback) -> C_AppSrcSeekDataCallback
wrap_AppSrcSeekDataCallback a -> AppSrcSeekDataCallback
wrapped
    FunPtr C_AppSrcSeekDataCallback
wrapped'' <- C_AppSrcSeekDataCallback -> IO (FunPtr C_AppSrcSeekDataCallback)
mk_AppSrcSeekDataCallback C_AppSrcSeekDataCallback
wrapped'
    a
-> Text
-> FunPtr C_AppSrcSeekDataCallback
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
forall o a.
GObject o =>
o
-> Text
-> FunPtr a
-> SignalConnectMode
-> Maybe Text
-> IO SignalHandlerId
connectSignalFunPtr a
obj Text
"seek-data" FunPtr C_AppSrcSeekDataCallback
wrapped'' SignalConnectMode
SignalConnectAfter Maybe Text
forall a. Maybe a
Nothing


#if defined(ENABLE_OVERLOADING)
data AppSrcSeekDataSignalInfo
instance SignalInfo AppSrcSeekDataSignalInfo where
    type HaskellCallbackType AppSrcSeekDataSignalInfo = AppSrcSeekDataCallback
    connectSignal obj cb connectMode detail = do
        let cb' = wrap_AppSrcSeekDataCallback cb
        cb'' <- mk_AppSrcSeekDataCallback cb'
        connectSignalFunPtr obj "seek-data" cb'' connectMode detail
    dbgSignalInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc::seek-data"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:signal:seekData"})

#endif

-- VVV Prop "block"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

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

-- | Set the value of the “@block@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #block 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcBlock :: (MonadIO m, IsAppSrc o) => o -> Bool -> m ()
setAppSrcBlock :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Bool -> m ()
setAppSrcBlock o
obj Bool
val = IO () -> m ()
forall a. IO a -> m a
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 -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj String
"block" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@block@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcBlock :: (IsAppSrc o, MIO.MonadIO m) => Bool -> m (GValueConstruct o)
constructAppSrcBlock :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Bool -> m (GValueConstruct o)
constructAppSrcBlock Bool
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool String
"block" Bool
val

#if defined(ENABLE_OVERLOADING)
data AppSrcBlockPropertyInfo
instance AttrInfo AppSrcBlockPropertyInfo where
    type AttrAllowedOps AppSrcBlockPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcBlockPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcBlockPropertyInfo = (~) Bool
    type AttrTransferTypeConstraint AppSrcBlockPropertyInfo = (~) Bool
    type AttrTransferType AppSrcBlockPropertyInfo = Bool
    type AttrGetType AppSrcBlockPropertyInfo = Bool
    type AttrLabel AppSrcBlockPropertyInfo = "block"
    type AttrOrigin AppSrcBlockPropertyInfo = AppSrc
    attrGet = getAppSrcBlock
    attrSet = setAppSrcBlock
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcBlock
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.block"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:block"
        })
#endif

-- VVV Prop "caps"
   -- Type: TInterface (Name {namespace = "Gst", name = "Caps"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Just True)

-- | Get the value of the “@caps@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #caps
-- @
getAppSrcCaps :: (MonadIO m, IsAppSrc o) => o -> m (Maybe Gst.Caps.Caps)
getAppSrcCaps :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> m (Maybe Caps)
getAppSrcCaps o
obj = IO (Maybe Caps) -> m (Maybe Caps)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO (Maybe Caps) -> m (Maybe Caps))
-> IO (Maybe Caps) -> m (Maybe Caps)
forall a b. (a -> b) -> a -> b
$ o -> String -> (ManagedPtr Caps -> Caps) -> IO (Maybe Caps)
forall a b.
(GObject a, GBoxed b) =>
a -> String -> (ManagedPtr b -> b) -> IO (Maybe b)
B.Properties.getObjectPropertyBoxed o
obj String
"caps" ManagedPtr Caps -> Caps
Gst.Caps.Caps

-- | Set the value of the “@caps@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #caps 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcCaps :: (MonadIO m, IsAppSrc o) => o -> Gst.Caps.Caps -> m ()
setAppSrcCaps :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Caps -> m ()
setAppSrcCaps o
obj Caps
val = IO () -> m ()
forall a. IO a -> m a
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 -> Maybe Caps -> IO ()
forall a b.
(GObject a, GBoxed b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyBoxed o
obj String
"caps" (Caps -> Maybe Caps
forall a. a -> Maybe a
Just Caps
val)

-- | Construct a `GValueConstruct` with valid value for the “@caps@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcCaps :: (IsAppSrc o, MIO.MonadIO m) => Gst.Caps.Caps -> m (GValueConstruct o)
constructAppSrcCaps :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Caps -> m (GValueConstruct o)
constructAppSrcCaps Caps
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Maybe Caps -> IO (GValueConstruct o)
forall a o. GBoxed a => String -> Maybe a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBoxed String
"caps" (Caps -> Maybe Caps
forall a. a -> Maybe a
P.Just Caps
val)

-- | Set the value of the “@caps@” property to `Nothing`.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.clear' #caps
-- @
clearAppSrcCaps :: (MonadIO m, IsAppSrc o) => o -> m ()
clearAppSrcCaps :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m ()
clearAppSrcCaps o
obj = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ o -> String -> Maybe Caps -> IO ()
forall a b.
(GObject a, GBoxed b) =>
a -> String -> Maybe b -> IO ()
B.Properties.setObjectPropertyBoxed o
obj String
"caps" (Maybe Caps
forall a. Maybe a
Nothing :: Maybe Gst.Caps.Caps)

#if defined(ENABLE_OVERLOADING)
data AppSrcCapsPropertyInfo
instance AttrInfo AppSrcCapsPropertyInfo where
    type AttrAllowedOps AppSrcCapsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet, 'AttrClear]
    type AttrBaseTypeConstraint AppSrcCapsPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcCapsPropertyInfo = (~) Gst.Caps.Caps
    type AttrTransferTypeConstraint AppSrcCapsPropertyInfo = (~) Gst.Caps.Caps
    type AttrTransferType AppSrcCapsPropertyInfo = Gst.Caps.Caps
    type AttrGetType AppSrcCapsPropertyInfo = (Maybe Gst.Caps.Caps)
    type AttrLabel AppSrcCapsPropertyInfo = "caps"
    type AttrOrigin AppSrcCapsPropertyInfo = AppSrc
    attrGet = getAppSrcCaps
    attrSet = setAppSrcCaps
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcCaps
    attrClear = clearAppSrcCaps
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.caps"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:caps"
        })
#endif

-- VVV Prop "current-level-buffers"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

-- | Get the value of the “@current-level-buffers@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #currentLevelBuffers
-- @
getAppSrcCurrentLevelBuffers :: (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcCurrentLevelBuffers :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcCurrentLevelBuffers o
obj = IO Word64 -> m Word64
forall a. IO a -> m a
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
"current-level-buffers"

#if defined(ENABLE_OVERLOADING)
data AppSrcCurrentLevelBuffersPropertyInfo
instance AttrInfo AppSrcCurrentLevelBuffersPropertyInfo where
    type AttrAllowedOps AppSrcCurrentLevelBuffersPropertyInfo = '[ 'AttrGet]
    type AttrBaseTypeConstraint AppSrcCurrentLevelBuffersPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcCurrentLevelBuffersPropertyInfo = (~) ()
    type AttrTransferTypeConstraint AppSrcCurrentLevelBuffersPropertyInfo = (~) ()
    type AttrTransferType AppSrcCurrentLevelBuffersPropertyInfo = ()
    type AttrGetType AppSrcCurrentLevelBuffersPropertyInfo = Word64
    type AttrLabel AppSrcCurrentLevelBuffersPropertyInfo = "current-level-buffers"
    type AttrOrigin AppSrcCurrentLevelBuffersPropertyInfo = AppSrc
    attrGet = getAppSrcCurrentLevelBuffers
    attrSet = undefined
    attrTransfer _ = undefined
    attrConstruct = undefined
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.currentLevelBuffers"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:currentLevelBuffers"
        })
#endif

-- VVV Prop "current-level-bytes"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

-- | Get the value of the “@current-level-bytes@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #currentLevelBytes
-- @
getAppSrcCurrentLevelBytes :: (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcCurrentLevelBytes :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcCurrentLevelBytes o
obj = IO Word64 -> m Word64
forall a. IO a -> m a
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
"current-level-bytes"

#if defined(ENABLE_OVERLOADING)
data AppSrcCurrentLevelBytesPropertyInfo
instance AttrInfo AppSrcCurrentLevelBytesPropertyInfo where
    type AttrAllowedOps AppSrcCurrentLevelBytesPropertyInfo = '[ 'AttrGet]
    type AttrBaseTypeConstraint AppSrcCurrentLevelBytesPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcCurrentLevelBytesPropertyInfo = (~) ()
    type AttrTransferTypeConstraint AppSrcCurrentLevelBytesPropertyInfo = (~) ()
    type AttrTransferType AppSrcCurrentLevelBytesPropertyInfo = ()
    type AttrGetType AppSrcCurrentLevelBytesPropertyInfo = Word64
    type AttrLabel AppSrcCurrentLevelBytesPropertyInfo = "current-level-bytes"
    type AttrOrigin AppSrcCurrentLevelBytesPropertyInfo = AppSrc
    attrGet = getAppSrcCurrentLevelBytes
    attrSet = undefined
    attrTransfer _ = undefined
    attrConstruct = undefined
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.currentLevelBytes"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:currentLevelBytes"
        })
#endif

-- VVV Prop "current-level-time"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable]
   -- Nullable: (Just False,Nothing)

-- | Get the value of the “@current-level-time@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #currentLevelTime
-- @
getAppSrcCurrentLevelTime :: (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcCurrentLevelTime :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcCurrentLevelTime o
obj = IO Word64 -> m Word64
forall a. IO a -> m a
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
"current-level-time"

#if defined(ENABLE_OVERLOADING)
data AppSrcCurrentLevelTimePropertyInfo
instance AttrInfo AppSrcCurrentLevelTimePropertyInfo where
    type AttrAllowedOps AppSrcCurrentLevelTimePropertyInfo = '[ 'AttrGet]
    type AttrBaseTypeConstraint AppSrcCurrentLevelTimePropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcCurrentLevelTimePropertyInfo = (~) ()
    type AttrTransferTypeConstraint AppSrcCurrentLevelTimePropertyInfo = (~) ()
    type AttrTransferType AppSrcCurrentLevelTimePropertyInfo = ()
    type AttrGetType AppSrcCurrentLevelTimePropertyInfo = Word64
    type AttrLabel AppSrcCurrentLevelTimePropertyInfo = "current-level-time"
    type AttrOrigin AppSrcCurrentLevelTimePropertyInfo = AppSrc
    attrGet = getAppSrcCurrentLevelTime
    attrSet = undefined
    attrTransfer _ = undefined
    attrConstruct = undefined
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.currentLevelTime"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:currentLevelTime"
        })
#endif

-- VVV Prop "duration"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@duration@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #duration
-- @
getAppSrcDuration :: (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcDuration :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcDuration o
obj = IO Word64 -> m Word64
forall a. IO a -> m a
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
"duration"

-- | Set the value of the “@duration@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #duration 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcDuration :: (MonadIO m, IsAppSrc o) => o -> Word64 -> m ()
setAppSrcDuration :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Word64 -> m ()
setAppSrcDuration o
obj Word64
val = IO () -> m ()
forall a. IO a -> m a
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
"duration" Word64
val

-- | Construct a `GValueConstruct` with valid value for the “@duration@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcDuration :: (IsAppSrc o, MIO.MonadIO m) => Word64 -> m (GValueConstruct o)
constructAppSrcDuration :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Word64 -> m (GValueConstruct o)
constructAppSrcDuration Word64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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
"duration" Word64
val

#if defined(ENABLE_OVERLOADING)
data AppSrcDurationPropertyInfo
instance AttrInfo AppSrcDurationPropertyInfo where
    type AttrAllowedOps AppSrcDurationPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcDurationPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcDurationPropertyInfo = (~) Word64
    type AttrTransferTypeConstraint AppSrcDurationPropertyInfo = (~) Word64
    type AttrTransferType AppSrcDurationPropertyInfo = Word64
    type AttrGetType AppSrcDurationPropertyInfo = Word64
    type AttrLabel AppSrcDurationPropertyInfo = "duration"
    type AttrOrigin AppSrcDurationPropertyInfo = AppSrc
    attrGet = getAppSrcDuration
    attrSet = setAppSrcDuration
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcDuration
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.duration"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:duration"
        })
#endif

-- VVV Prop "emit-signals"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@emit-signals@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #emitSignals
-- @
getAppSrcEmitSignals :: (MonadIO m, IsAppSrc o) => o -> m Bool
getAppSrcEmitSignals :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Bool
getAppSrcEmitSignals o
obj = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj String
"emit-signals"

-- | Set the value of the “@emit-signals@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #emitSignals 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcEmitSignals :: (MonadIO m, IsAppSrc o) => o -> Bool -> m ()
setAppSrcEmitSignals :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Bool -> m ()
setAppSrcEmitSignals o
obj Bool
val = IO () -> m ()
forall a. IO a -> m a
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 -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj String
"emit-signals" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@emit-signals@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcEmitSignals :: (IsAppSrc o, MIO.MonadIO m) => Bool -> m (GValueConstruct o)
constructAppSrcEmitSignals :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Bool -> m (GValueConstruct o)
constructAppSrcEmitSignals Bool
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool String
"emit-signals" Bool
val

#if defined(ENABLE_OVERLOADING)
data AppSrcEmitSignalsPropertyInfo
instance AttrInfo AppSrcEmitSignalsPropertyInfo where
    type AttrAllowedOps AppSrcEmitSignalsPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcEmitSignalsPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcEmitSignalsPropertyInfo = (~) Bool
    type AttrTransferTypeConstraint AppSrcEmitSignalsPropertyInfo = (~) Bool
    type AttrTransferType AppSrcEmitSignalsPropertyInfo = Bool
    type AttrGetType AppSrcEmitSignalsPropertyInfo = Bool
    type AttrLabel AppSrcEmitSignalsPropertyInfo = "emit-signals"
    type AttrOrigin AppSrcEmitSignalsPropertyInfo = AppSrc
    attrGet = getAppSrcEmitSignals
    attrSet = setAppSrcEmitSignals
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcEmitSignals
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.emitSignals"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:emitSignals"
        })
#endif

-- VVV Prop "format"
   -- Type: TInterface (Name {namespace = "Gst", name = "Format"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@format@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #format
-- @
getAppSrcFormat :: (MonadIO m, IsAppSrc o) => o -> m Gst.Enums.Format
getAppSrcFormat :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Format
getAppSrcFormat o
obj = IO Format -> m Format
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Format -> m Format) -> IO Format -> m Format
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Format
forall a b. (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
B.Properties.getObjectPropertyEnum o
obj String
"format"

-- | Set the value of the “@format@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #format 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcFormat :: (MonadIO m, IsAppSrc o) => o -> Gst.Enums.Format -> m ()
setAppSrcFormat :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Format -> m ()
setAppSrcFormat o
obj Format
val = IO () -> m ()
forall a. IO a -> m a
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 -> Format -> IO ()
forall a b.
(GObject a, Enum b, BoxedEnum b) =>
a -> String -> b -> IO ()
B.Properties.setObjectPropertyEnum o
obj String
"format" Format
val

-- | Construct a `GValueConstruct` with valid value for the “@format@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcFormat :: (IsAppSrc o, MIO.MonadIO m) => Gst.Enums.Format -> m (GValueConstruct o)
constructAppSrcFormat :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Format -> m (GValueConstruct o)
constructAppSrcFormat Format
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Format -> IO (GValueConstruct o)
forall a o.
(Enum a, BoxedEnum a) =>
String -> a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyEnum String
"format" Format
val

#if defined(ENABLE_OVERLOADING)
data AppSrcFormatPropertyInfo
instance AttrInfo AppSrcFormatPropertyInfo where
    type AttrAllowedOps AppSrcFormatPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcFormatPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcFormatPropertyInfo = (~) Gst.Enums.Format
    type AttrTransferTypeConstraint AppSrcFormatPropertyInfo = (~) Gst.Enums.Format
    type AttrTransferType AppSrcFormatPropertyInfo = Gst.Enums.Format
    type AttrGetType AppSrcFormatPropertyInfo = Gst.Enums.Format
    type AttrLabel AppSrcFormatPropertyInfo = "format"
    type AttrOrigin AppSrcFormatPropertyInfo = AppSrc
    attrGet = getAppSrcFormat
    attrSet = setAppSrcFormat
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcFormat
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.format"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:format"
        })
#endif

-- VVV Prop "handle-segment-change"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@handle-segment-change@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #handleSegmentChange
-- @
getAppSrcHandleSegmentChange :: (MonadIO m, IsAppSrc o) => o -> m Bool
getAppSrcHandleSegmentChange :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Bool
getAppSrcHandleSegmentChange o
obj = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj String
"handle-segment-change"

-- | Set the value of the “@handle-segment-change@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #handleSegmentChange 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcHandleSegmentChange :: (MonadIO m, IsAppSrc o) => o -> Bool -> m ()
setAppSrcHandleSegmentChange :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Bool -> m ()
setAppSrcHandleSegmentChange o
obj Bool
val = IO () -> m ()
forall a. IO a -> m a
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 -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj String
"handle-segment-change" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@handle-segment-change@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcHandleSegmentChange :: (IsAppSrc o, MIO.MonadIO m) => Bool -> m (GValueConstruct o)
constructAppSrcHandleSegmentChange :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Bool -> m (GValueConstruct o)
constructAppSrcHandleSegmentChange Bool
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool String
"handle-segment-change" Bool
val

#if defined(ENABLE_OVERLOADING)
data AppSrcHandleSegmentChangePropertyInfo
instance AttrInfo AppSrcHandleSegmentChangePropertyInfo where
    type AttrAllowedOps AppSrcHandleSegmentChangePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcHandleSegmentChangePropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcHandleSegmentChangePropertyInfo = (~) Bool
    type AttrTransferTypeConstraint AppSrcHandleSegmentChangePropertyInfo = (~) Bool
    type AttrTransferType AppSrcHandleSegmentChangePropertyInfo = Bool
    type AttrGetType AppSrcHandleSegmentChangePropertyInfo = Bool
    type AttrLabel AppSrcHandleSegmentChangePropertyInfo = "handle-segment-change"
    type AttrOrigin AppSrcHandleSegmentChangePropertyInfo = AppSrc
    attrGet = getAppSrcHandleSegmentChange
    attrSet = setAppSrcHandleSegmentChange
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcHandleSegmentChange
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.handleSegmentChange"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:handleSegmentChange"
        })
#endif

-- VVV Prop "is-live"
   -- Type: TBasicType TBoolean
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@is-live@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #isLive
-- @
getAppSrcIsLive :: (MonadIO m, IsAppSrc o) => o -> m Bool
getAppSrcIsLive :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Bool
getAppSrcIsLive o
obj = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Bool
forall a. GObject a => a -> String -> IO Bool
B.Properties.getObjectPropertyBool o
obj String
"is-live"

-- | Set the value of the “@is-live@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #isLive 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcIsLive :: (MonadIO m, IsAppSrc o) => o -> Bool -> m ()
setAppSrcIsLive :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Bool -> m ()
setAppSrcIsLive o
obj Bool
val = IO () -> m ()
forall a. IO a -> m a
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 -> Bool -> IO ()
forall a. GObject a => a -> String -> Bool -> IO ()
B.Properties.setObjectPropertyBool o
obj String
"is-live" Bool
val

-- | Construct a `GValueConstruct` with valid value for the “@is-live@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcIsLive :: (IsAppSrc o, MIO.MonadIO m) => Bool -> m (GValueConstruct o)
constructAppSrcIsLive :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Bool -> m (GValueConstruct o)
constructAppSrcIsLive Bool
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Bool -> IO (GValueConstruct o)
forall o. String -> Bool -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyBool String
"is-live" Bool
val

#if defined(ENABLE_OVERLOADING)
data AppSrcIsLivePropertyInfo
instance AttrInfo AppSrcIsLivePropertyInfo where
    type AttrAllowedOps AppSrcIsLivePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcIsLivePropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcIsLivePropertyInfo = (~) Bool
    type AttrTransferTypeConstraint AppSrcIsLivePropertyInfo = (~) Bool
    type AttrTransferType AppSrcIsLivePropertyInfo = Bool
    type AttrGetType AppSrcIsLivePropertyInfo = Bool
    type AttrLabel AppSrcIsLivePropertyInfo = "is-live"
    type AttrOrigin AppSrcIsLivePropertyInfo = AppSrc
    attrGet = getAppSrcIsLive
    attrSet = setAppSrcIsLive
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcIsLive
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.isLive"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:isLive"
        })
#endif

-- VVV Prop "leaky-type"
   -- Type: TInterface (Name {namespace = "GstApp", name = "AppLeakyType"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@leaky-type@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #leakyType
-- @
getAppSrcLeakyType :: (MonadIO m, IsAppSrc o) => o -> m GstApp.Enums.AppLeakyType
getAppSrcLeakyType :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> m AppLeakyType
getAppSrcLeakyType o
obj = IO AppLeakyType -> m AppLeakyType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO AppLeakyType -> m AppLeakyType)
-> IO AppLeakyType -> m AppLeakyType
forall a b. (a -> b) -> a -> b
$ o -> String -> IO AppLeakyType
forall a b. (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
B.Properties.getObjectPropertyEnum o
obj String
"leaky-type"

-- | Set the value of the “@leaky-type@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #leakyType 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcLeakyType :: (MonadIO m, IsAppSrc o) => o -> GstApp.Enums.AppLeakyType -> m ()
setAppSrcLeakyType :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> AppLeakyType -> m ()
setAppSrcLeakyType o
obj AppLeakyType
val = IO () -> m ()
forall a. IO a -> m a
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 -> AppLeakyType -> IO ()
forall a b.
(GObject a, Enum b, BoxedEnum b) =>
a -> String -> b -> IO ()
B.Properties.setObjectPropertyEnum o
obj String
"leaky-type" AppLeakyType
val

-- | Construct a `GValueConstruct` with valid value for the “@leaky-type@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcLeakyType :: (IsAppSrc o, MIO.MonadIO m) => GstApp.Enums.AppLeakyType -> m (GValueConstruct o)
constructAppSrcLeakyType :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
AppLeakyType -> m (GValueConstruct o)
constructAppSrcLeakyType AppLeakyType
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> AppLeakyType -> IO (GValueConstruct o)
forall a o.
(Enum a, BoxedEnum a) =>
String -> a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyEnum String
"leaky-type" AppLeakyType
val

#if defined(ENABLE_OVERLOADING)
data AppSrcLeakyTypePropertyInfo
instance AttrInfo AppSrcLeakyTypePropertyInfo where
    type AttrAllowedOps AppSrcLeakyTypePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcLeakyTypePropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcLeakyTypePropertyInfo = (~) GstApp.Enums.AppLeakyType
    type AttrTransferTypeConstraint AppSrcLeakyTypePropertyInfo = (~) GstApp.Enums.AppLeakyType
    type AttrTransferType AppSrcLeakyTypePropertyInfo = GstApp.Enums.AppLeakyType
    type AttrGetType AppSrcLeakyTypePropertyInfo = GstApp.Enums.AppLeakyType
    type AttrLabel AppSrcLeakyTypePropertyInfo = "leaky-type"
    type AttrOrigin AppSrcLeakyTypePropertyInfo = AppSrc
    attrGet = getAppSrcLeakyType
    attrSet = setAppSrcLeakyType
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcLeakyType
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.leakyType"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:leakyType"
        })
#endif

-- VVV Prop "max-buffers"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@max-buffers@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #maxBuffers
-- @
getAppSrcMaxBuffers :: (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcMaxBuffers :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcMaxBuffers o
obj = IO Word64 -> m Word64
forall a. IO a -> m a
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
"max-buffers"

-- | Set the value of the “@max-buffers@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #maxBuffers 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcMaxBuffers :: (MonadIO m, IsAppSrc o) => o -> Word64 -> m ()
setAppSrcMaxBuffers :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Word64 -> m ()
setAppSrcMaxBuffers o
obj Word64
val = IO () -> m ()
forall a. IO a -> m a
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
"max-buffers" Word64
val

-- | Construct a `GValueConstruct` with valid value for the “@max-buffers@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcMaxBuffers :: (IsAppSrc o, MIO.MonadIO m) => Word64 -> m (GValueConstruct o)
constructAppSrcMaxBuffers :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Word64 -> m (GValueConstruct o)
constructAppSrcMaxBuffers Word64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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
"max-buffers" Word64
val

#if defined(ENABLE_OVERLOADING)
data AppSrcMaxBuffersPropertyInfo
instance AttrInfo AppSrcMaxBuffersPropertyInfo where
    type AttrAllowedOps AppSrcMaxBuffersPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcMaxBuffersPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcMaxBuffersPropertyInfo = (~) Word64
    type AttrTransferTypeConstraint AppSrcMaxBuffersPropertyInfo = (~) Word64
    type AttrTransferType AppSrcMaxBuffersPropertyInfo = Word64
    type AttrGetType AppSrcMaxBuffersPropertyInfo = Word64
    type AttrLabel AppSrcMaxBuffersPropertyInfo = "max-buffers"
    type AttrOrigin AppSrcMaxBuffersPropertyInfo = AppSrc
    attrGet = getAppSrcMaxBuffers
    attrSet = setAppSrcMaxBuffers
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcMaxBuffers
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.maxBuffers"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:maxBuffers"
        })
#endif

-- VVV Prop "max-bytes"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@max-bytes@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #maxBytes
-- @
getAppSrcMaxBytes :: (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcMaxBytes :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcMaxBytes o
obj = IO Word64 -> m Word64
forall a. IO a -> m a
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
"max-bytes"

-- | Set the value of the “@max-bytes@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #maxBytes 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcMaxBytes :: (MonadIO m, IsAppSrc o) => o -> Word64 -> m ()
setAppSrcMaxBytes :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Word64 -> m ()
setAppSrcMaxBytes o
obj Word64
val = IO () -> m ()
forall a. IO a -> m a
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
"max-bytes" Word64
val

-- | Construct a `GValueConstruct` with valid value for the “@max-bytes@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcMaxBytes :: (IsAppSrc o, MIO.MonadIO m) => Word64 -> m (GValueConstruct o)
constructAppSrcMaxBytes :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Word64 -> m (GValueConstruct o)
constructAppSrcMaxBytes Word64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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
"max-bytes" Word64
val

#if defined(ENABLE_OVERLOADING)
data AppSrcMaxBytesPropertyInfo
instance AttrInfo AppSrcMaxBytesPropertyInfo where
    type AttrAllowedOps AppSrcMaxBytesPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcMaxBytesPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcMaxBytesPropertyInfo = (~) Word64
    type AttrTransferTypeConstraint AppSrcMaxBytesPropertyInfo = (~) Word64
    type AttrTransferType AppSrcMaxBytesPropertyInfo = Word64
    type AttrGetType AppSrcMaxBytesPropertyInfo = Word64
    type AttrLabel AppSrcMaxBytesPropertyInfo = "max-bytes"
    type AttrOrigin AppSrcMaxBytesPropertyInfo = AppSrc
    attrGet = getAppSrcMaxBytes
    attrSet = setAppSrcMaxBytes
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcMaxBytes
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.maxBytes"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:maxBytes"
        })
#endif

-- VVV Prop "max-latency"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@max-latency@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #maxLatency
-- @
getAppSrcMaxLatency :: (MonadIO m, IsAppSrc o) => o -> m Int64
getAppSrcMaxLatency :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Int64
getAppSrcMaxLatency o
obj = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Int64
forall a. GObject a => a -> String -> IO Int64
B.Properties.getObjectPropertyInt64 o
obj String
"max-latency"

-- | Set the value of the “@max-latency@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #maxLatency 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcMaxLatency :: (MonadIO m, IsAppSrc o) => o -> Int64 -> m ()
setAppSrcMaxLatency :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Int64 -> m ()
setAppSrcMaxLatency o
obj Int64
val = IO () -> m ()
forall a. IO a -> m a
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 -> Int64 -> IO ()
forall a. GObject a => a -> String -> Int64 -> IO ()
B.Properties.setObjectPropertyInt64 o
obj String
"max-latency" Int64
val

-- | Construct a `GValueConstruct` with valid value for the “@max-latency@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcMaxLatency :: (IsAppSrc o, MIO.MonadIO m) => Int64 -> m (GValueConstruct o)
constructAppSrcMaxLatency :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Int64 -> m (GValueConstruct o)
constructAppSrcMaxLatency Int64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Int64 -> IO (GValueConstruct o)
forall o. String -> Int64 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyInt64 String
"max-latency" Int64
val

#if defined(ENABLE_OVERLOADING)
data AppSrcMaxLatencyPropertyInfo
instance AttrInfo AppSrcMaxLatencyPropertyInfo where
    type AttrAllowedOps AppSrcMaxLatencyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcMaxLatencyPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcMaxLatencyPropertyInfo = (~) Int64
    type AttrTransferTypeConstraint AppSrcMaxLatencyPropertyInfo = (~) Int64
    type AttrTransferType AppSrcMaxLatencyPropertyInfo = Int64
    type AttrGetType AppSrcMaxLatencyPropertyInfo = Int64
    type AttrLabel AppSrcMaxLatencyPropertyInfo = "max-latency"
    type AttrOrigin AppSrcMaxLatencyPropertyInfo = AppSrc
    attrGet = getAppSrcMaxLatency
    attrSet = setAppSrcMaxLatency
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcMaxLatency
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.maxLatency"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:maxLatency"
        })
#endif

-- VVV Prop "max-time"
   -- Type: TBasicType TUInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@max-time@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #maxTime
-- @
getAppSrcMaxTime :: (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcMaxTime :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word64
getAppSrcMaxTime o
obj = IO Word64 -> m Word64
forall a. IO a -> m a
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
"max-time"

-- | Set the value of the “@max-time@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #maxTime 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcMaxTime :: (MonadIO m, IsAppSrc o) => o -> Word64 -> m ()
setAppSrcMaxTime :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Word64 -> m ()
setAppSrcMaxTime o
obj Word64
val = IO () -> m ()
forall a. IO a -> m a
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
"max-time" Word64
val

-- | Construct a `GValueConstruct` with valid value for the “@max-time@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcMaxTime :: (IsAppSrc o, MIO.MonadIO m) => Word64 -> m (GValueConstruct o)
constructAppSrcMaxTime :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Word64 -> m (GValueConstruct o)
constructAppSrcMaxTime Word64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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
"max-time" Word64
val

#if defined(ENABLE_OVERLOADING)
data AppSrcMaxTimePropertyInfo
instance AttrInfo AppSrcMaxTimePropertyInfo where
    type AttrAllowedOps AppSrcMaxTimePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcMaxTimePropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcMaxTimePropertyInfo = (~) Word64
    type AttrTransferTypeConstraint AppSrcMaxTimePropertyInfo = (~) Word64
    type AttrTransferType AppSrcMaxTimePropertyInfo = Word64
    type AttrGetType AppSrcMaxTimePropertyInfo = Word64
    type AttrLabel AppSrcMaxTimePropertyInfo = "max-time"
    type AttrOrigin AppSrcMaxTimePropertyInfo = AppSrc
    attrGet = getAppSrcMaxTime
    attrSet = setAppSrcMaxTime
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcMaxTime
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.maxTime"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:maxTime"
        })
#endif

-- VVV Prop "min-latency"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@min-latency@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #minLatency
-- @
getAppSrcMinLatency :: (MonadIO m, IsAppSrc o) => o -> m Int64
getAppSrcMinLatency :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Int64
getAppSrcMinLatency o
obj = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Int64
forall a. GObject a => a -> String -> IO Int64
B.Properties.getObjectPropertyInt64 o
obj String
"min-latency"

-- | Set the value of the “@min-latency@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #minLatency 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcMinLatency :: (MonadIO m, IsAppSrc o) => o -> Int64 -> m ()
setAppSrcMinLatency :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Int64 -> m ()
setAppSrcMinLatency o
obj Int64
val = IO () -> m ()
forall a. IO a -> m a
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 -> Int64 -> IO ()
forall a. GObject a => a -> String -> Int64 -> IO ()
B.Properties.setObjectPropertyInt64 o
obj String
"min-latency" Int64
val

-- | Construct a `GValueConstruct` with valid value for the “@min-latency@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcMinLatency :: (IsAppSrc o, MIO.MonadIO m) => Int64 -> m (GValueConstruct o)
constructAppSrcMinLatency :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Int64 -> m (GValueConstruct o)
constructAppSrcMinLatency Int64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Int64 -> IO (GValueConstruct o)
forall o. String -> Int64 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyInt64 String
"min-latency" Int64
val

#if defined(ENABLE_OVERLOADING)
data AppSrcMinLatencyPropertyInfo
instance AttrInfo AppSrcMinLatencyPropertyInfo where
    type AttrAllowedOps AppSrcMinLatencyPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcMinLatencyPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcMinLatencyPropertyInfo = (~) Int64
    type AttrTransferTypeConstraint AppSrcMinLatencyPropertyInfo = (~) Int64
    type AttrTransferType AppSrcMinLatencyPropertyInfo = Int64
    type AttrGetType AppSrcMinLatencyPropertyInfo = Int64
    type AttrLabel AppSrcMinLatencyPropertyInfo = "min-latency"
    type AttrOrigin AppSrcMinLatencyPropertyInfo = AppSrc
    attrGet = getAppSrcMinLatency
    attrSet = setAppSrcMinLatency
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcMinLatency
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.minLatency"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:minLatency"
        })
#endif

-- VVV Prop "min-percent"
   -- Type: TBasicType TUInt
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Nothing,Nothing)

-- | Get the value of the “@min-percent@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #minPercent
-- @
getAppSrcMinPercent :: (MonadIO m, IsAppSrc o) => o -> m Word32
getAppSrcMinPercent :: forall (m :: * -> *) o. (MonadIO m, IsAppSrc o) => o -> m Word32
getAppSrcMinPercent o
obj = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ o -> String -> IO Word32
forall a. GObject a => a -> String -> IO Word32
B.Properties.getObjectPropertyUInt32 o
obj String
"min-percent"

-- | Set the value of the “@min-percent@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #minPercent 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcMinPercent :: (MonadIO m, IsAppSrc o) => o -> Word32 -> m ()
setAppSrcMinPercent :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Word32 -> m ()
setAppSrcMinPercent o
obj Word32
val = IO () -> m ()
forall a. IO a -> m a
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 -> AppSrcNeedDataCallback
forall a. GObject a => a -> String -> AppSrcNeedDataCallback
B.Properties.setObjectPropertyUInt32 o
obj String
"min-percent" Word32
val

-- | Construct a `GValueConstruct` with valid value for the “@min-percent@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcMinPercent :: (IsAppSrc o, MIO.MonadIO m) => Word32 -> m (GValueConstruct o)
constructAppSrcMinPercent :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Word32 -> m (GValueConstruct o)
constructAppSrcMinPercent Word32
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Word32 -> IO (GValueConstruct o)
forall o. String -> Word32 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyUInt32 String
"min-percent" Word32
val

#if defined(ENABLE_OVERLOADING)
data AppSrcMinPercentPropertyInfo
instance AttrInfo AppSrcMinPercentPropertyInfo where
    type AttrAllowedOps AppSrcMinPercentPropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcMinPercentPropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcMinPercentPropertyInfo = (~) Word32
    type AttrTransferTypeConstraint AppSrcMinPercentPropertyInfo = (~) Word32
    type AttrTransferType AppSrcMinPercentPropertyInfo = Word32
    type AttrGetType AppSrcMinPercentPropertyInfo = Word32
    type AttrLabel AppSrcMinPercentPropertyInfo = "min-percent"
    type AttrOrigin AppSrcMinPercentPropertyInfo = AppSrc
    attrGet = getAppSrcMinPercent
    attrSet = setAppSrcMinPercent
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcMinPercent
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.minPercent"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:minPercent"
        })
#endif

-- VVV Prop "size"
   -- Type: TBasicType TInt64
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

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

-- | Set the value of the “@size@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #size 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcSize :: (MonadIO m, IsAppSrc o) => o -> Int64 -> m ()
setAppSrcSize :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> Int64 -> m ()
setAppSrcSize o
obj Int64
val = IO () -> m ()
forall a. IO a -> m a
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 -> Int64 -> IO ()
forall a. GObject a => a -> String -> Int64 -> IO ()
B.Properties.setObjectPropertyInt64 o
obj String
"size" Int64
val

-- | Construct a `GValueConstruct` with valid value for the “@size@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcSize :: (IsAppSrc o, MIO.MonadIO m) => Int64 -> m (GValueConstruct o)
constructAppSrcSize :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
Int64 -> m (GValueConstruct o)
constructAppSrcSize Int64
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> Int64 -> IO (GValueConstruct o)
forall o. String -> Int64 -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyInt64 String
"size" Int64
val

#if defined(ENABLE_OVERLOADING)
data AppSrcSizePropertyInfo
instance AttrInfo AppSrcSizePropertyInfo where
    type AttrAllowedOps AppSrcSizePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcSizePropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcSizePropertyInfo = (~) Int64
    type AttrTransferTypeConstraint AppSrcSizePropertyInfo = (~) Int64
    type AttrTransferType AppSrcSizePropertyInfo = Int64
    type AttrGetType AppSrcSizePropertyInfo = Int64
    type AttrLabel AppSrcSizePropertyInfo = "size"
    type AttrOrigin AppSrcSizePropertyInfo = AppSrc
    attrGet = getAppSrcSize
    attrSet = setAppSrcSize
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcSize
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.size"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:size"
        })
#endif

-- VVV Prop "stream-type"
   -- Type: TInterface (Name {namespace = "GstApp", name = "AppStreamType"})
   -- Flags: [PropertyReadable,PropertyWritable]
   -- Nullable: (Just False,Just False)

-- | Get the value of the “@stream-type@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' appSrc #streamType
-- @
getAppSrcStreamType :: (MonadIO m, IsAppSrc o) => o -> m GstApp.Enums.AppStreamType
getAppSrcStreamType :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> m AppStreamType
getAppSrcStreamType o
obj = IO AppStreamType -> m AppStreamType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO AppStreamType -> m AppStreamType)
-> IO AppStreamType -> m AppStreamType
forall a b. (a -> b) -> a -> b
$ o -> String -> IO AppStreamType
forall a b. (GObject a, Enum b, BoxedEnum b) => a -> String -> IO b
B.Properties.getObjectPropertyEnum o
obj String
"stream-type"

-- | Set the value of the “@stream-type@” property.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' appSrc [ #streamType 'Data.GI.Base.Attributes.:=' value ]
-- @
setAppSrcStreamType :: (MonadIO m, IsAppSrc o) => o -> GstApp.Enums.AppStreamType -> m ()
setAppSrcStreamType :: forall (m :: * -> *) o.
(MonadIO m, IsAppSrc o) =>
o -> AppStreamType -> m ()
setAppSrcStreamType o
obj AppStreamType
val = IO () -> m ()
forall a. IO a -> m a
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 -> AppStreamType -> IO ()
forall a b.
(GObject a, Enum b, BoxedEnum b) =>
a -> String -> b -> IO ()
B.Properties.setObjectPropertyEnum o
obj String
"stream-type" AppStreamType
val

-- | Construct a `GValueConstruct` with valid value for the “@stream-type@” property. This is rarely needed directly, but it is used by `Data.GI.Base.Constructible.new`.
constructAppSrcStreamType :: (IsAppSrc o, MIO.MonadIO m) => GstApp.Enums.AppStreamType -> m (GValueConstruct o)
constructAppSrcStreamType :: forall o (m :: * -> *).
(IsAppSrc o, MonadIO m) =>
AppStreamType -> m (GValueConstruct o)
constructAppSrcStreamType AppStreamType
val = IO (GValueConstruct o) -> m (GValueConstruct o)
forall a. IO a -> m a
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 a. IO a -> IO a
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 -> AppStreamType -> IO (GValueConstruct o)
forall a o.
(Enum a, BoxedEnum a) =>
String -> a -> IO (GValueConstruct o)
B.Properties.constructObjectPropertyEnum String
"stream-type" AppStreamType
val

#if defined(ENABLE_OVERLOADING)
data AppSrcStreamTypePropertyInfo
instance AttrInfo AppSrcStreamTypePropertyInfo where
    type AttrAllowedOps AppSrcStreamTypePropertyInfo = '[ 'AttrSet, 'AttrConstruct, 'AttrGet]
    type AttrBaseTypeConstraint AppSrcStreamTypePropertyInfo = IsAppSrc
    type AttrSetTypeConstraint AppSrcStreamTypePropertyInfo = (~) GstApp.Enums.AppStreamType
    type AttrTransferTypeConstraint AppSrcStreamTypePropertyInfo = (~) GstApp.Enums.AppStreamType
    type AttrTransferType AppSrcStreamTypePropertyInfo = GstApp.Enums.AppStreamType
    type AttrGetType AppSrcStreamTypePropertyInfo = GstApp.Enums.AppStreamType
    type AttrLabel AppSrcStreamTypePropertyInfo = "stream-type"
    type AttrOrigin AppSrcStreamTypePropertyInfo = AppSrc
    attrGet = getAppSrcStreamType
    attrSet = setAppSrcStreamType
    attrTransfer _ v = do
        return v
    attrConstruct = constructAppSrcStreamType
    attrClear = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.streamType"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#g:attr:streamType"
        })
#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList AppSrc
type instance O.AttributeList AppSrc = AppSrcAttributeList
type AppSrcAttributeList = ('[ '("block", AppSrcBlockPropertyInfo), '("blocksize", GstBase.BaseSrc.BaseSrcBlocksizePropertyInfo), '("caps", AppSrcCapsPropertyInfo), '("currentLevelBuffers", AppSrcCurrentLevelBuffersPropertyInfo), '("currentLevelBytes", AppSrcCurrentLevelBytesPropertyInfo), '("currentLevelTime", AppSrcCurrentLevelTimePropertyInfo), '("doTimestamp", GstBase.BaseSrc.BaseSrcDoTimestampPropertyInfo), '("duration", AppSrcDurationPropertyInfo), '("emitSignals", AppSrcEmitSignalsPropertyInfo), '("format", AppSrcFormatPropertyInfo), '("handleSegmentChange", AppSrcHandleSegmentChangePropertyInfo), '("isLive", AppSrcIsLivePropertyInfo), '("leakyType", AppSrcLeakyTypePropertyInfo), '("maxBuffers", AppSrcMaxBuffersPropertyInfo), '("maxBytes", AppSrcMaxBytesPropertyInfo), '("maxLatency", AppSrcMaxLatencyPropertyInfo), '("maxTime", AppSrcMaxTimePropertyInfo), '("minLatency", AppSrcMinLatencyPropertyInfo), '("minPercent", AppSrcMinPercentPropertyInfo), '("name", Gst.Object.ObjectNamePropertyInfo), '("numBuffers", GstBase.BaseSrc.BaseSrcNumBuffersPropertyInfo), '("parent", Gst.Object.ObjectParentPropertyInfo), '("size", AppSrcSizePropertyInfo), '("streamType", AppSrcStreamTypePropertyInfo), '("typefind", GstBase.BaseSrc.BaseSrcTypefindPropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
appSrcBlock :: AttrLabelProxy "block"
appSrcBlock = AttrLabelProxy

appSrcCaps :: AttrLabelProxy "caps"
appSrcCaps = AttrLabelProxy

appSrcCurrentLevelBuffers :: AttrLabelProxy "currentLevelBuffers"
appSrcCurrentLevelBuffers = AttrLabelProxy

appSrcCurrentLevelBytes :: AttrLabelProxy "currentLevelBytes"
appSrcCurrentLevelBytes = AttrLabelProxy

appSrcCurrentLevelTime :: AttrLabelProxy "currentLevelTime"
appSrcCurrentLevelTime = AttrLabelProxy

appSrcDuration :: AttrLabelProxy "duration"
appSrcDuration = AttrLabelProxy

appSrcEmitSignals :: AttrLabelProxy "emitSignals"
appSrcEmitSignals = AttrLabelProxy

appSrcFormat :: AttrLabelProxy "format"
appSrcFormat = AttrLabelProxy

appSrcHandleSegmentChange :: AttrLabelProxy "handleSegmentChange"
appSrcHandleSegmentChange = AttrLabelProxy

appSrcIsLive :: AttrLabelProxy "isLive"
appSrcIsLive = AttrLabelProxy

appSrcLeakyType :: AttrLabelProxy "leakyType"
appSrcLeakyType = AttrLabelProxy

appSrcMaxBuffers :: AttrLabelProxy "maxBuffers"
appSrcMaxBuffers = AttrLabelProxy

appSrcMaxBytes :: AttrLabelProxy "maxBytes"
appSrcMaxBytes = AttrLabelProxy

appSrcMaxLatency :: AttrLabelProxy "maxLatency"
appSrcMaxLatency = AttrLabelProxy

appSrcMaxTime :: AttrLabelProxy "maxTime"
appSrcMaxTime = AttrLabelProxy

appSrcMinLatency :: AttrLabelProxy "minLatency"
appSrcMinLatency = AttrLabelProxy

appSrcMinPercent :: AttrLabelProxy "minPercent"
appSrcMinPercent = AttrLabelProxy

appSrcSize :: AttrLabelProxy "size"
appSrcSize = AttrLabelProxy

appSrcStreamType :: AttrLabelProxy "streamType"
appSrcStreamType = AttrLabelProxy

#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList AppSrc = AppSrcSignalList
type AppSrcSignalList = ('[ '("deepNotify", Gst.Object.ObjectDeepNotifySignalInfo), '("endOfStream", AppSrcEndOfStreamSignalInfo), '("enoughData", AppSrcEnoughDataSignalInfo), '("needData", AppSrcNeedDataSignalInfo), '("noMorePads", Gst.Element.ElementNoMorePadsSignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("padAdded", Gst.Element.ElementPadAddedSignalInfo), '("padRemoved", Gst.Element.ElementPadRemovedSignalInfo), '("pushBuffer", AppSrcPushBufferSignalInfo), '("pushBufferList", AppSrcPushBufferListSignalInfo), '("pushSample", AppSrcPushSampleSignalInfo), '("seekData", AppSrcSeekDataSignalInfo)] :: [(Symbol, DK.Type)])

#endif

-- method AppSrc::end_of_stream
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gst" , name = "FlowReturn" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_end_of_stream" gst_app_src_end_of_stream :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO CInt

-- | Indicates to the appsrc element that the last buffer queued in the
-- element is the last buffer of the stream.
appSrcEndOfStream ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Gst.Enums.FlowReturn
    -- ^ __Returns:__ @/GST_FLOW_OK/@ when the EOS was successfully queued.
    -- @/GST_FLOW_FLUSHING/@ when /@appsrc@/ is not PAUSED or PLAYING.
appSrcEndOfStream :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m FlowReturn
appSrcEndOfStream a
appsrc = AppSrcEndOfStreamCallback -> m FlowReturn
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (AppSrcEndOfStreamCallback -> m FlowReturn)
-> AppSrcEndOfStreamCallback -> m FlowReturn
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    CInt
result <- Ptr AppSrc -> IO CInt
gst_app_src_end_of_stream Ptr AppSrc
appsrc'
    let result' :: FlowReturn
result' = (Int -> FlowReturn
forall a. Enum a => Int -> a
toEnum (Int -> FlowReturn) -> (CInt -> Int) -> CInt -> FlowReturn
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    FlowReturn -> AppSrcEndOfStreamCallback
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FlowReturn
result'

#if defined(ENABLE_OVERLOADING)
data AppSrcEndOfStreamMethodInfo
instance (signature ~ (m Gst.Enums.FlowReturn), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcEndOfStreamMethodInfo a signature where
    overloadedMethod = appSrcEndOfStream

instance O.OverloadedMethodInfo AppSrcEndOfStreamMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcEndOfStream",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcEndOfStream"
        })


#endif

-- method AppSrc::get_caps
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gst" , name = "Caps" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_caps" gst_app_src_get_caps :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO (Ptr Gst.Caps.Caps)

-- | Get the configured caps on /@appsrc@/.
appSrcGetCaps ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m (Maybe Gst.Caps.Caps)
    -- ^ __Returns:__ the t'GI.Gst.Structs.Caps.Caps' produced by the source. @/gst_caps_unref()/@ after usage.
appSrcGetCaps :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m (Maybe Caps)
appSrcGetCaps a
appsrc = IO (Maybe Caps) -> m (Maybe Caps)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe Caps) -> m (Maybe Caps))
-> IO (Maybe Caps) -> m (Maybe Caps)
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr Caps
result <- Ptr AppSrc -> IO (Ptr Caps)
gst_app_src_get_caps Ptr AppSrc
appsrc'
    Maybe Caps
maybeResult <- Ptr Caps -> (Ptr Caps -> IO Caps) -> IO (Maybe Caps)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr Caps
result ((Ptr Caps -> IO Caps) -> IO (Maybe Caps))
-> (Ptr Caps -> IO Caps) -> IO (Maybe Caps)
forall a b. (a -> b) -> a -> b
$ \Ptr Caps
result' -> do
        Caps
result'' <- ((ManagedPtr Caps -> Caps) -> Ptr Caps -> IO Caps
forall a.
(HasCallStack, GBoxed a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapBoxed ManagedPtr Caps -> Caps
Gst.Caps.Caps) Ptr Caps
result'
        Caps -> IO Caps
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Caps
result''
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Maybe Caps -> IO (Maybe Caps)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe Caps
maybeResult

#if defined(ENABLE_OVERLOADING)
data AppSrcGetCapsMethodInfo
instance (signature ~ (m (Maybe Gst.Caps.Caps)), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetCapsMethodInfo a signature where
    overloadedMethod = appSrcGetCaps

instance O.OverloadedMethodInfo AppSrcGetCapsMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetCaps",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetCaps"
        })


#endif

-- method AppSrc::get_current_level_buffers
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_current_level_buffers" gst_app_src_get_current_level_buffers :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Word64

-- | Get the number of currently queued buffers inside /@appsrc@/.
-- 
-- /Since: 1.20/
appSrcGetCurrentLevelBuffers ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Word64
    -- ^ __Returns:__ The number of currently queued buffers.
appSrcGetCurrentLevelBuffers :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Word64
appSrcGetCurrentLevelBuffers a
appsrc = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Word64
result <- Ptr AppSrc -> IO Word64
gst_app_src_get_current_level_buffers Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetCurrentLevelBuffersMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetCurrentLevelBuffersMethodInfo a signature where
    overloadedMethod = appSrcGetCurrentLevelBuffers

instance O.OverloadedMethodInfo AppSrcGetCurrentLevelBuffersMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetCurrentLevelBuffers",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetCurrentLevelBuffers"
        })


#endif

-- method AppSrc::get_current_level_bytes
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_current_level_bytes" gst_app_src_get_current_level_bytes :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Word64

-- | Get the number of currently queued bytes inside /@appsrc@/.
-- 
-- /Since: 1.2/
appSrcGetCurrentLevelBytes ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Word64
    -- ^ __Returns:__ The number of currently queued bytes.
appSrcGetCurrentLevelBytes :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Word64
appSrcGetCurrentLevelBytes a
appsrc = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Word64
result <- Ptr AppSrc -> IO Word64
gst_app_src_get_current_level_bytes Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetCurrentLevelBytesMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetCurrentLevelBytesMethodInfo a signature where
    overloadedMethod = appSrcGetCurrentLevelBytes

instance O.OverloadedMethodInfo AppSrcGetCurrentLevelBytesMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetCurrentLevelBytes",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetCurrentLevelBytes"
        })


#endif

-- method AppSrc::get_current_level_time
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_current_level_time" gst_app_src_get_current_level_time :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Word64

-- | Get the amount of currently queued time inside /@appsrc@/.
-- 
-- /Since: 1.20/
appSrcGetCurrentLevelTime ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Word64
    -- ^ __Returns:__ The amount of currently queued time.
appSrcGetCurrentLevelTime :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Word64
appSrcGetCurrentLevelTime a
appsrc = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Word64
result <- Ptr AppSrc -> IO Word64
gst_app_src_get_current_level_time Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetCurrentLevelTimeMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetCurrentLevelTimeMethodInfo a signature where
    overloadedMethod = appSrcGetCurrentLevelTime

instance O.OverloadedMethodInfo AppSrcGetCurrentLevelTimeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetCurrentLevelTime",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetCurrentLevelTime"
        })


#endif

-- method AppSrc::get_duration
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_duration" gst_app_src_get_duration :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Word64

-- | Get the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is
-- not known.
-- 
-- /Since: 1.10/
appSrcGetDuration ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Word64
    -- ^ __Returns:__ the duration of the stream previously set with 'GI.GstApp.Objects.AppSrc.appSrcSetDuration';
appSrcGetDuration :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Word64
appSrcGetDuration a
appsrc = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Word64
result <- Ptr AppSrc -> IO Word64
gst_app_src_get_duration Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetDurationMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetDurationMethodInfo a signature where
    overloadedMethod = appSrcGetDuration

instance O.OverloadedMethodInfo AppSrcGetDurationMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetDuration",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetDuration"
        })


#endif

-- method AppSrc::get_emit_signals
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_emit_signals" gst_app_src_get_emit_signals :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO CInt

-- | Check if appsrc will emit the \"new-preroll\" and \"new-buffer\" signals.
appSrcGetEmitSignals ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Bool
    -- ^ __Returns:__ 'P.True' if /@appsrc@/ is emitting the \"new-preroll\" and \"new-buffer\"
    -- signals.
appSrcGetEmitSignals :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Bool
appSrcGetEmitSignals a
appsrc = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    CInt
result <- Ptr AppSrc -> IO CInt
gst_app_src_get_emit_signals Ptr AppSrc
appsrc'
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data AppSrcGetEmitSignalsMethodInfo
instance (signature ~ (m Bool), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetEmitSignalsMethodInfo a signature where
    overloadedMethod = appSrcGetEmitSignals

instance O.OverloadedMethodInfo AppSrcGetEmitSignalsMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetEmitSignals",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetEmitSignals"
        })


#endif

-- method AppSrc::get_latency
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "min"
--           , argType = TBasicType TUInt64
--           , direction = DirectionOut
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the min latency" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       , Arg
--           { argCName = "max"
--           , argType = TBasicType TUInt64
--           , direction = DirectionOut
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the max latency" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_latency" gst_app_src_get_latency :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Ptr Word64 ->                           -- min : TBasicType TUInt64
    Ptr Word64 ->                           -- max : TBasicType TUInt64
    IO ()

-- | Retrieve the min and max latencies in /@min@/ and /@max@/ respectively.
appSrcGetLatency ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m ((Word64, Word64))
appSrcGetLatency :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m (Word64, Word64)
appSrcGetLatency a
appsrc = IO (Word64, Word64) -> m (Word64, Word64)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Word64, Word64) -> m (Word64, Word64))
-> IO (Word64, Word64) -> m (Word64, Word64)
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr Word64
min <- IO (Ptr Word64)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word64)
    Ptr Word64
max <- IO (Ptr Word64)
forall a. Storable a => IO (Ptr a)
allocMem :: IO (Ptr Word64)
    Ptr AppSrc -> Ptr Word64 -> Ptr Word64 -> IO ()
gst_app_src_get_latency Ptr AppSrc
appsrc' Ptr Word64
min Ptr Word64
max
    Word64
min' <- Ptr Word64 -> IO Word64
forall a. Storable a => Ptr a -> IO a
peek Ptr Word64
min
    Word64
max' <- Ptr Word64 -> IO Word64
forall a. Storable a => Ptr a -> IO a
peek Ptr Word64
max
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Ptr Word64 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word64
min
    Ptr Word64 -> IO ()
forall a. Ptr a -> IO ()
freeMem Ptr Word64
max
    (Word64, Word64) -> IO (Word64, Word64)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (Word64
min', Word64
max')

#if defined(ENABLE_OVERLOADING)
data AppSrcGetLatencyMethodInfo
instance (signature ~ (m ((Word64, Word64))), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetLatencyMethodInfo a signature where
    overloadedMethod = appSrcGetLatency

instance O.OverloadedMethodInfo AppSrcGetLatencyMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetLatency",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetLatency"
        })


#endif

-- method AppSrc::get_leaky_type
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "GstApp" , name = "AppLeakyType" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_leaky_type" gst_app_src_get_leaky_type :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO CUInt

-- | Returns the currently set t'GI.GstApp.Enums.AppLeakyType'. See 'GI.GstApp.Objects.AppSrc.appSrcSetLeakyType'
-- for more details.
-- 
-- /Since: 1.20/
appSrcGetLeakyType ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m GstApp.Enums.AppLeakyType
    -- ^ __Returns:__ The currently set t'GI.GstApp.Enums.AppLeakyType'.
appSrcGetLeakyType :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m AppLeakyType
appSrcGetLeakyType a
appsrc = IO AppLeakyType -> m AppLeakyType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AppLeakyType -> m AppLeakyType)
-> IO AppLeakyType -> m AppLeakyType
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    CUInt
result <- Ptr AppSrc -> IO CUInt
gst_app_src_get_leaky_type Ptr AppSrc
appsrc'
    let result' :: AppLeakyType
result' = (Int -> AppLeakyType
forall a. Enum a => Int -> a
toEnum (Int -> AppLeakyType) -> (CUInt -> Int) -> CUInt -> AppLeakyType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    AppLeakyType -> IO AppLeakyType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AppLeakyType
result'

#if defined(ENABLE_OVERLOADING)
data AppSrcGetLeakyTypeMethodInfo
instance (signature ~ (m GstApp.Enums.AppLeakyType), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetLeakyTypeMethodInfo a signature where
    overloadedMethod = appSrcGetLeakyType

instance O.OverloadedMethodInfo AppSrcGetLeakyTypeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetLeakyType",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetLeakyType"
        })


#endif

-- method AppSrc::get_max_buffers
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_max_buffers" gst_app_src_get_max_buffers :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Word64

-- | Get the maximum amount of buffers that can be queued in /@appsrc@/.
-- 
-- /Since: 1.20/
appSrcGetMaxBuffers ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Word64
    -- ^ __Returns:__ The maximum amount of buffers that can be queued.
appSrcGetMaxBuffers :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Word64
appSrcGetMaxBuffers a
appsrc = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Word64
result <- Ptr AppSrc -> IO Word64
gst_app_src_get_max_buffers Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetMaxBuffersMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetMaxBuffersMethodInfo a signature where
    overloadedMethod = appSrcGetMaxBuffers

instance O.OverloadedMethodInfo AppSrcGetMaxBuffersMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetMaxBuffers",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetMaxBuffers"
        })


#endif

-- method AppSrc::get_max_bytes
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_max_bytes" gst_app_src_get_max_bytes :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Word64

-- | Get the maximum amount of bytes that can be queued in /@appsrc@/.
appSrcGetMaxBytes ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Word64
    -- ^ __Returns:__ The maximum amount of bytes that can be queued.
appSrcGetMaxBytes :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Word64
appSrcGetMaxBytes a
appsrc = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Word64
result <- Ptr AppSrc -> IO Word64
gst_app_src_get_max_bytes Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetMaxBytesMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetMaxBytesMethodInfo a signature where
    overloadedMethod = appSrcGetMaxBytes

instance O.OverloadedMethodInfo AppSrcGetMaxBytesMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetMaxBytes",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetMaxBytes"
        })


#endif

-- method AppSrc::get_max_time
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TUInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_max_time" gst_app_src_get_max_time :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Word64

-- | Get the maximum amount of time that can be queued in /@appsrc@/.
-- 
-- /Since: 1.20/
appSrcGetMaxTime ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Word64
    -- ^ __Returns:__ The maximum amount of time that can be queued.
appSrcGetMaxTime :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Word64
appSrcGetMaxTime a
appsrc = IO Word64 -> m Word64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word64 -> m Word64) -> IO Word64 -> m Word64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Word64
result <- Ptr AppSrc -> IO Word64
gst_app_src_get_max_time Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Word64 -> IO Word64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetMaxTimeMethodInfo
instance (signature ~ (m Word64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetMaxTimeMethodInfo a signature where
    overloadedMethod = appSrcGetMaxTime

instance O.OverloadedMethodInfo AppSrcGetMaxTimeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetMaxTime",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetMaxTime"
        })


#endif

-- method AppSrc::get_size
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TInt64)
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_size" gst_app_src_get_size :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO Int64

-- | Get the size of the stream in bytes. A value of -1 means that the size is
-- not known.
appSrcGetSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m Int64
    -- ^ __Returns:__ the size of the stream previously set with 'GI.GstApp.Objects.AppSrc.appSrcSetSize';
appSrcGetSize :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m Int64
appSrcGetSize a
appsrc = IO Int64 -> m Int64
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Int64 -> m Int64) -> IO Int64 -> m Int64
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Int64
result <- Ptr AppSrc -> IO Int64
gst_app_src_get_size Ptr AppSrc
appsrc'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Int64 -> IO Int64
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Int64
result

#if defined(ENABLE_OVERLOADING)
data AppSrcGetSizeMethodInfo
instance (signature ~ (m Int64), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetSizeMethodInfo a signature where
    overloadedMethod = appSrcGetSize

instance O.OverloadedMethodInfo AppSrcGetSizeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetSize",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetSize"
        })


#endif

-- method AppSrc::get_stream_type
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just
--               (TInterface Name { namespace = "GstApp" , name = "AppStreamType" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_get_stream_type" gst_app_src_get_stream_type :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    IO CUInt

-- | Get the stream type. Control the stream type of /@appsrc@/
-- with 'GI.GstApp.Objects.AppSrc.appSrcSetStreamType'.
appSrcGetStreamType ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> m GstApp.Enums.AppStreamType
    -- ^ __Returns:__ the stream type.
appSrcGetStreamType :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> m AppStreamType
appSrcGetStreamType a
appsrc = IO AppStreamType -> m AppStreamType
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO AppStreamType -> m AppStreamType)
-> IO AppStreamType -> m AppStreamType
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    CUInt
result <- Ptr AppSrc -> IO CUInt
gst_app_src_get_stream_type Ptr AppSrc
appsrc'
    let result' :: AppStreamType
result' = (Int -> AppStreamType
forall a. Enum a => Int -> a
toEnum (Int -> AppStreamType) -> (CUInt -> Int) -> CUInt -> AppStreamType
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    AppStreamType -> IO AppStreamType
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return AppStreamType
result'

#if defined(ENABLE_OVERLOADING)
data AppSrcGetStreamTypeMethodInfo
instance (signature ~ (m GstApp.Enums.AppStreamType), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcGetStreamTypeMethodInfo a signature where
    overloadedMethod = appSrcGetStreamType

instance O.OverloadedMethodInfo AppSrcGetStreamTypeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcGetStreamType",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcGetStreamType"
        })


#endif

-- method AppSrc::push_buffer
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "buffer"
--           , argType = TInterface Name { namespace = "Gst" , name = "Buffer" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstBuffer to push"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gst" , name = "FlowReturn" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_push_buffer" gst_app_src_push_buffer :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Ptr Gst.Buffer.Buffer ->                -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"})
    IO CInt

-- | Adds a buffer to the queue of buffers that the appsrc element will
-- push to its source pad.  This function takes ownership of the buffer.
-- 
-- When the block property is TRUE, this function can block until free
-- space becomes available in the queue.
appSrcPushBuffer ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Gst.Buffer.Buffer
    -- ^ /@buffer@/: a t'GI.Gst.Structs.Buffer.Buffer' to push
    -> m Gst.Enums.FlowReturn
    -- ^ __Returns:__ @/GST_FLOW_OK/@ when the buffer was successfully queued.
    -- @/GST_FLOW_FLUSHING/@ when /@appsrc@/ is not PAUSED or PLAYING.
    -- @/GST_FLOW_EOS/@ when EOS occurred.
appSrcPushBuffer :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Buffer -> m FlowReturn
appSrcPushBuffer a
appsrc Buffer
buffer = AppSrcEndOfStreamCallback -> m FlowReturn
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (AppSrcEndOfStreamCallback -> m FlowReturn)
-> AppSrcEndOfStreamCallback -> m FlowReturn
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr Buffer
buffer' <- Buffer -> IO (Ptr Buffer)
forall a. (HasCallStack, GBoxed a) => a -> IO (Ptr a)
B.ManagedPtr.disownBoxed Buffer
buffer
    CInt
result <- Ptr AppSrc -> Ptr Buffer -> IO CInt
gst_app_src_push_buffer Ptr AppSrc
appsrc' Ptr Buffer
buffer'
    let result' :: FlowReturn
result' = (Int -> FlowReturn
forall a. Enum a => Int -> a
toEnum (Int -> FlowReturn) -> (CInt -> Int) -> CInt -> FlowReturn
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Buffer -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Buffer
buffer
    FlowReturn -> AppSrcEndOfStreamCallback
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FlowReturn
result'

#if defined(ENABLE_OVERLOADING)
data AppSrcPushBufferMethodInfo
instance (signature ~ (Gst.Buffer.Buffer -> m Gst.Enums.FlowReturn), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcPushBufferMethodInfo a signature where
    overloadedMethod = appSrcPushBuffer

instance O.OverloadedMethodInfo AppSrcPushBufferMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcPushBuffer",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcPushBuffer"
        })


#endif

-- method AppSrc::push_buffer_list
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "buffer_list"
--           , argType =
--               TInterface Name { namespace = "Gst" , name = "BufferList" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstBufferList to push"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferEverything
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gst" , name = "FlowReturn" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_push_buffer_list" gst_app_src_push_buffer_list :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Ptr Gst.BufferList.BufferList ->        -- buffer_list : TInterface (Name {namespace = "Gst", name = "BufferList"})
    IO CInt

-- | Adds a buffer list to the queue of buffers and buffer lists that the
-- appsrc element will push to its source pad.  This function takes ownership
-- of /@bufferList@/.
-- 
-- When the block property is TRUE, this function can block until free
-- space becomes available in the queue.
-- 
-- /Since: 1.14/
appSrcPushBufferList ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Gst.BufferList.BufferList
    -- ^ /@bufferList@/: a t'GI.Gst.Structs.BufferList.BufferList' to push
    -> m Gst.Enums.FlowReturn
    -- ^ __Returns:__ @/GST_FLOW_OK/@ when the buffer list was successfully queued.
    -- @/GST_FLOW_FLUSHING/@ when /@appsrc@/ is not PAUSED or PLAYING.
    -- @/GST_FLOW_EOS/@ when EOS occurred.
appSrcPushBufferList :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> BufferList -> m FlowReturn
appSrcPushBufferList a
appsrc BufferList
bufferList = AppSrcEndOfStreamCallback -> m FlowReturn
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (AppSrcEndOfStreamCallback -> m FlowReturn)
-> AppSrcEndOfStreamCallback -> m FlowReturn
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr BufferList
bufferList' <- BufferList -> IO (Ptr BufferList)
forall a. (HasCallStack, GBoxed a) => a -> IO (Ptr a)
B.ManagedPtr.disownBoxed BufferList
bufferList
    CInt
result <- Ptr AppSrc -> Ptr BufferList -> IO CInt
gst_app_src_push_buffer_list Ptr AppSrc
appsrc' Ptr BufferList
bufferList'
    let result' :: FlowReturn
result' = (Int -> FlowReturn
forall a. Enum a => Int -> a
toEnum (Int -> FlowReturn) -> (CInt -> Int) -> CInt -> FlowReturn
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    BufferList -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr BufferList
bufferList
    FlowReturn -> AppSrcEndOfStreamCallback
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FlowReturn
result'

#if defined(ENABLE_OVERLOADING)
data AppSrcPushBufferListMethodInfo
instance (signature ~ (Gst.BufferList.BufferList -> m Gst.Enums.FlowReturn), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcPushBufferListMethodInfo a signature where
    overloadedMethod = appSrcPushBufferList

instance O.OverloadedMethodInfo AppSrcPushBufferListMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcPushBufferList",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcPushBufferList"
        })


#endif

-- method AppSrc::push_sample
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "sample"
--           , argType = TInterface Name { namespace = "Gst" , name = "Sample" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText =
--                     Just "a #GstSample from which buffer and caps may be\nextracted"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gst" , name = "FlowReturn" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_push_sample" gst_app_src_push_sample :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Ptr Gst.Sample.Sample ->                -- sample : TInterface (Name {namespace = "Gst", name = "Sample"})
    IO CInt

-- | Extract a buffer from the provided sample and adds it to the queue of
-- buffers that the appsrc element will push to its source pad. Any
-- previous caps that were set on appsrc will be replaced by the caps
-- associated with the sample if not equal.
-- 
-- This function does not take ownership of the
-- sample so the sample needs to be unreffed after calling this function.
-- 
-- When the block property is TRUE, this function can block until free
-- space becomes available in the queue.
-- 
-- /Since: 1.6/
appSrcPushSample ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Gst.Sample.Sample
    -- ^ /@sample@/: a t'GI.Gst.Structs.Sample.Sample' from which buffer and caps may be
    -- extracted
    -> m Gst.Enums.FlowReturn
    -- ^ __Returns:__ @/GST_FLOW_OK/@ when the buffer was successfully queued.
    -- @/GST_FLOW_FLUSHING/@ when /@appsrc@/ is not PAUSED or PLAYING.
    -- @/GST_FLOW_EOS/@ when EOS occurred.
appSrcPushSample :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Sample -> m FlowReturn
appSrcPushSample a
appsrc Sample
sample = AppSrcEndOfStreamCallback -> m FlowReturn
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (AppSrcEndOfStreamCallback -> m FlowReturn)
-> AppSrcEndOfStreamCallback -> m FlowReturn
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr Sample
sample' <- Sample -> IO (Ptr Sample)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Sample
sample
    CInt
result <- Ptr AppSrc -> Ptr Sample -> IO CInt
gst_app_src_push_sample Ptr AppSrc
appsrc' Ptr Sample
sample'
    let result' :: FlowReturn
result' = (Int -> FlowReturn
forall a. Enum a => Int -> a
toEnum (Int -> FlowReturn) -> (CInt -> Int) -> CInt -> FlowReturn
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CInt
result
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Sample -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr Sample
sample
    FlowReturn -> AppSrcEndOfStreamCallback
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return FlowReturn
result'

#if defined(ENABLE_OVERLOADING)
data AppSrcPushSampleMethodInfo
instance (signature ~ (Gst.Sample.Sample -> m Gst.Enums.FlowReturn), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcPushSampleMethodInfo a signature where
    overloadedMethod = appSrcPushSample

instance O.OverloadedMethodInfo AppSrcPushSampleMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcPushSample",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcPushSample"
        })


#endif

-- method AppSrc::set_caps
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "caps"
--           , argType = TInterface Name { namespace = "Gst" , name = "Caps" }
--           , direction = DirectionIn
--           , mayBeNull = True
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "caps to set" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_caps" gst_app_src_set_caps :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Ptr Gst.Caps.Caps ->                    -- caps : TInterface (Name {namespace = "Gst", name = "Caps"})
    IO ()

-- | Set the capabilities on the appsrc element.  This function takes
-- a copy of the caps structure. After calling this method, the source will
-- only produce caps that match /@caps@/. /@caps@/ must be fixed and the caps on the
-- buffers must match the caps or left NULL.
appSrcSetCaps ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Maybe (Gst.Caps.Caps)
    -- ^ /@caps@/: caps to set
    -> m ()
appSrcSetCaps :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Maybe Caps -> m ()
appSrcSetCaps a
appsrc Maybe Caps
caps = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr Caps
maybeCaps <- case Maybe Caps
caps of
        Maybe Caps
Nothing -> Ptr Caps -> IO (Ptr Caps)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Caps
forall a. Ptr a
nullPtr
        Just Caps
jCaps -> do
            Ptr Caps
jCaps' <- Caps -> IO (Ptr Caps)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr Caps
jCaps
            Ptr Caps -> IO (Ptr Caps)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Ptr Caps
jCaps'
    Ptr AppSrc -> Ptr Caps -> IO ()
gst_app_src_set_caps Ptr AppSrc
appsrc' Ptr Caps
maybeCaps
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    Maybe Caps -> (Caps -> IO ()) -> IO ()
forall (m :: * -> *) a. Monad m => Maybe a -> (a -> m ()) -> m ()
whenJust Maybe Caps
caps Caps -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetCapsMethodInfo
instance (signature ~ (Maybe (Gst.Caps.Caps) -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetCapsMethodInfo a signature where
    overloadedMethod = appSrcSetCaps

instance O.OverloadedMethodInfo AppSrcSetCapsMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetCaps",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetCaps"
        })


#endif

-- method AppSrc::set_duration
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "duration"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the duration to set"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_duration" gst_app_src_set_duration :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Word64 ->                               -- duration : TBasicType TUInt64
    IO ()

-- | Set the duration of the stream in nanoseconds. A value of GST_CLOCK_TIME_NONE means that the duration is
-- not known.
-- 
-- /Since: 1.10/
appSrcSetDuration ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Word64
    -- ^ /@duration@/: the duration to set
    -> m ()
appSrcSetDuration :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Word64 -> m ()
appSrcSetDuration a
appsrc Word64
duration = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr AppSrc -> Word64 -> IO ()
gst_app_src_set_duration Ptr AppSrc
appsrc' Word64
duration
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetDurationMethodInfo
instance (signature ~ (Word64 -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetDurationMethodInfo a signature where
    overloadedMethod = appSrcSetDuration

instance O.OverloadedMethodInfo AppSrcSetDurationMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetDuration",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetDuration"
        })


#endif

-- method AppSrc::set_emit_signals
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "emit"
--           , argType = TBasicType TBoolean
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the new state" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_emit_signals" gst_app_src_set_emit_signals :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    CInt ->                                 -- emit : TBasicType TBoolean
    IO ()

-- | Make appsrc emit the \"new-preroll\" and \"new-buffer\" signals. This option is
-- by default disabled because signal emission is expensive and unneeded when
-- the application prefers to operate in pull mode.
appSrcSetEmitSignals ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Bool
    -- ^ /@emit@/: the new state
    -> m ()
appSrcSetEmitSignals :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Bool -> m ()
appSrcSetEmitSignals a
appsrc Bool
emit = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    let emit' :: CInt
emit' = (Int -> CInt
forall a b. (Integral a, Num b) => a -> b
P.fromIntegral (Int -> CInt) -> (Bool -> Int) -> Bool -> CInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Bool -> Int
forall a. Enum a => a -> Int
P.fromEnum) Bool
emit
    Ptr AppSrc -> CInt -> IO ()
gst_app_src_set_emit_signals Ptr AppSrc
appsrc' CInt
emit'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetEmitSignalsMethodInfo
instance (signature ~ (Bool -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetEmitSignalsMethodInfo a signature where
    overloadedMethod = appSrcSetEmitSignals

instance O.OverloadedMethodInfo AppSrcSetEmitSignalsMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetEmitSignals",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetEmitSignals"
        })


#endif

-- method AppSrc::set_latency
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "min"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the min latency" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "max"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the max latency" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_latency" gst_app_src_set_latency :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Word64 ->                               -- min : TBasicType TUInt64
    Word64 ->                               -- max : TBasicType TUInt64
    IO ()

-- | Configure the /@min@/ and /@max@/ latency in /@src@/. If /@min@/ is set to -1, the
-- default latency calculations for pseudo-live sources will be used.
appSrcSetLatency ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Word64
    -- ^ /@min@/: the min latency
    -> Word64
    -- ^ /@max@/: the max latency
    -> m ()
appSrcSetLatency :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Word64 -> Word64 -> m ()
appSrcSetLatency a
appsrc Word64
min Word64
max = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr AppSrc -> Word64 -> Word64 -> IO ()
gst_app_src_set_latency Ptr AppSrc
appsrc' Word64
min Word64
max
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetLatencyMethodInfo
instance (signature ~ (Word64 -> Word64 -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetLatencyMethodInfo a signature where
    overloadedMethod = appSrcSetLatency

instance O.OverloadedMethodInfo AppSrcSetLatencyMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetLatency",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetLatency"
        })


#endif

-- method AppSrc::set_leaky_type
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "leaky"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppLeakyType" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the #GstAppLeakyType"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_leaky_type" gst_app_src_set_leaky_type :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    CUInt ->                                -- leaky : TInterface (Name {namespace = "GstApp", name = "AppLeakyType"})
    IO ()

-- | When set to any other value than GST_APP_LEAKY_TYPE_NONE then the appsrc
-- will drop any buffers that are pushed into it once its internal queue is
-- full. The selected type defines whether to drop the oldest or new
-- buffers.
-- 
-- /Since: 1.20/
appSrcSetLeakyType ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> GstApp.Enums.AppLeakyType
    -- ^ /@leaky@/: the t'GI.GstApp.Enums.AppLeakyType'
    -> m ()
appSrcSetLeakyType :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> AppLeakyType -> m ()
appSrcSetLeakyType a
appsrc AppLeakyType
leaky = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    let leaky' :: CUInt
leaky' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (AppLeakyType -> Int) -> AppLeakyType -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AppLeakyType -> Int
forall a. Enum a => a -> Int
fromEnum) AppLeakyType
leaky
    Ptr AppSrc -> CUInt -> IO ()
gst_app_src_set_leaky_type Ptr AppSrc
appsrc' CUInt
leaky'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetLeakyTypeMethodInfo
instance (signature ~ (GstApp.Enums.AppLeakyType -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetLeakyTypeMethodInfo a signature where
    overloadedMethod = appSrcSetLeakyType

instance O.OverloadedMethodInfo AppSrcSetLeakyTypeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetLeakyType",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetLeakyType"
        })


#endif

-- method AppSrc::set_max_buffers
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "max"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the maximum number of buffers to queue"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_max_buffers" gst_app_src_set_max_buffers :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Word64 ->                               -- max : TBasicType TUInt64
    IO ()

-- | Set the maximum amount of buffers that can be queued in /@appsrc@/.
-- After the maximum amount of buffers are queued, /@appsrc@/ will emit the
-- \"enough-data\" signal.
-- 
-- /Since: 1.20/
appSrcSetMaxBuffers ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Word64
    -- ^ /@max@/: the maximum number of buffers to queue
    -> m ()
appSrcSetMaxBuffers :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Word64 -> m ()
appSrcSetMaxBuffers a
appsrc Word64
max = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr AppSrc -> Word64 -> IO ()
gst_app_src_set_max_buffers Ptr AppSrc
appsrc' Word64
max
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetMaxBuffersMethodInfo
instance (signature ~ (Word64 -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetMaxBuffersMethodInfo a signature where
    overloadedMethod = appSrcSetMaxBuffers

instance O.OverloadedMethodInfo AppSrcSetMaxBuffersMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetMaxBuffers",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetMaxBuffers"
        })


#endif

-- method AppSrc::set_max_bytes
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "max"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the maximum number of bytes to queue"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_max_bytes" gst_app_src_set_max_bytes :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Word64 ->                               -- max : TBasicType TUInt64
    IO ()

-- | Set the maximum amount of bytes that can be queued in /@appsrc@/.
-- After the maximum amount of bytes are queued, /@appsrc@/ will emit the
-- \"enough-data\" signal.
appSrcSetMaxBytes ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Word64
    -- ^ /@max@/: the maximum number of bytes to queue
    -> m ()
appSrcSetMaxBytes :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Word64 -> m ()
appSrcSetMaxBytes a
appsrc Word64
max = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr AppSrc -> Word64 -> IO ()
gst_app_src_set_max_bytes Ptr AppSrc
appsrc' Word64
max
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetMaxBytesMethodInfo
instance (signature ~ (Word64 -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetMaxBytesMethodInfo a signature where
    overloadedMethod = appSrcSetMaxBytes

instance O.OverloadedMethodInfo AppSrcSetMaxBytesMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetMaxBytes",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetMaxBytes"
        })


#endif

-- method AppSrc::set_max_time
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "max"
--           , argType = TBasicType TUInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the maximum amonut of time to queue"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_max_time" gst_app_src_set_max_time :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Word64 ->                               -- max : TBasicType TUInt64
    IO ()

-- | Set the maximum amount of time that can be queued in /@appsrc@/.
-- After the maximum amount of time are queued, /@appsrc@/ will emit the
-- \"enough-data\" signal.
-- 
-- /Since: 1.20/
appSrcSetMaxTime ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Word64
    -- ^ /@max@/: the maximum amonut of time to queue
    -> m ()
appSrcSetMaxTime :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Word64 -> m ()
appSrcSetMaxTime a
appsrc Word64
max = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr AppSrc -> Word64 -> IO ()
gst_app_src_set_max_time Ptr AppSrc
appsrc' Word64
max
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetMaxTimeMethodInfo
instance (signature ~ (Word64 -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetMaxTimeMethodInfo a signature where
    overloadedMethod = appSrcSetMaxTime

instance O.OverloadedMethodInfo AppSrcSetMaxTimeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetMaxTime",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetMaxTime"
        })


#endif

-- method AppSrc::set_size
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "size"
--           , argType = TBasicType TInt64
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the size to set" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_size" gst_app_src_set_size :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    Int64 ->                                -- size : TBasicType TInt64
    IO ()

-- | Set the size of the stream in bytes. A value of -1 means that the size is
-- not known.
appSrcSetSize ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> Int64
    -- ^ /@size@/: the size to set
    -> m ()
appSrcSetSize :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> Int64 -> m ()
appSrcSetSize a
appsrc Int64
size = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    Ptr AppSrc -> Int64 -> IO ()
gst_app_src_set_size Ptr AppSrc
appsrc' Int64
size
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetSizeMethodInfo
instance (signature ~ (Int64 -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetSizeMethodInfo a signature where
    overloadedMethod = appSrcSetSize

instance O.OverloadedMethodInfo AppSrcSetSizeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetSize",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetSize"
        })


#endif

-- method AppSrc::set_stream_type
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "appsrc"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppSrc" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstAppSrc" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "type"
--           , argType =
--               TInterface Name { namespace = "GstApp" , name = "AppStreamType" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the new state" , sinceVersion = Nothing }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , argCallbackUserData = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Nothing
-- throws : False
-- Skip return : False

foreign import ccall "gst_app_src_set_stream_type" gst_app_src_set_stream_type :: 
    Ptr AppSrc ->                           -- appsrc : TInterface (Name {namespace = "GstApp", name = "AppSrc"})
    CUInt ->                                -- type : TInterface (Name {namespace = "GstApp", name = "AppStreamType"})
    IO ()

-- | Set the stream type on /@appsrc@/. For seekable streams, the \"seek\" signal must
-- be connected to.
-- 
-- A stream_type stream
appSrcSetStreamType ::
    (B.CallStack.HasCallStack, MonadIO m, IsAppSrc a) =>
    a
    -- ^ /@appsrc@/: a t'GI.GstApp.Objects.AppSrc.AppSrc'
    -> GstApp.Enums.AppStreamType
    -- ^ /@type@/: the new state
    -> m ()
appSrcSetStreamType :: forall (m :: * -> *) a.
(HasCallStack, MonadIO m, IsAppSrc a) =>
a -> AppStreamType -> m ()
appSrcSetStreamType a
appsrc AppStreamType
type_ = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ do
    Ptr AppSrc
appsrc' <- a -> IO (Ptr AppSrc)
forall a b. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr b)
unsafeManagedPtrCastPtr a
appsrc
    let type_' :: CUInt
type_' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt) -> (AppStreamType -> Int) -> AppStreamType -> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. AppStreamType -> Int
forall a. Enum a => a -> Int
fromEnum) AppStreamType
type_
    Ptr AppSrc -> CUInt -> IO ()
gst_app_src_set_stream_type Ptr AppSrc
appsrc' CUInt
type_'
    a -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr a
appsrc
    () -> IO ()
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return ()

#if defined(ENABLE_OVERLOADING)
data AppSrcSetStreamTypeMethodInfo
instance (signature ~ (GstApp.Enums.AppStreamType -> m ()), MonadIO m, IsAppSrc a) => O.OverloadedMethod AppSrcSetStreamTypeMethodInfo a signature where
    overloadedMethod = appSrcSetStreamType

instance O.OverloadedMethodInfo AppSrcSetStreamTypeMethodInfo a where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstApp.Objects.AppSrc.appSrcSetStreamType",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstapp-1.0.28/docs/GI-GstApp-Objects-AppSrc.html#v:appSrcSetStreamType"
        })


#endif