Create a new ghostpad with target
as the target. The direction will be taken
from the target pad. target
must be unlinked.
Will ref the target.
the name of the new pad, or %NULL to assign a default name
the pad to ghost.
the direction of the pad, cannot change after creating the pad.
private data owned by the parent element
flags for this object
The name of the object
The offset that will be applied to the running time of the pad.
padtemplate for this pad
this object's parent, weak ref
Activates or deactivates the given pad in mode
via dispatching to the
pad's activatemodefunc. For use from within pad activation functions only.
If you don't know what this is, you probably don't want to call it.
the requested activation mode
whether or not the pad should be active.
Attach the #GstControlBinding to the object. If there already was a #GstControlBinding for this property it will be replaced.
The object's reference count will be incremented, and any floating reference will be removed (see gst_object_ref_sink())
the #GstControlBinding that should be used
Be notified of different states of pads. The provided callback is called for
every state that matches mask
.
Probes are called in groups: First GST_PAD_PROBE_TYPE_BLOCK probes are called, then others, then finally GST_PAD_PROBE_TYPE_IDLE. The only exception here are GST_PAD_PROBE_TYPE_IDLE probes that are called immediately if the pad is already idle while calling gst_pad_add_probe(). In each of the groups, probes are called in the order in which they were added.
the probe mask
#GstPadProbeCallback that will be called with notifications of the pad state
Creates a binding between source_property
on source
and target_property
on target
.
Whenever the source_property
is changed the target_property
is
updated using the same value. For instance:
g_object_bind_property (action, "active", widget, "sensitive", 0);
Will result in the "sensitive" property of the widget #GObject instance to be updated with the same value of the "active" property of the action #GObject instance.
If flags
contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
if target_property
on target
changes then the source_property
on source
will be updated as well.
The binding will automatically be removed when either the source
or the
target
instances are finalized. To remove the binding without affecting the
source
and the target
you can just call g_object_unref() on the returned
#GBinding instance.
Removing the binding by calling g_object_unref() on it must only be done if
the binding, source
and target
are only used from a single thread and it
is clear that both source
and target
outlive the binding. Especially it
is not safe to rely on this if the binding, source
or target
can be
finalized from different threads. Keep another reference to the binding and
use g_binding_unbind() instead to be on the safe side.
A #GObject can have multiple bindings.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
Creates a binding between source_property
on source
and target_property
on target,
allowing you to set the transformation functions to be used by
the binding.
This function is the language bindings friendly version of g_object_bind_property_full(), using #GClosures instead of function pointers.
the property on source
to bind
the target #GObject
the property on target
to bind
flags to pass to #GBinding
a #GClosure wrapping the transformation function from the source
to the target,
or %NULL to use the default
a #GClosure wrapping the transformation function from the target
to the source,
or %NULL to use the default
Chain a buffer to pad
.
The function returns #GST_FLOW_FLUSHING if the pad was flushing.
If the buffer type is not acceptable for pad
(as negotiated with a
preceding GST_EVENT_CAPS event), this function returns
#GST_FLOW_NOT_NEGOTIATED.
The function proceeds calling the chain function installed on pad
(see
gst_pad_set_chain_function()) and the return value of that function is
returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if pad
has no
chain function.
In all cases, success or failure, the caller loses its reference to buffer
after calling this function.
Chain a bufferlist to pad
.
The function returns #GST_FLOW_FLUSHING if the pad was flushing.
If pad
was not negotiated properly with a CAPS event, this function
returns #GST_FLOW_NOT_NEGOTIATED.
The function proceeds calling the chainlist function installed on pad
(see
gst_pad_set_chain_list_function()) and the return value of that function is
returned to the caller. #GST_FLOW_NOT_SUPPORTED is returned if pad
has no
chainlist function.
In all cases, success or failure, the caller loses its reference to list
after calling this function.
MT safe.
the #GstBufferList to send, return GST_FLOW_ERROR if not.
Check and clear the #GST_PAD_FLAG_NEED_RECONFIGURE flag on pad
and return %TRUE
if the flag was set.
Finish initialization of a newly allocated ghost pad.
This function is most useful in language bindings and when subclassing
#GstGhostPad; plugin and application developers normally will not call this
function. Call this function directly after a call to g_object_new
(GST_TYPE_GHOST_PAD, "direction", dir,
..., NULL).
Creates a stream-id for the source #GstPad pad
by combining the
upstream information with the optional stream_id
of the stream
of pad
. pad
must have a parent #GstElement and which must have zero
or one sinkpad. stream_id
can only be %NULL if the parent element
of pad
has only a single source pad.
This function generates an unique stream-id by getting the upstream
stream-start event stream ID and appending stream_id
to it. If the
element has no sinkpad it will generate an upstream stream-id by
doing an URI query on the element and in the worst case just uses
a random number. Source elements that don't implement the URI
handler interface should ideally generate a unique, deterministic
stream-id manually instead.
Since stream IDs are sorted alphabetically, any numbers in the stream ID should be printed with a fixed number of characters, preceded by 0's, such as by using the format %03u instead of %u.
Invokes the default event handler for the given pad.
The EOS event will pause the task associated with pad
before it is forwarded
to all internally linked pads,
The event is sent to all pads internally linked to pad
. This function
takes ownership of event
.
This function is intended for #GObject implementations to re-enforce a [floating][floating-ref] object reference. Doing this is seldom required: all #GInitiallyUnowneds are created with a floating reference which usually just needs to be sunken by calling g_object_ref_sink().
Calls forward
for all internally linked pads of pad
. This function deals with
dynamically changing internal pads and will make sure that the forward
function is only called once for each pad.
When forward
returns %TRUE, no further pads will be processed.
a #GstPadForwardFunction
Increases the freeze count on object
. If the freeze count is
non-zero, the emission of "notify" signals on object
is
stopped. The signals are queued until the freeze count is decreased
to zero. Duplicate notifications are squashed so that at most one
#GObject::notify signal is emitted for each property modified while the
object is frozen.
This is necessary for accessors that modify multiple properties to prevent premature notification while the object is still being modified.
Gets the corresponding #GstControlBinding for the property. This should be unreferenced again after use.
name of the property
Obtain the control-rate for this object
. Audio processing #GstElement
objects will use this rate to sub-divide their processing loop and call
gst_object_sync_values() in between. The length of the processing segment
should be up to control-rate
nanoseconds.
If the object
is not under property control, this will return
%GST_CLOCK_TIME_NONE. This allows the element to avoid the sub-dividing.
The control-rate is not expected to change if the element is in %GST_STATE_PAUSED or %GST_STATE_PLAYING.
Gets a named field from the objects table of associations (see g_object_set_data()).
name of the key for that association
Gets the direction of the pad. The direction of the pad is decided at construction time so this function does not take the LOCK.
Gets the private data of a pad. No locking is performed in this function.
Gets a number of #GValues for the given controlled property starting at the
requested time. The array values
need to hold enough space for n_values
of
#GValue.
This function is useful if one wants to e.g. draw a graph of the control curve or apply a control curve sample by sample.
the name of the property to get
the time that should be processed
the time spacing between subsequent values
array to put control-values in
Gets the #GstFlowReturn return from the last data passed by this pad.
Returns a copy of the name of object
.
Caller should g_free() the return value after usage.
For a nameless object, this returns %NULL, which you can safely g_free()
as well.
Free-function: g_free
Get the offset applied to the running time of pad
. pad
has to be a source
pad.
Gets the template for pad
.
Generates a string describing the path of object
in
the object hierarchy. Only useful (or used) for debugging.
Free-function: g_free
Gets a property of an object.
The value
can be:
In general, a copy is made of the property contents and the caller is responsible for freeing the memory by calling g_value_unset().
Note that g_object_get_property() is really intended for language bindings, g_object_get() is much more convenient for C programming.
the name of the property to get
return location for the property value
This function gets back user data pointers stored via g_object_set_qdata().
A #GQuark, naming the user data pointer
When pad
is flushing this function returns #GST_FLOW_FLUSHING
immediately and buffer
is %NULL.
Calls the getrange function of pad,
see #GstPadGetRangeFunction for a
description of a getrange function. If pad
has no getrange function
installed (see gst_pad_set_getrange_function()) this function returns
#GST_FLOW_NOT_SUPPORTED.
If buffer
points to a variable holding %NULL, a valid new #GstBuffer will be
placed in buffer
when this function returns #GST_FLOW_OK. The new buffer
must be freed with gst_buffer_unref() after usage.
When buffer
points to a variable that points to a valid #GstBuffer, the
buffer will be filled with the result data when this function returns
#GST_FLOW_OK. If the provided buffer is larger than size,
only
size
bytes will be filled in the result buffer and its size will be updated
accordingly.
Note that less than size
bytes can be returned in buffer
when, for example,
an EOS condition is near or when buffer
is not large enough to hold size
bytes. The caller should check the result buffer size to get the result size.
When this function returns any other result value than #GST_FLOW_OK, buffer
will be unchanged.
This is a lowlevel function. Usually gst_pad_pull_range() is used.
The start offset of the buffer
The length of the buffer
Returns the current stream-id for the pad,
or %NULL if none has been
set yet, i.e. the pad has not received a stream-start event yet.
This is a convenience wrapper around gst_pad_get_sticky_event() and gst_event_parse_stream_start().
The returned stream-id string should be treated as an opaque string, its contents should not be interpreted.
Gets the value for the given controlled property at the requested time.
the name of the property to get
the time the control-change should be read from
Gets n_properties
properties for an object
.
Obtained properties will be set to values
. All properties must be valid.
Warnings will be emitted and undefined behaviour may result if invalid
properties are passed in.
the names of each property to get
the values of each property to get
Check if the object
has active controlled properties.
Check if pad
has caps set on it with a #GST_EVENT_CAPS event.
Query if a pad is active
Checks if the pad is blocked or not. This function returns the last requested state of the pad. It is not certain that the pad is actually blocking at this point (see gst_pad_is_blocking()).
Checks if the pad is blocking or not. This is a guaranteed state of whether the pad is actually blocking on a #GstBuffer or a #GstEvent.
Checks whether object
has a [floating][floating-ref] reference.
Checks if a pad
is linked to another pad or not.
Iterate the list of pads to which the given pad is linked to inside of the parent element. This is the default handler, and thus returns an iterator of all of the pads inside the parent element with opposite direction.
The caller must free this iterator after use with gst_iterator_free().
Links the source pad and the sink pad.
Links the source pad and the sink pad.
This variant of #gst_pad_link provides a more granular control on the checks being done when linking. While providing some considerable speedups the caller of this method must be aware that wrong usage of those flags can cause severe issues. Refer to the documentation of #GstPadLinkCheck for more information.
MT Safe.
the sink #GstPad to link.
the checks to validate when linking
Links src
to sink,
creating any #GstGhostPad's in between as necessary.
This is a convenience function to save having to create and add intermediate #GstGhostPad's as required for linking across #GstBin boundaries.
If src
or sink
pads don't have parent elements or do not share a common
ancestor, the link will fail.
Links src
to sink,
creating any #GstGhostPad's in between as necessary.
This is a convenience function to save having to create and add intermediate #GstGhostPad's as required for linking across #GstBin boundaries.
If src
or sink
pads don't have parent elements or do not share a common
ancestor, the link will fail.
Calling gst_pad_link_maybe_ghosting_full() with
flags
== %GST_PAD_LINK_CHECK_DEFAULT is the recommended way of linking
pads with safety checks applied.
a #GstPad
some #GstPadLinkCheck flags
Mark a pad for needing reconfiguration. The next call to gst_pad_check_reconfigure() will return %TRUE after this call.
Check the #GST_PAD_FLAG_NEED_RECONFIGURE flag on pad
and return %TRUE
if the flag was set.
Emits a "notify" signal for the property property_name
on object
.
When possible, eg. when signaling a property change from within the class that registered the property, you should use g_object_notify_by_pspec() instead.
Note that emission of the notify signal may be blocked with g_object_freeze_notify(). In this case, the signal emissions are queued and will be emitted (in reverse order) when g_object_thaw_notify() is called.
the name of a property installed on the class of object
.
Emits a "notify" signal for the property specified by pspec
on object
.
This function omits the property name lookup, hence it is faster than g_object_notify().
One way to avoid using g_object_notify() from within the class that registered the properties, and using g_object_notify_by_pspec() instead, is to store the GParamSpec used with g_object_class_install_property() inside a static array, e.g.:
enum
{
PROP_0,
PROP_FOO,
PROP_LAST
};
static GParamSpec *properties[PROP_LAST];
static void
my_object_class_init (MyObjectClass *klass)
{
properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
0, 100,
50,
G_PARAM_READWRITE);
g_object_class_install_property (gobject_class,
PROP_FOO,
properties[PROP_FOO]);
}
and then notify a change on the "foo" property with:
g_object_notify_by_pspec (self, properties[PROP_FOO]);
the #GParamSpec of a property installed on the class of object
.
Pause the task of pad
. This function will also wait until the
function executed by the task is finished if this function is not
called from the task function.
Gets the capabilities of the peer connected to this pad. Similar to gst_pad_query_caps().
When called on srcpads filter
contains the caps that
upstream could produce in the order preferred by upstream. When
called on sinkpads filter
contains the caps accepted by
downstream in the preferred order. filter
might be %NULL but
if it is not %NULL the returned caps will be a subset of filter
.
Checks if all internally linked pads of pad
accepts the caps in query
and
returns the intersection of the results.
This function is useful as a default accept caps query function for an element that can handle any stream format, but requires caps that are acceptable for all opposite pads.
Calls gst_pad_query_caps() for all internally linked pads of pad
and returns
the intersection of the results.
This function is useful as a default caps query function for an element that can handle any stream format, but requires all its pads to have the same caps. Two such elements are tee and adder.
Pulls a buffer
from the peer pad or fills up a provided buffer.
This function will first trigger the pad block signal if it was installed.
When pad
is not linked #GST_FLOW_NOT_LINKED is returned else this
function returns the result of gst_pad_get_range() on the peer pad.
See gst_pad_get_range() for a list of return values and for the
semantics of the arguments of this function.
If buffer
points to a variable holding %NULL, a valid new #GstBuffer will be
placed in buffer
when this function returns #GST_FLOW_OK. The new buffer
must be freed with gst_buffer_unref() after usage. When this function
returns any other result value, buffer
will still point to %NULL.
When buffer
points to a variable that points to a valid #GstBuffer, the
buffer will be filled with the result data when this function returns
#GST_FLOW_OK. When this function returns any other result value,
buffer
will be unchanged. If the provided buffer is larger than size,
only
size
bytes will be filled in the result buffer and its size will be updated
accordingly.
Note that less than size
bytes can be returned in buffer
when, for example,
an EOS condition is near or when buffer
is not large enough to hold size
bytes. The caller should check the result buffer size to get the result size.
The start offset of the buffer
The length of the buffer
Pushes a buffer to the peer of pad
.
This function will call installed block probes before triggering any installed data probes.
The function proceeds calling gst_pad_chain() on the peer pad and returns
the value from that function. If pad
has no peer, #GST_FLOW_NOT_LINKED will
be returned.
In all cases, success or failure, the caller loses its reference to buffer
after calling this function.
Sends the event to the peer of the given pad. This function is mainly used by elements to send events to their peer elements.
This function takes ownership of the provided event so you should gst_event_ref() it if you want to reuse the event after this call.
Pushes a buffer list to the peer of pad
.
This function will call installed block probes before triggering any installed data probes.
The function proceeds calling the chain function on the peer pad and returns
the value from that function. If pad
has no peer, #GST_FLOW_NOT_LINKED will
be returned. If the peer pad does not have any installed chainlist function
every group buffer of the list will be merged into a normal #GstBuffer and
chained via gst_pad_chain().
In all cases, success or failure, the caller loses its reference to list
after calling this function.
the #GstBufferList to push returns GST_FLOW_ERROR if not.
Dispatches a query to a pad. The query should have been allocated by the caller via one of the type-specific allocation functions. The element that the pad belongs to is responsible for filling the query with an appropriate response, which should then be parsed with a type-specific query parsing function.
Again, the caller is responsible for both the allocation and deallocation of the query structure.
Please also note that some queries might need a running pipeline to work.
Gets the capabilities this pad can produce or consume.
Note that this method doesn't necessarily return the caps set by sending a
gst_event_new_caps() - use gst_pad_get_current_caps() for that instead.
gst_pad_query_caps returns all possible caps a pad can operate with, using
the pad's CAPS query function, If the query fails, this function will return
filter,
if not %NULL, otherwise ANY.
When called on sinkpads filter
contains the caps that
upstream could produce in the order preferred by upstream. When
called on srcpads filter
contains the caps accepted by
downstream in the preferred order. filter
might be %NULL but
if it is not %NULL the returned caps will be a subset of filter
.
Note that this function does not return writable #GstCaps, use gst_caps_make_writable() before modifying the caps.
Invokes the default query handler for the given pad.
The query is sent to all pads internally linked to pad
. Note that
if there are many possible sink pads that are internally linked to
pad,
only one will be sent the query.
Multi-sinkpad elements should implement custom query handlers.
Increments the reference count on object
. This function
does not take the lock on object
because it relies on
atomic refcounting.
This object returns the input parameter to ease writing constructs like : result = gst_object_ref (object->parent);
Increase the reference count of object,
and possibly remove the
[floating][floating-ref] reference, if object
has a floating reference.
In other words, if the object is floating, then this call "assumes ownership" of the floating reference, converting it to a normal reference by clearing the floating flag while leaving the reference count unchanged. If the object is not floating, then this call adds a new normal reference increasing the reference count by one.
Since GLib 2.56, the type of object
will be propagated to the return type
under the same conditions as for g_object_ref().
Removes the corresponding #GstControlBinding. If it was the last ref of the binding, it will be disposed.
the binding
Remove the probe with id
from pad
.
MT safe.
the probe id to remove
Releases all references to other objects. This can be used to break reference cycles.
This function should only be called from object system implementations.
Sends the event to the pad. This function can be used by applications to send events in the pipeline.
If pad
is a source pad, event
should be an upstream event. If pad
is a
sink pad, event
should be a downstream event. For example, you would not
send a #GST_EVENT_EOS on a src pad; EOS events only propagate downstream.
Furthermore, some downstream events have to be serialized with data flow,
like EOS, while some can travel out-of-band, like #GST_EVENT_FLUSH_START. If
the event needs to be serialized with data flow, this function will take the
pad's stream lock while calling its event function.
To find out whether an event type is upstream, downstream, or downstream and serialized, see #GstEventTypeFlags, gst_event_type_get_flags(), #GST_EVENT_IS_UPSTREAM, #GST_EVENT_IS_DOWNSTREAM, and #GST_EVENT_IS_SERIALIZED. Note that in practice that an application or plugin doesn't need to bother itself with this information; the core handles all necessary locks and checks.
This function takes ownership of the provided event so you should gst_event_ref() it if you want to reuse the event after this call.
Sets the given activate function for pad
. The activate function will
dispatch to gst_pad_activate_mode() to perform the actual activation.
Only makes sense to set on sink pads.
Call this function if your sink pad can start a pull-based task.
the #GstPadActivateFunction to set.
Sets the given activate_mode function for the pad. An activate_mode function prepares the element for data passing.
the #GstPadActivateModeFunction to set.
Activates or deactivates the given pad. Normally called from within core state change functions.
If active,
makes sure the pad is active. If it is already active, either in
push or pull mode, just return. Otherwise dispatches to the pad's activate
function to perform the actual activation.
If not active,
calls gst_pad_activate_mode() with the pad's current mode
and a %FALSE argument.
whether or not the pad should be active.
Sets the given chain function for the pad. The chain function is called to process a #GstBuffer input buffer. see #GstPadChainFunction for more details.
the #GstPadChainFunction to set.
Sets the given chain list function for the pad. The chainlist function is called to process a #GstBufferList input buffer list. See #GstPadChainListFunction for more details.
the #GstPadChainListFunction to set.
This function is used to disable the control bindings on a property for some time, i.e. gst_object_sync_values() will do nothing for the property.
property to disable
boolean that specifies whether to disable the controller or not.
This function is used to disable all controlled properties of the object
for
some time, i.e. gst_object_sync_values() will do nothing.
boolean that specifies whether to disable the controller or not.
Change the control-rate for this object
. Audio processing #GstElement
objects will use this rate to sub-divide their processing loop and call
gst_object_sync_values() in between. The length of the processing segment
should be up to control-rate
nanoseconds.
The control-rate should not change if the element is in %GST_STATE_PAUSED or %GST_STATE_PLAYING.
the new control-rate in nanoseconds.
Each object carries around a table of associations from strings to pointers. This function lets you set an association.
If the object already had an association with that name, the old association will be destroyed.
Internally, the key
is converted to a #GQuark using g_quark_from_string().
This means a copy of key
is kept permanently (even after object
has been
finalized) — so it is recommended to only use a small, bounded set of values
for key
in your program, to avoid the #GQuark storage growing unbounded.
name of the key
data to associate with that key
Set the given private data gpointer on the pad. This function can only be used by the element that owns the pad. No locking is performed in this function.
The private data to attach to the pad.
Sets the given event handler for the pad.
the #GstPadEventFullFunction to set.
Sets the given event handler for the pad.
the #GstPadEventFunction to set.
Sets the given getrange function for the pad. The getrange function is called to produce a new #GstBuffer to start the processing pipeline. see #GstPadGetRangeFunction for a description of the getrange function.
the #GstPadGetRangeFunction to set.
Sets the given internal link iterator function for the pad.
the #GstPadIterIntLinkFunction to set.
Sets the given link function for the pad. It will be called when the pad is linked with another pad.
The return value #GST_PAD_LINK_OK should be used when the connection can be made.
The return value #GST_PAD_LINK_REFUSED should be used when the connection cannot be made for some reason.
If link
is installed on a source pad, it should call the #GstPadLinkFunction
of the peer sink pad, if present.
the #GstPadLinkFunction to set.
Sets the name of object,
or gives object
a guaranteed unique
name (if name
is %NULL).
This function makes a copy of the provided name, so the caller
retains ownership of the name it sent.
new name of object
Set the offset that will be applied to the running time of pad
.
the offset
Sets a property on an object.
the name of the property to set
the value
Set the given query function for the pad.
the #GstPadQueryFunction to set.
Sets the given unlink function for the pad. It will be called when the pad is unlinked.
Note that the pad's lock is already held when the unlink function is called, so most pad functions cannot be called from within the callback.
the #GstPadUnlinkFunction to set.
Starts a task that repeatedly calls func
with user_data
. This function
is mostly used in pad activation functions to start the dataflow.
The #GST_PAD_STREAM_LOCK of pad
will automatically be acquired
before func
is called.
the task function to call
Remove a specified datum from the object's data associations, without invoking the association's destroy handler.
name of the key
This function gets back user data pointers stored via
g_object_set_qdata() and removes the data
from object
without invoking its destroy() function (if any was
set).
Usually, calling this function is only required to update
user data pointers with a destroy notifier, for example:
void
object_add_to_user_list (GObject *object,
const gchar *new_string)
{
// the quark, naming the object data
GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
// retrieve the old string list
GList *list = g_object_steal_qdata (object, quark_string_list);
// prepend new string
list = g_list_prepend (list, g_strdup (new_string));
// this changed 'list', so we need to set it again
g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
}
static void
free_string_list (gpointer data)
{
GList *node, *list = data;
for (node = list; node; node = node->next)
g_free (node->data);
g_list_free (list);
}
Using g_object_get_qdata() in the above example, instead of g_object_steal_qdata() would have left the destroy function set, and thus the partial string list would have been freed upon g_object_set_qdata_full().
A #GQuark, naming the user data pointer
Iterates all sticky events on pad
and calls foreach_func
for every
event. If foreach_func
returns %FALSE the iteration is immediately stopped.
the #GstPadStickyEventsForeachFunction that should be called for every event.
Stop the task of pad
. This function will also make sure that the
function executed by the task will effectively stop if not called
from the GstTaskFunction.
This function will deadlock if called from the GstTaskFunction of the task. Use gst_task_pause() instead.
Regardless of whether the pad has a task, the stream lock is acquired and released so as to ensure that streaming through this pad has finished.
Store the sticky event
on pad
Returns a suggestion for timestamps where buffers should be split to get best controller results.
Sets the properties of the object, according to the #GstControlSources that (maybe) handle them and for the given timestamp.
If this function fails, it is most likely the application developers fault. Most probably the control sources are not setup correctly.
the time that should be processed
Reverts the effect of a previous call to
g_object_freeze_notify(). The freeze count is decreased on object
and when it reaches zero, queued "notify" signals are emitted.
Duplicate notifications for each property are squashed so that at most one #GObject::notify signal is emitted for each property, in the reverse order in which they have been queued.
It is an error to call this function when the freeze count is zero.
Clear the parent of object,
removing the associated reference.
This function decreases the refcount of object
.
MT safe. Grabs and releases object'
s lock.
Decrements the reference count on object
. If reference count hits
zero, destroy object
. This function does not take the lock
on object
as it relies on atomic refcounting.
The unref method should never be called with the LOCK held since this might deadlock the dispose function.
A helper function you can use that sets the FIXED_CAPS flag This way the default CAPS query will always return the negotiated caps or in case the pad is not negotiated, the padtemplate caps.
The negotiated caps are the caps of the last CAPS event that passed on the pad. Use this function on a pad that, once it negotiated to a CAPS, cannot be renegotiated to something else.
This function essentially limits the life time of the closure
to
the life time of the object. That is, when the object is finalized,
the closure
is invalidated by calling g_closure_invalidate() on
it, in order to prevent invocations of the closure with a finalized
(nonexisting) object. Also, g_object_ref() and g_object_unref() are
added as marshal guards to the closure,
to ensure that an extra
reference count is held on object
during invocation of the
closure
. Usually, this function will be called on closures that
use this object
as closure data.
#GClosure to watch
Invoke the default chain list function of the proxy pad.
a sink #GstPad, returns GST_FLOW_ERROR if not.
the parent of pad
or %NULL
the #GstBufferList to send, return GST_FLOW_ERROR if not.
Checks to see if there is any object named name
in list
. This function
does not do any locking of any kind. You might want to protect the
provided list with the lock of the owner of the list. This function
will lock each #GstObject in the list to compare the name, so be
careful when passing a list with a locked object.
A default deep_notify signal callback for an object. The user data should contain a pointer to an array of strings that should be excluded from the notify. The default handler will print the new value of the property using g_print.
MT safe. This function grabs and releases object'
s LOCK for getting its
path string.
the #GObject that signalled the notify.
a #GstObject that initiated the notify.
a #GParamSpec of the property.
a set of user-specified properties to exclude or %NULL to show all changes.
Find the #GParamSpec with the given name for an
interface. Generally, the interface vtable passed in as g_iface
will be the default vtable from g_type_default_interface_ref(), or,
if you know the interface has already been loaded,
g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
name of a property to look up.
Add a property to an interface; this is only useful for interfaces that are added to GObject-derived types. Adding a property to an interface forces all objects classes with that interface to have a compatible property. The compatible property could be a newly created #GParamSpec, but normally g_object_class_override_property() will be used so that the object class only needs to provide an implementation and inherits the property description, default value, bounds, and so forth from the interface property.
This function is meant to be called from the interface's default
vtable initialization function (the class_init
member of
#GTypeInfo.) It must not be called after after class_init
has
been called for any object types implementing this interface.
If pspec
is a floating reference, it will be consumed.
any interface vtable for the interface, or the default vtable for the interface.
the #GParamSpec for the new property
Lists the properties of an interface.Generally, the interface
vtable passed in as g_iface
will be the default vtable from
g_type_default_interface_ref(), or, if you know the interface has
already been loaded, g_type_default_interface_peek().
any interface vtable for the interface, or the default vtable for the interface
Invoke the default activate mode function of a proxy pad that is owned by a ghost pad.
the #GstPad to activate or deactivate.
the parent of pad
or %NULL
the requested activation mode
whether the pad should be active or not.
Gets a string representing the given pad-link return.
a #GstPadLinkReturn to get the name of.
Create a new ghostpad with target
as the target. The direction will be taken
from the target pad. target
must be unlinked.
Will ref the target.
the name of the new pad, or %NULL to assign a default name
the pad to ghost.
Creates a new pad with the given name in the given direction. If name is %NULL, a guaranteed unique name (across all pads) will be assigned. This function makes a copy of the name so you can safely free the name.
the name of the new pad.
the #GstPadDirection of the pad.
Creates a new pad with the given name from the given static template. If name is %NULL, a guaranteed unique name (across all pads) will be assigned. This function makes a copy of the name so you can safely free the name.
the #GstStaticPadTemplate to use
the name of the pad
Create a new ghostpad with target
as the target. The direction will be taken
from the target pad. The template used on the ghostpad will be template
.
Will ref the target.
the name of the new pad, or %NULL to assign a default name.
the pad to ghost.
the #GstPadTemplate to use on the ghostpad.
Creates a new pad with the given name from the given template. If name is %NULL, a guaranteed unique name (across all pads) will be assigned. This function makes a copy of the name so you can safely free the name.
the pad template to use
the name of the pad
Create a new ghostpad without a target with the given direction. A target can be set on the ghostpad later with the gst_ghost_pad_set_target() function.
The created ghostpad will not have a padtemplate.
the name of the new pad, or %NULL to assign a default name.
the direction of the ghostpad
Create a new ghostpad based on templ,
without setting a target. The
direction will be taken from the templ
.
the name of the new pad, or %NULL to assign a default name
the #GstPadTemplate to create the ghostpad from.
Creates a new instance of a #GObject subtype and sets its properties.
Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY) which are not explicitly specified are set to their default values.
the type id of the #GObject subtype to instantiate
an array of #GParameter
Atomically modifies a pointer to point to a new object.
The reference count of oldobj
is decreased and the reference count of
newobj
is increased.
Either newobj
and the value pointed to by oldobj
may be %NULL.
pointer to a place of a #GstObject to replace
a new #GstObject
GhostPads are useful when organizing pipelines with #GstBin like elements. The idea here is to create hierarchical element graphs. The bin element contains a sub-graph. Now one would like to treat the bin-element like any other #GstElement. This is where GhostPads come into play. A GhostPad acts as a proxy for another pad. Thus the bin can have sink and source ghost-pads that are associated with sink and source pads of the child elements.
If the target pad is known at creation time, gst_ghost_pad_new() is the function to use to get a ghost-pad. Otherwise one can use gst_ghost_pad_new_no_target() to create the ghost-pad and use gst_ghost_pad_set_target() to establish the association later on.
Note that GhostPads add overhead to the data processing of a pipeline.