@pad:
@buf:
Query the element for the current mime type
@Returns:
@obj:
@meta:
@fromcaps:
@tocaps:
@Returns:
@obj:
@pad:
@parent:
@pad:
@buf:
@pad:
@buf:
@Returns:
@pad:
@buf:
@klass:
@elementfactory:
@id:
The number of channels.
Use this macro to show debugging info. This is only usefull when developing new
plugin elements.
If you #define DEBUG_ENABLED before including gst/gst.h, this macro will produce
g_print messages.
@format: the format specification as in g_print
@args...: arguments
GstEsdSink
@type:
@parent:
@Returns:
@src:
@obj:
@obj:
An eos signal is triggered whenever the GstSrc has reached the end of
the stream.
@gstsrc: the object which received the signal.
@arg1: the object which received the signal
@Returns:
@obj:
Provide context for buffers
@name_template:
@direction:
@presence:
@caps:
@Returns:
@obj:
@obj:
@name:
@Returns:
@klass:
@klass:
@pad:
@parent:
@Returns:
@obj:
The filename to write to.
@obj:
Specify how many bytes to read at a time.
@name:
@Returns:
@Returns:
@connection:
subclass use this to start their flag enumeration
@audiosink:
@channels:
Generic connection between elements.
@obj:
@bin:
@element:
@format:
@args...:
@meta:
@format:
@visual:
@width:
@height:
@overlay_info:
@dga_info:
@meta:
@obj:
@esdsink:
@channels:
@autoplug:
@srcpad:
@sinkpad:
@Varargs:
@Returns:
@srccaps:
@sinkcaps:
@obj:
Specify wether the queue blocks or not.
@pad:
@offset:
@size:
@Returns:
@name:
@fd:
@Returns:
@obj:
@obj:
@pad:
@pull:
@Returns:
@obj:
@pad:
@caps:
Create a fourcc property out of an integer value.
@a: the integer value
@format:
@args...:
@obj:
@Returns:
Specify the current offset in the file.
@klass:
@nextpad:
@Varargs:
@Returns:
@Returns:
@meta:
@base:
@swidth:
@sheight:
@bytes_per_line:
spectrum
@obj:
@klass:
@name:
@Returns:
@src:
@id:
@sink:
@obj:
GstGetbits
audioraw
@klass:
@name:
@Returns:
@element:
@parent:
@Returns:
@obj:
@sinkid:
@srcid:
@Returns:
@obj:
@id:
@Returns:
@esdsink:
@frequency:
@obj:
@obj:
@cat:
@format:
@args...:
@obj:
The audio format as defined in soundcard.h
@obj:
GstAsyncDiskSrc
>>>>>>> 1.23.2.3
@elementfactory:
@id:
@bin:
@obj:
The fequency.
@Returns:
@name:
@Returns:
@obj:
The buffer is sent to the sound card.
@gstaudiosink: the object which received the signal.
@arg1: the audiosink.
@obj:
@obj:
@pad:
@buf:
@buffer:
@meta:
@factory:
@caps:
@Returns:
@pad:
@buf:
@buffer:
@meta:
@factory:
@counter:
@Returns:
@count:
@obj:
@obj:
@cat:
@element:
@format:
@args...:
@klass:
@id:
@src:
@obj:
@obj:
@klass:
@esdsink:
@connection:
Is emited after the buffer has been written to the disk.
@gstdisksink: the object which received the signal.
@name:
@Returns:
@element:
@manager:
@obj:
GstFilter
@obj:
@obj:
@Returns:
@pad:
@Returns:
@thread:
@x1:
@x2:
@y1:
@y2:
Flags for the GstSrc element
@GST_SRC_ASYNC: Indicates that this src is asynchronous
@GST_SRC_FLAG_LAST: subclasses can use this to number their flags
GstColorSpace
Defines an entry for a padfactory.
GST_ASYNCDISKSRC_OPEN
the asyncdisksrc is open for reading
@GST_ASYNCDISKSRC_OPEN:
@GST_ASYNCDISKSRC_FLAG_LAST:
@element:
@state:
@Returns:
@pad:
@Returns:
@obj:
subclasses can use this value to start the enumeration of their flags
Frequencies of a spectrum analysis.
@Returns:
@klass:
Indicates a sinkpad for the padfactory.
@klass:
@parent:
@Returns:
@pad:
@Returns:
@name:
@Returns:
Retrieve the flags of the given meta information.
@meta: the meta information
@element:
@templ:
@Returns:
@temp:
@obj:
The end point of a filter graph
@meta:
@format:
@channels:
@frequency:
@bps:
The number of channels (mono, stereo, ...)
This macro checks to see if the given state is set.
@obj: Element to check for state.
@flag: State to check for, must be a single bit in guint32.
@lock: for locking purposes
@flags: the flags of the meta data
@data: the meta data
@size: the size of the meta data
@buffer:
@size:
@root:
@Returns:
@name:
@Returns:
@obj:
GstAudioSink
@obj:
This macro sets the given flags.
@src:
@flag: Flag to set, can by any number of bits in guint32.
@obj: GstSrc to set flag in.
Retrieves the type id of the data in the buffer.
@buf: GstBuffer
@a:
@Returns:
@name:
@Returns:
GstSink
A flag indicating that MMX instructions are supported.
@Returns:
@factory:
@caps:
@Returns:
This macro usets the given flags.
@src:
@flag: Flag to set, must be a single bit in guint32.
@obj: GstSrc to unset flag in.
The frequency.
Indicates a srcpad for the padfactory.
@buffer:
@Returns:
@obj:
@obj:
@pad:
@name:
@Returns:
@esdsink:
@format:
@cat:
@format:
@args...:
@obj:
@Returns:
@obj:
@obj:
The maximum number of cothreads we are going to support.
@name:
@Returns:
Starts the declaration of a the capabilities for this padtemplate.
@a...: a capability factory
GstSrc
@pad:
@Returns:
@pad:
@buf:
@name:
@mime:
@props:
@Returns:
The Element is going from the READY state to the PLAYING state.
@obj:
@arg:
The point of the metadata is to provide some context for each buffer. In
the case of audio data, for instance, it would provide the samplerate, bit
depth, and channel count.
The trick is that there may be multiple types of metadata ganged onto a
single buffer. This is why they're going to be a GList. This does mean
extra overhead in all cases, but I think it's minimal. The GList type
uses a chunk allocater so we're not wasting too much memory or time when
adding to the list.
The trick is dealing with these structs as they pass through a pipeline,
since they have potentially different mutability properties. For
instance, if you've got a mp3 decoder connected to a tee, which sends the
buffers off to both the decoder and a spectrum analyzer (and then a
visualization element). The preferred setup would be where every time a
audio/raw metadata comes down the pipe (indicating a potential change in
audio format), the audiosink and spectrum would just save off pointers.
So when exactly does this metadata go away (deallocated)? Well, that
means metadata has to be refcounted. But that gets rather hairy. OK, in
the simple case you create a metadata struct, it comes with refcount set
to 1. You pass it through, it stays one, eventually someone drops the
last reference on the buffer it's tied to, you free the metadata too.
Easy. What if you tee? You could go through and for every metadata in
the buffer, increment the refcount by the same as the buffer. So in the
above case (tee'd), the audiosink and spectrum would get the buffer with a
refcount of 2, and it'd have a metadata with refcount 2. Do they ref it
each themselves, then unref the buffer? Or do they remove the metadata?
Removing the metadata would require a buffer CoW, which would suck, so
yes, they'd just ref the metadata.
But.... what if they're all in different threads? Then we're off into
the magical world of mutexes. Everything with a refcount in a threaded
world must be mutexed, else you can do atomic increment and atomic
dec and test. Can this be done from C easily? Perhaps it needs to be found
from kernel includes via autoconf?
The goal in designing the way metadata will be defined and used is to keep
it as simple as possible. The basis for accomplishing this is the fact
that in order to actually use (rather than just pass) the metadata, you
have to know what the fields are, which means you have to have compiled in
support for that metadata at build time. Therefore, if you're using
metadata, you must have build-time access to the necessary include file
that defines it.
So, given that you've got an include file, it would be nice if the whole
thing could be contained there. This would limit the need to be linked
against something, or have load-time requirements as to that has to be
loaded before you are.
Given that really all metadata is is a region of memory of a given size
with a certain signature, this isn't all that hard. First you lay out the
struct that defines the metadata. Then you set up #defines that expand to
the size of the struct in question, as well as the four-cc code that
defines the type.
The work is done by a few #defines, a la the #defines used in all Gtk
objects. The first is a NEW() method that allocates the memory for the
metadata and fills in all the normal fields (type, size, utility
functions). Because of the way it's defined (as a #define, no less),
you'll have to invoke it as META_NEW(meta), since it can't return()
anything.
Another #define will check to make sure a meta is indeed that type by
verifying the type code and size. Theoretically, meta types can overlap
with the same fourcc code, as long as they have different sizes. But I
probably ought to have a global public registry so people writing things
don't conflict. MSFT got that right, at least.
So, a hairy problem is what to do when there are utility functions
associated with one of these things. One option is to not bother with
them. This is very likely a possible solution, since metadata is supposed
to be flat memory of a given size. Not much to do to either free or copy
it, is there?
GstConnection
@obj:
GstElement
@id:
@Returns:
@buf:
Clear a flag in the meta data.
@meta: the meta data
@flag: the flag to clear
@obj:
The sink is the end of the filter graph. A typical sink would be an audio
or a video card.
@obj:
@Returns:
Query whether this object has multiple input pads.
@obj: Element to query for multiple input pads.
@format:
@args...:
@factory:
@Returns:
@self:
@parent:
@Returns:
@elements:
@src:
Information about video buffers.
@bin:
@element:
@name:
@Returns:
@klass:
@obj:
@klass:
@name:
@Returns:
@obj:
@klass:
@Returns:
@obj:
Filters take data in and spit data out. They are the main Element in a filter graph.
Filters have zero or more inputs and zero or more outputs. Filters are connected
together to form filter graphs. A GstFilter is the base class and is not very usefull
on its own.
@tee:
@Returns:
@obj:
The Element is going from the PLAYING state to the READY state.
@obj:
Combine #GST_DEBUG_ENTER and #GST_DEBUG_SET_STRING.
@obj:
@klass:
videoraw
@obj:
@wx:
@wy:
@overlay_element:
@clip_count:
@overlay_clip:
@width:
@height:
@did_overlay:
@fully_obscured:
@name:
@Returns:
@obj:
@obj:
@klass:
@obj:
This macro returns the entire set of flags for the object.
@obj: GstSrc to return flags for.
Get the size of the current file.
The start point of a filter graph
@src:
@obj:
@src:
@bin:
@factory:
@counter:
@Returns:
@a:
@b:
@klass:
The default stack size of a cothread.
@Returns:
@Returns:
@klass:
@klass: <<<<<<< gstreamer-unused.sgml
Indicates that this pad will be available on request. Use
this in the factory definition.
@audiosink:
@obj:
This macro unsets the given state on the element.
@obj: Element to unset state of.
@flag: State to unset, can be any number of bits in guint32.
@klass:
@pad:
@id:
Indicate that this pad will always be available.
Use this in the factory definition.
@pad:
@parent:
@audiosink:
@frequency:
@elementfactory:
The number of bytes per read.
@argc:
@argv:
@Returns:
@obj:
@size:
@Returns:
@element:
@object:
@format:
@args...:
@Returns:
@obj:
@obj:
@obj:
@Returns:
@klass:
A connection is a bas class for a generic connection between
elements. A connection is typically a bas class for queues.
@buf:
Query a GstSrc for the ASYNC flag
@obj: The GstSrc to query
@obj:
This macro sets the given state on the element.
@obj: Element to set state of.
@flag: State to set, can be any number of bits in guint32.
@Returns:
Flags indicating properties about the meta data.
@GST_META_FREEABLE: the meta data can be freed
@obj:
Information about video buffers.
@Returns:
@src:
@offset:
@size:
@format:
@args...:
Is trigered whenever the state of an element changes
@gstelement: the object which received the signal.
@arg1: the new state of the object
@klass:
@name:
@Returns:
@Returns:
Information about audio buffers.
Take data in and spit data out
The padfactory.
This macro checks to see if the GST_SRC_ASYNC flag is set.
@obj: GstSrc to check for flag in.
GstMeta
A flag indicating that SSE instructions are supported.
@obj:
@object:
@argname:
@Returns:
Set the debug string for the current function, typically containing the arguments
to the current function, i.e. "('element')"
@format: printf-style format string
@args...: printf arguments
@Returns:
@bin:
@element:
Set a flag in the meta data.
@meta: the meta data
@flag: the flag to set
@obj:
Information about audio buffers.
@GST_PROPS_END_ID_NUM:
@GST_PROPS_LIST_ID_NUM:
@GST_PROPS_INT_ID_NUM:
@GST_PROPS_INT_RANGE_ID_NUM:
@GST_PROPS_FOURCC_ID_NUM:
@GST_PROPS_BOOL_ID_NUM:
@GST_CAPS_ALWAYS:
@GST_CAPS_MAYBE:
Check if a given flag is set.
@meta: the meta data to test
@flag: the flag to test
<<<<<<< gstreamer-unused.sgml
>>>>>>> 1.23.2.3
@obj:
Create new meta data.
@type: the type of the meta data to create
@factory:
@Returns:
Specify the location of the file to read.
@klass:
@Returns:
@format:
@args...:
@audiosink:
@format:
Frequencies of a spectrum analysis.
GstAudioSrc
Indicate that this pad will become available depending
on the media type. Use this in the factory definition.
@cat:
@format:
@args...:
Reads data from a file. You can seek to a specific location by setting
the offset.
@name:
@Returns:
@obj:
@buffer:
@Returns:
Get the current number of bytes read.
@meta:
@bands:
@channels:
@interleaved:
@lowfreq:
@highfreq:
@steps:
plugin
@obj:
@klass:
@klass:
@obj:
Indicates this pad is active
A GstSrc is the start of a filter graph. It typically is a file or an
audio source. It provides data for the next element in the graph.