{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) Buffers are the basic unit of data transfer in GStreamer. They contain the timing and offset along with other arbitrary metadata that is associated with the 'GI.Gst.Structs.Memory.Memory' blocks that the buffer contains. Buffers are usually created with 'GI.Gst.Structs.Buffer.bufferNew'. After a buffer has been created one will typically allocate memory for it and add it to the buffer. The following example creates a buffer that can hold a given video frame with a given width, height and bits per plane. === /C code/ > > GstBuffer *buffer; > GstMemory *memory; > gint size, width, height, bpp; > ... > size = width * height * bpp; > buffer = gst_buffer_new (); > memory = gst_allocator_alloc (NULL, size, NULL); > gst_buffer_insert_memory (buffer, -1, memory); > ... Alternatively, use 'GI.Gst.Structs.Buffer.bufferNewAllocate' to create a buffer with preallocated data of a given size. Buffers can contain a list of 'GI.Gst.Structs.Memory.Memory' objects. You can retrieve how many memory objects with 'GI.Gst.Structs.Buffer.bufferNMemory' and you can get a pointer to memory with 'GI.Gst.Structs.Buffer.bufferPeekMemory' A buffer will usually have timestamps, and a duration, but neither of these are guaranteed (they may be set to 'GI.Gst.Constants.CLOCK_TIME_NONE'). Whenever a meaningful value can be given for these, they should be set. The timestamps and duration are measured in nanoseconds (they are @/GstClockTime/@ values). The buffer DTS refers to the timestamp when the buffer should be decoded and is usually monotonically increasing. The buffer PTS refers to the timestamp when the buffer content should be presented to the user and is not always monotonically increasing. A buffer can also have one or both of a start and an end offset. These are media-type specific. For video buffers, the start offset will generally be the frame number. For audio buffers, it will be the number of samples produced so far. For compressed data, it could be the byte offset in a source or destination file. Likewise, the end offset will be the offset of the end of the buffer. These can only be meaningfully interpreted if you know the media type of the buffer (the preceding CAPS event). Either or both can be set to 'GI.Gst.Constants.BUFFER_OFFSET_NONE'. @/gst_buffer_ref()/@ is used to increase the refcount of a buffer. This must be done when you want to keep a handle to the buffer after pushing it to the next element. The buffer refcount determines the writability of the buffer, a buffer is only writable when the refcount is exactly 1, i.e. when the caller has the only reference to the buffer. To efficiently create a smaller buffer out of an existing one, you can use 'GI.Gst.Structs.Buffer.bufferCopyRegion'. This method tries to share the memory objects between the two buffers. If a plug-in wants to modify the buffer data or metadata in-place, it should first obtain a buffer that is safe to modify by using @/gst_buffer_make_writable()/@. This function is optimized so that a copy will only be made when it is necessary. Several flags of the buffer can be set and unset with the @/GST_BUFFER_FLAG_SET()/@ and @/GST_BUFFER_FLAG_UNSET()/@ macros. Use @/GST_BUFFER_FLAG_IS_SET()/@ to test if a certain 'GI.Gst.Flags.BufferFlags' flag is set. Buffers can be efficiently merged into a larger buffer with 'GI.Gst.Structs.Buffer.bufferAppend'. Copying of memory will only be done when absolutely needed. Arbitrary extra metadata can be set on a buffer with 'GI.Gst.Structs.Buffer.bufferAddMeta'. Metadata can be retrieved with 'GI.Gst.Structs.Buffer.bufferGetMeta'. See also 'GI.Gst.Structs.Meta.Meta' An element should either unref the buffer or push it out on a src pad using 'GI.Gst.Objects.Pad.padPush' (see 'GI.Gst.Objects.Pad.Pad'). Buffers are usually freed by unreffing them with @/gst_buffer_unref()/@. When the refcount drops to 0, any memory and metadata pointed to by the buffer is unreffed as well. Buffers allocated from a 'GI.Gst.Objects.BufferPool.BufferPool' will be returned to the pool when the refcount drops to 0. The 'GI.Gst.Structs.ParentBufferMeta.ParentBufferMeta' is a meta which can be attached to a 'GI.Gst.Structs.Buffer.Buffer' to hold a reference to another buffer that is only released when the child 'GI.Gst.Structs.Buffer.Buffer' is released. Typically, 'GI.Gst.Structs.ParentBufferMeta.ParentBufferMeta' is used when the child buffer is directly using the 'GI.Gst.Structs.Memory.Memory' of the parent buffer, and wants to prevent the parent buffer from being returned to a buffer pool until the 'GI.Gst.Structs.Memory.Memory' is available for re-use. (Since 1.6) -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.Gst.Structs.Buffer ( -- * Exported types Buffer(..) , newZeroBuffer , noBuffer , -- * Methods -- ** addMeta #method:addMeta# #if ENABLE_OVERLOADING BufferAddMetaMethodInfo , #endif bufferAddMeta , -- ** addParentBufferMeta #method:addParentBufferMeta# #if ENABLE_OVERLOADING BufferAddParentBufferMetaMethodInfo , #endif bufferAddParentBufferMeta , -- ** addProtectionMeta #method:addProtectionMeta# #if ENABLE_OVERLOADING BufferAddProtectionMetaMethodInfo , #endif bufferAddProtectionMeta , -- ** addReferenceTimestampMeta #method:addReferenceTimestampMeta# #if ENABLE_OVERLOADING BufferAddReferenceTimestampMetaMethodInfo, #endif bufferAddReferenceTimestampMeta , -- ** append #method:append# #if ENABLE_OVERLOADING BufferAppendMethodInfo , #endif bufferAppend , -- ** appendMemory #method:appendMemory# #if ENABLE_OVERLOADING BufferAppendMemoryMethodInfo , #endif bufferAppendMemory , -- ** appendRegion #method:appendRegion# #if ENABLE_OVERLOADING BufferAppendRegionMethodInfo , #endif bufferAppendRegion , -- ** copyDeep #method:copyDeep# #if ENABLE_OVERLOADING BufferCopyDeepMethodInfo , #endif bufferCopyDeep , -- ** copyInto #method:copyInto# #if ENABLE_OVERLOADING BufferCopyIntoMethodInfo , #endif bufferCopyInto , -- ** copyRegion #method:copyRegion# #if ENABLE_OVERLOADING BufferCopyRegionMethodInfo , #endif bufferCopyRegion , -- ** extract #method:extract# #if ENABLE_OVERLOADING BufferExtractMethodInfo , #endif bufferExtract , -- ** extractDup #method:extractDup# #if ENABLE_OVERLOADING BufferExtractDupMethodInfo , #endif bufferExtractDup , -- ** fill #method:fill# #if ENABLE_OVERLOADING BufferFillMethodInfo , #endif bufferFill , -- ** findMemory #method:findMemory# #if ENABLE_OVERLOADING BufferFindMemoryMethodInfo , #endif bufferFindMemory , -- ** foreachMeta #method:foreachMeta# #if ENABLE_OVERLOADING BufferForeachMetaMethodInfo , #endif bufferForeachMeta , -- ** getAllMemory #method:getAllMemory# #if ENABLE_OVERLOADING BufferGetAllMemoryMethodInfo , #endif bufferGetAllMemory , -- ** getFlags #method:getFlags# #if ENABLE_OVERLOADING BufferGetFlagsMethodInfo , #endif bufferGetFlags , -- ** getMaxMemory #method:getMaxMemory# bufferGetMaxMemory , -- ** getMemory #method:getMemory# #if ENABLE_OVERLOADING BufferGetMemoryMethodInfo , #endif bufferGetMemory , -- ** getMemoryRange #method:getMemoryRange# #if ENABLE_OVERLOADING BufferGetMemoryRangeMethodInfo , #endif bufferGetMemoryRange , -- ** getMeta #method:getMeta# #if ENABLE_OVERLOADING BufferGetMetaMethodInfo , #endif bufferGetMeta , -- ** getNMeta #method:getNMeta# #if ENABLE_OVERLOADING BufferGetNMetaMethodInfo , #endif bufferGetNMeta , -- ** getReferenceTimestampMeta #method:getReferenceTimestampMeta# #if ENABLE_OVERLOADING BufferGetReferenceTimestampMetaMethodInfo, #endif bufferGetReferenceTimestampMeta , -- ** getSize #method:getSize# #if ENABLE_OVERLOADING BufferGetSizeMethodInfo , #endif bufferGetSize , -- ** getSizes #method:getSizes# #if ENABLE_OVERLOADING BufferGetSizesMethodInfo , #endif bufferGetSizes , -- ** getSizesRange #method:getSizesRange# #if ENABLE_OVERLOADING BufferGetSizesRangeMethodInfo , #endif bufferGetSizesRange , -- ** hasFlags #method:hasFlags# #if ENABLE_OVERLOADING BufferHasFlagsMethodInfo , #endif bufferHasFlags , -- ** insertMemory #method:insertMemory# #if ENABLE_OVERLOADING BufferInsertMemoryMethodInfo , #endif bufferInsertMemory , -- ** isAllMemoryWritable #method:isAllMemoryWritable# #if ENABLE_OVERLOADING BufferIsAllMemoryWritableMethodInfo , #endif bufferIsAllMemoryWritable , -- ** isMemoryRangeWritable #method:isMemoryRangeWritable# #if ENABLE_OVERLOADING BufferIsMemoryRangeWritableMethodInfo , #endif bufferIsMemoryRangeWritable , -- ** map #method:map# #if ENABLE_OVERLOADING BufferMapMethodInfo , #endif bufferMap , -- ** mapRange #method:mapRange# #if ENABLE_OVERLOADING BufferMapRangeMethodInfo , #endif bufferMapRange , -- ** memcmp #method:memcmp# #if ENABLE_OVERLOADING BufferMemcmpMethodInfo , #endif bufferMemcmp , -- ** memset #method:memset# #if ENABLE_OVERLOADING BufferMemsetMethodInfo , #endif bufferMemset , -- ** nMemory #method:nMemory# #if ENABLE_OVERLOADING BufferNMemoryMethodInfo , #endif bufferNMemory , -- ** new #method:new# bufferNew , -- ** newAllocate #method:newAllocate# bufferNewAllocate , -- ** newWrapped #method:newWrapped# bufferNewWrapped , -- ** newWrappedBytes #method:newWrappedBytes# bufferNewWrappedBytes , -- ** newWrappedFull #method:newWrappedFull# bufferNewWrappedFull , -- ** peekMemory #method:peekMemory# #if ENABLE_OVERLOADING BufferPeekMemoryMethodInfo , #endif bufferPeekMemory , -- ** prependMemory #method:prependMemory# #if ENABLE_OVERLOADING BufferPrependMemoryMethodInfo , #endif bufferPrependMemory , -- ** removeAllMemory #method:removeAllMemory# #if ENABLE_OVERLOADING BufferRemoveAllMemoryMethodInfo , #endif bufferRemoveAllMemory , -- ** removeMemory #method:removeMemory# #if ENABLE_OVERLOADING BufferRemoveMemoryMethodInfo , #endif bufferRemoveMemory , -- ** removeMemoryRange #method:removeMemoryRange# #if ENABLE_OVERLOADING BufferRemoveMemoryRangeMethodInfo , #endif bufferRemoveMemoryRange , -- ** removeMeta #method:removeMeta# #if ENABLE_OVERLOADING BufferRemoveMetaMethodInfo , #endif bufferRemoveMeta , -- ** replaceAllMemory #method:replaceAllMemory# #if ENABLE_OVERLOADING BufferReplaceAllMemoryMethodInfo , #endif bufferReplaceAllMemory , -- ** replaceMemory #method:replaceMemory# #if ENABLE_OVERLOADING BufferReplaceMemoryMethodInfo , #endif bufferReplaceMemory , -- ** replaceMemoryRange #method:replaceMemoryRange# #if ENABLE_OVERLOADING BufferReplaceMemoryRangeMethodInfo , #endif bufferReplaceMemoryRange , -- ** resize #method:resize# #if ENABLE_OVERLOADING BufferResizeMethodInfo , #endif bufferResize , -- ** resizeRange #method:resizeRange# #if ENABLE_OVERLOADING BufferResizeRangeMethodInfo , #endif bufferResizeRange , -- ** setFlags #method:setFlags# #if ENABLE_OVERLOADING BufferSetFlagsMethodInfo , #endif bufferSetFlags , -- ** setSize #method:setSize# #if ENABLE_OVERLOADING BufferSetSizeMethodInfo , #endif bufferSetSize , -- ** unmap #method:unmap# #if ENABLE_OVERLOADING BufferUnmapMethodInfo , #endif bufferUnmap , -- ** unsetFlags #method:unsetFlags# #if ENABLE_OVERLOADING BufferUnsetFlagsMethodInfo , #endif bufferUnsetFlags , -- * Properties -- ** dts #attr:dts# {- | decoding timestamp of the buffer, can be 'GI.Gst.Constants.CLOCK_TIME_NONE' when the dts is not known or relevant. The dts contains the timestamp when the media should be processed. -} #if ENABLE_OVERLOADING buffer_dts , #endif getBufferDts , setBufferDts , -- ** duration #attr:duration# {- | duration in time of the buffer data, can be 'GI.Gst.Constants.CLOCK_TIME_NONE' when the duration is not known or relevant. -} #if ENABLE_OVERLOADING buffer_duration , #endif getBufferDuration , setBufferDuration , -- ** miniObject #attr:miniObject# {- | the parent structure -} #if ENABLE_OVERLOADING buffer_miniObject , #endif getBufferMiniObject , -- ** offset #attr:offset# {- | a media specific offset for the buffer data. For video frames, this is the frame number of this buffer. For audio samples, this is the offset of the first sample in this buffer. For file data or compressed data this is the byte offset of the first byte in this buffer. -} #if ENABLE_OVERLOADING buffer_offset , #endif getBufferOffset , setBufferOffset , -- ** offsetEnd #attr:offsetEnd# {- | the last offset contained in this buffer. It has the same format as /@offset@/. -} #if ENABLE_OVERLOADING buffer_offsetEnd , #endif getBufferOffsetEnd , setBufferOffsetEnd , -- ** pool #attr:pool# {- | pointer to the pool owner of the buffer -} #if ENABLE_OVERLOADING buffer_pool , #endif clearBufferPool , getBufferPool , setBufferPool , -- ** pts #attr:pts# {- | presentation timestamp of the buffer, can be 'GI.Gst.Constants.CLOCK_TIME_NONE' when the pts is not known or relevant. The pts contains the timestamp when the media should be presented to the user. -} #if ENABLE_OVERLOADING buffer_pts , #endif getBufferPts , setBufferPts , ) where import Data.GI.Base.ShortPrelude import qualified Data.GI.Base.ShortPrelude as SP import qualified Data.GI.Base.Overloading as O import qualified Prelude as P import qualified Data.GI.Base.Attributes as GI.Attributes import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr import qualified Data.GI.Base.GClosure as B.GClosure import qualified Data.GI.Base.GError as B.GError import qualified Data.GI.Base.GVariant as B.GVariant import qualified Data.GI.Base.GValue as B.GValue import qualified Data.GI.Base.GParamSpec as B.GParamSpec import qualified Data.GI.Base.CallStack as B.CallStack import qualified Data.GI.Base.Properties as B.Properties import qualified Data.Text as T import qualified Data.ByteString.Char8 as B import qualified Data.Map as Map import qualified Foreign.Ptr as FP import qualified GHC.OverloadedLabels as OL import qualified GI.GLib.Callbacks as GLib.Callbacks import qualified GI.GLib.Structs.Bytes as GLib.Bytes import qualified GI.Gst.Callbacks as Gst.Callbacks import {-# SOURCE #-} qualified GI.Gst.Flags as Gst.Flags import {-# SOURCE #-} qualified GI.Gst.Objects.Allocator as Gst.Allocator import {-# SOURCE #-} qualified GI.Gst.Objects.BufferPool as Gst.BufferPool import {-# SOURCE #-} qualified GI.Gst.Structs.AllocationParams as Gst.AllocationParams import {-# SOURCE #-} qualified GI.Gst.Structs.Caps as Gst.Caps import {-# SOURCE #-} qualified GI.Gst.Structs.MapInfo as Gst.MapInfo import {-# SOURCE #-} qualified GI.Gst.Structs.Memory as Gst.Memory import {-# SOURCE #-} qualified GI.Gst.Structs.Meta as Gst.Meta import {-# SOURCE #-} qualified GI.Gst.Structs.MetaInfo as Gst.MetaInfo import {-# SOURCE #-} qualified GI.Gst.Structs.MiniObject as Gst.MiniObject import {-# SOURCE #-} qualified GI.Gst.Structs.ParentBufferMeta as Gst.ParentBufferMeta import {-# SOURCE #-} qualified GI.Gst.Structs.ProtectionMeta as Gst.ProtectionMeta import {-# SOURCE #-} qualified GI.Gst.Structs.ReferenceTimestampMeta as Gst.ReferenceTimestampMeta import {-# SOURCE #-} qualified GI.Gst.Structs.Structure as Gst.Structure -- | Memory-managed wrapper type. newtype Buffer = Buffer (ManagedPtr Buffer) foreign import ccall "gst_buffer_get_type" c_gst_buffer_get_type :: IO GType instance BoxedObject Buffer where boxedType _ = c_gst_buffer_get_type -- | Construct a `Buffer` struct initialized to zero. newZeroBuffer :: MonadIO m => m Buffer newZeroBuffer = liftIO $ callocBoxedBytes 112 >>= wrapBoxed Buffer instance tag ~ 'AttrSet => Constructible Buffer tag where new _ attrs = do o <- newZeroBuffer GI.Attributes.set o attrs return o -- | A convenience alias for `Nothing` :: `Maybe` `Buffer`. noBuffer :: Maybe Buffer noBuffer = Nothing {- | Get the value of the “@mini_object@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' buffer #miniObject @ -} getBufferMiniObject :: MonadIO m => Buffer -> m Gst.MiniObject.MiniObject getBufferMiniObject s = liftIO $ withManagedPtr s $ \ptr -> do let val = ptr `plusPtr` 0 :: (Ptr Gst.MiniObject.MiniObject) val' <- (newPtr Gst.MiniObject.MiniObject) val return val' #if ENABLE_OVERLOADING data BufferMiniObjectFieldInfo instance AttrInfo BufferMiniObjectFieldInfo where type AttrAllowedOps BufferMiniObjectFieldInfo = '[ 'AttrGet] type AttrSetTypeConstraint BufferMiniObjectFieldInfo = (~) (Ptr Gst.MiniObject.MiniObject) type AttrBaseTypeConstraint BufferMiniObjectFieldInfo = (~) Buffer type AttrGetType BufferMiniObjectFieldInfo = Gst.MiniObject.MiniObject type AttrLabel BufferMiniObjectFieldInfo = "mini_object" type AttrOrigin BufferMiniObjectFieldInfo = Buffer attrGet _ = getBufferMiniObject attrSet _ = undefined attrConstruct = undefined attrClear _ = undefined buffer_miniObject :: AttrLabelProxy "miniObject" buffer_miniObject = AttrLabelProxy #endif {- | Get the value of the “@pool@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' buffer #pool @ -} getBufferPool :: MonadIO m => Buffer -> m (Maybe Gst.BufferPool.BufferPool) getBufferPool s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 64) :: IO (Ptr Gst.BufferPool.BufferPool) result <- SP.convertIfNonNull val $ \val' -> do val'' <- (newObject Gst.BufferPool.BufferPool) val' return val'' return result {- | Set the value of the “@pool@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' buffer [ #pool 'Data.GI.Base.Attributes.:=' value ] @ -} setBufferPool :: MonadIO m => Buffer -> Ptr Gst.BufferPool.BufferPool -> m () setBufferPool s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 64) (val :: Ptr Gst.BufferPool.BufferPool) {- | Set the value of the “@pool@” field to `Nothing`. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.clear' #pool @ -} clearBufferPool :: MonadIO m => Buffer -> m () clearBufferPool s = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 64) (FP.nullPtr :: Ptr Gst.BufferPool.BufferPool) #if ENABLE_OVERLOADING data BufferPoolFieldInfo instance AttrInfo BufferPoolFieldInfo where type AttrAllowedOps BufferPoolFieldInfo = '[ 'AttrSet, 'AttrGet, 'AttrClear] type AttrSetTypeConstraint BufferPoolFieldInfo = (~) (Ptr Gst.BufferPool.BufferPool) type AttrBaseTypeConstraint BufferPoolFieldInfo = (~) Buffer type AttrGetType BufferPoolFieldInfo = Maybe Gst.BufferPool.BufferPool type AttrLabel BufferPoolFieldInfo = "pool" type AttrOrigin BufferPoolFieldInfo = Buffer attrGet _ = getBufferPool attrSet _ = setBufferPool attrConstruct = undefined attrClear _ = clearBufferPool buffer_pool :: AttrLabelProxy "pool" buffer_pool = AttrLabelProxy #endif {- | Get the value of the “@pts@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' buffer #pts @ -} getBufferPts :: MonadIO m => Buffer -> m Word64 getBufferPts s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 72) :: IO Word64 return val {- | Set the value of the “@pts@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' buffer [ #pts 'Data.GI.Base.Attributes.:=' value ] @ -} setBufferPts :: MonadIO m => Buffer -> Word64 -> m () setBufferPts s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 72) (val :: Word64) #if ENABLE_OVERLOADING data BufferPtsFieldInfo instance AttrInfo BufferPtsFieldInfo where type AttrAllowedOps BufferPtsFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint BufferPtsFieldInfo = (~) Word64 type AttrBaseTypeConstraint BufferPtsFieldInfo = (~) Buffer type AttrGetType BufferPtsFieldInfo = Word64 type AttrLabel BufferPtsFieldInfo = "pts" type AttrOrigin BufferPtsFieldInfo = Buffer attrGet _ = getBufferPts attrSet _ = setBufferPts attrConstruct = undefined attrClear _ = undefined buffer_pts :: AttrLabelProxy "pts" buffer_pts = AttrLabelProxy #endif {- | Get the value of the “@dts@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' buffer #dts @ -} getBufferDts :: MonadIO m => Buffer -> m Word64 getBufferDts s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 80) :: IO Word64 return val {- | Set the value of the “@dts@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' buffer [ #dts 'Data.GI.Base.Attributes.:=' value ] @ -} setBufferDts :: MonadIO m => Buffer -> Word64 -> m () setBufferDts s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 80) (val :: Word64) #if ENABLE_OVERLOADING data BufferDtsFieldInfo instance AttrInfo BufferDtsFieldInfo where type AttrAllowedOps BufferDtsFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint BufferDtsFieldInfo = (~) Word64 type AttrBaseTypeConstraint BufferDtsFieldInfo = (~) Buffer type AttrGetType BufferDtsFieldInfo = Word64 type AttrLabel BufferDtsFieldInfo = "dts" type AttrOrigin BufferDtsFieldInfo = Buffer attrGet _ = getBufferDts attrSet _ = setBufferDts attrConstruct = undefined attrClear _ = undefined buffer_dts :: AttrLabelProxy "dts" buffer_dts = AttrLabelProxy #endif {- | Get the value of the “@duration@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' buffer #duration @ -} getBufferDuration :: MonadIO m => Buffer -> m Word64 getBufferDuration s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 88) :: IO Word64 return val {- | Set the value of the “@duration@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' buffer [ #duration 'Data.GI.Base.Attributes.:=' value ] @ -} setBufferDuration :: MonadIO m => Buffer -> Word64 -> m () setBufferDuration s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 88) (val :: Word64) #if ENABLE_OVERLOADING data BufferDurationFieldInfo instance AttrInfo BufferDurationFieldInfo where type AttrAllowedOps BufferDurationFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint BufferDurationFieldInfo = (~) Word64 type AttrBaseTypeConstraint BufferDurationFieldInfo = (~) Buffer type AttrGetType BufferDurationFieldInfo = Word64 type AttrLabel BufferDurationFieldInfo = "duration" type AttrOrigin BufferDurationFieldInfo = Buffer attrGet _ = getBufferDuration attrSet _ = setBufferDuration attrConstruct = undefined attrClear _ = undefined buffer_duration :: AttrLabelProxy "duration" buffer_duration = AttrLabelProxy #endif {- | Get the value of the “@offset@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' buffer #offset @ -} getBufferOffset :: MonadIO m => Buffer -> m Word64 getBufferOffset s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 96) :: IO Word64 return val {- | Set the value of the “@offset@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' buffer [ #offset 'Data.GI.Base.Attributes.:=' value ] @ -} setBufferOffset :: MonadIO m => Buffer -> Word64 -> m () setBufferOffset s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 96) (val :: Word64) #if ENABLE_OVERLOADING data BufferOffsetFieldInfo instance AttrInfo BufferOffsetFieldInfo where type AttrAllowedOps BufferOffsetFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint BufferOffsetFieldInfo = (~) Word64 type AttrBaseTypeConstraint BufferOffsetFieldInfo = (~) Buffer type AttrGetType BufferOffsetFieldInfo = Word64 type AttrLabel BufferOffsetFieldInfo = "offset" type AttrOrigin BufferOffsetFieldInfo = Buffer attrGet _ = getBufferOffset attrSet _ = setBufferOffset attrConstruct = undefined attrClear _ = undefined buffer_offset :: AttrLabelProxy "offset" buffer_offset = AttrLabelProxy #endif {- | Get the value of the “@offset_end@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.get' buffer #offsetEnd @ -} getBufferOffsetEnd :: MonadIO m => Buffer -> m Word64 getBufferOffsetEnd s = liftIO $ withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 104) :: IO Word64 return val {- | Set the value of the “@offset_end@” field. When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to @ 'Data.GI.Base.Attributes.set' buffer [ #offsetEnd 'Data.GI.Base.Attributes.:=' value ] @ -} setBufferOffsetEnd :: MonadIO m => Buffer -> Word64 -> m () setBufferOffsetEnd s val = liftIO $ withManagedPtr s $ \ptr -> do poke (ptr `plusPtr` 104) (val :: Word64) #if ENABLE_OVERLOADING data BufferOffsetEndFieldInfo instance AttrInfo BufferOffsetEndFieldInfo where type AttrAllowedOps BufferOffsetEndFieldInfo = '[ 'AttrSet, 'AttrGet] type AttrSetTypeConstraint BufferOffsetEndFieldInfo = (~) Word64 type AttrBaseTypeConstraint BufferOffsetEndFieldInfo = (~) Buffer type AttrGetType BufferOffsetEndFieldInfo = Word64 type AttrLabel BufferOffsetEndFieldInfo = "offset_end" type AttrOrigin BufferOffsetEndFieldInfo = Buffer attrGet _ = getBufferOffsetEnd attrSet _ = setBufferOffsetEnd attrConstruct = undefined attrClear _ = undefined buffer_offsetEnd :: AttrLabelProxy "offsetEnd" buffer_offsetEnd = AttrLabelProxy #endif #if ENABLE_OVERLOADING instance O.HasAttributeList Buffer type instance O.AttributeList Buffer = BufferAttributeList type BufferAttributeList = ('[ '("miniObject", BufferMiniObjectFieldInfo), '("pool", BufferPoolFieldInfo), '("pts", BufferPtsFieldInfo), '("dts", BufferDtsFieldInfo), '("duration", BufferDurationFieldInfo), '("offset", BufferOffsetFieldInfo), '("offsetEnd", BufferOffsetEndFieldInfo)] :: [(Symbol, *)]) #endif -- method Buffer::new -- method type : Constructor -- Args : [] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_new" gst_buffer_new :: IO (Ptr Buffer) {- | Creates a newly allocated buffer without any data. MT safe. -} bufferNew :: (B.CallStack.HasCallStack, MonadIO m) => m Buffer {- ^ __Returns:__ the new 'GI.Gst.Structs.Buffer.Buffer'. -} bufferNew = liftIO $ do result <- gst_buffer_new checkUnexpectedReturnNULL "bufferNew" result result' <- (wrapBoxed Buffer) result return result' #if ENABLE_OVERLOADING #endif -- method Buffer::new_allocate -- method type : Constructor -- Args : [Arg {argCName = "allocator", argType = TInterface (Name {namespace = "Gst", name = "Allocator"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "the #GstAllocator to use, or %NULL to use the\n default allocator", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size in bytes of the new buffer's data.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "params", argType = TInterface (Name {namespace = "Gst", name = "AllocationParams"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "optional parameters", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_new_allocate" gst_buffer_new_allocate :: Ptr Gst.Allocator.Allocator -> -- allocator : TInterface (Name {namespace = "Gst", name = "Allocator"}) Word64 -> -- size : TBasicType TUInt64 Ptr Gst.AllocationParams.AllocationParams -> -- params : TInterface (Name {namespace = "Gst", name = "AllocationParams"}) IO (Ptr Buffer) {- | Tries to create a newly allocated buffer with data of the given size and extra parameters from /@allocator@/. If the requested amount of memory can\'t be allocated, 'Nothing' will be returned. The allocated buffer memory is not cleared. When /@allocator@/ is 'Nothing', the default memory allocator will be used. Note that when /@size@/ == 0, the buffer will not have memory associated with it. MT safe. -} bufferNewAllocate :: (B.CallStack.HasCallStack, MonadIO m, Gst.Allocator.IsAllocator a) => Maybe (a) {- ^ /@allocator@/: the 'GI.Gst.Objects.Allocator.Allocator' to use, or 'Nothing' to use the default allocator -} -> Word64 {- ^ /@size@/: the size in bytes of the new buffer\'s data. -} -> Maybe (Gst.AllocationParams.AllocationParams) {- ^ /@params@/: optional parameters -} -> m (Maybe Buffer) {- ^ __Returns:__ a new 'GI.Gst.Structs.Buffer.Buffer', or 'Nothing' if the memory couldn\'t be allocated. -} bufferNewAllocate allocator size params = liftIO $ do maybeAllocator <- case allocator of Nothing -> return nullPtr Just jAllocator -> do jAllocator' <- unsafeManagedPtrCastPtr jAllocator return jAllocator' maybeParams <- case params of Nothing -> return nullPtr Just jParams -> do jParams' <- unsafeManagedPtrGetPtr jParams return jParams' result <- gst_buffer_new_allocate maybeAllocator size maybeParams maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Buffer) result' return result'' whenJust allocator touchManagedPtr whenJust params touchManagedPtr return maybeResult #if ENABLE_OVERLOADING #endif -- method Buffer::new_wrapped -- method type : Constructor -- Args : [Arg {argCName = "data", argType = TCArray False (-1) 1 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "data to wrap", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "allocated size of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "allocated size of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_new_wrapped" gst_buffer_new_wrapped :: Ptr Word8 -> -- data : TCArray False (-1) 1 (TBasicType TUInt8) Word64 -> -- size : TBasicType TUInt64 IO (Ptr Buffer) {- | Creates a new buffer that wraps the given /@data@/. The memory will be freed with g_free and will be marked writable. MT safe. -} bufferNewWrapped :: (B.CallStack.HasCallStack, MonadIO m) => ByteString {- ^ /@data@/: data to wrap -} -> m Buffer {- ^ __Returns:__ a new 'GI.Gst.Structs.Buffer.Buffer' -} bufferNewWrapped data_ = liftIO $ do let size = fromIntegral $ B.length data_ data_' <- packByteString data_ result <- gst_buffer_new_wrapped data_' size checkUnexpectedReturnNULL "bufferNewWrapped" result result' <- (wrapBoxed Buffer) result return result' #if ENABLE_OVERLOADING #endif -- method Buffer::new_wrapped_bytes -- method type : Constructor -- Args : [Arg {argCName = "bytes", argType = TInterface (Name {namespace = "GLib", name = "Bytes"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GBytes to wrap", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_new_wrapped_bytes" gst_buffer_new_wrapped_bytes :: Ptr GLib.Bytes.Bytes -> -- bytes : TInterface (Name {namespace = "GLib", name = "Bytes"}) IO (Ptr Buffer) {- | Creates a new 'GI.Gst.Structs.Buffer.Buffer' that wraps the given /@bytes@/. The data inside /@bytes@/ cannot be 'Nothing' and the resulting buffer will be marked as read only. MT safe. /Since: 1.16/ -} bufferNewWrappedBytes :: (B.CallStack.HasCallStack, MonadIO m) => GLib.Bytes.Bytes {- ^ /@bytes@/: a 'GI.GLib.Structs.Bytes.Bytes' to wrap -} -> m Buffer {- ^ __Returns:__ a new 'GI.Gst.Structs.Buffer.Buffer' wrapping /@bytes@/ -} bufferNewWrappedBytes bytes = liftIO $ do bytes' <- unsafeManagedPtrGetPtr bytes result <- gst_buffer_new_wrapped_bytes bytes' checkUnexpectedReturnNULL "bufferNewWrappedBytes" result result' <- (wrapBoxed Buffer) result touchManagedPtr bytes return result' #if ENABLE_OVERLOADING #endif -- method Buffer::new_wrapped_full -- method type : Constructor -- Args : [Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "MemoryFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GstMemoryFlags", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "data", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "data to wrap", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "maxsize", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "allocated size of @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "offset in @data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "size of valid data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user_data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "notify", argType = TInterface (Name {namespace = "GLib", name = "DestroyNotify"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "called with @user_data when the memory is freed", sinceVersion = Nothing}, argScope = ScopeTypeAsync, argClosure = 5, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "size of valid data", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_new_wrapped_full" gst_buffer_new_wrapped_full :: CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "MemoryFlags"}) Ptr Word8 -> -- data : TCArray False (-1) 4 (TBasicType TUInt8) Word64 -> -- maxsize : TBasicType TUInt64 Word64 -> -- offset : TBasicType TUInt64 Word64 -> -- size : TBasicType TUInt64 Ptr () -> -- user_data : TBasicType TPtr FunPtr GLib.Callbacks.C_DestroyNotify -> -- notify : TInterface (Name {namespace = "GLib", name = "DestroyNotify"}) IO (Ptr Buffer) {- | Allocate a new buffer that wraps the given memory. /@data@/ must point to /@maxsize@/ of memory, the wrapped buffer will have the region from /@offset@/ and /@size@/ visible. When the buffer is destroyed, /@notify@/ will be called with /@userData@/. The prefix\/padding must be filled with 0 if /@flags@/ contains @/GST_MEMORY_FLAG_ZERO_PREFIXED/@ and @/GST_MEMORY_FLAG_ZERO_PADDED/@ respectively. -} bufferNewWrappedFull :: (B.CallStack.HasCallStack, MonadIO m) => [Gst.Flags.MemoryFlags] {- ^ /@flags@/: 'GI.Gst.Flags.MemoryFlags' -} -> ByteString {- ^ /@data@/: data to wrap -} -> Word64 {- ^ /@maxsize@/: allocated size of /@data@/ -} -> Word64 {- ^ /@offset@/: offset in /@data@/ -} -> Maybe (GLib.Callbacks.DestroyNotify) {- ^ /@notify@/: called with /@userData@/ when the memory is freed -} -> m Buffer {- ^ __Returns:__ a new 'GI.Gst.Structs.Buffer.Buffer' -} bufferNewWrappedFull flags data_ maxsize offset notify = liftIO $ do let size = fromIntegral $ B.length data_ let flags' = gflagsToWord flags data_' <- packByteString data_ maybeNotify <- case notify of Nothing -> return (castPtrToFunPtr nullPtr) Just jNotify -> do ptrnotify <- callocMem :: IO (Ptr (FunPtr GLib.Callbacks.C_DestroyNotify)) jNotify' <- GLib.Callbacks.mk_DestroyNotify (GLib.Callbacks.wrap_DestroyNotify (Just ptrnotify) jNotify) poke ptrnotify jNotify' return jNotify' let userData = nullPtr result <- gst_buffer_new_wrapped_full flags' data_' maxsize offset size userData maybeNotify checkUnexpectedReturnNULL "bufferNewWrappedFull" result result' <- (wrapBoxed Buffer) result freeMem data_' return result' #if ENABLE_OVERLOADING #endif -- method Buffer::add_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info", argType = TInterface (Name {namespace = "Gst", name = "MetaInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMetaInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "params", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "params for @info", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Meta"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_add_meta" gst_buffer_add_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.MetaInfo.MetaInfo -> -- info : TInterface (Name {namespace = "Gst", name = "MetaInfo"}) Ptr () -> -- params : TBasicType TPtr IO (Ptr Gst.Meta.Meta) {- | Add metadata for /@info@/ to /@buffer@/ using the parameters in /@params@/. -} bufferAddMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> Gst.MetaInfo.MetaInfo {- ^ /@info@/: a 'GI.Gst.Structs.MetaInfo.MetaInfo' -} -> Ptr () {- ^ /@params@/: params for /@info@/ -} -> m (Maybe Gst.Meta.Meta) {- ^ __Returns:__ the metadata for the api in /@info@/ on /@buffer@/. -} bufferAddMeta buffer info params = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer info' <- unsafeManagedPtrGetPtr info result <- gst_buffer_add_meta buffer' info' params maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newPtr Gst.Meta.Meta) result' return result'' touchManagedPtr buffer touchManagedPtr info return maybeResult #if ENABLE_OVERLOADING data BufferAddMetaMethodInfo instance (signature ~ (Gst.MetaInfo.MetaInfo -> Ptr () -> m (Maybe Gst.Meta.Meta)), MonadIO m) => O.MethodInfo BufferAddMetaMethodInfo Buffer signature where overloadedMethod _ = bufferAddMeta #endif -- method Buffer::add_parent_buffer_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "ref", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer to ref", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "ParentBufferMeta"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_add_parent_buffer_meta" gst_buffer_add_parent_buffer_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Buffer -> -- ref : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO (Ptr Gst.ParentBufferMeta.ParentBufferMeta) {- | Add a 'GI.Gst.Structs.ParentBufferMeta.ParentBufferMeta' to /@buffer@/ that holds a reference on /@ref@/ until the buffer is freed. /Since: 1.6/ -} bufferAddParentBufferMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> Buffer {- ^ /@ref@/: a 'GI.Gst.Structs.Buffer.Buffer' to ref -} -> m (Maybe Gst.ParentBufferMeta.ParentBufferMeta) {- ^ __Returns:__ The 'GI.Gst.Structs.ParentBufferMeta.ParentBufferMeta' that was added to the buffer -} bufferAddParentBufferMeta buffer ref = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer ref' <- unsafeManagedPtrGetPtr ref result <- gst_buffer_add_parent_buffer_meta buffer' ref' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newPtr Gst.ParentBufferMeta.ParentBufferMeta) result' return result'' touchManagedPtr buffer touchManagedPtr ref return maybeResult #if ENABLE_OVERLOADING data BufferAddParentBufferMetaMethodInfo instance (signature ~ (Buffer -> m (Maybe Gst.ParentBufferMeta.ParentBufferMeta)), MonadIO m) => O.MethodInfo BufferAddParentBufferMetaMethodInfo Buffer signature where overloadedMethod _ = bufferAddParentBufferMeta #endif -- method Buffer::add_protection_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "#GstBuffer holding an encrypted sample, to which protection\n metadata should be added.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info", argType = TInterface (Name {namespace = "Gst", name = "Structure"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstStructure holding cryptographic\n information relating to the sample contained in @buffer. This\n function takes ownership of @info.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "ProtectionMeta"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_add_protection_meta" gst_buffer_add_protection_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.Structure.Structure -> -- info : TInterface (Name {namespace = "Gst", name = "Structure"}) IO (Ptr Gst.ProtectionMeta.ProtectionMeta) {- | Attaches protection metadata to a 'GI.Gst.Structs.Buffer.Buffer'. /Since: 1.6/ -} bufferAddProtectionMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: 'GI.Gst.Structs.Buffer.Buffer' holding an encrypted sample, to which protection metadata should be added. -} -> Gst.Structure.Structure {- ^ /@info@/: a 'GI.Gst.Structs.Structure.Structure' holding cryptographic information relating to the sample contained in /@buffer@/. This function takes ownership of /@info@/. -} -> m Gst.ProtectionMeta.ProtectionMeta {- ^ __Returns:__ a pointer to the added 'GI.Gst.Structs.ProtectionMeta.ProtectionMeta' if successful; 'Nothing' if unsuccessful. -} bufferAddProtectionMeta buffer info = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer info' <- B.ManagedPtr.disownBoxed info result <- gst_buffer_add_protection_meta buffer' info' checkUnexpectedReturnNULL "bufferAddProtectionMeta" result result' <- (newPtr Gst.ProtectionMeta.ProtectionMeta) result touchManagedPtr buffer touchManagedPtr info return result' #if ENABLE_OVERLOADING data BufferAddProtectionMetaMethodInfo instance (signature ~ (Gst.Structure.Structure -> m Gst.ProtectionMeta.ProtectionMeta), MonadIO m) => O.MethodInfo BufferAddProtectionMetaMethodInfo Buffer signature where overloadedMethod _ = bufferAddProtectionMeta #endif -- method Buffer::add_reference_timestamp_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "reference", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "identifier for the timestamp reference.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "timestamp", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "timestamp", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "duration", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "duration, or %GST_CLOCK_TIME_NONE", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "ReferenceTimestampMeta"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_add_reference_timestamp_meta" gst_buffer_add_reference_timestamp_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.Caps.Caps -> -- reference : TInterface (Name {namespace = "Gst", name = "Caps"}) Word64 -> -- timestamp : TBasicType TUInt64 Word64 -> -- duration : TBasicType TUInt64 IO (Ptr Gst.ReferenceTimestampMeta.ReferenceTimestampMeta) {- | Add a 'GI.Gst.Structs.ReferenceTimestampMeta.ReferenceTimestampMeta' to /@buffer@/ that holds a /@timestamp@/ and optionally /@duration@/ based on a specific timestamp /@reference@/. See the documentation of 'GI.Gst.Structs.ReferenceTimestampMeta.ReferenceTimestampMeta' for details. /Since: 1.14/ -} bufferAddReferenceTimestampMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> Gst.Caps.Caps {- ^ /@reference@/: identifier for the timestamp reference. -} -> Word64 {- ^ /@timestamp@/: timestamp -} -> Word64 {- ^ /@duration@/: duration, or 'GI.Gst.Constants.CLOCK_TIME_NONE' -} -> m (Maybe Gst.ReferenceTimestampMeta.ReferenceTimestampMeta) {- ^ __Returns:__ The 'GI.Gst.Structs.ReferenceTimestampMeta.ReferenceTimestampMeta' that was added to the buffer -} bufferAddReferenceTimestampMeta buffer reference timestamp duration = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer reference' <- unsafeManagedPtrGetPtr reference result <- gst_buffer_add_reference_timestamp_meta buffer' reference' timestamp duration maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newPtr Gst.ReferenceTimestampMeta.ReferenceTimestampMeta) result' return result'' touchManagedPtr buffer touchManagedPtr reference return maybeResult #if ENABLE_OVERLOADING data BufferAddReferenceTimestampMetaMethodInfo instance (signature ~ (Gst.Caps.Caps -> Word64 -> Word64 -> m (Maybe Gst.ReferenceTimestampMeta.ReferenceTimestampMeta)), MonadIO m) => O.MethodInfo BufferAddReferenceTimestampMetaMethodInfo Buffer signature where overloadedMethod _ = bufferAddReferenceTimestampMeta #endif -- method Buffer::append -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buf1", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the first source #GstBuffer to append.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "buf2", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the second source #GstBuffer to append.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_append" gst_buffer_append :: Ptr Buffer -> -- buf1 : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Buffer -> -- buf2 : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO (Ptr Buffer) {- | Append all the memory from /@buf2@/ to /@buf1@/. The result buffer will contain a concatenation of the memory of /@buf1@/ and /@buf2@/. -} bufferAppend :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buf1@/: the first source 'GI.Gst.Structs.Buffer.Buffer' to append. -} -> Buffer {- ^ /@buf2@/: the second source 'GI.Gst.Structs.Buffer.Buffer' to append. -} -> m Buffer {- ^ __Returns:__ the new 'GI.Gst.Structs.Buffer.Buffer' that contains the memory of the two source buffers. -} bufferAppend buf1 buf2 = liftIO $ do buf1' <- B.ManagedPtr.disownBoxed buf1 buf2' <- B.ManagedPtr.disownBoxed buf2 result <- gst_buffer_append buf1' buf2' checkUnexpectedReturnNULL "bufferAppend" result result' <- (wrapBoxed Buffer) result touchManagedPtr buf1 touchManagedPtr buf2 return result' #if ENABLE_OVERLOADING data BufferAppendMethodInfo instance (signature ~ (Buffer -> m Buffer), MonadIO m) => O.MethodInfo BufferAppendMethodInfo Buffer signature where overloadedMethod _ = bufferAppend #endif -- method Buffer::append_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mem", argType = TInterface (Name {namespace = "Gst", name = "Memory"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMemory.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_append_memory" gst_buffer_append_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.Memory.Memory -> -- mem : TInterface (Name {namespace = "Gst", name = "Memory"}) IO () {- | Append the memory block /@mem@/ to /@buffer@/. This function takes ownership of /@mem@/ and thus doesn\'t increase its refcount. This function is identical to 'GI.Gst.Structs.Buffer.bufferInsertMemory' with an index of -1. See 'GI.Gst.Structs.Buffer.bufferInsertMemory' for more details. -} bufferAppendMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Gst.Memory.Memory {- ^ /@mem@/: a 'GI.Gst.Structs.Memory.Memory'. -} -> m () bufferAppendMemory buffer mem = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer mem' <- B.ManagedPtr.disownBoxed mem gst_buffer_append_memory buffer' mem' touchManagedPtr buffer touchManagedPtr mem return () #if ENABLE_OVERLOADING data BufferAppendMemoryMethodInfo instance (signature ~ (Gst.Memory.Memory -> m ()), MonadIO m) => O.MethodInfo BufferAppendMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferAppendMemory #endif -- method Buffer::append_region -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buf1", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the first source #GstBuffer to append.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "buf2", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the second source #GstBuffer to append.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "offset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset in @buf2", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size or -1 of @buf2", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_append_region" gst_buffer_append_region :: Ptr Buffer -> -- buf1 : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Buffer -> -- buf2 : TInterface (Name {namespace = "Gst", name = "Buffer"}) Int64 -> -- offset : TBasicType TInt64 Int64 -> -- size : TBasicType TInt64 IO (Ptr Buffer) {- | Append /@size@/ bytes at /@offset@/ from /@buf2@/ to /@buf1@/. The result buffer will contain a concatenation of the memory of /@buf1@/ and the requested region of /@buf2@/. -} bufferAppendRegion :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buf1@/: the first source 'GI.Gst.Structs.Buffer.Buffer' to append. -} -> Buffer {- ^ /@buf2@/: the second source 'GI.Gst.Structs.Buffer.Buffer' to append. -} -> Int64 {- ^ /@offset@/: the offset in /@buf2@/ -} -> Int64 {- ^ /@size@/: the size or -1 of /@buf2@/ -} -> m Buffer {- ^ __Returns:__ the new 'GI.Gst.Structs.Buffer.Buffer' that contains the memory of the two source buffers. -} bufferAppendRegion buf1 buf2 offset size = liftIO $ do buf1' <- B.ManagedPtr.disownBoxed buf1 buf2' <- B.ManagedPtr.disownBoxed buf2 result <- gst_buffer_append_region buf1' buf2' offset size checkUnexpectedReturnNULL "bufferAppendRegion" result result' <- (wrapBoxed Buffer) result touchManagedPtr buf1 touchManagedPtr buf2 return result' #if ENABLE_OVERLOADING data BufferAppendRegionMethodInfo instance (signature ~ (Buffer -> Int64 -> Int64 -> m Buffer), MonadIO m) => O.MethodInfo BufferAppendRegionMethodInfo Buffer signature where overloadedMethod _ = bufferAppendRegion #endif -- method Buffer::copy_deep -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buf", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_copy_deep" gst_buffer_copy_deep :: Ptr Buffer -> -- buf : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO (Ptr Buffer) {- | Create a copy of the given buffer. This will make a newly allocated copy of the data the source buffer contains. /Since: 1.6/ -} bufferCopyDeep :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buf@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> m Buffer {- ^ __Returns:__ a new copy of /@buf@/. -} bufferCopyDeep buf = liftIO $ do buf' <- unsafeManagedPtrGetPtr buf result <- gst_buffer_copy_deep buf' checkUnexpectedReturnNULL "bufferCopyDeep" result result' <- (wrapBoxed Buffer) result touchManagedPtr buf return result' #if ENABLE_OVERLOADING data BufferCopyDeepMethodInfo instance (signature ~ (m Buffer), MonadIO m) => O.MethodInfo BufferCopyDeepMethodInfo Buffer signature where overloadedMethod _ = bufferCopyDeep #endif -- method Buffer::copy_into -- method type : OrdinaryMethod -- Args : [Arg {argCName = "dest", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a destination #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a source #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "BufferCopyFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "flags indicating what metadata fields should be copied.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "offset to copy from", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "total size to copy. If -1, all data is copied.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_copy_into" gst_buffer_copy_into :: Ptr Buffer -> -- dest : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Buffer -> -- src : TInterface (Name {namespace = "Gst", name = "Buffer"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "BufferCopyFlags"}) Word64 -> -- offset : TBasicType TUInt64 Word64 -> -- size : TBasicType TUInt64 IO CInt {- | Copies the information from /@src@/ into /@dest@/. If /@dest@/ already contains memory and /@flags@/ contains GST_BUFFER_COPY_MEMORY, the memory from /@src@/ will be appended to /@dest@/. /@flags@/ indicate which fields will be copied. -} bufferCopyInto :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@dest@/: a destination 'GI.Gst.Structs.Buffer.Buffer' -} -> Buffer {- ^ /@src@/: a source 'GI.Gst.Structs.Buffer.Buffer' -} -> [Gst.Flags.BufferCopyFlags] {- ^ /@flags@/: flags indicating what metadata fields should be copied. -} -> Word64 {- ^ /@offset@/: offset to copy from -} -> Word64 {- ^ /@size@/: total size to copy. If -1, all data is copied. -} -> m Bool {- ^ __Returns:__ 'True' if the copying succeeded, 'False' otherwise. -} bufferCopyInto dest src flags offset size = liftIO $ do dest' <- unsafeManagedPtrGetPtr dest src' <- unsafeManagedPtrGetPtr src let flags' = gflagsToWord flags result <- gst_buffer_copy_into dest' src' flags' offset size let result' = (/= 0) result touchManagedPtr dest touchManagedPtr src return result' #if ENABLE_OVERLOADING data BufferCopyIntoMethodInfo instance (signature ~ (Buffer -> [Gst.Flags.BufferCopyFlags] -> Word64 -> Word64 -> m Bool), MonadIO m) => O.MethodInfo BufferCopyIntoMethodInfo Buffer signature where overloadedMethod _ = bufferCopyInto #endif -- method Buffer::copy_region -- method type : OrdinaryMethod -- Args : [Arg {argCName = "parent", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "BufferCopyFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstBufferCopyFlags", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset into parent #GstBuffer at which the new sub-buffer\n begins.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size of the new #GstBuffer sub-buffer, in bytes. If -1, all\n data is copied.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Buffer"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_copy_region" gst_buffer_copy_region :: Ptr Buffer -> -- parent : TInterface (Name {namespace = "Gst", name = "Buffer"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "BufferCopyFlags"}) Word64 -> -- offset : TBasicType TUInt64 Word64 -> -- size : TBasicType TUInt64 IO (Ptr Buffer) {- | Creates a sub-buffer from /@parent@/ at /@offset@/ and /@size@/. This sub-buffer uses the actual memory space of the parent buffer. This function will copy the offset and timestamp fields when the offset is 0. If not, they will be set to 'GI.Gst.Constants.CLOCK_TIME_NONE' and 'GI.Gst.Constants.BUFFER_OFFSET_NONE'. If /@offset@/ equals 0 and /@size@/ equals the total size of /@buffer@/, the duration and offset end fields are also copied. If not they will be set to 'GI.Gst.Constants.CLOCK_TIME_NONE' and 'GI.Gst.Constants.BUFFER_OFFSET_NONE'. MT safe. -} bufferCopyRegion :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@parent@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> [Gst.Flags.BufferCopyFlags] {- ^ /@flags@/: the 'GI.Gst.Flags.BufferCopyFlags' -} -> Word64 {- ^ /@offset@/: the offset into parent 'GI.Gst.Structs.Buffer.Buffer' at which the new sub-buffer begins. -} -> Word64 {- ^ /@size@/: the size of the new 'GI.Gst.Structs.Buffer.Buffer' sub-buffer, in bytes. If -1, all data is copied. -} -> m Buffer {- ^ __Returns:__ the new 'GI.Gst.Structs.Buffer.Buffer' or 'Nothing' if the arguments were invalid. -} bufferCopyRegion parent flags offset size = liftIO $ do parent' <- unsafeManagedPtrGetPtr parent let flags' = gflagsToWord flags result <- gst_buffer_copy_region parent' flags' offset size checkUnexpectedReturnNULL "bufferCopyRegion" result result' <- (wrapBoxed Buffer) result touchManagedPtr parent return result' #if ENABLE_OVERLOADING data BufferCopyRegionMethodInfo instance (signature ~ ([Gst.Flags.BufferCopyFlags] -> Word64 -> Word64 -> m Buffer), MonadIO m) => O.MethodInfo BufferCopyRegionMethodInfo Buffer signature where overloadedMethod _ = bufferCopyRegion #endif -- method Buffer::extract -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset to extract", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TCArray False (-1) 3 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = True, argDoc = Documentation {rawDocText = Just "\n the destination address", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to extract", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to extract", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_extract" gst_buffer_extract :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word64 -> -- offset : TBasicType TUInt64 Ptr Word8 -> -- dest : TCArray False (-1) 3 (TBasicType TUInt8) Word64 -> -- size : TBasicType TUInt64 IO Word64 {- | Copy /@size@/ bytes starting from /@offset@/ in /@buffer@/ to /@dest@/. -} bufferExtract :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word64 {- ^ /@offset@/: the offset to extract -} -> Maybe (ByteString) {- ^ /@dest@/: the destination address -} -> m ((Word64, Maybe ByteString)) {- ^ __Returns:__ The amount of bytes extracted. This value can be lower than /@size@/ when /@buffer@/ did not contain enough data. -} bufferExtract buffer offset dest = liftIO $ do let size = case dest of Nothing -> 0 Just jDest -> fromIntegral $ B.length jDest buffer' <- unsafeManagedPtrGetPtr buffer maybeDest <- case dest of Nothing -> return nullPtr Just jDest -> do jDest' <- packByteString jDest return jDest' result <- gst_buffer_extract buffer' offset maybeDest size maybeMaybeDest <- convertIfNonNull maybeDest $ \maybeDest' -> do maybeDest'' <- (unpackByteStringWithLength size) maybeDest' return maybeDest'' touchManagedPtr buffer return (result, maybeMaybeDest) #if ENABLE_OVERLOADING data BufferExtractMethodInfo instance (signature ~ (Word64 -> Maybe (ByteString) -> m ((Word64, Maybe ByteString))), MonadIO m) => O.MethodInfo BufferExtractMethodInfo Buffer signature where overloadedMethod _ = bufferExtract #endif -- method Buffer::extract_dup -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset to extract", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to extract", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "dest", argType = TCArray False (-1) 4 (TBasicType TUInt8), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A pointer where\n the destination array will be written. Might be %NULL if the size is 0.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "dest_size", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A location where the size of @dest can be written", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [Arg {argCName = "dest_size", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A location where the size of @dest can be written", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_extract_dup" gst_buffer_extract_dup :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word64 -> -- offset : TBasicType TUInt64 Word64 -> -- size : TBasicType TUInt64 Ptr (Ptr Word8) -> -- dest : TCArray False (-1) 4 (TBasicType TUInt8) Ptr Word64 -> -- dest_size : TBasicType TUInt64 IO () {- | Extracts a copy of at most /@size@/ bytes the data at /@offset@/ into newly-allocated memory. /@dest@/ must be freed using 'GI.GLib.Functions.free' when done. /Since: 1.0.10/ -} bufferExtractDup :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> Word64 {- ^ /@offset@/: the offset to extract -} -> Word64 {- ^ /@size@/: the size to extract -} -> m (ByteString) bufferExtractDup buffer offset size = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer dest <- allocMem :: IO (Ptr (Ptr Word8)) destSize <- allocMem :: IO (Ptr Word64) gst_buffer_extract_dup buffer' offset size dest destSize destSize' <- peek destSize dest' <- peek dest dest'' <- (unpackByteStringWithLength destSize') dest' freeMem dest' touchManagedPtr buffer freeMem dest freeMem destSize return dest'' #if ENABLE_OVERLOADING data BufferExtractDupMethodInfo instance (signature ~ (Word64 -> Word64 -> m (ByteString)), MonadIO m) => O.MethodInfo BufferExtractDupMethodInfo Buffer signature where overloadedMethod _ = bufferExtractDup #endif -- method Buffer::fill -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset to fill", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "src", argType = TCArray False (-1) 3 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the source address", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to fill", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to fill", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_fill" gst_buffer_fill :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word64 -> -- offset : TBasicType TUInt64 Ptr Word8 -> -- src : TCArray False (-1) 3 (TBasicType TUInt8) Word64 -> -- size : TBasicType TUInt64 IO Word64 {- | Copy /@size@/ bytes from /@src@/ to /@buffer@/ at /@offset@/. -} bufferFill :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word64 {- ^ /@offset@/: the offset to fill -} -> ByteString {- ^ /@src@/: the source address -} -> m Word64 {- ^ __Returns:__ The amount of bytes copied. This value can be lower than /@size@/ when /@buffer@/ did not contain enough data. -} bufferFill buffer offset src = liftIO $ do let size = fromIntegral $ B.length src buffer' <- unsafeManagedPtrGetPtr buffer src' <- packByteString src result <- gst_buffer_fill buffer' offset src' size touchManagedPtr buffer freeMem src' return result #if ENABLE_OVERLOADING data BufferFillMethodInfo instance (signature ~ (Word64 -> ByteString -> m Word64), MonadIO m) => O.MethodInfo BufferFillMethodInfo Buffer signature where overloadedMethod _ = bufferFill #endif -- method Buffer::find_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an offset", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a size", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "pointer to index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "length", argType = TBasicType TUInt, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "pointer to length", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "skip", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "pointer to skip", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_find_memory" gst_buffer_find_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word64 -> -- offset : TBasicType TUInt64 Word64 -> -- size : TBasicType TUInt64 Ptr Word32 -> -- idx : TBasicType TUInt Ptr Word32 -> -- length : TBasicType TUInt Ptr Word64 -> -- skip : TBasicType TUInt64 IO CInt {- | Find the memory blocks that span /@size@/ bytes starting from /@offset@/ in /@buffer@/. When this function returns 'True', /@idx@/ will contain the index of the first memory block where the byte for /@offset@/ can be found and /@length@/ contains the number of memory blocks containing the /@size@/ remaining bytes. /@skip@/ contains the number of bytes to skip in the memory block at /@idx@/ to get to the byte for /@offset@/. /@size@/ can be -1 to get all the memory blocks after /@idx@/. -} bufferFindMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word64 {- ^ /@offset@/: an offset -} -> Word64 {- ^ /@size@/: a size -} -> m ((Bool, Word32, Word32, Word64)) {- ^ __Returns:__ 'True' when /@size@/ bytes starting from /@offset@/ could be found in /@buffer@/ and /@idx@/, /@length@/ and /@skip@/ will be filled. -} bufferFindMemory buffer offset size = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer idx <- allocMem :: IO (Ptr Word32) length_ <- allocMem :: IO (Ptr Word32) skip <- allocMem :: IO (Ptr Word64) result <- gst_buffer_find_memory buffer' offset size idx length_ skip let result' = (/= 0) result idx' <- peek idx length_' <- peek length_ skip' <- peek skip touchManagedPtr buffer freeMem idx freeMem length_ freeMem skip return (result', idx', length_', skip') #if ENABLE_OVERLOADING data BufferFindMemoryMethodInfo instance (signature ~ (Word64 -> Word64 -> m ((Bool, Word32, Word32, Word64))), MonadIO m) => O.MethodInfo BufferFindMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferFindMemory #endif -- method Buffer::foreach_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "func", argType = TInterface (Name {namespace = "Gst", name = "BufferForeachMetaFunc"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBufferForeachMetaFunc to call", sinceVersion = Nothing}, argScope = ScopeTypeCall, argClosure = 2, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "user_data", argType = TBasicType TPtr, direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "user data passed to @func", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_foreach_meta" gst_buffer_foreach_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) FunPtr Gst.Callbacks.C_BufferForeachMetaFunc -> -- func : TInterface (Name {namespace = "Gst", name = "BufferForeachMetaFunc"}) Ptr () -> -- user_data : TBasicType TPtr IO CInt {- | Call /@func@/ with /@userData@/ for each meta in /@buffer@/. /@func@/ can modify the passed meta pointer or its contents. The return value of /@func@/ define if this function returns or if the remaining metadata items in the buffer should be skipped. -} bufferForeachMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> Gst.Callbacks.BufferForeachMetaFunc {- ^ /@func@/: a 'GI.Gst.Callbacks.BufferForeachMetaFunc' to call -} -> m Bool {- ^ __Returns:__ 'False' when /@func@/ returned 'False' for one of the metadata. -} bufferForeachMeta buffer func = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer func' <- Gst.Callbacks.mk_BufferForeachMetaFunc (Gst.Callbacks.wrap_BufferForeachMetaFunc Nothing (Gst.Callbacks.drop_closures_BufferForeachMetaFunc func)) let userData = nullPtr result <- gst_buffer_foreach_meta buffer' func' userData let result' = (/= 0) result safeFreeFunPtr $ castFunPtrToPtr func' touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferForeachMetaMethodInfo instance (signature ~ (Gst.Callbacks.BufferForeachMetaFunc -> m Bool), MonadIO m) => O.MethodInfo BufferForeachMetaMethodInfo Buffer signature where overloadedMethod _ = bufferForeachMeta #endif -- method Buffer::get_all_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Memory"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_all_memory" gst_buffer_get_all_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO (Ptr Gst.Memory.Memory) {- | Get all the memory block in /@buffer@/. The memory blocks will be merged into one large 'GI.Gst.Structs.Memory.Memory'. -} bufferGetAllMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> m (Maybe Gst.Memory.Memory) {- ^ __Returns:__ a 'GI.Gst.Structs.Memory.Memory' that contains the merged memory. Use gst_memory_unref () after usage. -} bufferGetAllMemory buffer = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_get_all_memory buffer' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Gst.Memory.Memory) result' return result'' touchManagedPtr buffer return maybeResult #if ENABLE_OVERLOADING data BufferGetAllMemoryMethodInfo instance (signature ~ (m (Maybe Gst.Memory.Memory)), MonadIO m) => O.MethodInfo BufferGetAllMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferGetAllMemory #endif -- method Buffer::get_flags -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "BufferFlags"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_flags" gst_buffer_get_flags :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO CUInt {- | Get the 'GI.Gst.Flags.BufferFlags' flags set on this buffer. /Since: 1.10/ -} bufferGetFlags :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> m [Gst.Flags.BufferFlags] {- ^ __Returns:__ the flags set on this buffer. -} bufferGetFlags buffer = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_get_flags buffer' let result' = wordToGFlags result touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferGetFlagsMethodInfo instance (signature ~ (m [Gst.Flags.BufferFlags]), MonadIO m) => O.MethodInfo BufferGetFlagsMethodInfo Buffer signature where overloadedMethod _ = bufferGetFlags #endif -- method Buffer::get_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Memory"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_memory" gst_buffer_get_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt IO (Ptr Gst.Memory.Memory) {- | Get the memory block at index /@idx@/ in /@buffer@/. -} bufferGetMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> m (Maybe Gst.Memory.Memory) {- ^ __Returns:__ a 'GI.Gst.Structs.Memory.Memory' that contains the data of the memory block at /@idx@/. Use gst_memory_unref () after usage. -} bufferGetMemory buffer idx = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_get_memory buffer' idx maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Gst.Memory.Memory) result' return result'' touchManagedPtr buffer return maybeResult #if ENABLE_OVERLOADING data BufferGetMemoryMethodInfo instance (signature ~ (Word32 -> m (Maybe Gst.Memory.Memory)), MonadIO m) => O.MethodInfo BufferGetMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferGetMemory #endif -- method Buffer::get_memory_range -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a length", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Memory"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_memory_range" gst_buffer_get_memory_range :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Int32 -> -- length : TBasicType TInt IO (Ptr Gst.Memory.Memory) {- | Get /@length@/ memory blocks in /@buffer@/ starting at /@idx@/. The memory blocks will be merged into one large 'GI.Gst.Structs.Memory.Memory'. If /@length@/ is -1, all memory starting from /@idx@/ is merged. -} bufferGetMemoryRange :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Int32 {- ^ /@length@/: a length -} -> m (Maybe Gst.Memory.Memory) {- ^ __Returns:__ a 'GI.Gst.Structs.Memory.Memory' that contains the merged data of /@length@/ blocks starting at /@idx@/. Use gst_memory_unref () after usage. -} bufferGetMemoryRange buffer idx length_ = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_get_memory_range buffer' idx length_ maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (wrapBoxed Gst.Memory.Memory) result' return result'' touchManagedPtr buffer return maybeResult #if ENABLE_OVERLOADING data BufferGetMemoryRangeMethodInfo instance (signature ~ (Word32 -> Int32 -> m (Maybe Gst.Memory.Memory)), MonadIO m) => O.MethodInfo BufferGetMemoryRangeMethodInfo Buffer signature where overloadedMethod _ = bufferGetMemoryRange #endif -- method Buffer::get_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "api", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GType of an API", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Meta"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_meta" gst_buffer_get_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) CGType -> -- api : TBasicType TGType IO (Ptr Gst.Meta.Meta) {- | Get the metadata for /@api@/ on buffer. When there is no such metadata, 'Nothing' is returned. If multiple metadata with the given /@api@/ are attached to this buffer only the first one is returned. To handle multiple metadata with a given API use @/gst_buffer_iterate_meta()/@ or 'GI.Gst.Structs.Buffer.bufferForeachMeta' instead and check the meta->info.api member for the API type. -} bufferGetMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> GType {- ^ /@api@/: the 'GType' of an API -} -> m (Maybe Gst.Meta.Meta) {- ^ __Returns:__ the metadata for /@api@/ on /@buffer@/. -} bufferGetMeta buffer api = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer let api' = gtypeToCGType api result <- gst_buffer_get_meta buffer' api' maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newPtr Gst.Meta.Meta) result' return result'' touchManagedPtr buffer return maybeResult #if ENABLE_OVERLOADING data BufferGetMetaMethodInfo instance (signature ~ (GType -> m (Maybe Gst.Meta.Meta)), MonadIO m) => O.MethodInfo BufferGetMetaMethodInfo Buffer signature where overloadedMethod _ = bufferGetMeta #endif -- method Buffer::get_n_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "api_type", argType = TBasicType TGType, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GType of an API", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUInt) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_n_meta" gst_buffer_get_n_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) CGType -> -- api_type : TBasicType TGType IO Word32 {- | /No description available in the introspection data./ /Since: 1.14/ -} bufferGetNMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> GType {- ^ /@apiType@/: the 'GType' of an API -} -> m Word32 {- ^ __Returns:__ number of metas of type /@apiType@/ on /@buffer@/. -} bufferGetNMeta buffer apiType = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer let apiType' = gtypeToCGType apiType result <- gst_buffer_get_n_meta buffer' apiType' touchManagedPtr buffer return result #if ENABLE_OVERLOADING data BufferGetNMetaMethodInfo instance (signature ~ (GType -> m Word32), MonadIO m) => O.MethodInfo BufferGetNMetaMethodInfo Buffer signature where overloadedMethod _ = bufferGetNMeta #endif -- method Buffer::get_reference_timestamp_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "reference", argType = TInterface (Name {namespace = "Gst", name = "Caps"}), direction = DirectionIn, mayBeNull = True, argDoc = Documentation {rawDocText = Just "a reference #GstCaps", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "ReferenceTimestampMeta"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_reference_timestamp_meta" gst_buffer_get_reference_timestamp_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.Caps.Caps -> -- reference : TInterface (Name {namespace = "Gst", name = "Caps"}) IO (Ptr Gst.ReferenceTimestampMeta.ReferenceTimestampMeta) {- | Find the first 'GI.Gst.Structs.ReferenceTimestampMeta.ReferenceTimestampMeta' on /@buffer@/ that conforms to /@reference@/. Conformance is tested by checking if the meta\'s reference is a subset of /@reference@/. Buffers can contain multiple 'GI.Gst.Structs.ReferenceTimestampMeta.ReferenceTimestampMeta' metadata items. /Since: 1.14/ -} bufferGetReferenceTimestampMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> Maybe (Gst.Caps.Caps) {- ^ /@reference@/: a reference 'GI.Gst.Structs.Caps.Caps' -} -> m (Maybe Gst.ReferenceTimestampMeta.ReferenceTimestampMeta) {- ^ __Returns:__ the 'GI.Gst.Structs.ReferenceTimestampMeta.ReferenceTimestampMeta' or 'Nothing' when there is no such metadata on /@buffer@/. -} bufferGetReferenceTimestampMeta buffer reference = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer maybeReference <- case reference of Nothing -> return nullPtr Just jReference -> do jReference' <- unsafeManagedPtrGetPtr jReference return jReference' result <- gst_buffer_get_reference_timestamp_meta buffer' maybeReference maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newPtr Gst.ReferenceTimestampMeta.ReferenceTimestampMeta) result' return result'' touchManagedPtr buffer whenJust reference touchManagedPtr return maybeResult #if ENABLE_OVERLOADING data BufferGetReferenceTimestampMetaMethodInfo instance (signature ~ (Maybe (Gst.Caps.Caps) -> m (Maybe Gst.ReferenceTimestampMeta.ReferenceTimestampMeta)), MonadIO m) => O.MethodInfo BufferGetReferenceTimestampMetaMethodInfo Buffer signature where overloadedMethod _ = bufferGetReferenceTimestampMeta #endif -- method Buffer::get_size -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_size" gst_buffer_get_size :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO Word64 {- | Get the total size of the memory blocks in /@buffer@/. -} bufferGetSize :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> m Word64 {- ^ __Returns:__ total size of the memory blocks in /@buffer@/. -} bufferGetSize buffer = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_get_size buffer' touchManagedPtr buffer return result #if ENABLE_OVERLOADING data BufferGetSizeMethodInfo instance (signature ~ (m Word64), MonadIO m) => O.MethodInfo BufferGetSizeMethodInfo Buffer signature where overloadedMethod _ = bufferGetSize #endif -- method Buffer::get_sizes -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to the offset", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "maxsize", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to the maxsize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_sizes" gst_buffer_get_sizes :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Word64 -> -- offset : TBasicType TUInt64 Ptr Word64 -> -- maxsize : TBasicType TUInt64 IO Word64 {- | Get the total size of the memory blocks in /@b@/. When not 'Nothing', /@offset@/ will contain the offset of the data in the first memory block in /@buffer@/ and /@maxsize@/ will contain the sum of the size and /@offset@/ and the amount of extra padding on the last memory block. /@offset@/ and /@maxsize@/ can be used to resize the buffer memory blocks with 'GI.Gst.Structs.Buffer.bufferResize'. -} bufferGetSizes :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> m ((Word64, Word64, Word64)) {- ^ __Returns:__ total size of the memory blocks in /@buffer@/. -} bufferGetSizes buffer = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer offset <- allocMem :: IO (Ptr Word64) maxsize <- allocMem :: IO (Ptr Word64) result <- gst_buffer_get_sizes buffer' offset maxsize offset' <- peek offset maxsize' <- peek maxsize touchManagedPtr buffer freeMem offset freeMem maxsize return (result, offset', maxsize') #if ENABLE_OVERLOADING data BufferGetSizesMethodInfo instance (signature ~ (m ((Word64, Word64, Word64))), MonadIO m) => O.MethodInfo BufferGetSizesMethodInfo Buffer signature where overloadedMethod _ = bufferGetSizes #endif -- method Buffer::get_sizes_range -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a length", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to the offset", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything},Arg {argCName = "maxsize", argType = TBasicType TUInt64, direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a pointer to the maxsize", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_sizes_range" gst_buffer_get_sizes_range :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Int32 -> -- length : TBasicType TInt Ptr Word64 -> -- offset : TBasicType TUInt64 Ptr Word64 -> -- maxsize : TBasicType TUInt64 IO Word64 {- | Get the total size of /@length@/ memory blocks stating from /@idx@/ in /@buffer@/. When not 'Nothing', /@offset@/ will contain the offset of the data in the memory block in /@buffer@/ at /@idx@/ and /@maxsize@/ will contain the sum of the size and /@offset@/ and the amount of extra padding on the memory block at /@idx@/ + /@length@/ -1. /@offset@/ and /@maxsize@/ can be used to resize the buffer memory blocks with 'GI.Gst.Structs.Buffer.bufferResizeRange'. -} bufferGetSizesRange :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Int32 {- ^ /@length@/: a length -} -> m ((Word64, Word64, Word64)) {- ^ __Returns:__ total size of /@length@/ memory blocks starting at /@idx@/ in /@buffer@/. -} bufferGetSizesRange buffer idx length_ = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer offset <- allocMem :: IO (Ptr Word64) maxsize <- allocMem :: IO (Ptr Word64) result <- gst_buffer_get_sizes_range buffer' idx length_ offset maxsize offset' <- peek offset maxsize' <- peek maxsize touchManagedPtr buffer freeMem offset freeMem maxsize return (result, offset', maxsize') #if ENABLE_OVERLOADING data BufferGetSizesRangeMethodInfo instance (signature ~ (Word32 -> Int32 -> m ((Word64, Word64, Word64))), MonadIO m) => O.MethodInfo BufferGetSizesRangeMethodInfo Buffer signature where overloadedMethod _ = bufferGetSizesRange #endif -- method Buffer::has_flags -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "BufferFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Nothing, sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_has_flags" gst_buffer_has_flags :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "BufferFlags"}) IO CInt {- | /No description available in the introspection data./ -} bufferHasFlags :: (B.CallStack.HasCallStack, MonadIO m) => Buffer -> [Gst.Flags.BufferFlags] -> m Bool bufferHasFlags buffer flags = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer let flags' = gflagsToWord flags result <- gst_buffer_has_flags buffer' flags' let result' = (/= 0) result touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferHasFlagsMethodInfo instance (signature ~ ([Gst.Flags.BufferFlags] -> m Bool), MonadIO m) => O.MethodInfo BufferHasFlagsMethodInfo Buffer signature where overloadedMethod _ = bufferHasFlags #endif -- method Buffer::insert_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the index to add the memory at, or -1 to append it to the end", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mem", argType = TInterface (Name {namespace = "Gst", name = "Memory"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMemory.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_insert_memory" gst_buffer_insert_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Int32 -> -- idx : TBasicType TInt Ptr Gst.Memory.Memory -> -- mem : TInterface (Name {namespace = "Gst", name = "Memory"}) IO () {- | Insert the memory block /@mem@/ to /@buffer@/ at /@idx@/. This function takes ownership of /@mem@/ and thus doesn\'t increase its refcount. Only 'GI.Gst.Functions.bufferGetMaxMemory' can be added to a buffer. If more memory is added, existing memory blocks will automatically be merged to make room for the new memory. -} bufferInsertMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Int32 {- ^ /@idx@/: the index to add the memory at, or -1 to append it to the end -} -> Gst.Memory.Memory {- ^ /@mem@/: a 'GI.Gst.Structs.Memory.Memory'. -} -> m () bufferInsertMemory buffer idx mem = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer mem' <- B.ManagedPtr.disownBoxed mem gst_buffer_insert_memory buffer' idx mem' touchManagedPtr buffer touchManagedPtr mem return () #if ENABLE_OVERLOADING data BufferInsertMemoryMethodInfo instance (signature ~ (Int32 -> Gst.Memory.Memory -> m ()), MonadIO m) => O.MethodInfo BufferInsertMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferInsertMemory #endif -- method Buffer::is_all_memory_writable -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_is_all_memory_writable" gst_buffer_is_all_memory_writable :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO CInt {- | Check if all memory blocks in /@buffer@/ are writable. Note that this function does not check if /@buffer@/ is writable, use @/gst_buffer_is_writable()/@ to check that if needed. /Since: 1.4/ -} bufferIsAllMemoryWritable :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> m Bool {- ^ __Returns:__ 'True' if all memory blocks in /@buffer@/ are writable -} bufferIsAllMemoryWritable buffer = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_is_all_memory_writable buffer' let result' = (/= 0) result touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferIsAllMemoryWritableMethodInfo instance (signature ~ (m Bool), MonadIO m) => O.MethodInfo BufferIsAllMemoryWritableMethodInfo Buffer signature where overloadedMethod _ = bufferIsAllMemoryWritable #endif -- method Buffer::is_memory_range_writable -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a length should not be 0", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_is_memory_range_writable" gst_buffer_is_memory_range_writable :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Int32 -> -- length : TBasicType TInt IO CInt {- | Check if /@length@/ memory blocks in /@buffer@/ starting from /@idx@/ are writable. /@length@/ can be -1 to check all the memory blocks after /@idx@/. Note that this function does not check if /@buffer@/ is writable, use @/gst_buffer_is_writable()/@ to check that if needed. /Since: 1.4/ -} bufferIsMemoryRangeWritable :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Int32 {- ^ /@length@/: a length should not be 0 -} -> m Bool {- ^ __Returns:__ 'True' if the memory range is writable -} bufferIsMemoryRangeWritable buffer idx length_ = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_is_memory_range_writable buffer' idx length_ let result' = (/= 0) result touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferIsMemoryRangeWritableMethodInfo instance (signature ~ (Word32 -> Int32 -> m Bool), MonadIO m) => O.MethodInfo BufferIsMemoryRangeWritableMethodInfo Buffer signature where overloadedMethod _ = bufferIsMemoryRangeWritable #endif -- method Buffer::map -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info", argType = TInterface (Name {namespace = "Gst", name = "MapInfo"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "info about the mapping", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "MapFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "flags for the mapping", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_map" gst_buffer_map :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.MapInfo.MapInfo -> -- info : TInterface (Name {namespace = "Gst", name = "MapInfo"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "MapFlags"}) IO CInt {- | This function fills /@info@/ with the 'GI.Gst.Structs.MapInfo.MapInfo' of all merged memory blocks in /@buffer@/. /@flags@/ describe the desired access of the memory. When /@flags@/ is @/GST_MAP_WRITE/@, /@buffer@/ should be writable (as returned from @/gst_buffer_is_writable()/@). When /@buffer@/ is writable but the memory isn\'t, a writable copy will automatically be created and returned. The readonly copy of the buffer memory will then also be replaced with this writable copy. The memory in /@info@/ should be unmapped with 'GI.Gst.Structs.Buffer.bufferUnmap' after usage. -} bufferMap :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> [Gst.Flags.MapFlags] {- ^ /@flags@/: flags for the mapping -} -> m ((Bool, Gst.MapInfo.MapInfo)) {- ^ __Returns:__ 'True' if the map succeeded and /@info@/ contains valid data. -} bufferMap buffer flags = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer info <- callocBytes 104 :: IO (Ptr Gst.MapInfo.MapInfo) let flags' = gflagsToWord flags result <- gst_buffer_map buffer' info flags' let result' = (/= 0) result info' <- (wrapPtr Gst.MapInfo.MapInfo) info touchManagedPtr buffer return (result', info') #if ENABLE_OVERLOADING data BufferMapMethodInfo instance (signature ~ ([Gst.Flags.MapFlags] -> m ((Bool, Gst.MapInfo.MapInfo))), MonadIO m) => O.MethodInfo BufferMapMethodInfo Buffer signature where overloadedMethod _ = bufferMap #endif -- method Buffer::map_range -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a length", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info", argType = TInterface (Name {namespace = "Gst", name = "MapInfo"}), direction = DirectionOut, mayBeNull = False, argDoc = Documentation {rawDocText = Just "info about the mapping", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = True, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "MapFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "flags for the mapping", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_map_range" gst_buffer_map_range :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Int32 -> -- length : TBasicType TInt Ptr Gst.MapInfo.MapInfo -> -- info : TInterface (Name {namespace = "Gst", name = "MapInfo"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "MapFlags"}) IO CInt {- | This function fills /@info@/ with the 'GI.Gst.Structs.MapInfo.MapInfo' of /@length@/ merged memory blocks starting at /@idx@/ in /@buffer@/. When /@length@/ is -1, all memory blocks starting from /@idx@/ are merged and mapped. /@flags@/ describe the desired access of the memory. When /@flags@/ is @/GST_MAP_WRITE/@, /@buffer@/ should be writable (as returned from @/gst_buffer_is_writable()/@). When /@buffer@/ is writable but the memory isn\'t, a writable copy will automatically be created and returned. The readonly copy of the buffer memory will then also be replaced with this writable copy. The memory in /@info@/ should be unmapped with 'GI.Gst.Structs.Buffer.bufferUnmap' after usage. -} bufferMapRange :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Int32 {- ^ /@length@/: a length -} -> [Gst.Flags.MapFlags] {- ^ /@flags@/: flags for the mapping -} -> m ((Bool, Gst.MapInfo.MapInfo)) {- ^ __Returns:__ 'True' if the map succeeded and /@info@/ contains valid data. -} bufferMapRange buffer idx length_ flags = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer info <- callocBytes 104 :: IO (Ptr Gst.MapInfo.MapInfo) let flags' = gflagsToWord flags result <- gst_buffer_map_range buffer' idx length_ info flags' let result' = (/= 0) result info' <- (wrapPtr Gst.MapInfo.MapInfo) info touchManagedPtr buffer return (result', info') #if ENABLE_OVERLOADING data BufferMapRangeMethodInfo instance (signature ~ (Word32 -> Int32 -> [Gst.Flags.MapFlags] -> m ((Bool, Gst.MapInfo.MapInfo))), MonadIO m) => O.MethodInfo BufferMapRangeMethodInfo Buffer signature where overloadedMethod _ = bufferMapRange #endif -- method Buffer::memcmp -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset in @buffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mem", argType = TCArray False (-1) 3 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the memory to compare", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to compare", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to compare", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- returnType : Just (TBasicType TInt) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_memcmp" gst_buffer_memcmp :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word64 -> -- offset : TBasicType TUInt64 Ptr Word8 -> -- mem : TCArray False (-1) 3 (TBasicType TUInt8) Word64 -> -- size : TBasicType TUInt64 IO Int32 {- | Compare /@size@/ bytes starting from /@offset@/ in /@buffer@/ with the memory in /@mem@/. -} bufferMemcmp :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word64 {- ^ /@offset@/: the offset in /@buffer@/ -} -> ByteString {- ^ /@mem@/: the memory to compare -} -> m Int32 {- ^ __Returns:__ 0 if the memory is equal. -} bufferMemcmp buffer offset mem = liftIO $ do let size = fromIntegral $ B.length mem buffer' <- unsafeManagedPtrGetPtr buffer mem' <- packByteString mem result <- gst_buffer_memcmp buffer' offset mem' size touchManagedPtr buffer freeMem mem' return result #if ENABLE_OVERLOADING data BufferMemcmpMethodInfo instance (signature ~ (Word64 -> ByteString -> m Int32), MonadIO m) => O.MethodInfo BufferMemcmpMethodInfo Buffer signature where overloadedMethod _ = bufferMemcmp #endif -- method Buffer::memset -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset in @buffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "val", argType = TBasicType TUInt8, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the value to set", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TUInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the size to set", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUInt64) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_memset" gst_buffer_memset :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word64 -> -- offset : TBasicType TUInt64 Word8 -> -- val : TBasicType TUInt8 Word64 -> -- size : TBasicType TUInt64 IO Word64 {- | Fill /@buf@/ with /@size@/ bytes with /@val@/ starting from /@offset@/. -} bufferMemset :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word64 {- ^ /@offset@/: the offset in /@buffer@/ -} -> Word8 {- ^ /@val@/: the value to set -} -> Word64 {- ^ /@size@/: the size to set -} -> m Word64 {- ^ __Returns:__ The amount of bytes filled. This value can be lower than /@size@/ when /@buffer@/ did not contain enough data. -} bufferMemset buffer offset val size = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_memset buffer' offset val size touchManagedPtr buffer return result #if ENABLE_OVERLOADING data BufferMemsetMethodInfo instance (signature ~ (Word64 -> Word8 -> Word64 -> m Word64), MonadIO m) => O.MethodInfo BufferMemsetMethodInfo Buffer signature where overloadedMethod _ = bufferMemset #endif -- method Buffer::n_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TUInt) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_n_memory" gst_buffer_n_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO Word32 {- | Get the amount of memory blocks that this buffer has. This amount is never larger than what 'GI.Gst.Functions.bufferGetMaxMemory' returns. -} bufferNMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> m Word32 {- ^ __Returns:__ the number of memory blocks this buffer is made of. -} bufferNMemory buffer = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_n_memory buffer' touchManagedPtr buffer return result #if ENABLE_OVERLOADING data BufferNMemoryMethodInfo instance (signature ~ (m Word32), MonadIO m) => O.MethodInfo BufferNMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferNMemory #endif -- method Buffer::peek_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "Gst", name = "Memory"})) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_peek_memory" gst_buffer_peek_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt IO (Ptr Gst.Memory.Memory) {- | Get the memory block at /@idx@/ in /@buffer@/. The memory block stays valid until the memory block in /@buffer@/ is removed, replaced or merged, typically with any call that modifies the memory in /@buffer@/. -} bufferPeekMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> m (Maybe Gst.Memory.Memory) {- ^ __Returns:__ the 'GI.Gst.Structs.Memory.Memory' at /@idx@/. -} bufferPeekMemory buffer idx = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_peek_memory buffer' idx maybeResult <- convertIfNonNull result $ \result' -> do result'' <- (newBoxed Gst.Memory.Memory) result' return result'' touchManagedPtr buffer return maybeResult #if ENABLE_OVERLOADING data BufferPeekMemoryMethodInfo instance (signature ~ (Word32 -> m (Maybe Gst.Memory.Memory)), MonadIO m) => O.MethodInfo BufferPeekMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferPeekMemory #endif -- method Buffer::prepend_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mem", argType = TInterface (Name {namespace = "Gst", name = "Memory"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMemory.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_prepend_memory" gst_buffer_prepend_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.Memory.Memory -> -- mem : TInterface (Name {namespace = "Gst", name = "Memory"}) IO () {- | Prepend the memory block /@mem@/ to /@buffer@/. This function takes ownership of /@mem@/ and thus doesn\'t increase its refcount. This function is identical to 'GI.Gst.Structs.Buffer.bufferInsertMemory' with an index of 0. See 'GI.Gst.Structs.Buffer.bufferInsertMemory' for more details. -} bufferPrependMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Gst.Memory.Memory {- ^ /@mem@/: a 'GI.Gst.Structs.Memory.Memory'. -} -> m () bufferPrependMemory buffer mem = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer mem' <- B.ManagedPtr.disownBoxed mem gst_buffer_prepend_memory buffer' mem' touchManagedPtr buffer touchManagedPtr mem return () #if ENABLE_OVERLOADING data BufferPrependMemoryMethodInfo instance (signature ~ (Gst.Memory.Memory -> m ()), MonadIO m) => O.MethodInfo BufferPrependMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferPrependMemory #endif -- method Buffer::remove_all_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_remove_all_memory" gst_buffer_remove_all_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) IO () {- | Remove all the memory blocks in /@buffer@/. -} bufferRemoveAllMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> m () bufferRemoveAllMemory buffer = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer gst_buffer_remove_all_memory buffer' touchManagedPtr buffer return () #if ENABLE_OVERLOADING data BufferRemoveAllMemoryMethodInfo instance (signature ~ (m ()), MonadIO m) => O.MethodInfo BufferRemoveAllMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferRemoveAllMemory #endif -- method Buffer::remove_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_remove_memory" gst_buffer_remove_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt IO () {- | Remove the memory block in /@b@/ at index /@i@/. -} bufferRemoveMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> m () bufferRemoveMemory buffer idx = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer gst_buffer_remove_memory buffer' idx touchManagedPtr buffer return () #if ENABLE_OVERLOADING data BufferRemoveMemoryMethodInfo instance (signature ~ (Word32 -> m ()), MonadIO m) => O.MethodInfo BufferRemoveMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferRemoveMemory #endif -- method Buffer::remove_memory_range -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a length", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_remove_memory_range" gst_buffer_remove_memory_range :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Int32 -> -- length : TBasicType TInt IO () {- | Remove /@length@/ memory blocks in /@buffer@/ starting from /@idx@/. /@length@/ can be -1, in which case all memory starting from /@idx@/ is removed. -} bufferRemoveMemoryRange :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Int32 {- ^ /@length@/: a length -} -> m () bufferRemoveMemoryRange buffer idx length_ = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer gst_buffer_remove_memory_range buffer' idx length_ touchManagedPtr buffer return () #if ENABLE_OVERLOADING data BufferRemoveMemoryRangeMethodInfo instance (signature ~ (Word32 -> Int32 -> m ()), MonadIO m) => O.MethodInfo BufferRemoveMemoryRangeMethodInfo Buffer signature where overloadedMethod _ = bufferRemoveMemoryRange #endif -- method Buffer::remove_meta -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "meta", argType = TInterface (Name {namespace = "Gst", name = "Meta"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMeta", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_remove_meta" gst_buffer_remove_meta :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.Meta.Meta -> -- meta : TInterface (Name {namespace = "Gst", name = "Meta"}) IO CInt {- | Remove the metadata for /@meta@/ on /@buffer@/. -} bufferRemoveMeta :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> Gst.Meta.Meta {- ^ /@meta@/: a 'GI.Gst.Structs.Meta.Meta' -} -> m Bool {- ^ __Returns:__ 'True' if the metadata existed and was removed, 'False' if no such metadata was on /@buffer@/. -} bufferRemoveMeta buffer meta = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer meta' <- unsafeManagedPtrGetPtr meta result <- gst_buffer_remove_meta buffer' meta' let result' = (/= 0) result touchManagedPtr buffer touchManagedPtr meta return result' #if ENABLE_OVERLOADING data BufferRemoveMetaMethodInfo instance (signature ~ (Gst.Meta.Meta -> m Bool), MonadIO m) => O.MethodInfo BufferRemoveMetaMethodInfo Buffer signature where overloadedMethod _ = bufferRemoveMeta #endif -- method Buffer::replace_all_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mem", argType = TInterface (Name {namespace = "Gst", name = "Memory"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMemory", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_replace_all_memory" gst_buffer_replace_all_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.Memory.Memory -> -- mem : TInterface (Name {namespace = "Gst", name = "Memory"}) IO () {- | Replaces all memory in /@buffer@/ with /@mem@/. -} bufferReplaceAllMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Gst.Memory.Memory {- ^ /@mem@/: a 'GI.Gst.Structs.Memory.Memory' -} -> m () bufferReplaceAllMemory buffer mem = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer mem' <- B.ManagedPtr.disownBoxed mem gst_buffer_replace_all_memory buffer' mem' touchManagedPtr buffer touchManagedPtr mem return () #if ENABLE_OVERLOADING data BufferReplaceAllMemoryMethodInfo instance (signature ~ (Gst.Memory.Memory -> m ()), MonadIO m) => O.MethodInfo BufferReplaceAllMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferReplaceAllMemory #endif -- method Buffer::replace_memory -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mem", argType = TInterface (Name {namespace = "Gst", name = "Memory"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMemory", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_replace_memory" gst_buffer_replace_memory :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Ptr Gst.Memory.Memory -> -- mem : TInterface (Name {namespace = "Gst", name = "Memory"}) IO () {- | Replaces the memory block at index /@idx@/ in /@buffer@/ with /@mem@/. -} bufferReplaceMemory :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Gst.Memory.Memory {- ^ /@mem@/: a 'GI.Gst.Structs.Memory.Memory' -} -> m () bufferReplaceMemory buffer idx mem = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer mem' <- B.ManagedPtr.disownBoxed mem gst_buffer_replace_memory buffer' idx mem' touchManagedPtr buffer touchManagedPtr mem return () #if ENABLE_OVERLOADING data BufferReplaceMemoryMethodInfo instance (signature ~ (Word32 -> Gst.Memory.Memory -> m ()), MonadIO m) => O.MethodInfo BufferReplaceMemoryMethodInfo Buffer signature where overloadedMethod _ = bufferReplaceMemory #endif -- method Buffer::replace_memory_range -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a length should not be 0", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "mem", argType = TInterface (Name {namespace = "Gst", name = "Memory"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMemory", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferEverything}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_replace_memory_range" gst_buffer_replace_memory_range :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Int32 -> -- length : TBasicType TInt Ptr Gst.Memory.Memory -> -- mem : TInterface (Name {namespace = "Gst", name = "Memory"}) IO () {- | Replaces /@length@/ memory blocks in /@buffer@/ starting at /@idx@/ with /@mem@/. If /@length@/ is -1, all memory starting from /@idx@/ will be removed and replaced with /@mem@/. /@buffer@/ should be writable. -} bufferReplaceMemoryRange :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Int32 {- ^ /@length@/: a length should not be 0 -} -> Gst.Memory.Memory {- ^ /@mem@/: a 'GI.Gst.Structs.Memory.Memory' -} -> m () bufferReplaceMemoryRange buffer idx length_ mem = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer mem' <- B.ManagedPtr.disownBoxed mem gst_buffer_replace_memory_range buffer' idx length_ mem' touchManagedPtr buffer touchManagedPtr mem return () #if ENABLE_OVERLOADING data BufferReplaceMemoryRangeMethodInfo instance (signature ~ (Word32 -> Int32 -> Gst.Memory.Memory -> m ()), MonadIO m) => O.MethodInfo BufferReplaceMemoryRangeMethodInfo Buffer signature where overloadedMethod _ = bufferReplaceMemoryRange #endif -- method Buffer::resize -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset adjustment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new size or -1 to just adjust the offset", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_resize" gst_buffer_resize :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Int64 -> -- offset : TBasicType TInt64 Int64 -> -- size : TBasicType TInt64 IO () {- | Set the offset and total size of the memory blocks in /@buffer@/. -} bufferResize :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Int64 {- ^ /@offset@/: the offset adjustment -} -> Int64 {- ^ /@size@/: the new size or -1 to just adjust the offset -} -> m () bufferResize buffer offset size = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer gst_buffer_resize buffer' offset size touchManagedPtr buffer return () #if ENABLE_OVERLOADING data BufferResizeMethodInfo instance (signature ~ (Int64 -> Int64 -> m ()), MonadIO m) => O.MethodInfo BufferResizeMethodInfo Buffer signature where overloadedMethod _ = bufferResize #endif -- method Buffer::resize_range -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "idx", argType = TBasicType TUInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "an index", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "length", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a length", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "offset", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the offset adjustment", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new size or -1 to just adjust the offset", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_resize_range" gst_buffer_resize_range :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Word32 -> -- idx : TBasicType TUInt Int32 -> -- length : TBasicType TInt Int64 -> -- offset : TBasicType TInt64 Int64 -> -- size : TBasicType TInt64 IO CInt {- | Set the total size of the /@length@/ memory blocks starting at /@idx@/ in /@buffer@/ -} bufferResizeRange :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Word32 {- ^ /@idx@/: an index -} -> Int32 {- ^ /@length@/: a length -} -> Int64 {- ^ /@offset@/: the offset adjustment -} -> Int64 {- ^ /@size@/: the new size or -1 to just adjust the offset -} -> m Bool {- ^ __Returns:__ 'True' if resizing succeeded, 'False' otherwise. -} bufferResizeRange buffer idx length_ offset size = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer result <- gst_buffer_resize_range buffer' idx length_ offset size let result' = (/= 0) result touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferResizeRangeMethodInfo instance (signature ~ (Word32 -> Int32 -> Int64 -> Int64 -> m Bool), MonadIO m) => O.MethodInfo BufferResizeRangeMethodInfo Buffer signature where overloadedMethod _ = bufferResizeRange #endif -- method Buffer::set_flags -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "BufferFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstBufferFlags to set.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_set_flags" gst_buffer_set_flags :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "BufferFlags"}) IO CInt {- | Sets one or more buffer flags on a buffer. /Since: 1.10/ -} bufferSetFlags :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> [Gst.Flags.BufferFlags] {- ^ /@flags@/: the 'GI.Gst.Flags.BufferFlags' to set. -} -> m Bool {- ^ __Returns:__ 'True' if /@flags@/ were successfully set on buffer. -} bufferSetFlags buffer flags = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer let flags' = gflagsToWord flags result <- gst_buffer_set_flags buffer' flags' let result' = (/= 0) result touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferSetFlagsMethodInfo instance (signature ~ ([Gst.Flags.BufferFlags] -> m Bool), MonadIO m) => O.MethodInfo BufferSetFlagsMethodInfo Buffer signature where overloadedMethod _ = bufferSetFlags #endif -- method Buffer::set_size -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "size", argType = TBasicType TInt64, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the new size", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_set_size" gst_buffer_set_size :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Int64 -> -- size : TBasicType TInt64 IO () {- | Set the total size of the memory blocks in /@buffer@/. -} bufferSetSize :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Int64 {- ^ /@size@/: the new size -} -> m () bufferSetSize buffer size = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer gst_buffer_set_size buffer' size touchManagedPtr buffer return () #if ENABLE_OVERLOADING data BufferSetSizeMethodInfo instance (signature ~ (Int64 -> m ()), MonadIO m) => O.MethodInfo BufferSetSizeMethodInfo Buffer signature where overloadedMethod _ = bufferSetSize #endif -- method Buffer::unmap -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "info", argType = TInterface (Name {namespace = "Gst", name = "MapInfo"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstMapInfo", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_buffer_unmap" gst_buffer_unmap :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) Ptr Gst.MapInfo.MapInfo -> -- info : TInterface (Name {namespace = "Gst", name = "MapInfo"}) IO () {- | Release the memory previously mapped with 'GI.Gst.Structs.Buffer.bufferMap'. -} bufferUnmap :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer'. -} -> Gst.MapInfo.MapInfo {- ^ /@info@/: a 'GI.Gst.Structs.MapInfo.MapInfo' -} -> m () bufferUnmap buffer info = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer info' <- unsafeManagedPtrGetPtr info gst_buffer_unmap buffer' info' touchManagedPtr buffer touchManagedPtr info return () #if ENABLE_OVERLOADING data BufferUnmapMethodInfo instance (signature ~ (Gst.MapInfo.MapInfo -> m ()), MonadIO m) => O.MethodInfo BufferUnmapMethodInfo Buffer signature where overloadedMethod _ = bufferUnmap #endif -- method Buffer::unset_flags -- method type : OrdinaryMethod -- Args : [Arg {argCName = "buffer", argType = TInterface (Name {namespace = "Gst", name = "Buffer"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "a #GstBuffer", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "flags", argType = TInterface (Name {namespace = "Gst", name = "BufferFlags"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "the #GstBufferFlags to clear", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TBoolean) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_unset_flags" gst_buffer_unset_flags :: Ptr Buffer -> -- buffer : TInterface (Name {namespace = "Gst", name = "Buffer"}) CUInt -> -- flags : TInterface (Name {namespace = "Gst", name = "BufferFlags"}) IO CInt {- | Clears one or more buffer flags. /Since: 1.10/ -} bufferUnsetFlags :: (B.CallStack.HasCallStack, MonadIO m) => Buffer {- ^ /@buffer@/: a 'GI.Gst.Structs.Buffer.Buffer' -} -> [Gst.Flags.BufferFlags] {- ^ /@flags@/: the 'GI.Gst.Flags.BufferFlags' to clear -} -> m Bool {- ^ __Returns:__ true if /@flags@/ is successfully cleared from buffer. -} bufferUnsetFlags buffer flags = liftIO $ do buffer' <- unsafeManagedPtrGetPtr buffer let flags' = gflagsToWord flags result <- gst_buffer_unset_flags buffer' flags' let result' = (/= 0) result touchManagedPtr buffer return result' #if ENABLE_OVERLOADING data BufferUnsetFlagsMethodInfo instance (signature ~ ([Gst.Flags.BufferFlags] -> m Bool), MonadIO m) => O.MethodInfo BufferUnsetFlagsMethodInfo Buffer signature where overloadedMethod _ = bufferUnsetFlags #endif -- method Buffer::get_max_memory -- method type : MemberFunction -- Args : [] -- Lengths : [] -- returnType : Just (TBasicType TUInt) -- throws : False -- Skip return : False foreign import ccall "gst_buffer_get_max_memory" gst_buffer_get_max_memory :: IO Word32 {- | Get the maximum amount of memory blocks that a buffer can hold. This is a compile time constant that can be queried with the function. When more memory blocks are added, existing memory blocks will be merged together to make room for the new block. /Since: 1.2/ -} bufferGetMaxMemory :: (B.CallStack.HasCallStack, MonadIO m) => m Word32 {- ^ __Returns:__ the maximum amount of memory blocks that a buffer can hold. -} bufferGetMaxMemory = liftIO $ do result <- gst_buffer_get_max_memory return result #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type family ResolveBufferMethod (t :: Symbol) (o :: *) :: * where ResolveBufferMethod "addMeta" o = BufferAddMetaMethodInfo ResolveBufferMethod "addParentBufferMeta" o = BufferAddParentBufferMetaMethodInfo ResolveBufferMethod "addProtectionMeta" o = BufferAddProtectionMetaMethodInfo ResolveBufferMethod "addReferenceTimestampMeta" o = BufferAddReferenceTimestampMetaMethodInfo ResolveBufferMethod "append" o = BufferAppendMethodInfo ResolveBufferMethod "appendMemory" o = BufferAppendMemoryMethodInfo ResolveBufferMethod "appendRegion" o = BufferAppendRegionMethodInfo ResolveBufferMethod "copyDeep" o = BufferCopyDeepMethodInfo ResolveBufferMethod "copyInto" o = BufferCopyIntoMethodInfo ResolveBufferMethod "copyRegion" o = BufferCopyRegionMethodInfo ResolveBufferMethod "extract" o = BufferExtractMethodInfo ResolveBufferMethod "extractDup" o = BufferExtractDupMethodInfo ResolveBufferMethod "fill" o = BufferFillMethodInfo ResolveBufferMethod "findMemory" o = BufferFindMemoryMethodInfo ResolveBufferMethod "foreachMeta" o = BufferForeachMetaMethodInfo ResolveBufferMethod "hasFlags" o = BufferHasFlagsMethodInfo ResolveBufferMethod "insertMemory" o = BufferInsertMemoryMethodInfo ResolveBufferMethod "isAllMemoryWritable" o = BufferIsAllMemoryWritableMethodInfo ResolveBufferMethod "isMemoryRangeWritable" o = BufferIsMemoryRangeWritableMethodInfo ResolveBufferMethod "map" o = BufferMapMethodInfo ResolveBufferMethod "mapRange" o = BufferMapRangeMethodInfo ResolveBufferMethod "memcmp" o = BufferMemcmpMethodInfo ResolveBufferMethod "memset" o = BufferMemsetMethodInfo ResolveBufferMethod "nMemory" o = BufferNMemoryMethodInfo ResolveBufferMethod "peekMemory" o = BufferPeekMemoryMethodInfo ResolveBufferMethod "prependMemory" o = BufferPrependMemoryMethodInfo ResolveBufferMethod "removeAllMemory" o = BufferRemoveAllMemoryMethodInfo ResolveBufferMethod "removeMemory" o = BufferRemoveMemoryMethodInfo ResolveBufferMethod "removeMemoryRange" o = BufferRemoveMemoryRangeMethodInfo ResolveBufferMethod "removeMeta" o = BufferRemoveMetaMethodInfo ResolveBufferMethod "replaceAllMemory" o = BufferReplaceAllMemoryMethodInfo ResolveBufferMethod "replaceMemory" o = BufferReplaceMemoryMethodInfo ResolveBufferMethod "replaceMemoryRange" o = BufferReplaceMemoryRangeMethodInfo ResolveBufferMethod "resize" o = BufferResizeMethodInfo ResolveBufferMethod "resizeRange" o = BufferResizeRangeMethodInfo ResolveBufferMethod "unmap" o = BufferUnmapMethodInfo ResolveBufferMethod "unsetFlags" o = BufferUnsetFlagsMethodInfo ResolveBufferMethod "getAllMemory" o = BufferGetAllMemoryMethodInfo ResolveBufferMethod "getFlags" o = BufferGetFlagsMethodInfo ResolveBufferMethod "getMemory" o = BufferGetMemoryMethodInfo ResolveBufferMethod "getMemoryRange" o = BufferGetMemoryRangeMethodInfo ResolveBufferMethod "getMeta" o = BufferGetMetaMethodInfo ResolveBufferMethod "getNMeta" o = BufferGetNMetaMethodInfo ResolveBufferMethod "getReferenceTimestampMeta" o = BufferGetReferenceTimestampMetaMethodInfo ResolveBufferMethod "getSize" o = BufferGetSizeMethodInfo ResolveBufferMethod "getSizes" o = BufferGetSizesMethodInfo ResolveBufferMethod "getSizesRange" o = BufferGetSizesRangeMethodInfo ResolveBufferMethod "setFlags" o = BufferSetFlagsMethodInfo ResolveBufferMethod "setSize" o = BufferSetSizeMethodInfo ResolveBufferMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveBufferMethod t Buffer, O.MethodInfo info Buffer p) => OL.IsLabel t (Buffer -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif