gi-gst-0.1.6.13: Gst bindings

CopyrightWill Thompson, Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria (garetxe@gmail.com)
Safe HaskellNone
LanguageHaskell2010

GI.Gst.Structs.Buffer

Contents

Description

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 #GstMemory blocks that the buffer contains.

Buffers are usually created with gst_buffer_new(). 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. |[ 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 gst_buffer_new_allocate() to create a buffer with preallocated data of a given size.

Buffers can contain a list of #GstMemory objects. You can retrieve how many memory objects with gst_buffer_n_memory() and you can get a pointer to memory with gst_buffer_peek_memory()

A buffer will usually have timestamps, and a duration, but neither of these are guaranteed (they may be set to #GST_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 #GST_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 gst_buffer_copy_region(). 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 #GstBufferFlags flag is set.

Buffers can be efficiently merged into a larger buffer with gst_buffer_append(). Copying of memory will only be done when absolutely needed.

Arbitrary extra metadata can be set on a buffer with gst_buffer_add_meta(). Metadata can be retrieved with gst_buffer_get_meta(). See also #GstMeta

An element should either unref the buffer or push it out on a src pad using gst_pad_push() (see #GstPad).

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 #GstBufferPool will be returned to the pool when the refcount drops to 0.

The GstBuffer to hold a reference to another buffer that is only released when the child #GstBuffer is released.

Typically, #GstParentBufferMeta is used when the child buffer is directly using the #GstMemory of the parent buffer, and wants to prevent the parent buffer from being returned to a buffer pool until the #GstMemory is available for re-use. (Since 1.6)

Synopsis

Exported types

newtype Buffer Source

Constructors

Buffer (ForeignPtr Buffer) 

Instances

BoxedObject Buffer Source 

Methods

boxedType :: Buffer -> IO GType

((~) * info (ResolveBufferMethod t Buffer), MethodInfo * info Buffer p) => IsLabel t (Buffer -> p) Source 

Methods

fromLabel :: Proxy# Symbol t -> Buffer -> p

((~) * info (ResolveBufferMethod t Buffer), MethodInfo * info Buffer p) => IsLabelProxy t (Buffer -> p) Source 

Methods

fromLabelProxy :: Proxy Symbol t -> Buffer -> p

((~) (TYPE Lifted) signature (MapInfo -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferUnmapMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Int64 -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferSetSizeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Int32 -> Int64 -> Int64 -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) BufferResizeRangeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Int64 -> Int64 -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferResizeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Int32 -> Memory -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferReplaceMemoryRangeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Memory -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferReplaceMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Memory -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferReplaceAllMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Meta -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) BufferRemoveMetaMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Int32 -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferRemoveMemoryRangeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferRemoveMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferRemoveAllMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Memory -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferPrependMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> m Memory), MonadIO m) => MethodInfo (TYPE Lifted) BufferPeekMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (m Word32), MonadIO m) => MethodInfo (TYPE Lifted) BufferNMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word64 -> Word8 -> Word64 -> m Word64), MonadIO m) => MethodInfo (TYPE Lifted) BufferMemsetMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word64 -> ByteString -> m Int32), MonadIO m) => MethodInfo (TYPE Lifted) BufferMemcmpMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Int32 -> [MapFlags] -> m (Bool, MapInfo)), MonadIO m) => MethodInfo (TYPE Lifted) BufferMapRangeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature ([MapFlags] -> m (Bool, MapInfo)), MonadIO m) => MethodInfo (TYPE Lifted) BufferMapMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Ptr () -> m Meta), MonadIO m) => MethodInfo (TYPE Lifted) BufferIterateMetaMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Int32 -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) BufferIsMemoryRangeWritableMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (m Bool), MonadIO m) => MethodInfo (TYPE Lifted) BufferIsAllMemoryWritableMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Int32 -> Memory -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferInsertMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Int32 -> m (Word64, Word64, Word64)), MonadIO m) => MethodInfo (TYPE Lifted) BufferGetSizesRangeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (m (Word64, Word64, Word64)), MonadIO m) => MethodInfo (TYPE Lifted) BufferGetSizesMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (m Word64), MonadIO m) => MethodInfo (TYPE Lifted) BufferGetSizeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (GType -> m Meta), MonadIO m) => MethodInfo (TYPE Lifted) BufferGetMetaMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> Int32 -> m Memory), MonadIO m) => MethodInfo (TYPE Lifted) BufferGetMemoryRangeMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word32 -> m Memory), MonadIO m) => MethodInfo (TYPE Lifted) BufferGetMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (m Memory), MonadIO m) => MethodInfo (TYPE Lifted) BufferGetAllMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (BufferForeachMetaFunc -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) BufferForeachMetaMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word64 -> Word64 -> m (Bool, Word32, Word32, Word64)), MonadIO m) => MethodInfo (TYPE Lifted) BufferFindMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word64 -> ByteString -> m Word64), MonadIO m) => MethodInfo (TYPE Lifted) BufferFillMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word64 -> Word64 -> m ByteString), MonadIO m) => MethodInfo (TYPE Lifted) BufferExtractDupMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Word64 -> Ptr () -> Word64 -> m Word64), MonadIO m) => MethodInfo (TYPE Lifted) BufferExtractMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature ([BufferCopyFlags] -> Word64 -> Word64 -> m Buffer), MonadIO m) => MethodInfo (TYPE Lifted) BufferCopyRegionMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Buffer -> [BufferCopyFlags] -> Word64 -> Word64 -> m Bool), MonadIO m) => MethodInfo (TYPE Lifted) BufferCopyIntoMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (m Buffer), MonadIO m) => MethodInfo (TYPE Lifted) BufferCopyDeepMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Buffer -> Int64 -> Int64 -> m Buffer), MonadIO m) => MethodInfo (TYPE Lifted) BufferAppendRegionMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Memory -> m ()), MonadIO m) => MethodInfo (TYPE Lifted) BufferAppendMemoryMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Buffer -> m Buffer), MonadIO m) => MethodInfo (TYPE Lifted) BufferAppendMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Structure -> m ProtectionMeta), MonadIO m) => MethodInfo (TYPE Lifted) BufferAddProtectionMetaMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (Buffer -> m ParentBufferMeta), MonadIO m) => MethodInfo (TYPE Lifted) BufferAddParentBufferMetaMethodInfo Buffer signature Source 
((~) (TYPE Lifted) signature (MetaInfo -> Ptr () -> m Meta), MonadIO m) => MethodInfo (TYPE Lifted) BufferAddMetaMethodInfo Buffer signature Source 

newZeroBuffer :: MonadIO m => m Buffer Source

Construct a Buffer struct initialized to zero.

Methods

bufferAddMeta

bufferAddParentBufferMeta

bufferAddProtectionMeta

bufferAppend

bufferAppendMemory

bufferAppendRegion

bufferCopyDeep

bufferCopyInto

bufferCopyRegion

bufferExtract

bufferExtractDup

bufferFill

bufferFindMemory

bufferForeachMeta

bufferGetAllMemory

bufferGetMaxMemory

bufferGetMemory

bufferGetMemoryRange

bufferGetMeta

bufferGetSize

bufferGetSizes

bufferGetSizesRange

bufferInsertMemory

bufferIsAllMemoryWritable

bufferIsMemoryRangeWritable

bufferIterateMeta

bufferMap

bufferMapRange

bufferMemcmp

bufferMemset

bufferNMemory

bufferNew

bufferNewAllocate

bufferNewWrapped

bufferNewWrappedFull

bufferPeekMemory

bufferPrependMemory

bufferRemoveAllMemory

bufferRemoveMemory

bufferRemoveMemoryRange

bufferRemoveMeta

bufferReplaceAllMemory

bufferReplaceMemory

bufferReplaceMemoryRange

bufferResize

bufferResizeRange

bufferSetSize

bufferUnmap

Properties

Dts

Duration

MiniObject

Offset

OffsetEnd

Pool

Pts