Revert again, this time without post-commit reindent hooks to put back the indentation :-)

Original commit message from CVS:
Revert again, this time without post-commit reindent hooks
to put back the indentation :-)
This commit is contained in:
Johan Dahlin 2004-03-15 14:43:35 +00:00
parent 2143a02a13
commit ecd88e381d
134 changed files with 4206 additions and 3970 deletions

View file

@ -174,6 +174,12 @@ pipeline</ulink> and Microsoft's DirectShow for some background.
@use_threads:
<!-- ##### VARIABLE g_log_domain_gstreamer ##### -->
<para>
The variable that holds the GStreamer log domain
</para>
<!-- ##### MACRO GST_VERSION_MAJOR ##### -->
<para>
The major version of GStreamer at compile time

View file

@ -72,34 +72,6 @@ The GstBin object
</para>
<!-- ##### SIGNAL GstBin::element-added ##### -->
<para>
</para>
@gstbin: the object which received the signal.
@arg1: the element that was added to the bin
<!-- ##### SIGNAL GstBin::element-removed ##### -->
<para>
</para>
@gstbin: the object which received the signal.
@arg1: the element that was removed from the bin
<!-- ##### SIGNAL GstBin::iterate ##### -->
<para>
This signal is emitted when a bin iterates, either automatically or
due to a #gst_bin_iterate() call. The return value is used to
determine if the object method handler processed any data.
In most normal cases, a user-provided signal handler should return
FALSE.
</para>
@gstbin: the object which received the signal.
@Returns: TRUE if the state of the bin was advanced.
<!-- ##### USER_FUNCTION GstBinPrePostIterateFunction ##### -->
<para>
The signature of the callback for the post and pre iterate function as set with
@ -252,3 +224,31 @@ gst_bin_set_pre_iterate_function() and gst_bin_set_post_iterate_function().
@clock:
<!-- ##### SIGNAL GstBin::element-added ##### -->
<para>
</para>
@gstbin: the object which received the signal.
@arg1: the element that was added to the bin
<!-- ##### SIGNAL GstBin::element-removed ##### -->
<para>
</para>
@gstbin: the object which received the signal.
@arg1: the element that was removed from the bin
<!-- ##### SIGNAL GstBin::iterate ##### -->
<para>
This signal is emitted when a bin iterates, either automatically or
due to a #gst_bin_iterate() call. The return value is used to
determine if the object method handler processed any data.
In most normal cases, a user-provided signal handler should return
FALSE.
</para>
@gstbin: the object which received the signal.
@Returns: TRUE if the state of the bin was advanced.

View file

@ -235,21 +235,6 @@ Get the clock flags
</para>
<!-- ##### ARG GstClock:event-diff ##### -->
<para>
</para>
<!-- ##### ARG GstClock:max-diff ##### -->
<para>
Maximum allowed diff for clock sync requests against the real time.
</para>
<!-- ##### ARG GstClock:stats ##### -->
<para>
Boolean property to activate stat generation on the clock.
</para>
<!-- ##### FUNCTION gst_clock_set_speed ##### -->
<para>
@ -417,3 +402,18 @@ Boolean property to activate stat generation on the clock.
@id:
<!-- ##### ARG GstClock:event-diff ##### -->
<para>
</para>
<!-- ##### ARG GstClock:max-diff ##### -->
<para>
Maximum allowed diff for clock sync requests against the real time.
</para>
<!-- ##### ARG GstClock:stats ##### -->
<para>
Boolean property to activate stat generation on the clock.
</para>

View file

@ -20,6 +20,16 @@ You'll get a bitmask of flags with gst_cpu_get_flags().
</para>
<!-- ##### ENUM GstCPUFlags ##### -->
<para>
Flags that represent cpu capabilities
</para>
@GST_CPU_FLAG_MMX: The cpu is mmx enabled
@GST_CPU_FLAG_SSE: The cpu is sse enabled
@GST_CPU_FLAG_MMXEXT: The cpu has extended mmx instructions
@GST_CPU_FLAG_3DNOW: The cpu is 3DNOW enabled
<!-- ##### FUNCTION gst_cpu_get_flags ##### -->
<para>
Request a set of bits specifiying the features of the CPU.

View file

@ -71,59 +71,6 @@ The element object
</para>
<!-- ##### SIGNAL GstElement::eos ##### -->
<para>
Signal emited when the element goes to PAUSED due to an end-of-stream
condition.
</para>
@gstelement: the object which received the signal.
<!-- ##### SIGNAL GstElement::error ##### -->
<para>
This signal is emitted when an element has encountered an error that caused
it to fail performing its function.
</para>
@gstelement: the object which received the signal.
@arg1: the original #GstElement that generated the error.
@arg2: a #GError containing the translated error message.
@arg3: a debug string providing additional untranslated debug information, or NULL.
<!-- ##### SIGNAL GstElement::found-tag ##### -->
<para>
</para>
@gstelement: the object which received the signal.
@arg1:
@arg2:
<!-- ##### SIGNAL GstElement::new-pad ##### -->
<para>
Is triggered whenever a new pad is added to an element.
</para>
@gstelement: the object which received the signal.
@arg1: the new pad that was added
<!-- ##### SIGNAL GstElement::pad-removed ##### -->
<para>
Is triggered whenever a pad has been removed from the element.
</para>
@gstelement: the object which received the signal.
@arg1: The pad that was removed.
<!-- ##### SIGNAL GstElement::state-change ##### -->
<para>
Is triggered whenever the state of an element changes.
</para>
@gstelement: the object which received the signal.
@arg1: the new state of the object
@arg2:
<!-- ##### MACRO gst_element_get_name ##### -->
<para>
Gets the name of the element.
@ -1019,3 +966,56 @@ Helper macro to create query type functions
@...: list of query types.
<!-- ##### SIGNAL GstElement::eos ##### -->
<para>
Signal emited when the element goes to PAUSED due to an end-of-stream
condition.
</para>
@gstelement: the object which received the signal.
<!-- ##### SIGNAL GstElement::error ##### -->
<para>
This signal is emitted when an element has encountered an error that caused
it to fail performing its function.
</para>
@gstelement: the object which received the signal.
@arg1: the original #GstElement that generated the error.
@arg2: a #GError containing the translated error message.
@arg3: a debug string providing additional untranslated debug information, or NULL.
<!-- ##### SIGNAL GstElement::found-tag ##### -->
<para>
</para>
@gstelement: the object which received the signal.
@arg1:
@arg2:
<!-- ##### SIGNAL GstElement::new-pad ##### -->
<para>
Is triggered whenever a new pad is added to an element.
</para>
@gstelement: the object which received the signal.
@arg1: the new pad that was added
<!-- ##### SIGNAL GstElement::pad-removed ##### -->
<para>
Is triggered whenever a pad has been removed from the element.
</para>
@gstelement: the object which received the signal.
@arg1: The pad that was removed.
<!-- ##### SIGNAL GstElement::state-change ##### -->
<para>
Is triggered whenever the state of an element changes.
</para>
@gstelement: the object which received the signal.
@arg1: the new state of the object
@arg2:

View file

@ -15,6 +15,18 @@ formats can be used to perform seeking or conversions/query operations.
#GstPad, #GstElement
</para>
<!-- ##### ENUM GstFormat ##### -->
<para>
Standard predefined formats
</para>
@GST_FORMAT_UNDEFINED: undefined format
@GST_FORMAT_DEFAULT: the default format of the pad/element
@GST_FORMAT_BYTES: bytes
@GST_FORMAT_TIME: time in nanoseconds
@GST_FORMAT_BUFFERS: buffers
@GST_FORMAT_PERCENT: percentage of stream
<!-- ##### MACRO GST_FORMAT_PERCENT_MAX ##### -->
<para>
The PERCENT format is between 0 and this value

View file

@ -209,19 +209,6 @@ The GstIndex object
</para>
<!-- ##### SIGNAL GstIndex::entry-added ##### -->
<para>
Is emited when a new entry is added to the index.
</para>
@gstindex: the object which received the signal.
@arg1: The entry added to the index.
<!-- ##### ARG GstIndex:resolver ##### -->
<para>
</para>
<!-- ##### FUNCTION gst_index_new ##### -->
<para>
@ -414,3 +401,16 @@ Is emited when a new entry is added to the index.
@id:
<!-- ##### SIGNAL GstIndex::entry-added ##### -->
<para>
Is emited when a new entry is added to the index.
</para>
@gstindex: the object which received the signal.
@arg1: The entry added to the index.
<!-- ##### ARG GstIndex:resolver ##### -->
<para>
</para>

View file

@ -21,6 +21,12 @@ The GstMemChunk is used to allocate critical resources for #GstBuffer and
#GstAtomic, #GstBuffer, #GstEvent, #GstData
</para>
<!-- ##### STRUCT GstMemChunk ##### -->
<para>
The memchunk structure
</para>
<!-- ##### FUNCTION gst_mem_chunk_new ##### -->
<para>

View file

@ -40,47 +40,6 @@ The GstObject
</para>
<!-- ##### SIGNAL GstObject::deep-notify ##### -->
<para>
The deep notify signal is used to be notified of property changes.
it is typically attached to the toplevel bin to receive notifications
from all the elements contained in that bin.
</para>
@gstobject: the object which received the signal.
@arg1: the object that originated the signal
@arg2: the property that changed
<!-- ##### SIGNAL GstObject::object-saved ##### -->
<para>
Is trigered whenever a new object is saved to XML. You can connect to
this signal to insert custom XML tags into the core XML.
</para>
@gstobject: the object which received the signal.
@arg1: the xmlNodePtr of the parent node
<!-- ##### SIGNAL GstObject::parent-set ##### -->
<para>
Is emitted when the parent of an object is set.
</para>
@gstobject: the object which received the signal.
@arg1: the new parent
<!-- ##### SIGNAL GstObject::parent-unset ##### -->
<para>
Is emitted when the parent of an object is unset.
</para>
@gstobject: the object which received the signal.
@arg1: the old parent
<!-- ##### ARG GstObject:name ##### -->
<para>
The name of the object
</para>
<!-- ##### MACRO GST_FLAGS ##### -->
<para>
This macro returns the entire set of flags for the object.
@ -331,3 +290,44 @@ Check if the object has been destroyed.
@Returns:
<!-- ##### SIGNAL GstObject::deep-notify ##### -->
<para>
The deep notify signal is used to be notified of property changes.
it is typically attached to the toplevel bin to receive notifications
from all the elements contained in that bin.
</para>
@gstobject: the object which received the signal.
@arg1: the object that originated the signal
@arg2: the property that changed
<!-- ##### SIGNAL GstObject::object-saved ##### -->
<para>
Is trigered whenever a new object is saved to XML. You can connect to
this signal to insert custom XML tags into the core XML.
</para>
@gstobject: the object which received the signal.
@arg1: the xmlNodePtr of the parent node
<!-- ##### SIGNAL GstObject::parent-set ##### -->
<para>
Is emitted when the parent of an object is set.
</para>
@gstobject: the object which received the signal.
@arg1: the new parent
<!-- ##### SIGNAL GstObject::parent-unset ##### -->
<para>
Is emitted when the parent of an object is unset.
</para>
@gstobject: the object which received the signal.
@arg1: the old parent
<!-- ##### ARG GstObject:name ##### -->
<para>
The name of the object
</para>

View file

@ -1193,11 +1193,6 @@ The Ghostpad object
</para>
<!-- ##### ARG GstGhostPad:real-pad ##### -->
<para>
</para>
<!-- ##### FUNCTION gst_ghost_pad_new ##### -->
<para>

View file

@ -86,15 +86,6 @@ The padtemplate object.
</para>
<!-- ##### SIGNAL GstPadTemplate::pad-created ##### -->
<para>
This signal is fired when an element creates a pad from this
template.
</para>
@gstpadtemplate: the object which received the signal.
@arg1: The pad that was created.
<!-- ##### ENUM GstPadTemplateFlags ##### -->
<para>
Flags for the padtemplate
@ -176,3 +167,12 @@ Check if the properties of the padtemplate are fixed
@Returns:
<!-- ##### SIGNAL GstPadTemplate::pad-created ##### -->
<para>
This signal is fired when an element creates a pad from this
template.
</para>
@gstpadtemplate: the object which received the signal.
@arg1: The pad that was created.

View file

@ -41,6 +41,14 @@ The error quark
<!-- ##### FUNCTION gst_plugin_error_quark ##### -->
<para>
Get the error quark
</para>
@Returns: The error quark used in GError messages
<!-- ##### ENUM GstPluginError ##### -->
<para>
The plugin loading errors

View file

@ -15,6 +15,20 @@ Query types can be used to perform queries on pads and elements.
#GstPad, #GstElement
</para>
<!-- ##### ENUM GstQueryType ##### -->
<para>
Standard predefined Query types
</para>
@GST_QUERY_NONE: invalid query type
@GST_QUERY_TOTAL: total length of stream
@GST_QUERY_POSITION: current position in stream
@GST_QUERY_LATENCY: latency of stream
@GST_QUERY_JITTER: current jitter of stream
@GST_QUERY_START: start of configured segment
@GST_QUERY_SEGMENT_END: end of configured segment
@GST_QUERY_RATE: current rate of the stream
<!-- ##### MACRO GST_QUERY_TYPE_RATE_DEN ##### -->
<para>
Rates are relative to this value
@ -75,10 +89,10 @@ Convenience function to define a function that returns an array of query types.
</para>
@Param1:
@type:
@Returns:
<!-- # Unused Parameters # -->
@type:
@Param1:
<!-- ##### FUNCTION gst_query_type_get_definitions ##### -->

View file

@ -4556,16 +4556,6 @@ can perform necessary cleanup.
@pool: The pool that is being destroyed
@user_data: user data as set on th bufferpool
<!-- ##### ENUM GstCPUFlags ##### -->
<para>
Flags that represent cpu capabilities
</para>
@GST_CPU_FLAG_MMX: The cpu is mmx enabled
@GST_CPU_FLAG_SSE: The cpu is sse enabled
@GST_CPU_FLAG_MMXEXT: The cpu has extended mmx instructions
@GST_CPU_FLAG_3DNOW: The cpu is 3DNOW enabled
<!-- ##### STRUCT GstCacheAssociation ##### -->
<para>
@ -5168,17 +5158,11 @@ Indicates the mmapped area should be touched to bring it into memory.
</para>
<!-- ##### ENUM GstFormat ##### -->
<!-- ##### ARG GstGhostPad:real-pad ##### -->
<para>
Standard predefined formats
</para>
@GST_FORMAT_UNDEFINED: undefined format
@GST_FORMAT_DEFAULT: the default format of the pad/element
@GST_FORMAT_BYTES: bytes
@GST_FORMAT_TIME: time in nanoseconds
@GST_FORMAT_BUFFERS: buffers
@GST_FORMAT_PERCENT: percentage of stream
<!-- ##### STRUCT GstHttpSrc ##### -->
<para>
@ -5297,12 +5281,6 @@ Specify the location of the file. The location must be a fully qualified URL.
</para>
<!-- ##### STRUCT GstMemChunk ##### -->
<para>
The memchunk structure
</para>
<!-- ##### STRUCT GstMemChunkElement ##### -->
<para>
An entry in the memchunk area
@ -5533,20 +5511,6 @@ Sets the command to be executed.
</para>
<!-- ##### ENUM GstQueryType ##### -->
<para>
Standard predefined Query types
</para>
@GST_QUERY_NONE: invalid query type
@GST_QUERY_TOTAL: total length of stream
@GST_QUERY_POSITION: current position in stream
@GST_QUERY_LATENCY: latency of stream
@GST_QUERY_JITTER: current jitter of stream
@GST_QUERY_START: start of configured segment
@GST_QUERY_SEGMENT_END: end of configured segment
@GST_QUERY_RATE: current rate of the stream
<!-- ##### STRUCT GstQueue ##### -->
<para>
@ -5613,17 +5577,6 @@ the region types for #gst_pad_pullregion.
@global_reg:
@local_reg:
<!-- ##### ENUM GstRegistryReturn ##### -->
<para>
The return value of registry operations
</para>
@GST_REGISTRY_OK: The registry reported no error.
@GST_REGISTRY_LOAD_ERROR: There was a load error
@GST_REGISTRY_SAVE_ERROR: There was an error saving the registry
@GST_REGISTRY_PLUGIN_LOAD_ERROR: There was an error loading a plugin
@GST_REGISTRY_PLUGIN_SIGNATURE_ERROR: There was an error saving a plugin
<!-- ##### STRUCT GstRegistryWrite ##### -->
<para>
@ -5851,20 +5804,6 @@ Flags for the GstSrc element
</para>
<!-- ##### ENUM GstTagMergeMode ##### -->
<para>
</para>
@GST_TAG_MERGE_UNDEFINED:
@GST_TAG_MERGE_REPLACE_ALL:
@GST_TAG_MERGE_REPLACE:
@GST_TAG_MERGE_APPEND:
@GST_TAG_MERGE_PREPEND:
@GST_TAG_MERGE_KEEP:
@GST_TAG_MERGE_KEEP_ALL:
@GST_TAG_MERGE_COUNT:
<!-- ##### STRUCT GstTee ##### -->
<para>
@ -5988,15 +5927,6 @@ Query the element for the current mime type
</para>
<!-- ##### SIGNAL GstXML::object-loaded ##### -->
<para>
</para>
@gstxml: the object which received the signal.
@arg1:
@arg2:
<!-- ##### USER_FUNCTION GstXMLRegistryAddPathList ##### -->
<para>
@ -6752,12 +6682,6 @@ must be defined to activate the tracing functionality.
@llink:
@Returns:
<!-- ##### VARIABLE g_log_domain_gstreamer ##### -->
<para>
The variable that holds the GStreamer log domain
</para>
<!-- ##### MACRO g_object_class_find_property ##### -->
<para>
@ -9643,13 +9567,6 @@ Destroys the pipeline.
@Returns:
<!-- ##### FUNCTION gst_plugin_error_quark ##### -->
<para>
Get the error quark
</para>
@Returns: The error quark used in GError messages
<!-- ##### FUNCTION gst_plugin_feature_get_type ##### -->
<para>

View file

@ -14,6 +14,17 @@ The registry holds the available plugins in the system.
#GstPlugin, #GstPluginFeature
</para>
<!-- ##### ENUM GstRegistryReturn ##### -->
<para>
The return value of registry operations
</para>
@GST_REGISTRY_OK: The registry reported no error.
@GST_REGISTRY_LOAD_ERROR: There was a load error
@GST_REGISTRY_SAVE_ERROR: There was an error saving the registry
@GST_REGISTRY_PLUGIN_LOAD_ERROR: There was an error loading a plugin
@GST_REGISTRY_PLUGIN_SIGNATURE_ERROR: There was an error saving a plugin
<!-- ##### ENUM GstRegistryFlags ##### -->
<para>
Flags for the registry

View file

@ -14,6 +14,20 @@ GstTag
</para>
<!-- ##### ENUM GstTagMergeMode ##### -->
<para>
</para>
@GST_TAG_MERGE_UNDEFINED:
@GST_TAG_MERGE_REPLACE_ALL:
@GST_TAG_MERGE_REPLACE:
@GST_TAG_MERGE_APPEND:
@GST_TAG_MERGE_PREPEND:
@GST_TAG_MERGE_KEEP:
@GST_TAG_MERGE_KEEP_ALL:
@GST_TAG_MERGE_COUNT:
<!-- ##### ENUM GstTagFlag ##### -->
<para>

View file

@ -34,6 +34,15 @@ The GstThread object
</para>
<!-- ##### FUNCTION gst_thread_new ##### -->
<para>
</para>
@name:
@Returns:
<!-- ##### SIGNAL GstThread::shutdown ##### -->
<para>
@ -46,12 +55,3 @@ The GstThread object
The thread priority
</para>
<!-- ##### FUNCTION gst_thread_new ##### -->
<para>
</para>
@name:
@Returns:

View file

@ -105,3 +105,21 @@ All GstElements can be serialized to an XML presentation and subsequently loaded
@Returns:
<!-- ##### SIGNAL GstXML::object-loaded ##### -->
<para>
</para>
@gstxml: the object which received the signal.
@arg1:
@arg2:
<!-- ##### SIGNAL GstXML::object-loaded ##### -->
<para>
</para>
@:
@:
@:

View file

@ -11,5 +11,4 @@ typedef struct
char *location;
int channel_id;
}
output_channel_t;
} output_channel_t;

View file

@ -9,5 +9,4 @@ typedef struct
char *location;
int channel_id;
}
input_channel_t;
} input_channel_t;

View file

@ -24,6 +24,7 @@
#include <gst/gst.h>
G_BEGIN_DECLS
/* This is the definition of the element's object structure. */
typedef struct _GstExample GstExample;
@ -32,12 +33,11 @@ typedef struct _GstExample GstExample;
* the beginning of the object. This allows the element to be cast to
* an Element or even an Object.
*/
struct _GstExample
{
struct _GstExample {
GstElement element;
/* We need to keep track of our pads, so we do so here. */
GstPad *sinkpad, *srcpad;
GstPad *sinkpad,*srcpad;
/* We'll use this to decide whether to do anything to the data we get. */
gboolean active;
@ -49,12 +49,11 @@ struct _GstExample
* structure. */
typedef struct _GstExampleClass GstExampleClass;
struct _GstExampleClass
{
struct _GstExampleClass {
GstElementClass parent_class;
/* signals */
void (*asdf) (GstElement * element, GstExample * example);
void (*asdf) (GstElement *element, GstExample *example);
};
/* Five standard preprocessing macros are used in the Gtk+ object system.
@ -81,7 +80,8 @@ struct _GstExampleClass
/* This is the only prototype needed, because it is used in the above
* GST_TYPE_EXAMPLE macro.
*/
GType gst_example_get_type (void);
GType gst_example_get_type(void);
G_END_DECLS
#endif /* __GST_EXAMPLE_H__ */

View file

@ -31,8 +31,7 @@
/* struct for a node, in the search tree */
typedef struct _GstAutoplugNode GstAutoplugNode;
struct _GstAutoplugNode
{
struct _GstAutoplugNode {
GstAutoplugNode *prev; /* previous node */
GstElementFactory *fac; /* factory of element to connect to */
GstPadTemplate *templ; /* template which can connect */
@ -41,16 +40,11 @@ struct _GstAutoplugNode
};
/* helper functions */
gboolean gst_autoplug_caps_intersect (const GstCaps * src,
const GstCaps * sink);
GstPadTemplate *gst_autoplug_can_connect_src (GstElementFactory * fac,
const GstCaps * src);
GstPadTemplate *gst_autoplug_can_connect_sink (GstElementFactory * fac,
const GstCaps * sink);
GstPadTemplate *gst_autoplug_can_match (GstElementFactory * src,
GstElementFactory * dest);
gboolean gst_autoplug_factory_has_direction (GstElementFactory * fac,
GstPadDirection dir);
gboolean gst_autoplug_caps_intersect (const GstCaps *src, const GstCaps *sink);
GstPadTemplate * gst_autoplug_can_connect_src (GstElementFactory *fac, const GstCaps *src);
GstPadTemplate * gst_autoplug_can_connect_sink (GstElementFactory *fac, const GstCaps *sink);
GstPadTemplate * gst_autoplug_can_match (GstElementFactory *src, GstElementFactory *dest);
gboolean gst_autoplug_factory_has_direction (GstElementFactory *fac, GstPadDirection dir);
#define gst_autoplug_factory_has_sink(fac) gst_autoplug_factory_has_direction((fac), GST_PAD_SINK)
#define gst_autoplug_factory_has_src(fac) gst_autoplug_factory_has_direction((fac), GST_PAD_SRC)
@ -58,15 +52,13 @@ gboolean gst_autoplug_factory_has_direction (GstElementFactory * fac,
#define gst_autoplug_get_cost(fac) 1
/* factory selections */
GList *gst_autoplug_factories_sinks (GList * factories);
GList *gst_autoplug_factories_srcs (GList * factories);
GList *gst_autoplug_factories_filters (GList * factories);
GList *gst_autoplug_factories_filters_with_sink_caps (GList * factories);
GList *gst_autoplug_factories_at_most_templates (GList * factories,
GstPadDirection dir, guint maxtemplates);
GList * gst_autoplug_factories_sinks (GList *factories);
GList * gst_autoplug_factories_srcs (GList *factories);
GList * gst_autoplug_factories_filters (GList *factories);
GList * gst_autoplug_factories_filters_with_sink_caps(GList *factories);
GList * gst_autoplug_factories_at_most_templates(GList *factories, GstPadDirection dir, guint maxtemplates);
/* shortest path algorithm */
GList *gst_autoplug_sp (const GstCaps * src_caps, const GstCaps * sink_caps,
GList * factories);
GList * gst_autoplug_sp (const GstCaps *src_caps, const GstCaps *sink_caps, GList *factories);
#endif /* __GST_SEARCHFUNCS_H__ */

View file

@ -26,9 +26,10 @@
#include <gst/gst.h>
#include "gstspideridentity.h"
G_BEGIN_DECLS extern GstElementDetails gst_spider_details;
G_BEGIN_DECLS
GST_DEBUG_CATEGORY_EXTERN (gst_spider_debug);
extern GstElementDetails gst_spider_details;
GST_DEBUG_CATEGORY_EXTERN(gst_spider_debug);
/*
* Theory of operation:
@ -45,16 +46,14 @@ GST_DEBUG_CATEGORY_EXTERN (gst_spider_debug);
* are refcounted once for every path.
* A GstSpider keeps a list of all GstSpiderConnections in it.
*/
typedef struct
{
typedef struct {
GstSpiderIdentity *src;
/* dunno if the path should stay here or if its too much load.
* it's at least easier then always searching it */
GList *path;
GstElement *current;
gulong signal_id;
}
GstSpiderConnection;
} GstSpiderConnection;
#define GST_TYPE_SPIDER \
(gst_spider_get_type())
@ -70,18 +69,16 @@ GstSpiderConnection;
typedef struct _GstSpider GstSpider;
typedef struct _GstSpiderClass GstSpiderClass;
struct _GstSpider
{
struct _GstSpider {
GstBin parent;
GstSpiderIdentity *sink_ident;
GList *factories; /* factories to use for plugging */
GList * factories; /* factories to use for plugging */
GList *links; /* GStSpiderConnection list of all links */
GList * links; /* GStSpiderConnection list of all links */
};
struct _GstSpiderClass
{
struct _GstSpiderClass {
GstBinClass parent_class;
};
@ -89,8 +86,9 @@ struct _GstSpiderClass
GType gst_spider_get_type (void);
/* private link functions to be called by GstSpiderIdentity */
void gst_spider_identity_plug (GstSpiderIdentity * ident);
void gst_spider_identity_unplug (GstSpiderIdentity * ident);
void gst_spider_identity_plug (GstSpiderIdentity *ident);
void gst_spider_identity_unplug (GstSpiderIdentity *ident);
G_END_DECLS
#endif /* __GST_SPIDER_H__ */

View file

@ -27,6 +27,7 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_SPIDER_IDENTITY \
(gst_spider_identity_get_type())
#define GST_SPIDER_IDENTITY(obj) \
@ -37,11 +38,11 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SPIDER_IDENTITY))
#define GST_IS_SPIDER_IDENTITY_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SPIDER_IDENTITY))
typedef struct _GstSpiderIdentity GstSpiderIdentity;
typedef struct _GstSpiderIdentityClass GstSpiderIdentityClass;
struct _GstSpiderIdentity
{
struct _GstSpiderIdentity {
GstElement element;
/* sink and source */
@ -55,18 +56,17 @@ struct _GstSpiderIdentity
GstCaps *caps;
};
struct _GstSpiderIdentityClass
{
struct _GstSpiderIdentityClass {
GstElementClass parent_class;
};
GType gst_spider_identity_get_type (void);
GstSpiderIdentity *gst_spider_identity_new_sink (gchar * name);
GstSpiderIdentity *gst_spider_identity_new_src (gchar * name);
GstPad *gst_spider_identity_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * name);
GstSpiderIdentity* gst_spider_identity_new_sink (gchar *name);
GstSpiderIdentity* gst_spider_identity_new_src (gchar *name);
GstPad* gst_spider_identity_request_new_pad (GstElement *element, GstPadTemplate *templ, const gchar *name);
G_END_DECLS
#endif /* __GST_SPIDER_IDENTITY_H__ */

View file

@ -29,13 +29,12 @@
typedef struct _cothread_state cothread_state;
typedef struct _cothread_context cothread_context;
typedef int (*cothread_func) (int argc, char **argv);
typedef int (*cothread_func) (int argc,char **argv);
#define COTHREAD_STARTED 0x01
#define COTHREAD_DESTROYED 0x02
struct _cothread_state
{
struct _cothread_state {
cothread_context *ctx;
int cothreadnum;
gpointer priv;
@ -54,28 +53,29 @@ struct _cothread_state
};
cothread_context *cothread_context_init (void);
void cothread_context_free (cothread_context * ctx);
void cothread_context_set_data (cothread_state * cothread,
gchar * key, gpointer data);
gpointer cothread_context_get_data (cothread_state * cothread, gchar * key);
cothread_context* cothread_context_init (void);
void cothread_context_free (cothread_context *ctx);
void cothread_context_set_data (cothread_state *cothread,
gchar *key, gpointer data);
gpointer cothread_context_get_data (cothread_state *cothread, gchar *key);
cothread_state *cothread_create (cothread_context * ctx);
void cothread_free (cothread_state * cothread);
void cothread_setfunc (cothread_state * cothread, cothread_func func,
cothread_state* cothread_create (cothread_context *ctx);
void cothread_free (cothread_state *cothread);
void cothread_setfunc (cothread_state *cothread, cothread_func func,
int argc, char **argv);
void cothread_stop (cothread_state * cothread);
void cothread_stop (cothread_state *cothread);
void cothread_switch (cothread_state * cothread);
void cothread_set_private (cothread_state * cothread, gpointer data);
gpointer cothread_get_private (cothread_state * cothread);
void cothread_switch (cothread_state *cothread);
void cothread_set_private (cothread_state *cothread,
gpointer data);
gpointer cothread_get_private (cothread_state *cothread);
void cothread_lock (cothread_state * cothread);
gboolean cothread_trylock (cothread_state * cothread);
void cothread_unlock (cothread_state * cothread);
void cothread_lock (cothread_state *cothread);
gboolean cothread_trylock (cothread_state *cothread);
void cothread_unlock (cothread_state *cothread);
cothread_state *cothread_main (cothread_context * ctx);
cothread_state *cothread_current_main (void);
cothread_state *cothread_current (void);
cothread_state* cothread_main (cothread_context *ctx);
cothread_state* cothread_current_main (void);
cothread_state* cothread_current (void);
#endif /* __COTHREAD_H__ */

View file

@ -26,13 +26,14 @@
#include <gst/gst.h>
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
AGGREGATOR_LOOP = 1,
AGGREGATOR_LOOP_SELECT,
AGGREGATOR_CHAIN
}
GstAggregatorSchedType;
} GstAggregatorSchedType;
#define GST_TYPE_AGGREGATOR \
(gst_aggregator_get_type())
@ -48,8 +49,7 @@ GstAggregatorSchedType;
typedef struct _GstAggregator GstAggregator;
typedef struct _GstAggregatorClass GstAggregatorClass;
struct _GstAggregator
{
struct _GstAggregator {
GstElement element;
GstPad *srcpad;
@ -63,14 +63,14 @@ struct _GstAggregator
gchar *last_message;
};
struct _GstAggregatorClass
{
struct _GstAggregatorClass {
GstElementClass parent_class;
};
GType gst_aggregator_get_type (void);
gboolean gst_aggregator_factory_init (GstElementFactory * factory);
gboolean gst_aggregator_factory_init (GstElementFactory *factory);
G_END_DECLS
#endif /* __GST_AGGREGATOR_H__ */

View file

@ -28,42 +28,46 @@
#include <gst/gstmarshal.h>
G_BEGIN_DECLS
#define GST_TYPE_BUFFER_STORE (gst_buffer_store_get_type ())
#define GST_BUFFER_STORE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_BUFFER_STORE, GstBufferStore))
#define GST_IS_BUFFER_STORE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_BUFFER_STORE))
#define GST_BUFFER_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_BUFFER_STORE, GstBufferStoreClass))
#define GST_IS_BUFFER_STORE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_BUFFER_STORE))
#define GST_BUFFER_STORE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_BUFFER_STORE, GstBufferStoreClass))
typedef struct _GstBufferStore GstBufferStore;
typedef struct _GstBufferStoreClass GstBufferStoreClass;
struct _GstBufferStore
{
struct _GstBufferStore {
GObject object;
GList *buffers;
GList * buffers;
};
struct _GstBufferStoreClass
{
struct _GstBufferStoreClass {
GObjectClass parent_class;
/* signals */
void (*cleared) (GstBufferStore * store);
gboolean (*buffer_added) (GstBufferStore * store, GstBuffer * buffer);
void (* cleared) (GstBufferStore * store);
gboolean (* buffer_added) (GstBufferStore * store,
GstBuffer * buffer);
};
GType gst_buffer_store_get_type (void);
GstBufferStore *gst_buffer_store_new (void);
GstBufferStore * gst_buffer_store_new (void);
void gst_buffer_store_clear (GstBufferStore * store);
gboolean gst_buffer_store_add_buffer (GstBufferStore * store,
GstBuffer * buffer);
GstBuffer *gst_buffer_store_get_buffer (GstBufferStore * store,
guint64 offset, guint size);
guint gst_buffer_store_get_size (GstBufferStore * store, guint64 offset);
GstBuffer * gst_buffer_store_get_buffer (GstBufferStore * store,
guint64 offset,
guint size);
guint gst_buffer_store_get_size (GstBufferStore * store,
guint64 offset);
G_END_DECLS
#endif /* __GST_BUFFER_STORE_H__ */

View file

@ -27,6 +27,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_FAKESINK \
(gst_fakesink_get_type())
#define GST_FAKESINK(obj) \
@ -37,8 +39,8 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FAKESINK))
#define GST_IS_FAKESINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FAKESINK))
typedef enum
{
typedef enum {
FAKESINK_STATE_ERROR_NONE = 0,
FAKESINK_STATE_ERROR_NULL_READY,
FAKESINK_STATE_ERROR_READY_PAUSED,
@ -46,14 +48,12 @@ G_BEGIN_DECLS
FAKESINK_STATE_ERROR_PLAYING_PAUSED,
FAKESINK_STATE_ERROR_PAUSED_READY,
FAKESINK_STATE_ERROR_READY_NULL,
}
GstFakeSinkStateError;
} GstFakeSinkStateError;
typedef struct _GstFakeSink GstFakeSink;
typedef struct _GstFakeSinkClass GstFakeSinkClass;
struct _GstFakeSink
{
struct _GstFakeSink {
GstElement element;
gboolean silent;
@ -66,17 +66,17 @@ struct _GstFakeSink
gchar *last_message;
};
struct _GstFakeSinkClass
{
struct _GstFakeSinkClass {
GstElementClass parent_class;
/* signals */
void (*handoff) (GstElement * element, GstBuffer * buf, GstPad * pad);
void (*handoff) (GstElement *element, GstBuffer *buf, GstPad *pad);
};
GType gst_fakesink_get_type (void);
GType gst_fakesink_get_type(void);
gboolean gst_fakesink_factory_init (GstElementFactory * factory);
gboolean gst_fakesink_factory_init (GstElementFactory *factory);
G_END_DECLS
#endif /* __GST_FAKESINK_H__ */

View file

@ -26,8 +26,10 @@
#include <gst/gst.h>
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
FAKESRC_FIRST_LAST_LOOP = 1,
FAKESRC_LAST_FIRST_LOOP,
FAKESRC_PING_PONG,
@ -36,33 +38,26 @@ G_BEGIN_DECLS typedef enum
FAKESRC_PATTERN_LOOP,
FAKESRC_PING_PONG_PATTERN,
FAKESRC_GET_ALWAYS_SUCEEDS
}
GstFakeSrcOutputType;
} GstFakeSrcOutputType;
typedef enum
{
typedef enum {
FAKESRC_DATA_ALLOCATE = 1,
FAKESRC_DATA_SUBBUFFER,
}
GstFakeSrcDataType;
} GstFakeSrcDataType;
typedef enum
{
typedef enum {
FAKESRC_SIZETYPE_NULL = 1,
FAKESRC_SIZETYPE_FIXED,
FAKESRC_SIZETYPE_RANDOM
}
GstFakeSrcSizeType;
} GstFakeSrcSizeType;
typedef enum
{
typedef enum {
FAKESRC_FILLTYPE_NOTHING = 1,
FAKESRC_FILLTYPE_NULL,
FAKESRC_FILLTYPE_RANDOM,
FAKESRC_FILLTYPE_PATTERN,
FAKESRC_FILLTYPE_PATTERN_CONT
}
GstFakeSrcFillType;
} GstFakeSrcFillType;
#define GST_TYPE_FAKESRC \
(gst_fakesrc_get_type())
@ -78,8 +73,7 @@ GstFakeSrcFillType;
typedef struct _GstFakeSrc GstFakeSrc;
typedef struct _GstFakeSrcClass GstFakeSrcClass;
struct _GstFakeSrc
{
struct _GstFakeSrc {
GstElement element;
gboolean loop_based;
@ -112,17 +106,17 @@ struct _GstFakeSrc
gchar *last_message;
};
struct _GstFakeSrcClass
{
struct _GstFakeSrcClass {
GstElementClass parent_class;
/* signals */
void (*handoff) (GstElement * element, GstBuffer * buf, GstPad * pad);
void (*handoff) (GstElement *element, GstBuffer *buf, GstPad *pad);
};
GType gst_fakesrc_get_type (void);
GType gst_fakesrc_get_type(void);
gboolean gst_fakesrc_factory_init (GstElementFactory * factory);
gboolean gst_fakesrc_factory_init (GstElementFactory *factory);
G_END_DECLS
#endif /* __GST_FAKESRC_H__ */

View file

@ -27,6 +27,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_FDSINK \
(gst_fdsink_get_type())
#define GST_FDSINK(obj) \
@ -37,11 +39,11 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FDSINK))
#define GST_IS_FDSINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FDSINK))
typedef struct _GstFdSink GstFdSink;
typedef struct _GstFdSinkClass GstFdSinkClass;
struct _GstFdSink
{
struct _GstFdSink {
GstElement element;
GstPad *sinkpad;
@ -49,12 +51,12 @@ struct _GstFdSink
int fd;
};
struct _GstFdSinkClass
{
struct _GstFdSinkClass {
GstElementClass parent_class;
};
GType gst_fdsink_get_type (void);
GType gst_fdsink_get_type(void);
G_END_DECLS
#endif /* __GST_FDSINK_H__ */

View file

@ -27,6 +27,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_FDSRC \
(gst_fdsrc_get_type())
#define GST_FDSRC(obj) \
@ -37,11 +39,12 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FDSRC))
#define GST_IS_FDSRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FDSRC))
typedef struct _GstFdSrc GstFdSrc;
typedef struct _GstFdSrcClass GstFdSrcClass;
struct _GstFdSrc
{
struct _GstFdSrc {
GstElement element;
/* pads */
GstPad *srcpad;
@ -56,15 +59,15 @@ struct _GstFdSrc
gulong seq; /* buffer sequence number */
};
struct _GstFdSrcClass
{
struct _GstFdSrcClass {
GstElementClass parent_class;
/* signals */
void (*timeout) (GstElement * element);
void (*timeout) (GstElement *element);
};
GType gst_fdsrc_get_type (void);
GType gst_fdsrc_get_type(void);
G_END_DECLS
#endif /* __GST_FDSRC_H__ */

View file

@ -27,6 +27,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_FILESINK \
(gst_filesink_get_type())
#define GST_FILESINK(obj) \
@ -37,19 +39,17 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FILESINK))
#define GST_IS_FILESINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FILESINK))
typedef struct _GstFileSink GstFileSink;
typedef struct _GstFileSinkClass GstFileSinkClass;
typedef enum
{
typedef enum {
GST_FILESINK_OPEN = GST_ELEMENT_FLAG_LAST,
GST_FILESINK_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2
}
GstFileSinkFlags;
} GstFileSinkFlags;
struct _GstFileSink
{
struct _GstFileSink {
GstElement element;
gchar *filename;
@ -59,15 +59,15 @@ struct _GstFileSink
guint64 data_written;
};
struct _GstFileSinkClass
{
struct _GstFileSinkClass {
GstElementClass parent_class;
/* signals */
void (*handoff) (GstElement * element, GstPad * pad);
void (*handoff) (GstElement *element, GstPad *pad);
};
GType gst_filesink_get_type (void);
GType gst_filesink_get_type(void);
G_END_DECLS
#endif /* __GST_FILESINK_H__ */

View file

@ -29,6 +29,8 @@
#include <sys/types.h>
G_BEGIN_DECLS
#define GST_TYPE_FILESRC \
(gst_filesrc_get_type())
#define GST_FILESRC(obj) \
@ -39,30 +41,28 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_FILESRC))
#define GST_IS_FILESRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_FILESRC))
typedef enum
{
typedef enum {
GST_FILESRC_OPEN = GST_ELEMENT_FLAG_LAST,
GST_FILESRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2
}
GstFileSrcFlags;
} GstFileSrcFlags;
typedef struct _GstFileSrc GstFileSrc;
typedef struct _GstFileSrcClass GstFileSrcClass;
struct _GstFileSrc
{
struct _GstFileSrc {
GstElement element;
GstPad *srcpad;
guint pagesize; /* system page size */
guint pagesize; /* system page size*/
gchar *filename; /* filename */
gchar *uri; /* caching the URI */
gint fd; /* open file descriptor */
off_t filelen; /* what's the file length? */
gint fd; /* open file descriptor*/
off_t filelen; /* what's the file length?*/
off_t curoffset; /* current offset in file */
off_t curoffset; /* current offset in file*/
off_t block_size; /* bytes per read */
gboolean touch; /* whether to touch every page */
gboolean using_mmap;
@ -74,12 +74,12 @@ struct _GstFileSrc
gboolean need_flush;
};
struct _GstFileSrcClass
{
struct _GstFileSrcClass {
GstElementClass parent_class;
};
GType gst_filesrc_get_type (void);
GType gst_filesrc_get_type(void);
G_END_DECLS
#endif /* __GST_FILESRC_H__ */

View file

@ -28,6 +28,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_IDENTITY \
(gst_identity_get_type())
#define GST_IDENTITY(obj) \
@ -38,11 +40,11 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_IDENTITY))
#define GST_IS_IDENTITY_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_IDENTITY))
typedef struct _GstIdentity GstIdentity;
typedef struct _GstIdentityClass GstIdentityClass;
struct _GstIdentity
{
struct _GstIdentity {
GstElement element;
GstPad *sinkpad;
@ -59,15 +61,15 @@ struct _GstIdentity
GstCaps *srccaps;
};
struct _GstIdentityClass
{
struct _GstIdentityClass {
GstElementClass parent_class;
/* signals */
void (*handoff) (GstElement * element, GstBuffer * buf);
void (*handoff) (GstElement *element, GstBuffer *buf);
};
GType gst_identity_get_type (void);
GType gst_identity_get_type(void);
G_END_DECLS
#endif /* __GST_IDENTITY_H__ */

View file

@ -28,6 +28,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_MD5SINK \
(gst_md5sink_get_type())
#define GST_MD5SINK(obj) \
@ -38,11 +40,11 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MD5SINK))
#define GST_IS_MD5SINK_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MD5SINK))
typedef struct _GstMD5Sink GstMD5Sink;
typedef struct _GstMD5SinkClass GstMD5SinkClass;
struct _GstMD5Sink
{
struct _GstMD5Sink {
GstElement element;
/* md5 information */
@ -60,15 +62,15 @@ struct _GstMD5Sink
};
struct _GstMD5SinkClass
{
struct _GstMD5SinkClass {
GstElementClass parent_class;
};
GType gst_md5sink_get_type (void);
gboolean gst_md5sink_factory_init (GstElementFactory * factory);
gboolean gst_md5sink_factory_init (GstElementFactory *factory);
G_END_DECLS
#endif /* __GST_MD5SINK_H__ */

View file

@ -27,6 +27,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_MULTIFILESRC \
(gst_multifilesrc_get_type())
#define GST_MULTIFILESRC(obj) \
@ -37,19 +39,17 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_MULTIFILESRC))
#define GST_IS_MULTIFILESRC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_MULTIFILESRC))
typedef enum
{
typedef enum {
GST_MULTIFILESRC_OPEN = GST_ELEMENT_FLAG_LAST,
GST_MULTIFILESRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2
}
GstMultiFileSrcFlags;
} GstMultiFileSrcFlags;
typedef struct _GstMultiFileSrc GstMultiFileSrc;
typedef struct _GstMultiFileSrcClass GstMultiFileSrcClass;
struct _GstMultiFileSrc
{
struct _GstMultiFileSrc {
GstElement element;
/* pads */
GstPad *srcpad;
@ -66,14 +66,14 @@ struct _GstMultiFileSrc
gboolean new_seek;
};
struct _GstMultiFileSrcClass
{
struct _GstMultiFileSrcClass {
GstElementClass parent_class;
void (*new_file) (GstMultiFileSrc * multifilesrc, gchar * newfilename);
void (*new_file) (GstMultiFileSrc *multifilesrc, gchar *newfilename);
};
GType gst_multifilesrc_get_type (void);
GType gst_multifilesrc_get_type(void);
G_END_DECLS
#endif /* __GST_MULTIFILESRC_H__ */

View file

@ -28,6 +28,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_PIPEFILTER \
(gst_pipefilter_get_type())
#define GST_PIPEFILTER(obj) \
@ -38,19 +40,17 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PIPEFILTER))
#define GST_IS_PIPEFILTER_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPEFILTER))
typedef enum
{
typedef enum {
GST_PIPEFILTER_OPEN = GST_ELEMENT_FLAG_LAST,
GST_PIPEFILTER_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 2
}
GstPipeFilterFlags;
} GstPipeFilterFlags;
typedef struct _GstPipefilter GstPipefilter;
typedef struct _GstPipefilterClass GstPipefilterClass;
struct _GstPipefilter
{
struct _GstPipefilter {
GstElement element;
GstPad *sinkpad;
@ -70,12 +70,12 @@ struct _GstPipefilter
gulong seq; /* buffer sequence number */
};
struct _GstPipefilterClass
{
struct _GstPipefilterClass {
GstElementClass parent_class;
};
GType gst_pipefilter_get_type (void);
GType gst_pipefilter_get_type(void);
G_END_DECLS
#endif /* __GST_PIPEFILTER_H__ */

View file

@ -28,6 +28,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_SHAPER \
(gst_shaper_get_type())
#define GST_SHAPER(obj) \
@ -38,18 +40,16 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_SHAPER))
#define GST_IS_SHAPER_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_SHAPER))
typedef enum
{
typedef enum {
SHAPER_POLICY_TIMESTAMPS = 1,
SHAPER_POLICY_BUFFERSIZE
}
GstShaperPolicyType;
} GstShaperPolicyType;
typedef struct _GstShaper GstShaper;
typedef struct _GstShaperClass GstShaperClass;
struct _GstShaper
{
struct _GstShaper {
GstElement element;
GSList *connections;
@ -61,14 +61,14 @@ struct _GstShaper
gchar *last_message;
};
struct _GstShaperClass
{
struct _GstShaperClass {
GstElementClass parent_class;
};
GType gst_shaper_get_type (void);
gboolean gst_shaper_factory_init (GstElementFactory * factory);
gboolean gst_shaper_factory_init (GstElementFactory *factory);
G_END_DECLS
#endif /* __GST_SHAPER_H__ */

View file

@ -27,6 +27,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_STATISTICS \
(gst_statistics_get_type())
#define GST_STATISTICS(obj) \
@ -37,20 +39,19 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_STATISTICS))
#define GST_IS_STATISTICS_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_STATISTICS))
typedef struct _GstStatistics GstStatistics;
typedef struct _GstStatisticsClass GstStatisticsClass;
typedef struct _stats stats;
struct _stats
{
struct _stats {
gint64 buffers;
gint64 bytes;
gint64 events;
};
struct _GstStatistics
{
struct _GstStatistics {
GstElement element;
GstPad *sinkpad;
@ -69,15 +70,15 @@ struct _GstStatistics
gboolean silent;
};
struct _GstStatisticsClass
{
struct _GstStatisticsClass {
GstElementClass parent_class;
/* signals */
void (*update) (GstElement * element);
void (*update) (GstElement *element);
};
GType gst_statistics_get_type (void);
GType gst_statistics_get_type(void);
G_END_DECLS
#endif /* __GST_STATISTICS_H__ */

View file

@ -27,6 +27,8 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_TEE \
(gst_tee_get_type())
#define GST_TEE(obj) \
@ -37,11 +39,11 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_TEE))
#define GST_IS_TEE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_TEE))
typedef struct _GstTee GstTee;
typedef struct _GstTeeClass GstTeeClass;
struct _GstTee
{
struct _GstTee {
GstElement element;
GstPad *sinkpad;
@ -50,14 +52,14 @@ struct _GstTee
gchar *last_message;
};
struct _GstTeeClass
{
struct _GstTeeClass {
GstElementClass parent_class;
};
GType gst_tee_get_type (void);
gboolean gst_tee_factory_init (GstElementFactory * factory);
gboolean gst_tee_factory_init (GstElementFactory *factory);
G_END_DECLS
#endif /* __GST_TEE_H__ */

View file

@ -29,44 +29,48 @@
#include "gstbufferstore.h"
G_BEGIN_DECLS
#define GST_TYPE_TYPE_FIND_ELEMENT (gst_type_find_element_get_type ())
#define GST_TYPE_FIND_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_TYPE_FIND_ELEMENT, GstTypeFindElement))
#define GST_IS_TYPE_FIND_ELEMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_TYPE_FIND_ELEMENT))
#define GST_TYPE_FIND_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_TYPE_FIND_ELEMENT, GstTypeFindElementClass))
#define GST_IS_TYPE_FIND_ELEMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_TYPE_FIND_ELEMENT))
#define GST_TYPE_FIND_ELEMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_TYPE_FIND_ELEMENT, GstTypeFindElementClass))
typedef struct _GstTypeFindElement GstTypeFindElement;
typedef struct _GstTypeFindElementClass GstTypeFindElementClass;
struct _GstTypeFindElement
{
struct _GstTypeFindElement {
GstElement element;
GstPad *sink;
GstPad *src;
GstPad * sink;
GstPad * src;
guint min_probability;
guint max_probability;
GstCaps *caps;
GstCaps * caps;
guint mode;
GstBufferStore *store;
GstBufferStore * store;
guint64 stream_length;
gboolean stream_length_available;
GList *possibilities;
GList * possibilities;
};
struct _GstTypeFindElementClass
{
struct _GstTypeFindElementClass {
GstElementClass parent_class;
/* signals */
void (*have_type) (GstTypeFindElement * element,
guint probability, const GstCaps * caps);
void (*have_type) (GstTypeFindElement *element,
guint probability,
const GstCaps * caps);
};
GType gst_type_find_element_get_type (void);
G_END_DECLS
#endif /* __GST_TYPE_FIND_ELEMENT_H__ */

View file

@ -69,6 +69,7 @@
#include <gst/gstcompat.h>
G_BEGIN_DECLS
/* make our own type for poptOption because the struct poptOption
* definition is iffy */
typedef struct poptOption GstPoptOption;
@ -77,11 +78,13 @@ typedef struct poptOption GstPoptOption;
void gst_init (int *argc, char **argv[]);
gboolean gst_init_check (int *argc, char **argv[]);
void gst_init_with_popt_table (int *argc, char **argv[],
const GstPoptOption * popt_options);
const GstPoptOption
*popt_options);
gboolean gst_init_check_with_popt_table (int *argc, char **argv[],
const GstPoptOption * popt_options);
const GstPoptOption
*popt_options);
const GstPoptOption *gst_init_get_popt_table (void);
const GstPoptOption * gst_init_get_popt_table (void);
void gst_use_threads (gboolean use_threads);
gboolean gst_has_threads (void);
@ -90,5 +93,7 @@ void gst_main (void);
void gst_main_quit (void);
G_END_DECLS
#include <gst/gstlog.h>
#endif /* __GST_H__ */

View file

@ -53,8 +53,7 @@
"mtlr r0\n\t" \
"blrl" : : "r"(target) );
struct minimal_ppc_stackframe
{
struct minimal_ppc_stackframe {
unsigned long back_chain;
unsigned long LR_save;
unsigned long unused1;
@ -80,8 +79,7 @@ struct minimal_ppc_stackframe
/* Need to get more information about the stackframe format
* and get the fields more correct. Check GDB sources maybe?
*/
struct minimal_stackframe
{
struct minimal_stackframe {
unsigned long back_chain;
unsigned long LR_save;
unsigned long unused1;
@ -169,8 +167,7 @@ struct minimal_stackframe
#define GST_ARCH_CALL(target) \
__asm__( "basr 14,%0" : : "a"(target) );
struct minimal_s390_stackframe
{
struct minimal_s390_stackframe {
unsigned long back_chain;
unsigned long reserved;
unsigned long greg[14];

View file

@ -22,25 +22,27 @@
#include <glib.h>
G_BEGIN_DECLS typedef volatile gint gst_vgint; /* gtk-doc volatile workaround */
G_BEGIN_DECLS
typedef volatile gint gst_vgint; /* gtk-doc volatile workaround */
typedef struct _GstAtomicInt GstAtomicInt;
struct _GstAtomicInt
{
struct _GstAtomicInt {
gst_vgint counter;
GMutex *lock; /* for C fallback */
};
void gst_atomic_int_init (GstAtomicInt * aint, gint val);
void gst_atomic_int_destroy (GstAtomicInt * aint);
void gst_atomic_int_set (GstAtomicInt * aint, gint val);
gint gst_atomic_int_read (GstAtomicInt * aint);
void gst_atomic_int_add (GstAtomicInt * aint, gint val);
void gst_atomic_int_inc (GstAtomicInt * aint);
gboolean gst_atomic_int_dec_and_test (GstAtomicInt * aint);
void gst_atomic_int_init (GstAtomicInt *aint, gint val);
void gst_atomic_int_destroy (GstAtomicInt *aint);
void gst_atomic_int_set (GstAtomicInt *aint, gint val);
gint gst_atomic_int_read (GstAtomicInt *aint);
void gst_atomic_int_add (GstAtomicInt *aint, gint val);
void gst_atomic_int_inc (GstAtomicInt *aint);
gboolean gst_atomic_int_dec_and_test (GstAtomicInt *aint);
G_END_DECLS
#endif /* __GST_ATOMIC_H__ */

View file

@ -34,62 +34,57 @@
#include "gstmacros.h"
G_BEGIN_DECLS
#if defined (GST_CAN_INLINE) || defined (__GST_ATOMIC_C__)
/***** Intel x86 *****/
#if defined (HAVE_CPU_I386) && defined(__GNUC__)
#ifdef GST_CONFIG_NO_SMP
#define SMP_LOCK ""
#else
#define SMP_LOCK "lock ; "
#endif
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC void
gst_atomic_int_destroy (GstAtomicInt * aint)
{
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
{
return aint->counter;
}
GST_INLINE_FUNC void gst_atomic_int_init (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC void gst_atomic_int_destroy (GstAtomicInt *aint) { }
GST_INLINE_FUNC void gst_atomic_int_set (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC gint gst_atomic_int_read (GstAtomicInt *aint) { return aint->counter; }
GST_INLINE_FUNC void
gst_atomic_int_add (GstAtomicInt * aint, gint val)
gst_atomic_int_add (GstAtomicInt *aint, gint val)
{
__asm__ __volatile__ (SMP_LOCK "addl %1,%0":"=m" (aint->counter)
__asm__ __volatile__(
SMP_LOCK "addl %1,%0"
:"=m" (aint->counter)
:"ir" (val), "m" (aint->counter));
}
GST_INLINE_FUNC void
gst_atomic_int_inc (GstAtomicInt * aint)
gst_atomic_int_inc (GstAtomicInt *aint)
{
__asm__ __volatile__ (SMP_LOCK "incl %0":"=m" (aint->counter)
__asm__ __volatile__(
SMP_LOCK "incl %0"
:"=m" (aint->counter)
:"m" (aint->counter));
}
GST_INLINE_FUNC gboolean
gst_atomic_int_dec_and_test (GstAtomicInt * aint)
gst_atomic_int_dec_and_test (GstAtomicInt *aint)
{
guchar res;
__asm__ __volatile__ (SMP_LOCK "decl %0; sete %1":"=m" (aint->counter),
"=qm" (res)
:"m" (aint->counter):"memory");
__asm__ __volatile__(
SMP_LOCK "decl %0; sete %1"
:"=m" (aint->counter), "=qm" (res)
:"m" (aint->counter) : "memory");
return res != 0;
}
/***** PowerPC *****/
#elif defined (HAVE_CPU_PPC) && defined(__GNUC__)
#ifdef GST_CONFIG_NO_SMP
#define SMP_SYNC ""
#define SMP_ISYNC
@ -97,6 +92,7 @@ gst_atomic_int_dec_and_test (GstAtomicInt * aint)
#define SMP_SYNC "\tsync\n"
#define SMP_ISYNC "\tisync\n"
#endif
/* Erratum #77 on the 405 means we need a sync or dcbt before every stwcx.
* The old ATOMIC_SYNC_FIX covered some but not all of this.
*/
@ -105,114 +101,101 @@ gst_atomic_int_dec_and_test (GstAtomicInt * aint)
#else
#define PPC405_ERR77(ra,rb)
#endif
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC void
gst_atomic_int_destroy (GstAtomicInt * aint)
{
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
{
return aint->counter;
}
GST_INLINE_FUNC void gst_atomic_int_init (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC void gst_atomic_int_destroy (GstAtomicInt *aint) { }
GST_INLINE_FUNC void gst_atomic_int_set (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC gint gst_atomic_int_read (GstAtomicInt *aint) { return aint->counter; }
GST_INLINE_FUNC void
gst_atomic_int_add (GstAtomicInt * aint, gint val)
gst_atomic_int_add (GstAtomicInt *aint, gint val)
{
int t;
__asm__ __volatile__ ("1: lwarx %0,0,%3\n"
" add %0,%2,%0\n" PPC405_ERR77 (0, %3)
__asm__ __volatile__(
"1: lwarx %0,0,%3\n"
" add %0,%2,%0\n"
PPC405_ERR77(0,%3)
" stwcx. %0,0,%3 \n"
" bne- 1b\n":"=&r" (t), "=m" (aint->counter)
:"r" (val), "r" (&aint->counter), "m" (aint->counter)
:"cc");
" bne- 1b\n"
: "=&r" (t), "=m" (aint->counter)
: "r" (val), "r" (&aint->counter), "m" (aint->counter)
: "cc");
}
GST_INLINE_FUNC void
gst_atomic_int_inc (GstAtomicInt * aint)
gst_atomic_int_inc (GstAtomicInt *aint)
{
int t;
__asm__ __volatile__ ("1: lwarx %0,0,%2\n"
" addic %0,%0,1\n" PPC405_ERR77 (0, %2)
__asm__ __volatile__(
"1: lwarx %0,0,%2\n"
" addic %0,%0,1\n"
PPC405_ERR77(0,%2)
" stwcx. %0,0,%2\n"
" bne- 1b\n":"=&r" (t), "=m" (aint->counter)
:"r" (&aint->counter), "m" (aint->counter)
:"cc");
" bne- 1b\n"
: "=&r" (t), "=m" (aint->counter)
: "r" (&aint->counter), "m" (aint->counter)
: "cc");
}
GST_INLINE_FUNC gboolean
gst_atomic_int_dec_and_test (GstAtomicInt * aint)
gst_atomic_int_dec_and_test (GstAtomicInt *aint)
{
int t;
__asm__ __volatile__ ("1: lwarx %0,0,%1\n"
" addic %0,%0,-1\n" PPC405_ERR77 (0, %1)
" stwcx. %0,0,%1\n" " bne- 1b\n" SMP_ISYNC:"=&r" (t)
:"r" (&aint->counter)
:"cc", "memory");
__asm__ __volatile__(
"1: lwarx %0,0,%1\n"
" addic %0,%0,-1\n"
PPC405_ERR77(0,%1)
" stwcx. %0,0,%1\n"
" bne- 1b\n"
SMP_ISYNC
: "=&r" (t)
: "r" (&aint->counter)
: "cc", "memory");
return t == 0;
}
/***** DEC[/Compaq/HP?/Intel?] Alpha *****/
#elif defined(HAVE_CPU_ALPHA) && defined(__GNUC__)
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC void
gst_atomic_int_destroy (GstAtomicInt * aint)
{
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
{
return aint->counter;
}
GST_INLINE_FUNC void gst_atomic_int_init (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC void gst_atomic_int_destroy (GstAtomicInt *aint) { }
GST_INLINE_FUNC void gst_atomic_int_set (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC gint gst_atomic_int_read (GstAtomicInt *aint) { return aint->counter; }
GST_INLINE_FUNC void
gst_atomic_int_add (GstAtomicInt * aint, gint val)
gst_atomic_int_add (GstAtomicInt *aint, gint val)
{
unsigned long temp;
__asm__ __volatile__ ("1: ldl_l %0,%1\n"
__asm__ __volatile__(
"1: ldl_l %0,%1\n"
" addl %0,%2,%0\n"
" stl_c %0,%1\n"
" beq %0,2f\n"
".subsection 2\n"
"2: br 1b\n" ".previous":"=&r" (temp), "=m" (aint->counter)
"2: br 1b\n"
".previous"
:"=&r" (temp), "=m" (aint->counter)
:"Ir" (val), "m" (aint->counter));
}
GST_INLINE_FUNC void
gst_atomic_int_inc (GstAtomicInt * aint)
gst_atomic_int_inc (GstAtomicInt *aint)
{
gst_atomic_int_add (aint, 1);
}
GST_INLINE_FUNC gboolean
gst_atomic_int_dec_and_test (GstAtomicInt * aint)
gst_atomic_int_dec_and_test (GstAtomicInt *aint)
{
long temp, result;
int val = 1;
__asm__ __volatile__ ("1: ldl_l %0,%1\n"
__asm__ __volatile__(
"1: ldl_l %0,%1\n"
" subl %0,%3,%2\n"
" subl %0,%3,%0\n"
" stl_c %0,%1\n"
@ -220,8 +203,9 @@ gst_atomic_int_dec_and_test (GstAtomicInt * aint)
" mb\n"
".subsection 2\n"
"2: br 1b\n"
".previous":"=&r" (temp), "=m" (aint->counter), "=&r" (result)
:"Ir" (val), "m" (aint->counter):"memory");
".previous"
:"=&r" (temp), "=m" (aint->counter), "=&r" (result)
:"Ir" (val), "m" (aint->counter) : "memory");
return result == 0;
}
@ -229,38 +213,16 @@ gst_atomic_int_dec_and_test (GstAtomicInt * aint)
/***** Sun SPARC *****/
#elif 0 && defined(HAVE_CPU_SPARC) && defined(__GNUC__)
/* allegedly broken again */
GST_INLINE_FUNC void
gst_atomic_int_destroy (GstAtomicInt * aint)
{
}
GST_INLINE_FUNC void gst_atomic_int_destroy (GstAtomicInt *aint) { }
#ifdef GST_CONFIG_NO_SMP
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
{
return aint->counter;
}
GST_INLINE_FUNC void gst_atomic_int_init (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC void gst_atomic_int_set (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC gint gst_atomic_int_read (GstAtomicInt *aint) { return aint->counter; }
#else
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
{
aint->counter = (val << 8);
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
{
aint->counter = (val << 8);
}
GST_INLINE_FUNC void gst_atomic_int_init (GstAtomicInt *aint, gint val) { aint->counter = (val<<8); }
GST_INLINE_FUNC void gst_atomic_int_set (GstAtomicInt *aint, gint val) { aint->counter = (val<<8); }
/*
* For SMP the trick is you embed the spin lock byte within
@ -273,7 +235,7 @@ gst_atomic_int_set (GstAtomicInt * aint, gint val)
* 31 8 7 0
*/
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
gst_atomic_int_read (GstAtomicInt *aint)
{
int ret = aint->counter;
@ -285,7 +247,7 @@ gst_atomic_int_read (GstAtomicInt * aint)
#endif /* GST_CONFIG_NO_SMP */
GST_INLINE_FUNC void
gst_atomic_int_add (GstAtomicInt * aint, gint val)
gst_atomic_int_add (GstAtomicInt *aint, gint val)
{
volatile int increment, *ptr;
int lock = 1;
@ -294,28 +256,41 @@ gst_atomic_int_add (GstAtomicInt * aint, gint val)
ptr = &(aint->counter);
#if __GNUC__ > 3 || (__GNUC__ >=3 && __GNUC_MINOR__ >= 2)
__asm__ __volatile__ ("1: ldstub [%[ptr] + 3], %[lock]\n" "\torcc %[lock], 0, %[ignore]\n" "\tbne 1b\n" /* go back until we have the lock */
"\tld [%[ptr]], %[inc]\n" "\tsra %[inc], 8, %[inc]\n" "\tadd %[inc], %[val], %[inc]\n" "\tsll %[inc], 8, %[lock]\n" "\tst %[lock],[%[ptr]]\n" /* Release the lock */
:[inc] "=&r" (increment),[lock] "=r" (lock),[ignore] "=&r" (ignore)
:"0" (increment),[ptr] "r" (ptr),[val] "r" (val)
__asm__ __volatile__("1: ldstub [%[ptr] + 3], %[lock]\n"
"\torcc %[lock], 0, %[ignore]\n"
"\tbne 1b\n" /* go back until we have the lock */
"\tld [%[ptr]], %[inc]\n"
"\tsra %[inc], 8, %[inc]\n"
"\tadd %[inc], %[val], %[inc]\n"
"\tsll %[inc], 8, %[lock]\n"
"\tst %[lock],[%[ptr]]\n" /* Release the lock */
: [inc] "=&r" (increment), [lock] "=r" (lock),
[ignore] "=&r" (ignore)
: "0" (increment), [ptr] "r" (ptr), [val] "r" (val)
);
#else
__asm__ __volatile__ ("1: ldstub [%4 + 3], %1\n" "\torcc %1, 0, %2\n" "\tbne 1b\n" /* go back until we have the lock */
"\tld [%4], %0\n" "\tsra %0, 8, %0\n" "\tadd %0, %5, %0\n" "\tsll %0, 8, %1\n" "\tst %1,[%4]\n" /* Release the lock */
:"=&r" (increment), "=r" (lock), "=&r" (ignore)
:"0" (increment), "r" (ptr), "r" (val)
__asm__ __volatile__("1: ldstub [%4 + 3], %1\n"
"\torcc %1, 0, %2\n"
"\tbne 1b\n" /* go back until we have the lock */
"\tld [%4], %0\n"
"\tsra %0, 8, %0\n"
"\tadd %0, %5, %0\n"
"\tsll %0, 8, %1\n"
"\tst %1,[%4]\n" /* Release the lock */
: "=&r" (increment), "=r" (lock), "=&r" (ignore)
: "0" (increment), "r" (ptr), "r" (val)
);
#endif
}
GST_INLINE_FUNC void
gst_atomic_int_inc (GstAtomicInt * aint)
gst_atomic_int_inc (GstAtomicInt *aint)
{
gst_atomic_int_add (aint, 1);
}
GST_INLINE_FUNC gboolean
gst_atomic_int_dec_and_test (GstAtomicInt * aint)
gst_atomic_int_dec_and_test (GstAtomicInt *aint)
{
volatile int increment, *ptr;
int lock = 1;
@ -324,16 +299,29 @@ gst_atomic_int_dec_and_test (GstAtomicInt * aint)
ptr = &aint->counter;
#if __GNUC__ > 3 || (__GNUC__ >=3 && __GNUC_MINOR__ >= 2)
__asm__ __volatile__ ("1: ldstub [%[ptr] + 3], %[lock]\n" "\torcc %[lock], 0, %[ignore]\n" "\tbne 1b\n" /* go back until we have the lock */
"\tld [%[ptr]], %[inc]\n" "\tsra %[inc], 8, %[inc]\n" "\tsub %[inc], 1, %[inc]\n" "\tsll %[inc], 8, %[lock]\n" "\tst %[lock],[%[ptr]]\n" /* Release the lock */
:[inc] "=&r" (increment),[lock] "=r" (lock),[ignore] "=&r" (ignore)
:"0" (increment),[ptr] "r" (ptr)
__asm__ __volatile__("1: ldstub [%[ptr] + 3], %[lock]\n"
"\torcc %[lock], 0, %[ignore]\n"
"\tbne 1b\n" /* go back until we have the lock */
"\tld [%[ptr]], %[inc]\n"
"\tsra %[inc], 8, %[inc]\n"
"\tsub %[inc], 1, %[inc]\n"
"\tsll %[inc], 8, %[lock]\n"
"\tst %[lock],[%[ptr]]\n" /* Release the lock */
: [inc] "=&r" (increment), [lock] "=r" (lock),
[ignore] "=&r" (ignore)
: "0" (increment), [ptr] "r" (ptr)
);
#else
__asm__ __volatile__ ("1: ldstub [%4 + 3], %1\n" "\torcc %1, 0, %2\n" "\tbne 1b\n" /* go back until we have the lock */
"\tld [%4], %0\n" "\tsra %0, 8, %0\n" "\tsub %0, 1, %0\n" "\tsll %0, 8, %1\n" "\tst %1,[%4]\n" /* Release the lock */
:"=&r" (increment), "=r" (lock), "=&r" (ignore)
:"0" (increment), "r" (ptr)
__asm__ __volatile__("1: ldstub [%4 + 3], %1\n"
"\torcc %1, 0, %2\n"
"\tbne 1b\n" /* go back until we have the lock */
"\tld [%4], %0\n"
"\tsra %0, 8, %0\n"
"\tsub %0, 1, %0\n"
"\tsll %0, 8, %1\n"
"\tst %1,[%4]\n" /* Release the lock */
: "=&r" (increment), "=r" (lock), "=&r" (ignore)
: "0" (increment), "r" (ptr)
);
#endif
@ -344,94 +332,63 @@ gst_atomic_int_dec_and_test (GstAtomicInt * aint)
/* This is disabled because the asm code is broken on most MIPS
* processors and doesn't generally compile. */
#elif defined(HAVE_CPU_MIPS) && defined(__GNUC__) && 0
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC void
gst_atomic_int_destroy (GstAtomicInt * aint)
{
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
{
return aint->counter;
}
GST_INLINE_FUNC void gst_atomic_int_init (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC void gst_atomic_int_destroy (GstAtomicInt *aint) { }
GST_INLINE_FUNC void gst_atomic_int_set (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC gint gst_atomic_int_read (GstAtomicInt *aint) { return aint->counter; }
/* this only works on MIPS II and better */
GST_INLINE_FUNC void
gst_atomic_int_add (GstAtomicInt * aint, gint val)
gst_atomic_int_add (GstAtomicInt *aint, gint val)
{
unsigned long temp;
__asm__ __volatile__ ("1: ll %0, %1 # atomic_add\n"
__asm__ __volatile__(
"1: ll %0, %1 # atomic_add\n"
" addu %0, %2 \n"
" sc %0, %1 \n"
" beqz %0, 1b \n":"=&r" (temp),
"=m" (aint->counter)
:"Ir" (val), "m" (aint->counter));
" beqz %0, 1b \n"
: "=&r" (temp), "=m" (aint->counter)
: "Ir" (val), "m" (aint->counter));
}
GST_INLINE_FUNC void
gst_atomic_int_inc (GstAtomicInt * aint)
gst_atomic_int_inc (GstAtomicInt *aint)
{
gst_atomic_int_add (aint, 1);
}
GST_INLINE_FUNC gboolean
gst_atomic_int_dec_and_test (GstAtomicInt * aint)
gst_atomic_int_dec_and_test (GstAtomicInt *aint)
{
unsigned long temp, result;
int val = 1;
__asm__ __volatile__ (".set push \n"
__asm__ __volatile__(
".set push \n"
".set noreorder # atomic_sub_return\n"
"1: ll %1, %2 \n"
" subu %0, %1, %3 \n"
" sc %0, %2 \n"
" beqz %0, 1b \n"
" subu %0, %1, %3 \n"
".set pop \n":"=&r" (result),
"=&r" (temp), "=m" (aint->counter)
:"Ir" (val), "m" (aint->counter)
:"memory");
".set pop \n"
: "=&r" (result), "=&r" (temp), "=m" (aint->counter)
: "Ir" (val), "m" (aint->counter)
: "memory");
return result == 0;
}
/***** S/390 *****/
#elif defined(HAVE_CPU_S390) && defined(__GNUC__)
typedef struct
{
volatile int counter;
}
atomic_t __attribute__ ((aligned (4)));
typedef struct { volatile int counter; } atomic_t __attribute__ ((aligned (4)));
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC void
gst_atomic_int_destroy (GstAtomicInt * aint)
{
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
{
aint->counter = val;
}
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
{
return aint->counter;
}
GST_INLINE_FUNC void gst_atomic_int_init (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC void gst_atomic_int_destroy (GstAtomicInt *aint) { }
GST_INLINE_FUNC void gst_atomic_int_set (GstAtomicInt *aint, gint val) { aint->counter = val; }
GST_INLINE_FUNC gint gst_atomic_int_read (GstAtomicInt *aint) { return aint->counter; }
#define __CS_LOOP(old_val, new_val, ptr, op_val, op_string) \
__asm__ __volatile__(" l %0,0(%3)\n" \
@ -444,50 +401,48 @@ gst_atomic_int_read (GstAtomicInt * aint)
: "a" (ptr), "d" (op_val) : "cc" );
GST_INLINE_FUNC void
gst_atomic_int_add (GstAtomicInt * aint, gint val)
gst_atomic_int_add (GstAtomicInt *aint, gint val)
{
int old_val, new_val;
__CS_LOOP (old_val, new_val, aint, val, "ar");
__CS_LOOP(old_val, new_val, aint, val, "ar");
}
GST_INLINE_FUNC void
gst_atomic_int_inc (GstAtomicInt * aint)
gst_atomic_int_inc (GstAtomicInt *aint)
{
int old_val, new_val;
__CS_LOOP (old_val, new_val, aint, 1, "ar");
__CS_LOOP(old_val, new_val, aint, 1, "ar");
}
GST_INLINE_FUNC gboolean
gst_atomic_int_dec_and_test (GstAtomicInt * aint)
gst_atomic_int_dec_and_test (GstAtomicInt *aint)
{
int old_val, new_val;
__CS_LOOP (old_val, new_val, aint, 1, "sr");
__CS_LOOP(old_val, new_val, aint, 1, "sr");
return new_val == 0;
}
#else
#warning consider putting your architecture specific atomic implementations here
/*
* generic implementation
*/
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt * aint, gint val)
GST_INLINE_FUNC void
gst_atomic_int_init (GstAtomicInt *aint, gint val)
{
aint->counter = val;
aint->lock = g_mutex_new ();
}
GST_INLINE_FUNC void
gst_atomic_int_destroy (GstAtomicInt * aint)
gst_atomic_int_destroy (GstAtomicInt *aint)
{
g_mutex_free (aint->lock);
}
GST_INLINE_FUNC void
gst_atomic_int_set (GstAtomicInt * aint, gint val)
gst_atomic_int_set (GstAtomicInt *aint, gint val)
{
g_mutex_lock (aint->lock);
aint->counter = val;
@ -495,7 +450,7 @@ gst_atomic_int_set (GstAtomicInt * aint, gint val)
}
GST_INLINE_FUNC gint
gst_atomic_int_read (GstAtomicInt * aint)
gst_atomic_int_read (GstAtomicInt *aint)
{
gint res;
@ -507,7 +462,7 @@ gst_atomic_int_read (GstAtomicInt * aint)
}
GST_INLINE_FUNC void
gst_atomic_int_add (GstAtomicInt * aint, gint val)
gst_atomic_int_add (GstAtomicInt *aint, gint val)
{
g_mutex_lock (aint->lock);
aint->counter += val;
@ -515,7 +470,7 @@ gst_atomic_int_add (GstAtomicInt * aint, gint val)
}
GST_INLINE_FUNC void
gst_atomic_int_inc (GstAtomicInt * aint)
gst_atomic_int_inc (GstAtomicInt *aint)
{
g_mutex_lock (aint->lock);
aint->counter++;
@ -523,7 +478,7 @@ gst_atomic_int_inc (GstAtomicInt * aint)
}
GST_INLINE_FUNC gboolean
gst_atomic_int_dec_and_test (GstAtomicInt * aint)
gst_atomic_int_dec_and_test (GstAtomicInt *aint)
{
gboolean res;
@ -539,7 +494,7 @@ gst_atomic_int_dec_and_test (GstAtomicInt * aint)
/*
* common functions
*/
GST_INLINE_FUNC GstAtomicInt *
GST_INLINE_FUNC GstAtomicInt*
gst_atomic_int_new (gint val)
{
GstAtomicInt *aint;
@ -551,13 +506,14 @@ gst_atomic_int_new (gint val)
}
GST_INLINE_FUNC void
gst_atomic_int_free (GstAtomicInt * aint)
gst_atomic_int_free (GstAtomicInt *aint)
{
gst_atomic_int_destroy (aint);
g_free (aint);
}
#endif /* defined (GST_CAN_INLINE) || defined (__GST_TRASH_STACK_C__) */
#endif /* defined (GST_CAN_INLINE) || defined (__GST_TRASH_STACK_C__)*/
G_END_DECLS
#endif /* __GST_ATOMIC_IMPL_H__ */

View file

@ -26,7 +26,9 @@
#include <gst/gstelement.h>
G_BEGIN_DECLS extern GType _gst_bin_type;
G_BEGIN_DECLS
extern GType _gst_bin_type;
#define GST_TYPE_BIN (_gst_bin_type)
#define GST_IS_BIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_BIN))
@ -35,10 +37,9 @@ G_BEGIN_DECLS extern GType _gst_bin_type;
#define GST_BIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_BIN, GstBin))
#define GST_BIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_BIN, GstBinClass))
typedef void (*GstBinPrePostIterateFunction) (GstBin * bin, gpointer user_data);
typedef void (*GstBinPrePostIterateFunction) (GstBin *bin, gpointer user_data);
typedef enum
{
typedef enum {
/* this bin is a manager of child elements, i.e. a pipeline or thread */
GST_BIN_FLAG_MANAGER = GST_ELEMENT_FLAG_LAST,
@ -52,14 +53,12 @@ typedef enum
/* padding */
GST_BIN_FLAG_LAST = GST_ELEMENT_FLAG_LAST + 5
}
GstBinFlags;
} GstBinFlags;
/*typedef struct _GstBin GstBin; */
/*typedef struct _GstBinClass GstBinClass; */
struct _GstBin
{
struct _GstBin {
GstElement element;
/* our children */
@ -71,59 +70,63 @@ struct _GstBin
gpointer _gst_reserved[GST_PADDING];
};
struct _GstBinClass
{
struct _GstBinClass {
GstElementClass parent_class;
/* vtable */
void (*add_element) (GstBin * bin, GstElement * element);
void (*remove_element) (GstBin * bin, GstElement * element);
void (*child_state_change) (GstBin * bin, GstElementState oldstate,
GstElementState newstate, GstElement * element);
void (*add_element) (GstBin *bin, GstElement *element);
void (*remove_element) (GstBin *bin, GstElement *element);
void (*child_state_change) (GstBin *bin, GstElementState oldstate,
GstElementState newstate, GstElement *element);
/* run a full iteration of operation */
gboolean (*iterate) (GstBin * bin);
gboolean (*iterate) (GstBin *bin);
/* signals */
void (*element_added) (GstBin * bin, GstElement * child);
void (*element_removed) (GstBin * bin, GstElement * child);
void (*element_added) (GstBin *bin, GstElement *child);
void (*element_removed) (GstBin *bin, GstElement *child);
gpointer _gst_reserved[GST_PADDING];
};
GType gst_bin_get_type (void);
GstElement *gst_bin_new (const gchar * name);
GstElement* gst_bin_new (const gchar *name);
/* add and remove elements from the bin */
void gst_bin_add (GstBin * bin, GstElement * element);
void gst_bin_add_many (GstBin * bin, GstElement * element_1, ...);
void gst_bin_remove (GstBin * bin, GstElement * element);
void gst_bin_remove_many (GstBin * bin, GstElement * element_1, ...);
void gst_bin_add (GstBin *bin, GstElement *element);
void gst_bin_add_many (GstBin *bin, GstElement *element_1, ...);
void gst_bin_remove (GstBin *bin, GstElement *element);
void gst_bin_remove_many (GstBin *bin, GstElement *element_1, ...);
/* retrieve a single element or the list of children */
GstElement *gst_bin_get_by_name (GstBin * bin, const gchar * name);
GstElement *gst_bin_get_by_name_recurse_up (GstBin * bin, const gchar * name);
G_CONST_RETURN GList *gst_bin_get_list (GstBin * bin);
GstElement *gst_bin_get_by_interface (GstBin * bin, GType interface);
GList *gst_bin_get_all_by_interface (GstBin * bin, GType interface);
GstElement* gst_bin_get_by_name (GstBin *bin, const gchar *name);
GstElement* gst_bin_get_by_name_recurse_up (GstBin *bin, const gchar *name);
G_CONST_RETURN GList*
gst_bin_get_list (GstBin *bin);
GstElement* gst_bin_get_by_interface (GstBin *bin, GType interface);
GList * gst_bin_get_all_by_interface (GstBin *bin, GType interface);
gboolean gst_bin_iterate (GstBin * bin);
gboolean gst_bin_iterate (GstBin *bin);
void gst_bin_use_clock (GstBin * bin, GstClock * clock);
GstClock *gst_bin_get_clock (GstBin * bin);
void gst_bin_auto_clock (GstBin * bin);
void gst_bin_use_clock (GstBin *bin, GstClock *clock);
GstClock* gst_bin_get_clock (GstBin *bin);
void gst_bin_auto_clock (GstBin *bin);
GstElementStateReturn gst_bin_sync_children_state (GstBin * bin);
GstElementStateReturn gst_bin_sync_children_state (GstBin *bin);
/* internal */
/* one of our childs signaled a state change */
void gst_bin_child_state_change (GstBin * bin, GstElementState oldstate,
GstElementState newstate, GstElement * child);
void gst_bin_child_state_change (GstBin *bin, GstElementState oldstate,
GstElementState newstate, GstElement *child);
void gst_bin_set_pre_iterate_function (GstBin * bin,
GstBinPrePostIterateFunction func, gpointer user_data);
void gst_bin_set_post_iterate_function (GstBin * bin,
GstBinPrePostIterateFunction func, gpointer user_data);
void gst_bin_set_pre_iterate_function (GstBin *bin,
GstBinPrePostIterateFunction func,
gpointer user_data);
void gst_bin_set_post_iterate_function (GstBin *bin,
GstBinPrePostIterateFunction func,
gpointer user_data);
G_END_DECLS
#endif /* __GST_BIN_H__ */

View file

@ -27,9 +27,11 @@
#include <gst/gstdata.h>
#include <gst/gstclock.h>
G_BEGIN_DECLS typedef struct _GstBuffer GstBuffer;
G_BEGIN_DECLS
typedef void (*GstBufferFreeDataFunc) (GstBuffer * buffer);
typedef struct _GstBuffer GstBuffer;
typedef void (*GstBufferFreeDataFunc) (GstBuffer *buffer);
#define GST_BUFFER_TRACE_NAME "GstBuffer"
@ -72,8 +74,7 @@ extern GType _gst_buffer_type;
#define GST_BUFFER_OFFSET_END_IS_VALID(buffer) (GST_BUFFER_OFFSET_END (buffer) != GST_BUFFER_OFFSET_NONE)
#define GST_BUFFER_MAXSIZE_IS_VALID(buffer) (GST_BUFFER_MAXSIZE (buffer) != GST_BUFFER_MAXSIZE_NONE)
typedef enum
{
typedef enum {
GST_BUFFER_READONLY = GST_DATA_READONLY,
GST_BUFFER_SUBBUFFER = GST_DATA_FLAG_LAST,
GST_BUFFER_ORIGINAL,
@ -81,11 +82,9 @@ typedef enum
GST_BUFFER_KEY_UNIT,
GST_BUFFER_DONTKEEP,
GST_BUFFER_FLAG_LAST = GST_DATA_FLAG_LAST + 8
}
GstBufferFlag;
} GstBufferFlag;
struct _GstBuffer
{
struct _GstBuffer {
GstData data_type;
/* pointer to data and its size */
@ -115,8 +114,8 @@ struct _GstBuffer
/* allocation */
GType gst_buffer_get_type (void);
GstBuffer *gst_buffer_new (void);
GstBuffer *gst_buffer_new_and_alloc (guint size);
GstBuffer* gst_buffer_new (void);
GstBuffer* gst_buffer_new_and_alloc (guint size);
#define gst_buffer_set_data(buf, data, size) \
G_STMT_START { \
@ -129,26 +128,25 @@ G_STMT_START { \
#define gst_buffer_ref_by_count(buf,c) GST_BUFFER (gst_data_ref_by_count (GST_DATA (buf), c))
#define gst_buffer_unref(buf) gst_data_unref (GST_DATA (buf))
/* copy buffer */
void gst_buffer_stamp (GstBuffer * dest, const GstBuffer * src);
void gst_buffer_stamp (GstBuffer *dest, const GstBuffer *src);
#define gst_buffer_copy(buf) GST_BUFFER (gst_data_copy (GST_DATA (buf)))
#define gst_buffer_is_writable(buf) gst_data_is_writable (GST_DATA (buf))
#define gst_buffer_copy_on_write(buf) GST_BUFFER (gst_data_copy_on_write (GST_DATA (buf)))
/* creating a subbuffer */
GstBuffer *gst_buffer_create_sub (GstBuffer * parent, guint offset, guint size);
GstBuffer* gst_buffer_create_sub (GstBuffer *parent, guint offset, guint size);
/* merge, span, or append two buffers, intelligently */
GstBuffer *gst_buffer_merge (GstBuffer * buf1, GstBuffer * buf2);
gboolean gst_buffer_is_span_fast (GstBuffer * buf1, GstBuffer * buf2);
GstBuffer *gst_buffer_span (GstBuffer * buf1, guint32 offset, GstBuffer * buf2,
guint32 len);
GstBuffer* gst_buffer_merge (GstBuffer *buf1, GstBuffer *buf2);
gboolean gst_buffer_is_span_fast (GstBuffer *buf1, GstBuffer *buf2);
GstBuffer* gst_buffer_span (GstBuffer *buf1, guint32 offset, GstBuffer *buf2, guint32 len);
/* --- private --- */
void _gst_buffer_initialize (void);
void gst_buffer_default_free (GstBuffer * buffer);
GstBuffer *gst_buffer_default_copy (GstBuffer * buffer);
void gst_buffer_default_free (GstBuffer *buffer);
GstBuffer* gst_buffer_default_copy (GstBuffer *buffer);
G_END_DECLS
#endif /* __GST_BUFFER_H__ */

View file

@ -24,103 +24,119 @@
#include <gst/gststructure.h>
G_BEGIN_DECLS
#define GST_TYPE_CAPS gst_caps_get_type()
#define GST_CAPS(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GST_TYPE_CAPS, GstCaps))
#define GST_IS_CAPS(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GST_TYPE_CAPS))
#define GST_CAPS_FLAGS_ANY (1 << 0)
#define GST_CAPS_ANY gst_caps_new_any()
#define GST_CAPS_NONE gst_caps_new_empty()
#define GST_STATIC_CAPS_ANY GST_STATIC_CAPS("ANY")
#define GST_STATIC_CAPS_NONE GST_STATIC_CAPS("NONE")
#define GST_CAPS_IS_SIMPLE(caps) (gst_caps_get_size(caps) == 1)
#define gst_caps_is_simple(caps) GST_CAPS_IS_SIMPLE(caps)
#ifndef GST_DISABLE_DEPRECATED
#define GST_DEBUG_CAPS(string, caps) \
GST_DEBUG ( string "%s: " GST_PTR_FORMAT, caps)
#endif
#define GST_STATIC_CAPS(string) \
{ \
/* caps */ { 0 }, \
/* string */ string, \
}
typedef struct _GstCaps GstCaps;
typedef struct _GstStaticCaps GstStaticCaps;
struct _GstCaps
{
struct _GstCaps {
GType type;
guint16 flags;
GPtrArray *structs;
};
struct _GstStaticCaps
{
struct _GstStaticCaps {
GstCaps caps;
const char *string;
};
GType
gst_caps_get_type (void)
G_GNUC_CONST;
GstCaps *gst_caps_new_empty (void);
GstCaps *gst_caps_new_any (void);
GstCaps *gst_caps_new_simple (const char *media_type,
const char *fieldname, ...);
GstCaps *gst_caps_new_full (GstStructure * struct1, ...);
GstCaps *gst_caps_new_full_valist (GstStructure * structure,
GType gst_caps_get_type (void) G_GNUC_CONST;
GstCaps * gst_caps_new_empty (void);
GstCaps * gst_caps_new_any (void);
GstCaps * gst_caps_new_simple (const char *media_type,
const char *fieldname,
...);
GstCaps * gst_caps_new_full (GstStructure *struct1,
...);
GstCaps * gst_caps_new_full_valist (GstStructure *structure,
va_list var_args);
GstCaps *gst_caps_copy (const GstCaps * caps);
void gst_caps_free (GstCaps * caps);
G_CONST_RETURN GstCaps *gst_static_caps_get (GstStaticCaps * caps);
GstCaps * gst_caps_copy (const GstCaps *caps);
void gst_caps_free (GstCaps *caps);
G_CONST_RETURN GstCaps * gst_static_caps_get (GstStaticCaps *caps);
/* manipulation */
void gst_caps_append (GstCaps * caps1, GstCaps * caps2);
void gst_caps_append_structure (GstCaps * caps1, GstStructure * structure);
GstCaps *gst_caps_split_one (GstCaps * caps);
int gst_caps_get_size (const GstCaps * caps);
GstStructure *gst_caps_get_structure (const GstCaps * caps, int index);
void gst_caps_append (GstCaps *caps1,
GstCaps *caps2);
void gst_caps_append_structure (GstCaps *caps1,
GstStructure *structure);
GstCaps * gst_caps_split_one (GstCaps *caps);
int gst_caps_get_size (const GstCaps *caps);
GstStructure * gst_caps_get_structure (const GstCaps *caps,
int index);
#ifndef GST_DISABLE_DEPRECATED
GstCaps *gst_caps_copy_1 (const GstCaps * caps);
GstCaps * gst_caps_copy_1 (const GstCaps *caps);
#endif
void gst_caps_set_simple (GstCaps * caps, char *field, ...);
void gst_caps_set_simple_valist (GstCaps * caps,
char *field, va_list varargs);
void gst_caps_set_simple (GstCaps *caps,
char *field, ...);
void gst_caps_set_simple_valist (GstCaps *caps,
char *field,
va_list varargs);
/* tests */
gboolean gst_caps_is_any (const GstCaps * caps);
gboolean gst_caps_is_empty (const GstCaps * caps);
gboolean gst_caps_is_any (const GstCaps *caps);
gboolean gst_caps_is_empty (const GstCaps *caps);
#ifndef GST_DISABLE_DEPRECATED
gboolean gst_caps_is_chained (const GstCaps * caps);
gboolean gst_caps_is_chained (const GstCaps *caps);
#endif
gboolean gst_caps_is_fixed (const GstCaps * caps);
gboolean gst_caps_is_equal_fixed (const GstCaps * caps1,
const GstCaps * caps2);
gboolean gst_caps_is_always_compatible (const GstCaps * caps1,
const GstCaps * caps2);
gboolean gst_caps_is_fixed (const GstCaps *caps);
gboolean gst_caps_is_equal_fixed (const GstCaps *caps1,
const GstCaps *caps2);
gboolean gst_caps_is_always_compatible (const GstCaps *caps1,
const GstCaps *caps2);
/* operations */
GstCaps *gst_caps_intersect (const GstCaps * caps1, const GstCaps * caps2);
GstCaps *gst_caps_union (const GstCaps * caps1, const GstCaps * caps2);
GstCaps *gst_caps_normalize (const GstCaps * caps);
GstCaps *gst_caps_simplify (const GstCaps * caps);
GstCaps * gst_caps_intersect (const GstCaps *caps1,
const GstCaps *caps2);
GstCaps * gst_caps_union (const GstCaps *caps1,
const GstCaps *caps2);
GstCaps * gst_caps_normalize (const GstCaps *caps);
GstCaps * gst_caps_simplify (const GstCaps *caps);
#ifndef GST_DISABLE_LOADSAVE
xmlNodePtr gst_caps_save_thyself (const GstCaps * caps, xmlNodePtr parent);
GstCaps *gst_caps_load_thyself (xmlNodePtr parent);
xmlNodePtr gst_caps_save_thyself (const GstCaps *caps,
xmlNodePtr parent);
GstCaps * gst_caps_load_thyself (xmlNodePtr parent);
#endif
/* utility */
void gst_caps_replace (GstCaps ** caps, GstCaps * newcaps);
gchar *gst_caps_to_string (const GstCaps * caps);
GstCaps *gst_caps_from_string (const gchar * string);
void gst_caps_replace (GstCaps **caps,
GstCaps *newcaps);
gchar * gst_caps_to_string (const GstCaps *caps);
GstCaps * gst_caps_from_string (const gchar *string);
gboolean gst_caps_structure_fixate_field_nearest_int (GstStructure *
structure, const char *field_name, int target);
gboolean gst_caps_structure_fixate_field_nearest_double (GstStructure *
structure, const char *field_name, double target);
gboolean gst_caps_structure_fixate_field_nearest_int (GstStructure *structure,
const char *field_name,
int target);
gboolean gst_caps_structure_fixate_field_nearest_double (GstStructure *structure,
const char *field_name,
double target);
G_END_DECLS
#endif /* __GST_CAPS_H__ */

View file

@ -26,6 +26,7 @@
#include <gst/gstobject.h>
G_BEGIN_DECLS
/* --- standard type macros --- */
#define GST_TYPE_CLOCK (gst_clock_get_type ())
#define GST_CLOCK(clock) (G_TYPE_CHECK_INSTANCE_CAST ((clock), GST_TYPE_CLOCK, GstClock))
@ -33,6 +34,7 @@ G_BEGIN_DECLS
#define GST_CLOCK_CLASS(cclass) (G_TYPE_CHECK_CLASS_CAST ((cclass), GST_TYPE_CLOCK, GstClockClass))
#define GST_IS_CLOCK_CLASS(cclass) (G_TYPE_CHECK_CLASS_TYPE ((cclass), GST_TYPE_CLOCK))
#define GST_CLOCK_GET_CLASS(clock) (G_TYPE_INSTANCE_GET_CLASS ((clock), GST_TYPE_CLOCK, GstClockClass))
typedef guint64 GstClockTime;
typedef gint64 GstClockTimeDiff;
typedef gpointer GstClockID;
@ -60,25 +62,21 @@ typedef struct _GstClock GstClock;
typedef struct _GstClockClass GstClockClass;
/* --- prototype for async callbacks --- */
typedef gboolean (*GstClockCallback) (GstClock * clock, GstClockTime time,
typedef gboolean (*GstClockCallback) (GstClock *clock, GstClockTime time,
GstClockID id, gpointer user_data);
typedef enum
{
typedef enum {
/* --- protected --- */
GST_CLOCK_ENTRY_OK,
GST_CLOCK_ENTRY_EARLY,
GST_CLOCK_ENTRY_RESTART
}
GstClockEntryStatus;
} GstClockEntryStatus;
typedef enum
{
typedef enum {
/* --- protected --- */
GST_CLOCK_ENTRY_SINGLE,
GST_CLOCK_ENTRY_PERIODIC
}
GstClockEntryType;
} GstClockEntryType;
#define GST_CLOCK_ENTRY(entry) ((GstClockEntry *)(entry))
#define GST_CLOCK_ENTRY_CLOCK(entry) ((entry)->clock)
@ -87,8 +85,7 @@ GstClockEntryType;
#define GST_CLOCK_ENTRY_INTERVAL(entry) ((entry)->interval)
#define GST_CLOCK_ENTRY_STATUS(entry) ((entry)->status)
struct _GstClockEntry
{
struct _GstClockEntry {
/* --- protected --- */
GstClock *clock;
GstClockEntryType type;
@ -106,8 +103,7 @@ typedef enum
GST_CLOCK_EARLY = 2,
GST_CLOCK_ERROR = 3,
GST_CLOCK_UNSUPPORTED = 4
}
GstClockReturn;
} GstClockReturn;
typedef enum
{
@ -117,13 +113,11 @@ typedef enum
GST_CLOCK_FLAG_CAN_DO_PERIODIC_ASYNC = (1 << 4),
GST_CLOCK_FLAG_CAN_SET_RESOLUTION = (1 << 5),
GST_CLOCK_FLAG_CAN_SET_SPEED = (1 << 6)
}
GstClockFlags;
} GstClockFlags;
#define GST_CLOCK_FLAGS(clock) (GST_CLOCK(clock)->flags)
struct _GstClock
{
struct _GstClock {
GstObject object;
GstClockFlags flags;
@ -146,61 +140,65 @@ struct _GstClock
gpointer _gst_reserved[GST_PADDING];
};
struct _GstClockClass
{
struct _GstClockClass {
GstObjectClass parent_class;
/* vtable */
gdouble (*change_speed) (GstClock * clock,
gdouble (*change_speed) (GstClock *clock,
gdouble oldspeed, gdouble newspeed);
gdouble (*get_speed) (GstClock * clock);
guint64 (*change_resolution) (GstClock * clock, guint64 old_resolution,
gdouble (*get_speed) (GstClock *clock);
guint64 (*change_resolution) (GstClock *clock, guint64 old_resolution,
guint64 new_resolution);
guint64 (*get_resolution) (GstClock * clock);
guint64 (*get_resolution) (GstClock *clock);
GstClockTime (*get_internal_time) (GstClock * clock);
GstClockTime (*get_internal_time) (GstClock *clock);
/* waiting on an ID */
GstClockEntryStatus (*wait) (GstClock * clock, GstClockEntry * entry);
GstClockEntryStatus (*wait_async) (GstClock * clock, GstClockEntry * entry);
void (*unschedule) (GstClock * clock, GstClockEntry * entry);
void (*unlock) (GstClock * clock, GstClockEntry * entry);
GstClockEntryStatus (*wait) (GstClock *clock, GstClockEntry *entry);
GstClockEntryStatus (*wait_async) (GstClock *clock, GstClockEntry *entry);
void (*unschedule) (GstClock *clock, GstClockEntry *entry);
void (*unlock) (GstClock *clock, GstClockEntry *entry);
gpointer _gst_reserved[GST_PADDING];
};
GType gst_clock_get_type (void);
gdouble gst_clock_set_speed (GstClock * clock, gdouble speed);
gdouble gst_clock_get_speed (GstClock * clock);
gdouble gst_clock_set_speed (GstClock *clock, gdouble speed);
gdouble gst_clock_get_speed (GstClock *clock);
guint64 gst_clock_set_resolution (GstClock * clock, guint64 resolution);
guint64 gst_clock_get_resolution (GstClock * clock);
guint64 gst_clock_set_resolution (GstClock *clock, guint64 resolution);
guint64 gst_clock_get_resolution (GstClock *clock);
void gst_clock_set_active (GstClock * clock, gboolean active);
gboolean gst_clock_is_active (GstClock * clock);
void gst_clock_reset (GstClock * clock);
gboolean gst_clock_handle_discont (GstClock * clock, guint64 time);
void gst_clock_set_active (GstClock *clock, gboolean active);
gboolean gst_clock_is_active (GstClock *clock);
void gst_clock_reset (GstClock *clock);
gboolean gst_clock_handle_discont (GstClock *clock, guint64 time);
GstClockTime gst_clock_get_time (GstClock * clock);
GstClockTime gst_clock_get_event_time (GstClock * clock);
GstClockTime gst_clock_get_time (GstClock *clock);
GstClockTime gst_clock_get_event_time (GstClock *clock);
GstClockID gst_clock_get_next_id (GstClock * clock);
GstClockID gst_clock_get_next_id (GstClock *clock);
/* creating IDs that can be used to get notifications */
GstClockID gst_clock_new_single_shot_id (GstClock * clock, GstClockTime time);
GstClockID gst_clock_new_periodic_id (GstClock * clock,
GstClockTime start_time, GstClockTime interval);
GstClockID gst_clock_new_single_shot_id (GstClock *clock,
GstClockTime time);
GstClockID gst_clock_new_periodic_id (GstClock *clock,
GstClockTime start_time,
GstClockTime interval);
/* operations on IDs */
GstClockTime gst_clock_id_get_time (GstClockID id);
GstClockReturn gst_clock_id_wait (GstClockID id, GstClockTimeDiff * jitter);
GstClockReturn gst_clock_id_wait (GstClockID id,
GstClockTimeDiff *jitter);
GstClockReturn gst_clock_id_wait_async (GstClockID id,
GstClockCallback func, gpointer user_data);
GstClockCallback func,
gpointer user_data);
void gst_clock_id_unschedule (GstClockID id);
void gst_clock_id_unlock (GstClockID id);
void gst_clock_id_free (GstClockID id);
G_END_DECLS
#endif /* __GST_CLOCK_H__ */

View file

@ -26,8 +26,10 @@
#define __GSTCOMPAT_H__
G_BEGIN_DECLS
#ifndef GST_DISABLE_DEPRECATED
/* 0.5.2 changes */
/* element functions */
#define gst_element_connect(a,b) gst_element_link(a,b)
#define gst_element_connect_pads(a,b,c,d) \
@ -41,6 +43,7 @@ G_BEGIN_DECLS
#define gst_element_connect_filtered(a,b,c) \
gst_element_link_filtered(a,b,c)
#define gst_element_disconnect(a,b) gst_element_unlink(a,b)
/* pad functions */
#define gst_pad_connect(a,b) gst_pad_link(a,b)
#define gst_pad_connect_filtered(a,b,c) gst_pad_link_filtered(a,b,c)
@ -48,8 +51,10 @@ G_BEGIN_DECLS
#define gst_pad_proxy_connect(a,b) gst_pad_proxy_link(a,b)
#define gst_pad_set_connect_function(a,b) \
gst_pad_set_link_function(a,b)
/* pad macros */
#define GST_PAD_IS_CONNECTED(a) GST_PAD_IS_LINKED(a)
/* pad enums */
#define GST_PAD_CONNECT_REFUSED GST_PAD_LINK_REFUSED
#define GST_PAD_CONNECT_DELAYED GST_PAD_LINK_DELAYED
@ -67,4 +72,5 @@ typedef GstPadLinkFunction GstPadConnectFunction;
#endif /* not GST_DISABLE_DEPRECATED */
G_END_DECLS
#endif /* __GSTCOMPAT_H__ */

View file

@ -24,18 +24,19 @@
#ifndef __GST_CPU_H__
#define __GST_CPU_H__
G_BEGIN_DECLS typedef enum
{
GST_CPU_FLAG_MMX = (1 << 0),
GST_CPU_FLAG_SSE = (1 << 1),
GST_CPU_FLAG_MMXEXT = (1 << 2),
GST_CPU_FLAG_3DNOW = (1 << 3)
}
GstCPUFlags;
G_BEGIN_DECLS
typedef enum {
GST_CPU_FLAG_MMX = (1<<0),
GST_CPU_FLAG_SSE = (1<<1),
GST_CPU_FLAG_MMXEXT = (1<<2),
GST_CPU_FLAG_3DNOW = (1<<3)
} GstCPUFlags;
void _gst_cpu_initialize (gboolean useopt);
GstCPUFlags gst_cpu_get_flags (void);
G_END_DECLS
#endif /* __GST_CPU_H__ */

View file

@ -29,21 +29,25 @@
#include <gst/gsttypes.h>
G_BEGIN_DECLS
/* type */
#define GST_DATA(data) ((GstData*)(data))
#define GST_DATA_TYPE(data) (GST_DATA(data)->type)
/* flags */
#define GST_DATA_FLAGS(data) (GST_DATA(data)->flags)
#define GST_DATA_FLAG_SHIFT(flag) (1<<(flag))
#define GST_DATA_FLAG_IS_SET(data,flag) (GST_DATA_FLAGS(data) & (1<<(flag)))
#define GST_DATA_FLAG_SET(data,flag) G_STMT_START{ (GST_DATA_FLAGS(data) |= (1<<(flag))); }G_STMT_END
#define GST_DATA_FLAG_UNSET(data,flag) G_STMT_START{ (GST_DATA_FLAGS(data) &= ~(1<<(flag))); }G_STMT_END
/* Macros for the GType */
#define GST_TYPE_DATA (gst_data_get_type ())
typedef struct _GstData GstData;
typedef void (*GstDataFreeFunction) (GstData * data);
typedef GstData *(*GstDataCopyFunction) (const GstData * data);
typedef void (*GstDataFreeFunction) (GstData *data);
typedef GstData* (*GstDataCopyFunction) (const GstData *data);
typedef enum
{
@ -51,8 +55,7 @@ typedef enum
/* insert more */
GST_DATA_FLAG_LAST = 8
}
GstDataFlags;
} GstDataFlags;
/* refcount */
#define GST_DATA_REFCOUNT(data) ((GST_DATA(data))->refcount)
@ -63,8 +66,7 @@ GstDataFlags;
#define GST_DATA_FREE_FUNC(data) (GST_DATA(data)->free)
struct _GstData
{
struct _GstData {
GType type;
/* refcounting */
@ -80,25 +82,25 @@ struct _GstData
};
/* function used by subclasses only */
void gst_data_init (GstData * data, GType type, guint16 flags,
GstDataFreeFunction free, GstDataCopyFunction copy);
void gst_data_dispose (GstData * data);
void gst_data_copy_into (const GstData * data, GstData * target);
void gst_data_init (GstData *data, GType type, guint16 flags,
GstDataFreeFunction free,
GstDataCopyFunction copy);
void gst_data_dispose (GstData *data);
void gst_data_copy_into (const GstData *data, GstData *target);
/* basic operations on data */
GstData *gst_data_copy (const GstData * data);
gboolean gst_data_is_writable (GstData * data);
GstData *gst_data_copy_on_write (GstData * data);
GstData* gst_data_copy (const GstData *data);
gboolean gst_data_is_writable (GstData *data);
GstData* gst_data_copy_on_write (GstData *data);
/* reference counting */
GstData *gst_data_ref (GstData * data);
GstData *gst_data_ref_by_count (GstData * data, gint count);
void gst_data_unref (GstData * data);
GstData* gst_data_ref (GstData* data);
GstData* gst_data_ref_by_count (GstData* data, gint count);
void gst_data_unref (GstData* data);
/* GType for GstData */
GType
gst_data_get_type (void)
G_GNUC_CONST;
GType gst_data_get_type (void) G_GNUC_CONST;
G_END_DECLS
#endif /* __GST_DATA_H__ */

View file

@ -35,3 +35,4 @@ G_STMT_START { \
G_STMT_START { \
gst_atomic_int_destroy (&(data)->refcount); \
} G_STMT_END;

View file

@ -34,11 +34,12 @@
#include <gst/gstindex.h>
#include <gst/gsttag.h>
G_BEGIN_DECLS typedef struct _GstElementDetails GstElementDetails;
G_BEGIN_DECLS
typedef struct _GstElementDetails GstElementDetails;
/* FIXME: need translatable stuff in here (how handle in registry)? */
struct _GstElementDetails
{
struct _GstElementDetails {
gchar *longname; /* long, english name */
gchar *klass; /* type of element, as hierarchy */
gchar *description; /* insights of one form or another */
@ -46,7 +47,6 @@ struct _GstElementDetails
gpointer _gst_reserved[GST_PADDING];
};
#define GST_ELEMENT_DETAILS(longname,klass,description,author) \
{ longname, klass, description, author, GST_PADDING_INIT }
#define GST_IS_ELEMENT_DETAILS(details) ( \
@ -98,8 +98,7 @@ extern GType _gst_element_type;
#endif
#endif
typedef enum
{
typedef enum {
/* element is complex (for some def.) and generally require a cothread */
GST_ELEMENT_COMPLEX = GST_OBJECT_FLAG_LAST,
/* input and output pads aren't directly coupled to each other
@ -129,8 +128,7 @@ typedef enum
/* use some padding for future expansion */
GST_ELEMENT_FLAG_LAST = GST_OBJECT_FLAG_LAST + 16
}
GstElementFlags;
} GstElementFlags;
#define GST_ELEMENT_IS_THREAD_SUGGESTED(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_THREAD_SUGGESTED))
#define GST_ELEMENT_IS_EVENT_AWARE(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_EVENT_AWARE))
@ -156,12 +154,11 @@ GstElementFlags;
typedef struct _GstElementFactory GstElementFactory;
typedef struct _GstElementFactoryClass GstElementFactoryClass;
typedef void (*GstElementLoopFunction) (GstElement * element);
typedef void (*GstElementPreRunFunction) (GstElement * element);
typedef void (*GstElementPostRunFunction) (GstElement * element);
typedef void (*GstElementLoopFunction) (GstElement *element);
typedef void (*GstElementPreRunFunction) (GstElement *element);
typedef void (*GstElementPostRunFunction) (GstElement *element);
struct _GstElement
{
struct _GstElement {
GstObject object;
/* element state and scheduling */
@ -193,8 +190,7 @@ struct _GstElement
gpointer _gst_reserved[GST_PADDING];
};
struct _GstElementClass
{
struct _GstElementClass {
GstObjectClass parent_class;
/* the element details */
@ -208,71 +204,62 @@ struct _GstElementClass
gint numpadtemplates;
/* signal callbacks */
void (*state_change) (GstElement * element, GstElementState old,
GstElementState state);
void (*new_pad) (GstElement * element, GstPad * pad);
void (*pad_removed) (GstElement * element, GstPad * pad);
void (*error) (GstElement * element, GstElement * source, GError * error,
gchar * debug);
void (*eos) (GstElement * element);
void (*found_tag) (GstElement * element, GstElement * source,
const GstTagList * tag_list);
void (*state_change) (GstElement *element, GstElementState old, GstElementState state);
void (*new_pad) (GstElement *element, GstPad *pad);
void (*pad_removed) (GstElement *element, GstPad *pad);
void (*error) (GstElement *element, GstElement *source, GError *error, gchar *debug);
void (*eos) (GstElement *element);
void (*found_tag) (GstElement *element, GstElement *source, const GstTagList *tag_list);
/* local pointers for get/set */
void (*set_property) (GObject * object, guint prop_id, const GValue * value,
GParamSpec * pspec);
void (*get_property) (GObject * object, guint prop_id, GValue * value,
GParamSpec * pspec);
void (*set_property) (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec);
void (*get_property) (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec);
/* vtable */
gboolean (*release_locks) (GstElement * element);
/* vtable*/
gboolean (*release_locks) (GstElement *element);
/* query/convert/events functions */
const GstEventMask *(*get_event_masks) (GstElement * element);
gboolean (*send_event) (GstElement * element, GstEvent * event);
const GstFormat *(*get_formats) (GstElement * element);
gboolean (*convert) (GstElement * element,
const GstEventMask* (*get_event_masks) (GstElement *element);
gboolean (*send_event) (GstElement *element, GstEvent *event);
const GstFormat* (*get_formats) (GstElement *element);
gboolean (*convert) (GstElement *element,
GstFormat src_format, gint64 src_value,
GstFormat * dest_format, gint64 * dest_value);
const GstQueryType *(*get_query_types) (GstElement * element);
gboolean (*query) (GstElement * element, GstQueryType type,
GstFormat * format, gint64 * value);
GstFormat *dest_format, gint64 *dest_value);
const GstQueryType* (*get_query_types) (GstElement *element);
gboolean (*query) (GstElement *element, GstQueryType type,
GstFormat *format, gint64 *value);
/* change the element state */
GstElementStateReturn (*change_state) (GstElement * element);
GstElementStateReturn (*change_state) (GstElement *element);
/* request/release pads */
GstPad *(*request_new_pad) (GstElement * element, GstPadTemplate * templ,
const gchar * name);
void (*release_pad) (GstElement * element, GstPad * pad);
GstPad* (*request_new_pad) (GstElement *element, GstPadTemplate *templ, const gchar* name);
void (*release_pad) (GstElement *element, GstPad *pad);
/* set/get clocks */
GstClock *(*get_clock) (GstElement * element);
void (*set_clock) (GstElement * element, GstClock * clock);
GstClock* (*get_clock) (GstElement *element);
void (*set_clock) (GstElement *element, GstClock *clock);
/* index */
GstIndex *(*get_index) (GstElement * element);
void (*set_index) (GstElement * element, GstIndex * index);
GstIndex* (*get_index) (GstElement *element);
void (*set_index) (GstElement *element, GstIndex *index);
GstElementStateReturn (*set_state) (GstElement * element,
GstElementState state);
GstElementStateReturn (*set_state) (GstElement *element, GstElementState state);
gpointer _gst_reserved[GST_PADDING];
};
void gst_element_class_add_pad_template (GstElementClass * klass,
GstPadTemplate * templ);
void gst_element_class_install_std_props (GstElementClass * klass,
const gchar * first_name, ...);
void gst_element_class_set_details (GstElementClass * klass,
const GstElementDetails * details);
void gst_element_class_add_pad_template (GstElementClass *klass, GstPadTemplate *templ);
void gst_element_class_install_std_props (GstElementClass *klass,
const gchar *first_name, ...);
void gst_element_class_set_details (GstElementClass *klass,
const GstElementDetails *details);
#define gst_element_default_deep_notify gst_object_default_deep_notify
void gst_element_default_error (GObject * object, GstObject * orig,
GError * error, gchar * debug);
void gst_element_default_error (GObject *object, GstObject *orig, GError *error, gchar *debug);
GType gst_element_get_type (void);
void gst_element_set_loop_function (GstElement * element,
void gst_element_set_loop_function (GstElement *element,
GstElementLoopFunction loop);
#define gst_element_get_name(elem) gst_object_get_name(GST_OBJECT(elem))
@ -281,129 +268,125 @@ void gst_element_set_loop_function (GstElement * element,
#define gst_element_set_parent(elem,parent) gst_object_set_parent(GST_OBJECT(elem),parent)
/* threadsafe versions of their g_object_* counterparts */
void gst_element_set (GstElement * element, const gchar * first_property_name,
...);
void gst_element_get (GstElement * element, const gchar * first_property_name,
...);
void gst_element_set_valist (GstElement * element,
const gchar * first_property_name, va_list var_args);
void gst_element_get_valist (GstElement * element,
const gchar * first_property_name, va_list var_args);
void gst_element_set_property (GstElement * element,
const gchar * property_name, const GValue * value);
void gst_element_get_property (GstElement * element,
const gchar * property_name, GValue * value);
void gst_element_set (GstElement *element, const gchar *first_property_name, ...);
void gst_element_get (GstElement *element, const gchar *first_property_name, ...);
void gst_element_set_valist (GstElement *element, const gchar *first_property_name,
va_list var_args);
void gst_element_get_valist (GstElement *element, const gchar *first_property_name,
va_list var_args);
void gst_element_set_property (GstElement *element, const gchar *property_name,
const GValue *value);
void gst_element_get_property (GstElement *element, const gchar *property_name,
GValue *value);
void gst_element_enable_threadsafe_properties (GstElement * element);
void gst_element_disable_threadsafe_properties (GstElement * element);
void gst_element_set_pending_properties (GstElement * element);
void gst_element_enable_threadsafe_properties (GstElement *element);
void gst_element_disable_threadsafe_properties (GstElement *element);
void gst_element_set_pending_properties (GstElement *element);
/* clocking */
gboolean gst_element_requires_clock (GstElement * element);
gboolean gst_element_provides_clock (GstElement * element);
GstClock *gst_element_get_clock (GstElement * element);
void gst_element_set_clock (GstElement * element, GstClock * clock);
GstClockReturn gst_element_clock_wait (GstElement * element,
GstClockID id, GstClockTimeDiff * jitter);
GstClockTime gst_element_get_time (GstElement * element);
gboolean gst_element_wait (GstElement * element, GstClockTime timestamp);
void gst_element_set_time (GstElement * element, GstClockTime time);
void gst_element_adjust_time (GstElement * element, GstClockTimeDiff diff);
gboolean gst_element_requires_clock (GstElement *element);
gboolean gst_element_provides_clock (GstElement *element);
GstClock* gst_element_get_clock (GstElement *element);
void gst_element_set_clock (GstElement *element, GstClock *clock);
GstClockReturn gst_element_clock_wait (GstElement *element,
GstClockID id, GstClockTimeDiff *jitter);
GstClockTime gst_element_get_time (GstElement *element);
gboolean gst_element_wait (GstElement *element, GstClockTime timestamp);
void gst_element_set_time (GstElement *element, GstClockTime time);
void gst_element_adjust_time (GstElement *element, GstClockTimeDiff diff);
/* indexs */
gboolean gst_element_is_indexable (GstElement * element);
void gst_element_set_index (GstElement * element, GstIndex * index);
GstIndex *gst_element_get_index (GstElement * element);
gboolean gst_element_is_indexable (GstElement *element);
void gst_element_set_index (GstElement *element, GstIndex *index);
GstIndex* gst_element_get_index (GstElement *element);
gboolean gst_element_release_locks (GstElement * element);
gboolean gst_element_release_locks (GstElement *element);
void gst_element_yield (GstElement * element);
gboolean gst_element_interrupt (GstElement * element);
void gst_element_set_scheduler (GstElement * element, GstScheduler * sched);
GstScheduler *gst_element_get_scheduler (GstElement * element);
void gst_element_yield (GstElement *element);
gboolean gst_element_interrupt (GstElement *element);
void gst_element_set_scheduler (GstElement *element, GstScheduler *sched);
GstScheduler* gst_element_get_scheduler (GstElement *element);
void gst_element_add_pad (GstElement * element, GstPad * pad);
void gst_element_remove_pad (GstElement * element, GstPad * pad);
GstPad *gst_element_add_ghost_pad (GstElement * element, GstPad * pad,
const gchar * name);
void gst_element_remove_ghost_pad (GstElement * element, GstPad * pad);
void gst_element_add_pad (GstElement *element, GstPad *pad);
void gst_element_remove_pad (GstElement *element, GstPad *pad);
GstPad * gst_element_add_ghost_pad (GstElement *element, GstPad *pad, const gchar *name);
void gst_element_remove_ghost_pad (GstElement *element, GstPad *pad);
GstPad *gst_element_get_pad (GstElement * element, const gchar * name);
GstPad *gst_element_get_static_pad (GstElement * element, const gchar * name);
GstPad *gst_element_get_request_pad (GstElement * element, const gchar * name);
void gst_element_release_request_pad (GstElement * element, GstPad * pad);
GstPad* gst_element_get_pad (GstElement *element, const gchar *name);
GstPad* gst_element_get_static_pad (GstElement *element, const gchar *name);
GstPad* gst_element_get_request_pad (GstElement *element, const gchar *name);
void gst_element_release_request_pad (GstElement *element, GstPad *pad);
G_CONST_RETURN GList *gst_element_get_pad_list (GstElement * element);
GstPad *gst_element_get_compatible_pad (GstElement * element, GstPad * pad);
GstPad *gst_element_get_compatible_pad_filtered (GstElement * element,
GstPad * pad, const GstCaps * filtercaps);
G_CONST_RETURN GList*
gst_element_get_pad_list (GstElement *element);
GstPad* gst_element_get_compatible_pad (GstElement *element, GstPad *pad);
GstPad* gst_element_get_compatible_pad_filtered (GstElement *element, GstPad *pad,
const GstCaps *filtercaps);
GstPadTemplate *gst_element_class_get_pad_template (GstElementClass *
element_class, const gchar * name);
GList *gst_element_class_get_pad_template_list (GstElementClass *
element_class);
GstPadTemplate *gst_element_get_pad_template (GstElement * element,
const gchar * name);
GList *gst_element_get_pad_template_list (GstElement * element);
GstPadTemplate *gst_element_get_compatible_pad_template (GstElement * element,
GstPadTemplate * compattempl);
GstPadTemplate* gst_element_class_get_pad_template (GstElementClass *element_class, const gchar *name);
GList* gst_element_class_get_pad_template_list (GstElementClass *element_class);
GstPadTemplate* gst_element_get_pad_template (GstElement *element, const gchar *name);
GList* gst_element_get_pad_template_list (GstElement *element);
GstPadTemplate* gst_element_get_compatible_pad_template (GstElement *element, GstPadTemplate *compattempl);
gboolean gst_element_link (GstElement * src, GstElement * dest);
gboolean gst_element_link_many (GstElement * element_1,
GstElement * element_2, ...);
gboolean gst_element_link_filtered (GstElement * src, GstElement * dest,
const GstCaps * filtercaps);
void gst_element_unlink (GstElement * src, GstElement * dest);
void gst_element_unlink_many (GstElement * element_1,
GstElement * element_2, ...);
gboolean gst_element_link (GstElement *src, GstElement *dest);
gboolean gst_element_link_many (GstElement *element_1,
GstElement *element_2, ...);
gboolean gst_element_link_filtered (GstElement *src, GstElement *dest,
const GstCaps *filtercaps);
void gst_element_unlink (GstElement *src, GstElement *dest);
void gst_element_unlink_many (GstElement *element_1,
GstElement *element_2, ...);
gboolean gst_element_link_pads (GstElement * src, const gchar * srcpadname,
GstElement * dest, const gchar * destpadname);
gboolean gst_element_link_pads_filtered (GstElement * src,
const gchar * srcpadname, GstElement * dest, const gchar * destpadname,
const GstCaps * filtercaps);
void gst_element_unlink_pads (GstElement * src, const gchar * srcpadname,
GstElement * dest, const gchar * destpadname);
gboolean gst_element_link_pads (GstElement *src, const gchar *srcpadname,
GstElement *dest, const gchar *destpadname);
gboolean gst_element_link_pads_filtered (GstElement *src, const gchar *srcpadname,
GstElement *dest, const gchar *destpadname,
const GstCaps *filtercaps);
void gst_element_unlink_pads (GstElement *src, const gchar *srcpadname,
GstElement *dest, const gchar *destpadname);
G_CONST_RETURN GstEventMask *gst_element_get_event_masks (GstElement * element);
gboolean gst_element_send_event (GstElement * element, GstEvent * event);
gboolean gst_element_seek (GstElement * element, GstSeekType seek_type,
G_CONST_RETURN GstEventMask*
gst_element_get_event_masks (GstElement *element);
gboolean gst_element_send_event (GstElement *element, GstEvent *event);
gboolean gst_element_seek (GstElement *element, GstSeekType seek_type,
guint64 offset);
G_CONST_RETURN GstQueryType *gst_element_get_query_types (GstElement * element);
gboolean gst_element_query (GstElement * element, GstQueryType type,
GstFormat * format, gint64 * value);
G_CONST_RETURN GstFormat *gst_element_get_formats (GstElement * element);
gboolean gst_element_convert (GstElement * element,
G_CONST_RETURN GstQueryType*
gst_element_get_query_types (GstElement *element);
gboolean gst_element_query (GstElement *element, GstQueryType type,
GstFormat *format, gint64 *value);
G_CONST_RETURN GstFormat*
gst_element_get_formats (GstElement *element);
gboolean gst_element_convert (GstElement *element,
GstFormat src_format, gint64 src_value,
GstFormat * dest_format, gint64 * dest_value);
GstFormat *dest_format, gint64 *dest_value);
void gst_element_found_tags (GstElement * element, const GstTagList * tag_list);
void gst_element_found_tags_for_pad (GstElement * element, GstPad * pad,
GstClockTime timestamp, GstTagList * list);
void gst_element_found_tags (GstElement *element, const GstTagList *tag_list);
void gst_element_found_tags_for_pad (GstElement *element, GstPad *pad, GstClockTime timestamp,
GstTagList *list);
void gst_element_set_eos (GstElement * element);
void gst_element_set_eos (GstElement *element);
gchar *_gst_element_error_printf (const gchar * format, ...);
void gst_element_error_full (GstElement * element, GQuark domain, gint code,
gchar * message, gchar * debug,
const gchar * file, const gchar * function, gint line);
gchar * _gst_element_error_printf (const gchar *format, ...);
void gst_element_error_full (GstElement *element, GQuark domain, gint code,
gchar *message, gchar *debug,
const gchar *file, const gchar *function, gint line);
gboolean gst_element_is_locked_state (GstElement * element);
void gst_element_set_locked_state (GstElement * element, gboolean locked_state);
gboolean gst_element_sync_state_with_parent (GstElement * element);
gboolean gst_element_is_locked_state (GstElement *element);
void gst_element_set_locked_state (GstElement *element, gboolean locked_state);
gboolean gst_element_sync_state_with_parent (GstElement *element);
GstElementState gst_element_get_state (GstElement * element);
GstElementStateReturn gst_element_set_state (GstElement * element,
GstElementState state);
GstElementState gst_element_get_state (GstElement *element);
GstElementStateReturn gst_element_set_state (GstElement *element, GstElementState state);
void gst_element_wait_state_change (GstElement * element);
void gst_element_wait_state_change (GstElement *element);
G_CONST_RETURN gchar *gst_element_state_get_name (GstElementState state);
G_CONST_RETURN gchar* gst_element_state_get_name (GstElementState state);
GstElementFactory *gst_element_get_factory (GstElement * element);
GstElementFactory* gst_element_get_factory (GstElement *element);
GstBin *gst_element_get_managing_bin (GstElement * element);
GstBin* gst_element_get_managing_bin (GstElement *element);
/*
@ -420,28 +403,26 @@ GstBin *gst_element_get_managing_bin (GstElement * element);
#define GST_IS_ELEMENT_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_ELEMENT_FACTORY))
#define GST_IS_ELEMENT_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_ELEMENT_FACTORY))
struct _GstElementFactory
{
struct _GstElementFactory {
GstPluginFeature parent;
GType type; /* unique GType of element or 0 if not loaded */
GstElementDetails details;
GList *padtemplates;
GList * padtemplates;
guint numpadtemplates;
/* URI interface stuff */
guint uri_type;
gchar **uri_protocols;
gchar ** uri_protocols;
GList *interfaces; /* interfaces this element implements */
GList * interfaces; /* interfaces this element implements */
gpointer _gst_reserved[GST_PADDING];
};
struct _GstElementFactoryClass
{
struct _GstElementFactoryClass {
GstPluginFeatureClass parent_class;
gpointer _gst_reserved[GST_PADDING];
@ -449,40 +430,39 @@ struct _GstElementFactoryClass
GType gst_element_factory_get_type (void);
gboolean gst_element_register (GstPlugin * plugin,
const gchar * elementname, guint rank, GType type);
gboolean gst_element_register (GstPlugin *plugin,
const gchar *elementname,
guint rank,
GType type);
GstElementFactory *gst_element_factory_find (const gchar * name);
GType gst_element_factory_get_element_type (GstElementFactory * factory);
G_CONST_RETURN gchar *gst_element_factory_get_longname (GstElementFactory *
factory);
G_CONST_RETURN gchar *gst_element_factory_get_klass (GstElementFactory *
factory);
G_CONST_RETURN gchar *gst_element_factory_get_description (GstElementFactory *
factory);
G_CONST_RETURN gchar *gst_element_factory_get_author (GstElementFactory *
factory);
guint gst_element_factory_get_num_pad_templates (GstElementFactory * factory);
G_CONST_RETURN GList *gst_element_factory_get_pad_templates (GstElementFactory *
factory);
guint gst_element_factory_get_uri_type (GstElementFactory * factory);
gchar **gst_element_factory_get_uri_protocols (GstElementFactory * factory);
GstElementFactory * gst_element_factory_find (const gchar *name);
GType gst_element_factory_get_element_type (GstElementFactory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_longname (GstElementFactory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_klass (GstElementFactory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_description (GstElementFactory *factory);
G_CONST_RETURN gchar * gst_element_factory_get_author (GstElementFactory *factory);
guint gst_element_factory_get_num_pad_templates (GstElementFactory *factory);
G_CONST_RETURN GList * gst_element_factory_get_pad_templates (GstElementFactory *factory);
guint gst_element_factory_get_uri_type (GstElementFactory *factory);
gchar ** gst_element_factory_get_uri_protocols (GstElementFactory *factory);
GstElement *gst_element_factory_create (GstElementFactory * factory,
const gchar * name);
GstElement *gst_element_factory_make (const gchar * factoryname,
const gchar * name);
GstElement* gst_element_factory_create (GstElementFactory *factory,
const gchar *name);
GstElement* gst_element_factory_make (const gchar *factoryname, const gchar *name);
gboolean gst_element_factory_can_src_caps (GstElementFactory * factory,
const GstCaps * caps);
gboolean gst_element_factory_can_sink_caps (GstElementFactory * factory,
const GstCaps * caps);
gboolean gst_element_factory_can_src_caps (GstElementFactory *factory,
const GstCaps *caps);
gboolean gst_element_factory_can_sink_caps (GstElementFactory *factory,
const GstCaps *caps);
void __gst_element_factory_add_pad_template (GstElementFactory * elementfactory,
GstPadTemplate * templ);
void __gst_element_factory_add_interface (GstElementFactory * elementfactory,
const gchar * interfacename);
void __gst_element_factory_add_pad_template (GstElementFactory *elementfactory,
GstPadTemplate *templ);
void __gst_element_factory_add_interface (GstElementFactory *elementfactory,
const gchar *interfacename);
G_END_DECLS
#endif /* __GST_ELEMENT_H__ */

View file

@ -21,6 +21,7 @@
#define __GST_ERROR_H__
G_BEGIN_DECLS
/*
* we define FIXME error domains:
* GST_CORE_ERROR
@ -30,12 +31,12 @@ G_BEGIN_DECLS
*
* Check GError API docs for rationale for naming.
*/
/* Core errors are anything that can go wrong in or using
* the core GStreamer library */
/* FIXME: should we divide in numerical blocks so we can easily add
for example PAD errors later ? */
typedef enum
{
typedef enum {
GST_CORE_ERROR_FAILED = 1,
GST_CORE_ERROR_TOO_LAZY,
GST_CORE_ERROR_NOT_IMPLEMENTED,
@ -54,8 +55,7 @@ GstCoreError;
/* Library errors are for errors from the library being used by elements
initializing, closing, ... */
typedef enum
{
typedef enum {
GST_LIBRARY_ERROR_FAILED = 1,
GST_LIBRARY_ERROR_TOO_LAZY,
GST_LIBRARY_ERROR_INIT,
@ -69,8 +69,7 @@ GstLibraryError;
/* Resource errors are for anything external used by an element:
memory, files, network connections, process space, ...
They're typically used by source and sink elements */
typedef enum
{
typedef enum {
GST_RESOURCE_ERROR_FAILED = 1,
GST_RESOURCE_ERROR_TOO_LAZY,
GST_RESOURCE_ERROR_NOT_FOUND,
@ -91,8 +90,7 @@ GstResourceError;
/* Stream errors are for anything related to the stream being processed:
format errors, media type errors, ...
They're typically used by decoders, demuxers, converters, ... */
typedef enum
{
typedef enum {
GST_STREAM_ERROR_FAILED = 1,
GST_STREAM_ERROR_TOO_LAZY,
GST_STREAM_ERROR_NOT_IMPLEMENTED,
@ -119,11 +117,14 @@ GstStreamError;
#define GST_ERROR_SYSTEM ("system error: %s", g_strerror (errno))
GType gst_g_error_get_type (void);
gchar *gst_error_get_message (GQuark domain, gint code);
gchar * gst_error_get_message (GQuark domain, gint code);
GQuark gst_stream_error_quark (void);
GQuark gst_core_error_quark (void);
GQuark gst_resource_error_quark (void);
GQuark gst_library_error_quark (void);
G_END_DECLS
#endif /* __GST_ERROR_H__ */

View file

@ -30,10 +30,11 @@
#include <gst/gstobject.h>
#include <gst/gststructure.h>
G_BEGIN_DECLS extern GType _gst_event_type;
G_BEGIN_DECLS
typedef enum
{
extern GType _gst_event_type;
typedef enum {
GST_EVENT_UNKNOWN = 0,
GST_EVENT_EOS = 1,
GST_EVENT_FLUSH = 2,
@ -51,8 +52,7 @@ typedef enum
GST_EVENT_INTERRUPT = 14,
GST_EVENT_NAVIGATION = 15,
GST_EVENT_TAG = 16
}
GstEventType;
} GstEventType;
#define GST_EVENT_TRACE_NAME "GstEvent"
@ -73,21 +73,18 @@ GstEventType;
#define GST_SEEK_METHOD_MASK 0x000f0000
#define GST_SEEK_FLAGS_MASK 0xfff00000
typedef enum
{
typedef enum {
GST_EVENT_FLAG_NONE = 0,
/* indicates negative rates are supported */
GST_RATE_FLAG_NEGATIVE = (1 << 1)
}
GstEventFlag;
} GstEventFlag;
typedef struct
{
GstEventType type;
GstEventFlag flags;
}
GstEventMask;
} GstEventMask;
#ifndef GST_DISABLE_DEPRECATED
#ifdef G_HAVE_ISO_VARARGS
@ -116,8 +113,7 @@ functionname (type pad) \
#endif
/* seek events, extends GstEventFlag */
typedef enum
{
typedef enum {
/* | with some format */
/* | with one of these */
GST_SEEK_METHOD_CUR = (1 << (GST_SEEK_METHOD_SHIFT + 0)),
@ -131,22 +127,18 @@ typedef enum
GST_SEEK_FLAG_KEY_UNIT = (1 << (GST_SEEK_FLAGS_SHIFT + 2)),
GST_SEEK_FLAG_SEGMENT_LOOP = (1 << (GST_SEEK_FLAGS_SHIFT + 3))
}
GstSeekType;
} GstSeekType;
typedef enum
{
typedef enum {
GST_SEEK_CERTAIN,
GST_SEEK_FUZZY
}
GstSeekAccuracy;
} GstSeekAccuracy;
typedef struct
{
GstFormat format;
gint64 value;
}
GstFormatValue;
} GstFormatValue;
#define GST_EVENT_SEEK_TYPE(event) (GST_EVENT(event)->event_data.seek.type)
#define GST_EVENT_SEEK_FORMAT(event) (GST_EVENT_SEEK_TYPE(event) & GST_SEEK_FORMAT_MASK)
@ -165,49 +157,36 @@ GstFormatValue;
#define GST_EVENT_RATE_VALUE(event) (GST_EVENT(event)->event_data.rate.value)
struct _GstEvent
{
struct _GstEvent {
GstData data;
GstEventType type;
guint64 timestamp;
GstObject *src;
union
{
struct
{
union {
struct {
GstSeekType type;
gint64 offset;
gint64 endoffset;
GstSeekAccuracy accuracy;
}
seek;
struct
{
} seek;
struct {
GstFormatValue offsets[8];
gint noffsets;
gboolean new_media;
}
discont;
struct
{
} discont;
struct {
GstFormat format;
gint64 value;
}
size;
struct
{
} size;
struct {
gdouble value;
}
rate;
struct
{
} rate;
struct {
GstStructure *structure;
}
structure;
}
event_data;
} structure;
} event_data;
gpointer _gst_reserved[GST_PADDING];
};
@ -215,7 +194,7 @@ struct _GstEvent
void _gst_event_initialize (void);
GType gst_event_get_type (void);
GstEvent *gst_event_new (GstEventType type);
GstEvent* gst_event_new (GstEventType type);
/* refcounting */
#define gst_event_ref(ev) GST_EVENT (gst_data_ref (GST_DATA (ev)))
@ -224,26 +203,24 @@ GstEvent *gst_event_new (GstEventType type);
/* copy buffer */
#define gst_event_copy(ev) GST_EVENT (gst_data_copy (GST_DATA (ev)))
gboolean gst_event_masks_contains (const GstEventMask * masks,
GstEventMask * mask);
gboolean gst_event_masks_contains (const GstEventMask *masks, GstEventMask *mask);
/* seek event */
GstEvent *gst_event_new_seek (GstSeekType type, gint64 offset);
GstEvent* gst_event_new_seek (GstSeekType type, gint64 offset);
GstEvent *gst_event_new_segment_seek (GstSeekType type, gint64 start,
gint64 stop);
GstEvent* gst_event_new_segment_seek (GstSeekType type, gint64 start, gint64 stop);
/* size events */
GstEvent *gst_event_new_size (GstFormat format, gint64 value);
GstEvent* gst_event_new_size (GstFormat format, gint64 value);
/* discontinous event */
GstEvent *gst_event_new_discontinuous (gboolean new_media,
GstEvent* gst_event_new_discontinuous (gboolean new_media,
GstFormat format1, ...);
GstEvent *gst_event_new_discontinuous_valist (gboolean new_media,
GstFormat format1, va_list var_args);
gboolean gst_event_discont_get_value (GstEvent * event, GstFormat format,
gint64 * value);
GstEvent* gst_event_new_discontinuous_valist (gboolean new_media,
GstFormat format1,
va_list var_args);
gboolean gst_event_discont_get_value (GstEvent *event, GstFormat format, gint64 *value);
#define gst_event_new_filler() gst_event_new(GST_EVENT_FILLER)
@ -251,4 +228,5 @@ gboolean gst_event_discont_get_value (GstEvent * event, GstFormat format,
#define gst_event_new_flush() gst_event_new(GST_EVENT_FLUSH)
G_END_DECLS
#endif /* __GST_EVENT_H__ */

View file

@ -23,10 +23,11 @@
#include <glib.h>
G_BEGIN_DECLS
typedef gboolean (*GstFilterFunc) (gpointer obj, gpointer user_data);
GList *gst_filter_run (const GList * list, GstFilterFunc func, gboolean first,
gpointer user_data);
typedef gboolean (*GstFilterFunc) (gpointer obj, gpointer user_data);
GList* gst_filter_run (const GList *list, GstFilterFunc func, gboolean first, gpointer user_data);
G_END_DECLS
#endif /* __GST_FILTER_H_ */

View file

@ -27,16 +27,16 @@
#include <glib.h>
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
GST_FORMAT_UNDEFINED = 0, /* must be first in list */
GST_FORMAT_DEFAULT = 1, /* samples for audio, frames/fields for video */
GST_FORMAT_BYTES = 2,
GST_FORMAT_TIME = 3,
GST_FORMAT_BUFFERS = 4,
GST_FORMAT_PERCENT = 5
}
GstFormat;
} GstFormat;
/* a percentage is always relative to 1000000 */
#define GST_FORMAT_PERCENT_MAX G_GINT64_CONSTANT (1000000)
@ -78,15 +78,19 @@ functionname (type object) \
void _gst_format_initialize (void);
/* register a new format */
GstFormat gst_format_register (const gchar * nick, const gchar * description);
GstFormat gst_format_get_by_nick (const gchar * nick);
GstFormat gst_format_register (const gchar *nick,
const gchar *description);
GstFormat gst_format_get_by_nick (const gchar *nick);
/* check if a format is in an array of formats */
gboolean gst_formats_contains (const GstFormat * formats, GstFormat format);
gboolean gst_formats_contains (const GstFormat *formats, GstFormat format);
/* query for format details */
G_CONST_RETURN GstFormatDefinition *gst_format_get_details (GstFormat format);
G_CONST_RETURN GList *gst_format_get_definitions (void);
G_CONST_RETURN GstFormatDefinition*
gst_format_get_details (GstFormat format);
G_CONST_RETURN GList*
gst_format_get_definitions (void);
G_END_DECLS
#endif /* __GST_FORMAT_H__ */

View file

@ -29,42 +29,39 @@
#include <gst/gstpluginfeature.h>
G_BEGIN_DECLS
#define GST_TYPE_INDEX (gst_index_get_type ())
#define GST_INDEX(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_INDEX, GstIndex))
#define GST_IS_INDEX(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_INDEX))
#define GST_INDEX_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_INDEX, GstIndexClass))
#define GST_IS_INDEX_CLASS(klass) (GST_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_INDEX))
#define GST_INDEX_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_INDEX, GstIndexClass))
#define GST_TYPE_INDEX_ENTRY (gst_index_entry_get_type())
typedef struct _GstIndexEntry GstIndexEntry;
typedef struct _GstIndexGroup GstIndexGroup;
typedef struct _GstIndex GstIndex;
typedef struct _GstIndexClass GstIndexClass;
typedef enum
{
typedef enum {
GST_INDEX_UNKNOWN,
GST_INDEX_CERTAIN,
GST_INDEX_FUZZY
}
GstIndexCertainty;
} GstIndexCertainty;
typedef enum
{
typedef enum {
GST_INDEX_ENTRY_ID,
GST_INDEX_ENTRY_ASSOCIATION,
GST_INDEX_ENTRY_OBJECT,
GST_INDEX_ENTRY_FORMAT
}
GstIndexEntryType;
} GstIndexEntryType;
typedef enum
{
typedef enum {
GST_INDEX_LOOKUP_EXACT,
GST_INDEX_LOOKUP_BEFORE,
GST_INDEX_LOOKUP_AFTER
}
GstIndexLookupMethod;
} GstIndexLookupMethod;
#define GST_INDEX_NASSOCS(entry) ((entry)->data.assoc.nassocs)
#define GST_INDEX_ASSOC_FLAGS(entry) ((entry)->data.assoc.flags)
@ -73,21 +70,18 @@ GstIndexLookupMethod;
typedef struct _GstIndexAssociation GstIndexAssociation;
struct _GstIndexAssociation
{
struct _GstIndexAssociation {
GstFormat format;
gint64 value;
};
typedef enum
{
typedef enum {
GST_ASSOCIATION_FLAG_NONE = 0,
GST_ASSOCIATION_FLAG_KEY_UNIT = (1 << 0),
/* new flags should start here */
GST_ASSOCIATION_FLAG_LAST = (1 << 8)
}
GstAssocFlags;
} GstAssocFlags;
#define GST_INDEX_FORMAT_FORMAT(entry) ((entry)->data.format.format)
#define GST_INDEX_FORMAT_KEY(entry) ((entry)->data.format.key)
@ -96,44 +90,33 @@ GstAssocFlags;
#define GST_INDEX_ID_DESCRIPTION(entry) ((entry)->data.id.description)
struct _GstIndexEntry
{
struct _GstIndexEntry {
GstIndexEntryType type;
gint id;
union
{
struct
{
union {
struct {
gchar *description;
}
id;
struct
{
} id;
struct {
gint nassocs;
GstIndexAssociation * assocs;
GstIndexAssociation
*assocs;
GstAssocFlags flags;
}
assoc;
struct
{
} assoc;
struct {
gchar *key;
GType type;
gpointer object;
}
object;
struct
{
} object;
struct {
GstFormat format;
gchar *key;
}
format;
}
data;
} format;
} data;
};
struct _GstIndexGroup
{
struct _GstIndexGroup {
/* unique ID of group in index */
gint groupnum;
@ -147,32 +130,30 @@ struct _GstIndexGroup
gint peergroup;
};
typedef gboolean (*GstIndexFilter) (GstIndex * index, GstIndexEntry * entry);
typedef gboolean (*GstIndexFilter) (GstIndex *index,
GstIndexEntry *entry);
typedef enum
{
typedef enum {
GST_INDEX_RESOLVER_CUSTOM,
GST_INDEX_RESOLVER_GTYPE,
GST_INDEX_RESOLVER_PATH
}
GstIndexResolverMethod;
} GstIndexResolverMethod;
typedef gboolean (*GstIndexResolver) (GstIndex * index,
GstObject * writer, gchar ** writer_string, gpointer user_data);
typedef enum
{
typedef gboolean (*GstIndexResolver) (GstIndex *index,
GstObject *writer,
gchar **writer_string,
gpointer user_data);
typedef enum {
GST_INDEX_WRITABLE = GST_OBJECT_FLAG_LAST,
GST_INDEX_READABLE,
GST_INDEX_FLAG_LAST = GST_OBJECT_FLAG_LAST + 8
}
GstIndexFlags;
} GstIndexFlags;
#define GST_INDEX_IS_READABLE(obj) (GST_FLAG_IS_SET (obj, GST_INDEX_READABLE))
#define GST_INDEX_IS_WRITABLE(obj) (GST_FLAG_IS_SET (obj, GST_INDEX_WRITABLE))
struct _GstIndex
{
struct _GstIndex {
GstObject object;
GList *groups;
@ -192,69 +173,69 @@ struct _GstIndex
gpointer _gst_reserved[GST_PADDING];
};
struct _GstIndexClass
{
struct _GstIndexClass {
GstObjectClass parent_class;
gboolean (*get_writer_id) (GstIndex * index, gint * writer_id,
gchar * writer_string);
gboolean (*get_writer_id) (GstIndex *index, gint *writer_id, gchar *writer_string);
void (*commit) (GstIndex * index, gint id);
void (*commit) (GstIndex *index, gint id);
/* abstract methods */
void (*add_entry) (GstIndex * index, GstIndexEntry * entry);
void (*add_entry) (GstIndex *index, GstIndexEntry *entry);
GstIndexEntry *(*get_assoc_entry) (GstIndex * index, gint id,
GstIndexEntry* (*get_assoc_entry) (GstIndex *index, gint id,
GstIndexLookupMethod method, GstAssocFlags flags,
GstFormat format, gint64 value,
GCompareDataFunc func, gpointer user_data);
GCompareDataFunc func,
gpointer user_data);
/* signals */
void (*entry_added) (GstIndex * index, GstIndexEntry * entry);
void (*entry_added) (GstIndex *index, GstIndexEntry *entry);
gpointer _gst_reserved[GST_PADDING];
};
GType gst_index_get_type (void);
GstIndex *gst_index_new (void);
void gst_index_commit (GstIndex * index, gint id);
GstIndex* gst_index_new (void);
void gst_index_commit (GstIndex *index, gint id);
gint gst_index_get_group (GstIndex * index);
gint gst_index_new_group (GstIndex * index);
gboolean gst_index_set_group (GstIndex * index, gint groupnum);
gint gst_index_get_group (GstIndex *index);
gint gst_index_new_group (GstIndex *index);
gboolean gst_index_set_group (GstIndex *index, gint groupnum);
void gst_index_set_certainty (GstIndex * index, GstIndexCertainty certainty);
GstIndexCertainty gst_index_get_certainty (GstIndex * index);
void gst_index_set_certainty (GstIndex *index,
GstIndexCertainty certainty);
GstIndexCertainty gst_index_get_certainty (GstIndex *index);
void gst_index_set_filter (GstIndex * index,
void gst_index_set_filter (GstIndex *index,
GstIndexFilter filter, gpointer user_data);
void gst_index_set_resolver (GstIndex * index,
void gst_index_set_resolver (GstIndex *index,
GstIndexResolver resolver, gpointer user_data);
gboolean gst_index_get_writer_id (GstIndex * index, GstObject * writer,
gint * id);
gboolean gst_index_get_writer_id (GstIndex *index, GstObject *writer, gint *id);
GstIndexEntry *gst_index_add_format (GstIndex * index, gint id,
GstFormat format);
GstIndexEntry *gst_index_add_association (GstIndex * index, gint id,
GstAssocFlags flags, GstFormat format, gint64 value, ...);
GstIndexEntry *gst_index_add_object (GstIndex * index, gint id, gchar * key,
GstIndexEntry* gst_index_add_format (GstIndex *index, gint id, GstFormat format);
GstIndexEntry* gst_index_add_association (GstIndex *index, gint id, GstAssocFlags flags,
GstFormat format, gint64 value, ...);
GstIndexEntry* gst_index_add_object (GstIndex *index, gint id, gchar *key,
GType type, gpointer object);
GstIndexEntry *gst_index_add_id (GstIndex * index, gint id,
gchar * description);
GstIndexEntry* gst_index_add_id (GstIndex *index, gint id,
gchar *description);
GstIndexEntry *gst_index_get_assoc_entry (GstIndex * index, gint id,
GstIndexEntry* gst_index_get_assoc_entry (GstIndex *index, gint id,
GstIndexLookupMethod method, GstAssocFlags flags,
GstFormat format, gint64 value);
GstIndexEntry *gst_index_get_assoc_entry_full (GstIndex * index, gint id,
GstIndexEntry* gst_index_get_assoc_entry_full (GstIndex *index, gint id,
GstIndexLookupMethod method, GstAssocFlags flags,
GstFormat format, gint64 value, GCompareDataFunc func, gpointer user_data);
GstFormat format, gint64 value,
GCompareDataFunc func,
gpointer user_data);
/* working with index entries */
GType gst_index_entry_get_type (void);
GstIndexEntry *gst_index_entry_copy (GstIndexEntry * entry);
void gst_index_entry_free (GstIndexEntry * entry);
gboolean gst_index_entry_assoc_map (GstIndexEntry * entry,
GstFormat format, gint64 * value);
GstIndexEntry * gst_index_entry_copy (GstIndexEntry *entry);
void gst_index_entry_free (GstIndexEntry *entry);
gboolean gst_index_entry_assoc_map (GstIndexEntry *entry,
GstFormat format, gint64 *value);
/*
* creating indexs
*
@ -269,8 +250,7 @@ gboolean gst_index_entry_assoc_map (GstIndexEntry * entry,
typedef struct _GstIndexFactory GstIndexFactory;
typedef struct _GstIndexFactoryClass GstIndexFactoryClass;
struct _GstIndexFactory
{
struct _GstIndexFactory {
GstPluginFeature feature;
gchar *longdesc; /* long description of the index (well, don't overdo it..) */
@ -279,8 +259,7 @@ struct _GstIndexFactory
gpointer _gst_reserved[GST_PADDING];
};
struct _GstIndexFactoryClass
{
struct _GstIndexFactoryClass {
GstPluginFeatureClass parent;
gpointer _gst_reserved[GST_PADDING];
@ -288,14 +267,15 @@ struct _GstIndexFactoryClass
GType gst_index_factory_get_type (void);
GstIndexFactory *gst_index_factory_new (const gchar * name,
const gchar * longdesc, GType type);
void gst_index_factory_destroy (GstIndexFactory * factory);
GstIndexFactory* gst_index_factory_new (const gchar *name,
const gchar *longdesc, GType type);
void gst_index_factory_destroy (GstIndexFactory *factory);
GstIndexFactory *gst_index_factory_find (const gchar * name);
GstIndexFactory* gst_index_factory_find (const gchar *name);
GstIndex *gst_index_factory_create (GstIndexFactory * factory);
GstIndex *gst_index_factory_make (const gchar * name);
GstIndex* gst_index_factory_create (GstIndexFactory *factory);
GstIndex* gst_index_factory_make (const gchar *name);
G_END_DECLS
#endif /* __GST_INDEX_H__ */

View file

@ -31,15 +31,16 @@
#include <gst/gstconfig.h>
G_BEGIN_DECLS
/*
* GStreamer's debugging subsystem is an easy way to get information about what
* the application is doing.
* It is not meant for programming errors. Use GLibs methods (g_warning and so
* on for that.
*/
/* log levels */
typedef enum
{
typedef enum {
GST_LEVEL_NONE = 0,
GST_LEVEL_ERROR,
GST_LEVEL_WARNING,
@ -48,8 +49,7 @@ G_BEGIN_DECLS
GST_LEVEL_LOG,
/* add more */
GST_LEVEL_COUNT
}
GstDebugLevel;
} GstDebugLevel;
/* we can now override this to be more general in maintainer builds or cvs checkouts */
#ifndef GST_LEVEL_DEFAULT
@ -64,8 +64,7 @@ GstDebugLevel;
* Background color codes:
* 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white
*/
typedef enum
{
typedef enum {
/* colors */
GST_DEBUG_FG_BLACK = 0x0000,
GST_DEBUG_FG_RED = 0x0001,
@ -87,22 +86,20 @@ typedef enum
/* other formats */
GST_DEBUG_BOLD = 0x0100,
GST_DEBUG_UNDERLINE = 0x0200
}
GstDebugColorFlags;
} GstDebugColorFlags;
#define GST_DEBUG_FG_MASK (0x000F)
#define GST_DEBUG_BG_MASK (0x00F0)
#define GST_DEBUG_FORMAT_MASK (0xFF00)
typedef struct _GstDebugCategory GstDebugCategory;
struct _GstDebugCategory
{
/*< private > */
GstAtomicInt *threshold;
struct _GstDebugCategory {
/*< private >*/
GstAtomicInt * threshold;
guint color; /* see defines above */
const gchar *name;
const gchar *description;
const gchar * name;
const gchar * description;
};
/********** some convenience macros for debugging **********/
@ -134,7 +131,10 @@ typedef void (*GstLogFunction) (GstDebugCategory * category,
GstDebugLevel level,
const gchar * file,
const gchar * function,
gint line, GObject * object, GstDebugMessage * message, gpointer data);
gint line,
GObject * object,
GstDebugMessage * message,
gpointer data);
/* Disable this subsystem if no varargs macro can be found.
Use a trick so the core builds the functions nonetheless if it wasn't
@ -154,47 +154,53 @@ void _gst_debug_init (void);
/* note we can't use G_GNUC_PRINTF (7, 8) because gcc chokes on %P, which
* we use for GST_PTR_FORMAT. */
void
gst_debug_log (GstDebugCategory * category,
GstDebugLevel level,
const gchar * file,
const gchar * function,
gint line, GObject * object, const gchar * format, ...)
G_GNUC_NO_INSTRUMENT;
void gst_debug_log_valist (GstDebugCategory * category,
GstDebugLevel level,
const gchar * file,
const gchar * function,
gint line,
GObject * object, const gchar * format, va_list args) G_GNUC_NO_INSTRUMENT;
const gchar *gst_debug_message_get (GstDebugMessage * message);
void gst_debug_log_default (GstDebugCategory * category,
void gst_debug_log (GstDebugCategory * category,
GstDebugLevel level,
const gchar * file,
const gchar * function,
gint line,
GObject * object,
GstDebugMessage * message, gpointer unused) G_GNUC_NO_INSTRUMENT;
const gchar * format,
...) G_GNUC_NO_INSTRUMENT;
void gst_debug_log_valist (GstDebugCategory * category,
GstDebugLevel level,
const gchar * file,
const gchar * function,
gint line,
GObject * object,
const gchar * format,
va_list args) G_GNUC_NO_INSTRUMENT;
G_CONST_RETURN gchar *gst_debug_level_get_name (GstDebugLevel level);
const gchar * gst_debug_message_get (GstDebugMessage * message);
void gst_debug_add_log_function (GstLogFunction func, gpointer data);
guint gst_debug_remove_log_function (GstLogFunction func);
guint gst_debug_remove_log_function_by_data (gpointer data);
void gst_debug_log_default (GstDebugCategory * category,
GstDebugLevel level,
const gchar * file,
const gchar * function,
gint line,
GObject * object,
GstDebugMessage * message,
gpointer unused) G_GNUC_NO_INSTRUMENT;
void gst_debug_set_active (gboolean active);
gboolean gst_debug_is_active (void);
G_CONST_RETURN gchar *
gst_debug_level_get_name (GstDebugLevel level);
void gst_debug_set_colored (gboolean colored);
gboolean gst_debug_is_colored (void);
void gst_debug_add_log_function (GstLogFunction func,
gpointer data);
guint gst_debug_remove_log_function (GstLogFunction func);
guint gst_debug_remove_log_function_by_data (gpointer data);
void gst_debug_set_default_threshold (GstDebugLevel level);
GstDebugLevel gst_debug_get_default_threshold (void);
void gst_debug_set_threshold_for_name (const gchar * name,
void gst_debug_set_active (gboolean active);
gboolean gst_debug_is_active (void);
void gst_debug_set_colored (gboolean colored);
gboolean gst_debug_is_colored (void);
void gst_debug_set_default_threshold (GstDebugLevel level);
GstDebugLevel gst_debug_get_default_threshold (void);
void gst_debug_set_threshold_for_name (const gchar * name,
GstDebugLevel level);
void gst_debug_unset_threshold_for_name (const gchar * name);
void gst_debug_unset_threshold_for_name (const gchar * name);
/**
* GST_DEBUG_CATEGORY:
@ -221,8 +227,9 @@ gst_debug_log (GstDebugCategory * category,
*/
#define GST_DEBUG_CATEGORY_STATIC(cat) static GstDebugCategory *cat = NULL
/* do not use this function, use the macros below */
GstDebugCategory *_gst_debug_category_new (gchar * name,
guint color, gchar * description);
GstDebugCategory *_gst_debug_category_new (gchar * name,
guint color,
gchar * description);
/**
* GST_DEBUG_CATEGORY_INIT:
* @cat: the category to initialize.
@ -263,27 +270,24 @@ gst_debug_log (GstDebugCategory * category,
cat = _gst_debug_category_new (name,color,description); \
}G_STMT_END
void gst_debug_category_free (GstDebugCategory * category);
void gst_debug_category_set_threshold (GstDebugCategory * category,
void gst_debug_category_free (GstDebugCategory * category);
void gst_debug_category_set_threshold (GstDebugCategory * category,
GstDebugLevel level);
void gst_debug_category_reset_threshold (GstDebugCategory * category);
GstDebugLevel gst_debug_category_get_threshold (GstDebugCategory *
category);
G_CONST_RETURN gchar *gst_debug_category_get_name (GstDebugCategory *
category);
guint gst_debug_category_get_color (GstDebugCategory * category);
G_CONST_RETURN gchar *gst_debug_category_get_description (GstDebugCategory
* category);
GSList *gst_debug_get_all_categories (void);
void gst_debug_category_reset_threshold (GstDebugCategory * category);
GstDebugLevel gst_debug_category_get_threshold (GstDebugCategory * category);
G_CONST_RETURN gchar *
gst_debug_category_get_name (GstDebugCategory * category);
guint gst_debug_category_get_color (GstDebugCategory * category);
G_CONST_RETURN gchar *
gst_debug_category_get_description (GstDebugCategory * category);
GSList * gst_debug_get_all_categories (void);
gchar *gst_debug_construct_term_color (guint colorinfo);
gchar * gst_debug_construct_term_color (guint colorinfo);
extern GstDebugCategory *GST_CAT_DEFAULT;
extern GstDebugCategory * GST_CAT_DEFAULT;
/* this symbol may not be used */
extern gboolean __gst_debug_enabled;
extern gboolean __gst_debug_enabled;
#ifdef G_HAVE_ISO_VARARGS
#define GST_CAT_LEVEL_LOG(cat,level,object,...) G_STMT_START{ \
if (__gst_debug_enabled) { \
@ -382,8 +386,10 @@ gst_debug_log (GstDebugCategory * category,
/********** function pointer stuff **********/
void *_gst_debug_register_funcptr (void *ptr, gchar * ptrname);
G_CONST_RETURN gchar *_gst_debug_nameof_funcptr (void *ptr);
void* _gst_debug_register_funcptr (void * ptr,
gchar * ptrname);
G_CONST_RETURN gchar*
_gst_debug_nameof_funcptr (void * ptr);
#define GST_DEBUG_FUNCPTR(ptr) (_gst_debug_register_funcptr((void *)(ptr), #ptr) , ptr)
#define GST_DEBUG_FUNCPTR_NAME(ptr) _gst_debug_nameof_funcptr((void *)ptr)
@ -517,4 +523,5 @@ gst_debug_log (GstDebugCategory * category,
void gst_debug_print_stack_trace (void);
G_END_DECLS
#endif /* __GSTINFO_H__ */

View file

@ -26,6 +26,7 @@
#include <gst/gstelement.h>
G_BEGIN_DECLS
#define GST_TYPE_IMPLEMENTS_INTERFACE \
(gst_implements_interface_get_type ())
#define GST_IMPLEMENTS_INTERFACE(obj) \
@ -41,22 +42,22 @@ G_BEGIN_DECLS
#define GST_IMPLEMENTS_INTERFACE_GET_CLASS(inst) \
(G_TYPE_INSTANCE_GET_INTERFACE ((inst), GST_TYPE_IMPLEMENTS_INTERFACE, \
GstImplementsInterfaceClass))
typedef struct _GstImplementsInterface GstImplementsInterface;
/* This small extra virtual function is here to provide an
* interface functionality on a per-instance basis rather
* than a per-class basis, which is the case for glib.
*/
typedef struct _GstImplementsInterfaceClass
{
typedef struct _GstImplementsInterfaceClass {
GTypeInterface parent;
/* virtual functions */
gboolean (*supported) (GstImplementsInterface * iface, GType iface_type);
gboolean (* supported) (GstImplementsInterface *iface,
GType iface_type);
gpointer _gst_reserved[GST_PADDING];
}
GstImplementsInterfaceClass;
} GstImplementsInterfaceClass;
#define GST_IMPLEMENTS_INTERFACE_CHECK_INSTANCE_CAST(obj, type, cast_t) \
((cast_t *) gst_implements_interface_cast ((obj), (type)))
@ -66,10 +67,13 @@ GstImplementsInterfaceClass;
GType gst_implements_interface_get_type (void);
/* wrapper functions to check for functionality implementation */
gboolean gst_element_implements_interface (GstElement * element,
gboolean gst_element_implements_interface (GstElement *element,
GType iface_type);
gpointer gst_implements_interface_cast (gpointer from, GType type);
gboolean gst_implements_interface_check (gpointer from, GType type);
gpointer gst_implements_interface_cast (gpointer from,
GType type);
gboolean gst_implements_interface_check (gpointer from,
GType type);
G_END_DECLS
#endif /* __GST_IMPLEMENTS_INTERFACE_H__ */

View file

@ -25,7 +25,9 @@
#include <glib.h>
G_BEGIN_DECLS extern const char *g_log_domain_gstreamer;
G_BEGIN_DECLS
extern const char *g_log_domain_gstreamer;
#ifdef G_HAVE_ISO_VARARGS
@ -49,4 +51,5 @@ G_BEGIN_DECLS extern const char *g_log_domain_gstreamer;
#endif
G_END_DECLS
#endif /* __GST_LOG_H__ */

View file

@ -21,12 +21,14 @@
#define __GST_MACROS_H__
G_BEGIN_DECLS
#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ > 4)
# define GST_GNUC_CONSTRUCTOR \
__attribute__ ((constructor))
#else /* !__GNUC__ */
# define GST_GNUC_CONSTRUCTOR
#endif /* !__GNUC__ */
#if defined (__GNUC__) && !defined (GST_IMPLEMENT_INLINES)
# define GST_INLINE_FUNC extern __inline__
# define GST_CAN_INLINE 1
@ -34,5 +36,9 @@ G_BEGIN_DECLS
# define GST_INLINE_FUNC extern
# undef GST_CAN_INLINE
#endif
G_END_DECLS
G_END_DECLS
#endif /* __GST_MACROS_H__ */

View file

@ -22,16 +22,22 @@
#include <glib.h>
G_BEGIN_DECLS typedef struct _GstMemChunk GstMemChunk;
G_BEGIN_DECLS
GstMemChunk *gst_mem_chunk_new (gchar * name,
gint atom_size, gulong area_size, gint type);
typedef struct _GstMemChunk GstMemChunk;
void gst_mem_chunk_destroy (GstMemChunk * mem_chunk);
GstMemChunk* gst_mem_chunk_new (gchar *name,
gint atom_size,
gulong area_size,
gint type);
gpointer gst_mem_chunk_alloc (GstMemChunk * mem_chunk);
gpointer gst_mem_chunk_alloc0 (GstMemChunk * mem_chunk);
void gst_mem_chunk_free (GstMemChunk * mem_chunk, gpointer mem);
void gst_mem_chunk_destroy (GstMemChunk *mem_chunk);
gpointer gst_mem_chunk_alloc (GstMemChunk *mem_chunk);
gpointer gst_mem_chunk_alloc0 (GstMemChunk *mem_chunk);
void gst_mem_chunk_free (GstMemChunk *mem_chunk,
gpointer mem);
G_END_DECLS
#endif /* __GST_MEM_CHUNK_H__ */

View file

@ -30,7 +30,9 @@
#include <gst/gsttypes.h>
G_BEGIN_DECLS extern GType _gst_object_type;
G_BEGIN_DECLS
extern GType _gst_object_type;
#define GST_TYPE_OBJECT (_gst_object_type)
#define GST_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_OBJECT))
@ -51,11 +53,9 @@ typedef enum
GST_FLOATING,
GST_OBJECT_FLAG_LAST = 4
}
GstObjectFlags;
} GstObjectFlags;
struct _GstObject
{
struct _GstObject {
GObject object;
gchar *name;
@ -71,25 +71,23 @@ struct _GstObject
};
/* signal_object is used to signal to the whole class */
struct _GstObjectClass
{
struct _GstObjectClass {
GObjectClass parent_class;
gchar *path_string_separator;
GObject *signal_object;
/* signals */
void (*parent_set) (GstObject * object, GstObject * parent);
void (*parent_unset) (GstObject * object, GstObject * parent);
void (*object_saved) (GstObject * object, xmlNodePtr parent);
void (*deep_notify) (GstObject * object, GstObject * orig,
GParamSpec * pspec);
void (*parent_set) (GstObject *object, GstObject *parent);
void (*parent_unset) (GstObject *object, GstObject *parent);
void (*object_saved) (GstObject *object, xmlNodePtr parent);
void (*deep_notify) (GstObject *object, GstObject *orig, GParamSpec *pspec);
/* functions go here */
void (*destroy) (GstObject * object);
void (*destroy) (GstObject *object);
xmlNodePtr (*save_thyself) (GstObject * object, xmlNodePtr parent);
void (*restore_thyself) (GstObject * object, xmlNodePtr self);
xmlNodePtr (*save_thyself) (GstObject *object, xmlNodePtr parent);
void (*restore_thyself) (GstObject *object, xmlNodePtr self);
gpointer _gst_reserved[GST_PADDING];
};
@ -116,48 +114,54 @@ struct _GstObjectClass
GType gst_object_get_type (void);
/* name routines */
void gst_object_set_name (GstObject * object, const gchar * name);
G_CONST_RETURN gchar *gst_object_get_name (GstObject * object);
void gst_object_set_name (GstObject *object, const gchar *name);
G_CONST_RETURN gchar*
gst_object_get_name (GstObject *object);
/* parentage routines */
void gst_object_set_parent (GstObject * object, GstObject * parent);
GstObject *gst_object_get_parent (GstObject * object);
void gst_object_unparent (GstObject * object);
void gst_object_set_parent (GstObject *object, GstObject *parent);
GstObject* gst_object_get_parent (GstObject *object);
void gst_object_unparent (GstObject *object);
void gst_object_default_deep_notify (GObject * object, GstObject * orig,
GParamSpec * pspec, gchar ** excluded_props);
void gst_object_default_deep_notify (GObject *object, GstObject *orig,
GParamSpec *pspec, gchar **excluded_props);
gboolean gst_object_check_uniqueness (GList * list, const gchar * name);
gboolean gst_object_check_uniqueness (GList *list, const gchar *name);
#ifndef GST_DISABLE_LOADSAVE_REGISTRY
xmlNodePtr gst_object_save_thyself (GstObject * object, xmlNodePtr parent);
void gst_object_restore_thyself (GstObject * object, xmlNodePtr self);
xmlNodePtr gst_object_save_thyself (GstObject *object, xmlNodePtr parent);
void gst_object_restore_thyself (GstObject *object, xmlNodePtr self);
#else
#pragma GCC poison gst_object_save_thyself
#pragma GCC poison gst_object_restore_thyself
#endif
/* refcounting + life cycle */
GstObject *gst_object_ref (GstObject * object);
void gst_object_unref (GstObject * object);
void gst_object_sink (GstObject * object);
GstObject * gst_object_ref (GstObject *object);
void gst_object_unref (GstObject *object);
void gst_object_sink (GstObject *object);
/* replace object pointer */
void gst_object_replace (GstObject ** oldobj, GstObject * newobj);
void gst_object_replace (GstObject **oldobj, GstObject *newobj);
/* printing out the 'path' of the object */
gchar *gst_object_get_path_string (GstObject * object);
gchar * gst_object_get_path_string (GstObject *object);
guint gst_class_signal_connect (GstObjectClass * klass,
const gchar * name, gpointer func, gpointer func_data);
guint gst_class_signal_connect (GstObjectClass *klass,
const gchar *name,
gpointer func,
gpointer func_data);
#ifndef GST_DISABLE_LOADSAVE_REGISTRY
void gst_class_signal_emit_by_name (GstObject * object,
const gchar * name, xmlNodePtr self);
void gst_class_signal_emit_by_name (GstObject *object,
const gchar *name,
xmlNodePtr self);
#else
#pragma GCC poison gst_class_signal_emit_by_name
#endif
G_END_DECLS
#endif /* __GST_OBJECT_H__ */

View file

@ -34,7 +34,9 @@
#include <gst/gstquery.h>
G_BEGIN_DECLS extern GType _gst_pad_type;
G_BEGIN_DECLS
extern GType _gst_pad_type;
extern GType _gst_real_pad_type;
extern GType _gst_ghost_pad_type;
@ -76,20 +78,17 @@ typedef struct _GstRealPad GstRealPad;
typedef struct _GstRealPadClass GstRealPadClass;
typedef struct _GstGhostPad GstGhostPad;
typedef struct _GstGhostPadClass GstGhostPadClass;
/*typedef struct _GstPadTemplate GstPadTemplate;*/
/*typedef struct _GstPadTemplateClass GstPadTemplateClass;*/
typedef struct _GstStaticPadTemplate GstStaticPadTemplate;
typedef struct _GstPadLink GstPadLink;
typedef enum
{
typedef enum {
GST_PAD_LINK_REFUSED = -1,
GST_PAD_LINK_DELAYED = 0,
GST_PAD_LINK_OK = 1,
GST_PAD_LINK_DONE = 2
}
GstPadLinkReturn;
} GstPadLinkReturn;
#define GST_PAD_LINK_FAILED(ret) (ret < GST_PAD_LINK_OK)
#define GST_PAD_LINK_SUCCESSFUL(ret) (ret >= GST_PAD_LINK_OK)
@ -111,48 +110,41 @@ GstPadLinkReturn;
/* this defines the functions used to chain buffers
* pad is the sink pad (so the same chain function can be used for N pads)
* buf is the buffer being passed */
typedef void (*GstPadChainFunction) (GstPad * pad, GstData * data);
typedef GstData *(*GstPadGetFunction) (GstPad * pad);
typedef gboolean (*GstPadEventFunction) (GstPad * pad, GstEvent * event);
typedef gboolean (*GstPadConvertFunction) (GstPad * pad,
typedef void (*GstPadChainFunction) (GstPad *pad,GstData *data);
typedef GstData* (*GstPadGetFunction) (GstPad *pad);
typedef gboolean (*GstPadEventFunction) (GstPad *pad, GstEvent *event);
typedef gboolean (*GstPadConvertFunction) (GstPad *pad,
GstFormat src_format, gint64 src_value,
GstFormat * dest_format, gint64 * dest_value);
typedef gboolean (*GstPadQueryFunction) (GstPad * pad, GstQueryType type,
GstFormat * format, gint64 * value);
typedef GList *(*GstPadIntLinkFunction) (GstPad * pad);
typedef const GstFormat *(*GstPadFormatsFunction) (GstPad * pad);
typedef const GstEventMask *(*GstPadEventMaskFunction) (GstPad * pad);
typedef const GstQueryType *(*GstPadQueryTypeFunction) (GstPad * pad);
GstFormat *dest_format, gint64 *dest_value);
typedef gboolean (*GstPadQueryFunction) (GstPad *pad, GstQueryType type,
GstFormat *format, gint64 *value);
typedef GList* (*GstPadIntLinkFunction) (GstPad *pad);
typedef const GstFormat* (*GstPadFormatsFunction) (GstPad *pad);
typedef const GstEventMask* (*GstPadEventMaskFunction) (GstPad *pad);
typedef const GstQueryType* (*GstPadQueryTypeFunction) (GstPad *pad);
typedef GstPadLinkReturn (*GstPadLinkFunction) (GstPad * pad,
const GstCaps * caps);
typedef void (*GstPadUnlinkFunction) (GstPad * pad);
typedef GstCaps *(*GstPadGetCapsFunction) (GstPad * pad);
typedef GstCaps *(*GstPadFixateFunction) (GstPad * pad, const GstCaps * caps);
typedef GstBuffer *(*GstPadBufferAllocFunction) (GstPad * pad, guint64 offset,
guint size);
typedef GstPadLinkReturn (*GstPadLinkFunction) (GstPad *pad, const GstCaps *caps);
typedef void (*GstPadUnlinkFunction) (GstPad *pad);
typedef GstCaps* (*GstPadGetCapsFunction) (GstPad *pad);
typedef GstCaps* (*GstPadFixateFunction) (GstPad *pad, const GstCaps *caps);
typedef GstBuffer* (*GstPadBufferAllocFunction) (GstPad *pad, guint64 offset, guint size);
typedef gboolean (*GstPadDispatcherFunction) (GstPad * pad, gpointer data);
typedef gboolean (*GstPadDispatcherFunction) (GstPad *pad, gpointer data);
typedef enum
{
typedef enum {
GST_PAD_UNKNOWN,
GST_PAD_SRC,
GST_PAD_SINK
}
GstPadDirection;
} GstPadDirection;
typedef enum
{
typedef enum {
GST_PAD_DISABLED = GST_OBJECT_FLAG_LAST,
GST_PAD_NEGOTIATING,
GST_PAD_FLAG_LAST = GST_OBJECT_FLAG_LAST + 4
}
GstPadFlags;
} GstPadFlags;
struct _GstPad
{
struct _GstPad {
GstObject object;
gpointer element_private;
@ -162,15 +154,13 @@ struct _GstPad
gpointer _gst_reserved[GST_PADDING];
};
struct _GstPadClass
{
struct _GstPadClass {
GstObjectClass parent_class;
gpointer _gst_reserved[GST_PADDING];
};
struct _GstRealPad
{
struct _GstRealPad {
GstPad pad;
/* the pad capabilities */
@ -216,22 +206,20 @@ struct _GstRealPad
gpointer _gst_reserved[GST_PADDING];
};
struct _GstRealPadClass
{
struct _GstRealPadClass {
GstPadClass parent_class;
/* signal callbacks */
void (*caps_nego_failed) (GstPad * pad, GstCaps * caps);
void (*caps_nego_failed) (GstPad *pad, GstCaps *caps);
void (*linked) (GstPad * pad, GstPad * peer);
void (*unlinked) (GstPad * pad, GstPad * peer);
void (*linked) (GstPad *pad, GstPad *peer);
void (*unlinked) (GstPad *pad, GstPad *peer);
GstPadFixateFunction appfixatefunc;
gpointer _gst_reserved[GST_PADDING];
};
struct _GstGhostPad
{
struct _GstGhostPad {
GstPad pad;
GstRealPad *realpad;
@ -239,8 +227,7 @@ struct _GstGhostPad
gpointer _gst_reserved[GST_PADDING];
};
struct _GstGhostPadClass
{
struct _GstGhostPadClass {
GstPadClass parent_class;
gpointer _gst_reserved[GST_PADDING];
@ -306,31 +293,26 @@ struct _GstGhostPadClass
#define GST_IS_PAD_TEMPLATE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PAD_TEMPLATE))
#define GST_IS_PAD_TEMPLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PAD_TEMPLATE))
typedef enum
{
typedef enum {
GST_PAD_ALWAYS,
GST_PAD_SOMETIMES,
GST_PAD_REQUEST
}
GstPadPresence;
} GstPadPresence;
#define GST_PAD_TEMPLATE_NAME_TEMPLATE(templ) (((GstPadTemplate *)(templ))->name_template)
#define GST_PAD_TEMPLATE_DIRECTION(templ) (((GstPadTemplate *)(templ))->direction)
#define GST_PAD_TEMPLATE_PRESENCE(templ) (((GstPadTemplate *)(templ))->presence)
#define GST_PAD_TEMPLATE_CAPS(templ) (((GstPadTemplate *)(templ))->caps)
typedef enum
{
typedef enum {
GST_PAD_TEMPLATE_FIXED = GST_OBJECT_FLAG_LAST,
GST_PAD_TEMPLATE_FLAG_LAST = GST_OBJECT_FLAG_LAST + 4
}
GstPadTemplateFlags;
} GstPadTemplateFlags;
#define GST_PAD_TEMPLATE_IS_FIXED(templ) (GST_FLAG_IS_SET(templ, GST_PAD_TEMPLATE_FIXED))
struct _GstPadTemplate
{
struct _GstPadTemplate {
GstObject object;
gchar *name_template;
@ -341,18 +323,16 @@ struct _GstPadTemplate
gpointer _gst_reserved[GST_PADDING];
};
struct _GstPadTemplateClass
{
struct _GstPadTemplateClass {
GstObjectClass parent_class;
/* signal callbacks */
void (*pad_created) (GstPadTemplate * templ, GstPad * pad);
void (*pad_created) (GstPadTemplate *templ, GstPad *pad);
gpointer _gst_reserved[GST_PADDING];
};
struct _GstStaticPadTemplate
{
struct _GstStaticPadTemplate {
gchar *name_template;
GstPadDirection direction;
GstPadPresence presence;
@ -373,139 +353,134 @@ GType gst_real_pad_get_type (void);
GType gst_ghost_pad_get_type (void);
/* creating pads */
GstPad *gst_pad_new (const gchar * name, GstPadDirection direction);
GstPad *gst_pad_new_from_template (GstPadTemplate * templ, const gchar * name);
GstPad *gst_pad_custom_new (GType type, const gchar * name,
GstPadDirection direction);
GstPad *gst_pad_custom_new_from_template (GType type, GstPadTemplate * templ,
const gchar * name);
GstPad* gst_pad_new (const gchar *name, GstPadDirection direction);
GstPad* gst_pad_new_from_template (GstPadTemplate *templ, const gchar *name);
GstPad* gst_pad_custom_new (GType type, const gchar *name, GstPadDirection direction);
GstPad* gst_pad_custom_new_from_template (GType type, GstPadTemplate *templ, const gchar *name);
void gst_pad_set_name (GstPad * pad, const gchar * name);
G_CONST_RETURN gchar *gst_pad_get_name (GstPad * pad);
void gst_pad_set_name (GstPad *pad, const gchar *name);
G_CONST_RETURN gchar* gst_pad_get_name (GstPad *pad);
GstPadDirection gst_pad_get_direction (GstPad * pad);
GstPadDirection gst_pad_get_direction (GstPad *pad);
void gst_pad_set_active (GstPad * pad, gboolean active);
gboolean gst_pad_is_active (GstPad * pad);
void gst_pad_set_active (GstPad *pad, gboolean active);
gboolean gst_pad_is_active (GstPad *pad);
void gst_pad_set_element_private (GstPad * pad, gpointer priv);
gpointer gst_pad_get_element_private (GstPad * pad);
void gst_pad_set_element_private (GstPad *pad, gpointer priv);
gpointer gst_pad_get_element_private (GstPad *pad);
void gst_pad_set_parent (GstPad * pad, GstElement * parent);
GstElement *gst_pad_get_parent (GstPad * pad);
GstElement *gst_pad_get_real_parent (GstPad * pad);
void gst_pad_set_parent (GstPad *pad, GstElement *parent);
GstElement* gst_pad_get_parent (GstPad *pad);
GstElement* gst_pad_get_real_parent (GstPad *pad);
GstScheduler *gst_pad_get_scheduler (GstPad * pad);
GstScheduler* gst_pad_get_scheduler (GstPad *pad);
void gst_pad_add_ghost_pad (GstPad * pad, GstPad * ghostpad);
void gst_pad_remove_ghost_pad (GstPad * pad, GstPad * ghostpad);
GList *gst_pad_get_ghost_pad_list (GstPad * pad);
void gst_pad_add_ghost_pad (GstPad *pad, GstPad *ghostpad);
void gst_pad_remove_ghost_pad (GstPad *pad, GstPad *ghostpad);
GList* gst_pad_get_ghost_pad_list (GstPad *pad);
GstPadTemplate *gst_pad_get_pad_template (GstPad * pad);
GstPadTemplate* gst_pad_get_pad_template (GstPad *pad);
void gst_pad_set_bufferalloc_function (GstPad * pad,
GstPadBufferAllocFunction bufferalloc);
GstBuffer *gst_pad_alloc_buffer (GstPad * pad, guint64 offset, gint size);
void gst_pad_set_bufferalloc_function (GstPad *pad, GstPadBufferAllocFunction bufferalloc);
GstBuffer* gst_pad_alloc_buffer (GstPad *pad, guint64 offset, gint size);
/* data passing setup functions */
void gst_pad_set_chain_function (GstPad * pad, GstPadChainFunction chain);
void gst_pad_set_get_function (GstPad * pad, GstPadGetFunction get);
void gst_pad_set_event_function (GstPad * pad, GstPadEventFunction event);
void gst_pad_set_event_mask_function (GstPad * pad,
GstPadEventMaskFunction mask_func);
G_CONST_RETURN GstEventMask *gst_pad_get_event_masks (GstPad * pad);
G_CONST_RETURN GstEventMask *gst_pad_get_event_masks_default (GstPad * pad);
void gst_pad_set_chain_function (GstPad *pad, GstPadChainFunction chain);
void gst_pad_set_get_function (GstPad *pad, GstPadGetFunction get);
void gst_pad_set_event_function (GstPad *pad, GstPadEventFunction event);
void gst_pad_set_event_mask_function (GstPad *pad, GstPadEventMaskFunction mask_func);
G_CONST_RETURN GstEventMask*
gst_pad_get_event_masks (GstPad *pad);
G_CONST_RETURN GstEventMask*
gst_pad_get_event_masks_default (GstPad *pad);
/* pad links */
void gst_pad_set_link_function (GstPad * pad, GstPadLinkFunction link);
gboolean gst_pad_can_link (GstPad * srcpad, GstPad * sinkpad);
gboolean gst_pad_can_link_filtered (GstPad * srcpad, GstPad * sinkpad,
const GstCaps * filtercaps);
void gst_pad_set_unlink_function (GstPad * pad, GstPadUnlinkFunction unlink);
void gst_pad_set_link_function (GstPad *pad, GstPadLinkFunction link);
gboolean gst_pad_can_link (GstPad *srcpad, GstPad *sinkpad);
gboolean gst_pad_can_link_filtered (GstPad *srcpad, GstPad *sinkpad, const GstCaps *filtercaps);
void gst_pad_set_unlink_function (GstPad *pad, GstPadUnlinkFunction unlink);
gboolean gst_pad_link (GstPad * srcpad, GstPad * sinkpad);
gboolean gst_pad_link_filtered (GstPad * srcpad, GstPad * sinkpad,
const GstCaps * filtercaps);
void gst_pad_unlink (GstPad * srcpad, GstPad * sinkpad);
gboolean gst_pad_is_linked (GstPad * pad);
gboolean gst_pad_link (GstPad *srcpad, GstPad *sinkpad);
gboolean gst_pad_link_filtered (GstPad *srcpad, GstPad *sinkpad, const GstCaps *filtercaps);
void gst_pad_unlink (GstPad *srcpad, GstPad *sinkpad);
gboolean gst_pad_is_linked (GstPad *pad);
GstPad *gst_pad_get_peer (GstPad * pad);
GstPad* gst_pad_get_peer (GstPad *pad);
/* capsnego functions */
G_CONST_RETURN GstCaps *gst_pad_get_negotiated_caps (GstPad * pad);
gboolean gst_pad_is_negotiated (GstPad * pad);
GstCaps *gst_pad_get_caps (GstPad * pad);
G_CONST_RETURN GstCaps *gst_pad_get_pad_template_caps (GstPad * pad);
GstPadLinkReturn gst_pad_try_set_caps (GstPad * pad, const GstCaps * caps);
GstPadLinkReturn gst_pad_try_set_caps_nonfixed (GstPad * pad,
const GstCaps * caps);
gboolean gst_pad_check_compatibility (GstPad * srcpad, GstPad * sinkpad);
void gst_pad_set_getcaps_function (GstPad * pad, GstPadGetCapsFunction getcaps);
void gst_pad_set_fixate_function (GstPad * pad, GstPadFixateFunction fixate);
GstCaps *gst_pad_proxy_getcaps (GstPad * pad);
GstPadLinkReturn gst_pad_proxy_pad_link (GstPad * pad, const GstCaps * caps);
GstCaps *gst_pad_proxy_fixate (GstPad * pad, const GstCaps * caps);
G_CONST_RETURN GstCaps* gst_pad_get_negotiated_caps (GstPad *pad);
gboolean gst_pad_is_negotiated (GstPad *pad);
GstCaps* gst_pad_get_caps (GstPad *pad);
G_CONST_RETURN GstCaps* gst_pad_get_pad_template_caps (GstPad *pad);
GstPadLinkReturn gst_pad_try_set_caps (GstPad *pad, const GstCaps *caps);
GstPadLinkReturn gst_pad_try_set_caps_nonfixed (GstPad *pad, const GstCaps *caps);
gboolean gst_pad_check_compatibility (GstPad *srcpad, GstPad *sinkpad);
void gst_pad_set_getcaps_function (GstPad *pad, GstPadGetCapsFunction getcaps);
void gst_pad_set_fixate_function (GstPad *pad, GstPadFixateFunction fixate);
GstCaps * gst_pad_proxy_getcaps (GstPad *pad);
GstPadLinkReturn gst_pad_proxy_pad_link (GstPad *pad, const GstCaps *caps);
GstCaps * gst_pad_proxy_fixate (GstPad *pad, const GstCaps *caps);
#ifndef GST_DISABLE_DEPRECATED
GstPadLinkReturn gst_pad_proxy_link (GstPad * pad, const GstCaps * caps);
GstPadLinkReturn gst_pad_proxy_link (GstPad *pad, const GstCaps *caps);
#endif
gboolean gst_pad_set_explicit_caps (GstPad * pad, const GstCaps * caps);
void gst_pad_use_explicit_caps (GstPad * pad);
gboolean gst_pad_relink_filtered (GstPad * srcpad, GstPad * sinkpad,
const GstCaps * filtercaps);
gboolean gst_pad_set_explicit_caps (GstPad *pad, const GstCaps *caps);
void gst_pad_use_explicit_caps (GstPad *pad);
gboolean gst_pad_relink_filtered (GstPad *srcpad, GstPad *sinkpad, const GstCaps *filtercaps);
#ifndef GST_DISABLE_DEPRECATED
gboolean gst_pad_perform_negotiate (GstPad * srcpad, GstPad * sinkpad);
gboolean gst_pad_perform_negotiate (GstPad *srcpad, GstPad *sinkpad);
#endif
GstPadLinkReturn gst_pad_renegotiate (GstPad * pad);
void gst_pad_unnegotiate (GstPad * pad);
gboolean gst_pad_try_relink_filtered (GstPad * srcpad, GstPad * sinkpad,
const GstCaps * filtercaps);
GstCaps *gst_pad_get_allowed_caps (GstPad * pad);
void gst_pad_caps_change_notify (GstPad * pad);
GstPadLinkReturn gst_pad_renegotiate (GstPad *pad);
void gst_pad_unnegotiate (GstPad *pad);
gboolean gst_pad_try_relink_filtered (GstPad *srcpad, GstPad *sinkpad, const GstCaps *filtercaps);
GstCaps* gst_pad_get_allowed_caps (GstPad *pad);
void gst_pad_caps_change_notify (GstPad *pad);
gboolean gst_pad_recover_caps_error (GstPad * pad, const GstCaps * allowed);
gboolean gst_pad_recover_caps_error (GstPad *pad, const GstCaps *allowed);
/* data passing functions */
void gst_pad_push (GstPad * pad, GstData * data);
GstData *gst_pad_pull (GstPad * pad);
gboolean gst_pad_send_event (GstPad * pad, GstEvent * event);
gboolean gst_pad_event_default (GstPad * pad, GstEvent * event);
GstPad *gst_pad_selectv (GList * padlist);
GstPad *gst_pad_select (GstPad * pad, ...);
GstPad *gst_pad_select_valist (GstPad * pad, va_list varargs);
void gst_pad_push (GstPad *pad, GstData *data);
GstData* gst_pad_pull (GstPad *pad);
gboolean gst_pad_send_event (GstPad *pad, GstEvent *event);
gboolean gst_pad_event_default (GstPad *pad, GstEvent *event);
GstPad* gst_pad_selectv (GList *padlist);
GstPad* gst_pad_select (GstPad *pad, ...);
GstPad* gst_pad_select_valist (GstPad *pad, va_list varargs);
/* convert/query/format functions */
void gst_pad_set_formats_function (GstPad * pad, GstPadFormatsFunction formats);
G_CONST_RETURN GstFormat *gst_pad_get_formats (GstPad * pad);
G_CONST_RETURN GstFormat *gst_pad_get_formats_default (GstPad * pad);
void gst_pad_set_formats_function (GstPad *pad,
GstPadFormatsFunction formats);
G_CONST_RETURN GstFormat*
gst_pad_get_formats (GstPad *pad);
G_CONST_RETURN GstFormat*
gst_pad_get_formats_default (GstPad *pad);
void gst_pad_set_convert_function (GstPad * pad, GstPadConvertFunction convert);
gboolean gst_pad_convert (GstPad * pad,
void gst_pad_set_convert_function (GstPad *pad, GstPadConvertFunction convert);
gboolean gst_pad_convert (GstPad *pad,
GstFormat src_format, gint64 src_value,
GstFormat * dest_format, gint64 * dest_value);
gboolean gst_pad_convert_default (GstPad * pad,
GstFormat *dest_format, gint64 *dest_value);
gboolean gst_pad_convert_default (GstPad *pad,
GstFormat src_format, gint64 src_value,
GstFormat * dest_format, gint64 * dest_value);
GstFormat *dest_format, gint64 *dest_value);
void gst_pad_set_query_function (GstPad * pad, GstPadQueryFunction query);
void gst_pad_set_query_type_function (GstPad * pad,
GstPadQueryTypeFunction type_func);
G_CONST_RETURN GstQueryType *gst_pad_get_query_types (GstPad * pad);
G_CONST_RETURN GstQueryType *gst_pad_get_query_types_default (GstPad * pad);
gboolean gst_pad_query (GstPad * pad, GstQueryType type,
GstFormat * format, gint64 * value);
gboolean gst_pad_query_default (GstPad * pad, GstQueryType type,
GstFormat * format, gint64 * value);
void gst_pad_set_query_function (GstPad *pad, GstPadQueryFunction query);
void gst_pad_set_query_type_function (GstPad *pad, GstPadQueryTypeFunction type_func);
G_CONST_RETURN GstQueryType*
gst_pad_get_query_types (GstPad *pad);
G_CONST_RETURN GstQueryType*
gst_pad_get_query_types_default (GstPad *pad);
gboolean gst_pad_query (GstPad *pad, GstQueryType type,
GstFormat *format, gint64 *value);
gboolean gst_pad_query_default (GstPad *pad, GstQueryType type,
GstFormat *format, gint64 *value);
void gst_pad_set_internal_link_function (GstPad * pad,
GstPadIntLinkFunction intlink);
GList *gst_pad_get_internal_links (GstPad * pad);
GList *gst_pad_get_internal_links_default (GstPad * pad);
void gst_pad_set_internal_link_function (GstPad *pad, GstPadIntLinkFunction intlink);
GList* gst_pad_get_internal_links (GstPad *pad);
GList* gst_pad_get_internal_links_default (GstPad *pad);
/* misc helper functions */
gboolean gst_pad_dispatcher (GstPad * pad, GstPadDispatcherFunction dispatch,
gboolean gst_pad_dispatcher (GstPad *pad, GstPadDispatcherFunction dispatch,
gpointer data);
#define gst_pad_add_probe(pad, probe) \
@ -514,28 +489,31 @@ gboolean gst_pad_dispatcher (GstPad * pad, GstPadDispatcherFunction dispatch,
(gst_probe_dispatcher_remove_probe (&(GST_REAL_PAD (pad)->probedisp), probe))
#ifndef GST_DISABLE_LOADSAVE
void gst_pad_load_and_link (xmlNodePtr self, GstObject * parent);
void gst_pad_load_and_link (xmlNodePtr self, GstObject *parent);
#endif
/* ghostpads */
GstPad *gst_ghost_pad_new (const gchar * name, GstPad * pad);
GstPad* gst_ghost_pad_new (const gchar *name, GstPad *pad);
/* templates and factories */
GType gst_pad_template_get_type (void);
GstPadTemplate *gst_pad_template_new (const gchar * name_template,
GstPadDirection direction, GstPadPresence presence, GstCaps * caps);
GstPadTemplate* gst_pad_template_new (const gchar *name_template,
GstPadDirection direction, GstPadPresence presence,
GstCaps *caps);
GstPadTemplate *gst_static_pad_template_get (GstStaticPadTemplate * templ);
const GstCaps *gst_pad_template_get_caps (GstPadTemplate * templ);
const GstCaps *gst_pad_template_get_caps_by_name (GstPadTemplate * templ,
const gchar * name);
GstPadTemplate * gst_static_pad_template_get (GstStaticPadTemplate *templ);
const GstCaps* gst_pad_template_get_caps (GstPadTemplate *templ);
const GstCaps* gst_pad_template_get_caps_by_name (GstPadTemplate *templ, const gchar *name);
#ifndef GST_DISABLE_LOADSAVE
xmlNodePtr gst_ghost_pad_save_thyself (GstPad * pad, xmlNodePtr parent);
xmlNodePtr gst_ghost_pad_save_thyself (GstPad *pad,
xmlNodePtr parent);
#endif
G_END_DECLS
#endif /* __GST_PAD_H__ */

View file

@ -26,9 +26,10 @@
#include <gst/gstbin.h>
G_BEGIN_DECLS
#ifndef GST_DISABLE_PARSE
GQuark gst_parse_error_quark (void);
#ifndef GST_DISABLE_PARSE
GQuark gst_parse_error_quark (void);
#define GST_PARSE_ERROR gst_parse_error_quark ()
typedef enum
@ -40,17 +41,19 @@ typedef enum
GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY,
GST_PARSE_ERROR_EMPTY_BIN,
GST_PARSE_ERROR_EMPTY
}
GstParseError;
} GstParseError;
GstElement *gst_parse_launch (const gchar * pipeline_description,
GError ** error);
GstElement *gst_parse_launchv (const gchar ** argv, GError ** error);
GstElement* gst_parse_launch (const gchar *pipeline_description, GError **error);
GstElement* gst_parse_launchv (const gchar **argv, GError **error);
#else /* GST_DISABLE_PARSE */
#pragma GCC poison gst_parse_launch
#pragma GCC poison gst_parse_launchv
#endif /* GST_DISABLE_PARSE */
G_END_DECLS
G_END_DECLS
#endif /* __GST_PARSE_H__ */

View file

@ -27,32 +27,34 @@
#include <gst/gstbin.h>
G_BEGIN_DECLS
#define GST_TYPE_PIPELINE (gst_pipeline_get_type ())
#define GST_PIPELINE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PIPELINE, GstPipeline))
#define GST_IS_PIPELINE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PIPELINE))
#define GST_PIPELINE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PIPELINE, GstPipelineClass))
#define GST_IS_PIPELINE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PIPELINE))
#define GST_PIPELINE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PIPELINE, GstPipelineClass))
typedef struct _GstPipeline GstPipeline;
typedef struct _GstPipelineClass GstPipelineClass;
struct _GstPipeline
{
struct _GstPipeline {
GstBin bin;
gpointer _gst_reserved[GST_PADDING];
};
struct _GstPipelineClass
{
struct _GstPipelineClass {
GstBinClass parent_class;
gpointer _gst_reserved[GST_PADDING];
};
GType gst_pipeline_get_type (void);
GstElement *gst_pipeline_new (const gchar * name);
GstElement* gst_pipeline_new (const gchar *name);
G_END_DECLS
#endif /* __GST_PIPELINE_H__ */

View file

@ -30,8 +30,9 @@
#include <gst/gstpluginfeature.h>
#include <gst/gstmacros.h>
G_BEGIN_DECLS GQuark gst_plugin_error_quark (void);
G_BEGIN_DECLS
GQuark gst_plugin_error_quark (void);
#define GST_PLUGIN_ERROR gst_plugin_error_quark ()
typedef enum
@ -39,8 +40,7 @@ typedef enum
GST_PLUGIN_ERROR_MODULE,
GST_PLUGIN_ERROR_DEPENDENCIES,
GST_PLUGIN_ERROR_NAME_MISMATCH
}
GstPluginError;
} GstPluginError;
#define GST_PLUGIN(plugin) ((GstPlugin *) (plugin))
@ -48,13 +48,11 @@ typedef struct _GstPlugin GstPlugin;
typedef struct _GstPluginDesc GstPluginDesc;
/* Initialiser function: returns TRUE if plugin initialised successfully */
typedef gboolean (*GstPluginInitFunc) (GstPlugin * plugin);
typedef gboolean (*GstPluginInitFunc) (GstPlugin *plugin);
/* exiting function when plugin is unloaded */
typedef void (*GstPluginExitFunc) (GstPlugin * plugin);
typedef void (*GstPluginExitFunc) (GstPlugin *plugin);
struct _GstPluginDesc
{
struct _GstPluginDesc {
gint major_version; /* major version of core that plugin was compiled for */
gint minor_version; /* minor version of core that plugin was compiled for */
gchar *name; /* unique name of plugin */
@ -69,16 +67,15 @@ struct _GstPluginDesc
gpointer _gst_reserved[GST_PADDING];
};
struct _GstPlugin
{
struct _GstPlugin {
GstPluginDesc desc;
gchar *filename;
GList *features; /* list of features provided */
gchar * filename;
GList * features; /* list of features provided */
gint numfeatures;
gpointer manager; /* managing registry */
GModule *module; /* contains the module if the plugin is loaded */
GModule * module; /* contains the module if the plugin is loaded */
gpointer _gst_reserved[GST_PADDING];
};
@ -122,40 +119,45 @@ _gst_plugin_static_init__ ##init (void) \
/* function for filters */
typedef gboolean (*GstPluginFilter) (GstPlugin * plugin, gpointer user_data);
typedef gboolean (*GstPluginFilter) (GstPlugin *plugin,
gpointer user_data);
#define GST_TYPE_PLUGIN (gst_plugin_get_type())
GType gst_plugin_get_type (void);
void _gst_plugin_initialize (void);
void _gst_plugin_register_static (GstPluginDesc * desc);
void _gst_plugin_register_static (GstPluginDesc *desc);
G_CONST_RETURN gchar *gst_plugin_get_name (GstPlugin * plugin);
G_CONST_RETURN gchar *gst_plugin_get_description (GstPlugin * plugin);
G_CONST_RETURN gchar *gst_plugin_get_filename (GstPlugin * plugin);
G_CONST_RETURN gchar *gst_plugin_get_license (GstPlugin * plugin);
G_CONST_RETURN gchar *gst_plugin_get_package (GstPlugin * plugin);
G_CONST_RETURN gchar *gst_plugin_get_origin (GstPlugin * plugin);
GModule *gst_plugin_get_module (GstPlugin * plugin);
gboolean gst_plugin_is_loaded (GstPlugin * plugin);
G_CONST_RETURN gchar* gst_plugin_get_name (GstPlugin *plugin);
G_CONST_RETURN gchar* gst_plugin_get_description (GstPlugin *plugin);
G_CONST_RETURN gchar* gst_plugin_get_filename (GstPlugin *plugin);
G_CONST_RETURN gchar* gst_plugin_get_license (GstPlugin *plugin);
G_CONST_RETURN gchar* gst_plugin_get_package (GstPlugin *plugin);
G_CONST_RETURN gchar* gst_plugin_get_origin (GstPlugin *plugin);
GModule * gst_plugin_get_module (GstPlugin *plugin);
gboolean gst_plugin_is_loaded (GstPlugin *plugin);
GList *gst_plugin_feature_filter (GstPlugin * plugin,
GstPluginFeatureFilter filter, gboolean first, gpointer user_data);
GList *gst_plugin_list_feature_filter (GList * list,
GstPluginFeatureFilter filter, gboolean first, gpointer user_data);
gboolean gst_plugin_name_filter (GstPlugin * plugin, const gchar * name);
GList* gst_plugin_feature_filter (GstPlugin *plugin,
GstPluginFeatureFilter filter,
gboolean first,
gpointer user_data);
GList* gst_plugin_list_feature_filter (GList *list,
GstPluginFeatureFilter filter,
gboolean first,
gpointer user_data);
gboolean gst_plugin_name_filter (GstPlugin *plugin, const gchar *name);
GList *gst_plugin_get_feature_list (GstPlugin * plugin);
GstPluginFeature *gst_plugin_find_feature (GstPlugin * plugin,
const gchar * name, GType type);
GList* gst_plugin_get_feature_list (GstPlugin *plugin);
GstPluginFeature* gst_plugin_find_feature (GstPlugin *plugin, const gchar *name, GType type);
GstPlugin *gst_plugin_load_file (const gchar * filename, GError ** error);
gboolean gst_plugin_unload_plugin (GstPlugin * plugin);
GstPlugin * gst_plugin_load_file (const gchar *filename, GError** error);
gboolean gst_plugin_unload_plugin (GstPlugin *plugin);
void gst_plugin_add_feature (GstPlugin * plugin, GstPluginFeature * feature);
void gst_plugin_add_feature (GstPlugin *plugin, GstPluginFeature *feature);
/* shortcuts to load from the registry pool */
gboolean gst_plugin_load (const gchar * name);
gboolean gst_library_load (const gchar * name);
gboolean gst_plugin_load (const gchar *name);
gboolean gst_library_load (const gchar *name);
G_END_DECLS
#endif /* __GST_PLUGIN_H__ */

View file

@ -28,21 +28,23 @@
#include <gst/gsttypes.h>
G_BEGIN_DECLS
#define GST_TYPE_PLUGIN_FEATURE (gst_plugin_feature_get_type())
#define GST_PLUGIN_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PLUGIN_FEATURE, GstPluginFeature))
#define GST_IS_PLUGIN_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PLUGIN_FEATURE))
#define GST_PLUGIN_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PLUGIN_FEATURE, GstPluginFeatureClass))
#define GST_IS_PLUGIN_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PLUGIN_FEATURE))
#define GST_PLUGIN_FEATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PLUGIN_FEATURE, GstPluginFeatureClass))
#define GST_PLUGIN_FEATURE_NAME(feature) (GST_PLUGIN_FEATURE (feature)->name)
typedef struct _GstPluginFeature GstPluginFeature;
typedef struct _GstPluginFeatureClass GstPluginFeatureClass;
struct _GstPluginFeature
{
struct _GstPluginFeature {
GObject object;
/*< private > */
/*< private >*/
gchar *name;
guint rank;
@ -51,40 +53,39 @@ struct _GstPluginFeature
gpointer _gst_reserved[GST_PADDING];
};
struct _GstPluginFeatureClass
{
struct _GstPluginFeatureClass {
GObjectClass parent_class;
void (*unload_thyself) (GstPluginFeature * feature);
void (*unload_thyself) (GstPluginFeature *feature);
gpointer _gst_reserved[GST_PADDING];
};
typedef struct
{
typedef struct {
const gchar *name;
GType type;
}
GstTypeNameData;
} GstTypeNameData;
/* filter */
typedef gboolean (*GstPluginFeatureFilter) (GstPluginFeature * feature,
typedef gboolean (*GstPluginFeatureFilter) (GstPluginFeature *feature,
gpointer user_data);
/* normal GObject stuff */
GType gst_plugin_feature_get_type (void);
gboolean gst_plugin_feature_ensure_loaded (GstPluginFeature * feature);
void gst_plugin_feature_unload_thyself (GstPluginFeature * feature);
gboolean gst_plugin_feature_ensure_loaded (GstPluginFeature *feature);
void gst_plugin_feature_unload_thyself (GstPluginFeature *feature);
gboolean gst_plugin_feature_type_name_filter (GstPluginFeature * feature,
GstTypeNameData * data);
gboolean gst_plugin_feature_type_name_filter (GstPluginFeature *feature,
GstTypeNameData *data);
void gst_plugin_feature_set_rank (GstPluginFeature * feature, guint rank);
void gst_plugin_feature_set_name (GstPluginFeature * feature,
const gchar * name);
guint gst_plugin_feature_get_rank (GstPluginFeature * feature);
G_CONST_RETURN gchar *gst_plugin_feature_get_name (GstPluginFeature * feature);
void gst_plugin_feature_set_rank (GstPluginFeature *feature, guint rank);
void gst_plugin_feature_set_name (GstPluginFeature *feature, const gchar *name);
guint gst_plugin_feature_get_rank (GstPluginFeature *feature);
G_CONST_RETURN gchar *gst_plugin_feature_get_name (GstPluginFeature *feature);
G_END_DECLS
#endif /* __GST_PLUGIN_FEATURE_H__ */

View file

@ -27,14 +27,16 @@
#include <glib.h>
#include <gst/gstdata.h>
G_BEGIN_DECLS typedef struct _GstProbe GstProbe;
G_BEGIN_DECLS
typedef struct _GstProbe GstProbe;
/* the callback should return FALSE if the data should be discarded */
typedef gboolean (*GstProbeCallback) (GstProbe * probe,
GstData ** data, gpointer user_data);
typedef gboolean (*GstProbeCallback) (GstProbe *probe,
GstData **data,
gpointer user_data);
struct _GstProbe
{
struct _GstProbe {
gboolean single_shot;
GstProbeCallback callback;
@ -42,34 +44,33 @@ struct _GstProbe
};
GstProbe *gst_probe_new (gboolean single_shot,
GstProbeCallback callback, gpointer user_data);
void gst_probe_destroy (GstProbe * probe);
GstProbe* gst_probe_new (gboolean single_shot,
GstProbeCallback callback,
gpointer user_data);
void gst_probe_destroy (GstProbe *probe);
gboolean gst_probe_perform (GstProbe * probe, GstData ** data);
gboolean gst_probe_perform (GstProbe *probe, GstData **data);
typedef struct _GstProbeDispatcher GstProbeDispatcher;
struct _GstProbeDispatcher
{
struct _GstProbeDispatcher {
gboolean active;
GSList *probes;
};
GstProbeDispatcher *gst_probe_dispatcher_new (void);
void gst_probe_dispatcher_destroy (GstProbeDispatcher * disp);
void gst_probe_dispatcher_init (GstProbeDispatcher * disp);
GstProbeDispatcher* gst_probe_dispatcher_new (void);
void gst_probe_dispatcher_destroy (GstProbeDispatcher *disp);
void gst_probe_dispatcher_init (GstProbeDispatcher *disp);
void gst_probe_dispatcher_set_active (GstProbeDispatcher * disp,
gboolean active);
void gst_probe_dispatcher_add_probe (GstProbeDispatcher * disp,
GstProbe * probe);
void gst_probe_dispatcher_remove_probe (GstProbeDispatcher * disp,
GstProbe * probe);
void gst_probe_dispatcher_set_active (GstProbeDispatcher *disp, gboolean active);
void gst_probe_dispatcher_add_probe (GstProbeDispatcher *disp, GstProbe *probe);
void gst_probe_dispatcher_remove_probe (GstProbeDispatcher *disp, GstProbe *probe);
gboolean gst_probe_dispatcher_dispatch (GstProbeDispatcher * disp,
GstData ** data);
gboolean gst_probe_dispatcher_dispatch (GstProbeDispatcher *disp, GstData **data);
G_END_DECLS
#endif /* __GST_PAD_H__ */

View file

@ -26,8 +26,9 @@
#include <glib.h>
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
GST_QUERY_NONE = 0,
GST_QUERY_TOTAL,
GST_QUERY_POSITION,
@ -36,8 +37,7 @@ G_BEGIN_DECLS typedef enum
GST_QUERY_START,
GST_QUERY_SEGMENT_END,
GST_QUERY_RATE
}
GstQueryType;
} GstQueryType;
/* rate is relative to 1000000 */
#define GST_QUERY_TYPE_RATE_DEN G_GINT64_CONSTANT (1000000)
@ -78,18 +78,19 @@ functionname (type object) \
void _gst_query_type_initialize (void);
/* register a new query */
GstQueryType gst_query_type_register (const gchar * nick,
const gchar * description);
GstQueryType gst_query_type_get_by_nick (const gchar * nick);
GstQueryType gst_query_type_register (const gchar *nick,
const gchar *description);
GstQueryType gst_query_type_get_by_nick (const gchar *nick);
/* check if a query is in an array of querys */
gboolean gst_query_types_contains (const GstQueryType * types,
GstQueryType type);
gboolean gst_query_types_contains (const GstQueryType *types, GstQueryType type);
/* query for query details */
G_CONST_RETURN GstQueryTypeDefinition *gst_query_type_get_details (GstQueryType
type);
G_CONST_RETURN GList *gst_query_type_get_definitions (void);
G_CONST_RETURN GstQueryTypeDefinition*
gst_query_type_get_details (GstQueryType type);
G_CONST_RETURN GList* gst_query_type_get_definitions (void);
G_END_DECLS
#endif /* __GST_QUERY_H__ */

View file

@ -29,6 +29,7 @@
G_BEGIN_DECLS
#define GST_TYPE_QUEUE \
(gst_queue_get_type())
#define GST_QUEUE(obj) \
@ -39,8 +40,8 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_QUEUE))
#define GST_IS_QUEUE_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_QUEUE))
enum
{
enum {
GST_QUEUE_NO_LEAK = 0,
GST_QUEUE_LEAK_UPSTREAM = 1,
GST_QUEUE_LEAK_DOWNSTREAM = 2
@ -49,8 +50,7 @@ G_BEGIN_DECLS
typedef struct _GstQueue GstQueue;
typedef struct _GstQueueClass GstQueueClass;
struct _GstQueue
{
struct _GstQueue {
GstElement element;
GstPad *sinkpad;
@ -59,13 +59,11 @@ struct _GstQueue
/* the queue of data we're keeping our grubby hands on */
GQueue *queue;
struct
{
struct {
guint buffers; /* no. of buffers */
guint bytes; /* no. of bytes */
guint64 time; /* amount of time */
}
cur_level, /* currently in the queue */
} cur_level, /* currently in the queue */
max_size, /* max. amount of data allowed in the queue */
min_threshold; /* min. amount of data required to wake reader */
@ -95,15 +93,14 @@ struct _GstQueue
gpointer _gst_reserved[GST_PADDING];
};
struct _GstQueueClass
{
struct _GstQueueClass {
GstElementClass parent_class;
/* signals - 'running' is called from both sides
* which might make it sort of non-useful... */
void (*underrun) (GstQueue * queue);
void (*running) (GstQueue * queue);
void (*overrun) (GstQueue * queue);
void (*underrun) (GstQueue *queue);
void (*running) (GstQueue *queue);
void (*overrun) (GstQueue *queue);
gpointer _gst_reserved[GST_PADDING];
};
@ -111,4 +108,6 @@ struct _GstQueueClass
GType gst_queue_get_type (void);
G_END_DECLS
#endif /* __GST_QUEUE_H__ */

View file

@ -43,25 +43,23 @@
S_IRGRP | S_IWGRP | \
S_IROTH | S_IWOTH)
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
GST_REGISTRY_OK = (0),
GST_REGISTRY_LOAD_ERROR = (1 << 1),
GST_REGISTRY_SAVE_ERROR = (1 << 2),
GST_REGISTRY_PLUGIN_LOAD_ERROR = (1 << 3),
GST_REGISTRY_PLUGIN_SIGNATURE_ERROR = (1 << 4)
}
GstRegistryReturn;
} GstRegistryReturn;
typedef enum
{
typedef enum {
GST_REGISTRY_READABLE = (1 << 1),
GST_REGISTRY_WRITABLE = (1 << 2),
GST_REGISTRY_EXISTS = (1 << 3),
GST_REGISTRY_REMOTE = (1 << 4),
GST_REGISTRY_DELAYED_LOADING = (1 << 5)
}
GstRegistryFlags;
} GstRegistryFlags;
#define GST_TYPE_REGISTRY (gst_registry_get_type ())
@ -74,8 +72,7 @@ GstRegistryFlags;
typedef struct _GstRegistry GstRegistry;
typedef struct _GstRegistryClass GstRegistryClass;
struct _GstRegistry
{
struct _GstRegistry {
GObject object;
gint priority;
@ -92,25 +89,21 @@ struct _GstRegistry
gpointer _gst_reserved[GST_PADDING];
};
struct _GstRegistryClass
{
struct _GstRegistryClass {
GObjectClass parent_class;
/* vtable */
gboolean (*load) (GstRegistry * registry);
gboolean (*save) (GstRegistry * registry);
gboolean (*rebuild) (GstRegistry * registry);
gboolean (*unload) (GstRegistry * registry);
gboolean (*load) (GstRegistry *registry);
gboolean (*save) (GstRegistry *registry);
gboolean (*rebuild) (GstRegistry *registry);
gboolean (*unload) (GstRegistry *registry);
GstRegistryReturn (*load_plugin) (GstRegistry * registry,
GstPlugin * plugin);
GstRegistryReturn (*unload_plugin) (GstRegistry * registry,
GstPlugin * plugin);
GstRegistryReturn (*update_plugin) (GstRegistry * registry,
GstPlugin * plugin);
GstRegistryReturn (*load_plugin) (GstRegistry *registry, GstPlugin *plugin);
GstRegistryReturn (*unload_plugin) (GstRegistry *registry, GstPlugin *plugin);
GstRegistryReturn (*update_plugin) (GstRegistry *registry, GstPlugin *plugin);
/* signals */
void (*plugin_added) (GstRegistry * registry, GstPlugin * plugin);
void (*plugin_added) (GstRegistry *registry, GstPlugin *plugin);
gpointer _gst_reserved[GST_PADDING];
};
@ -119,35 +112,35 @@ struct _GstRegistryClass
/* normal GObject stuff */
GType gst_registry_get_type (void);
gboolean gst_registry_load (GstRegistry * registry);
gboolean gst_registry_is_loaded (GstRegistry * registry);
gboolean gst_registry_save (GstRegistry * registry);
gboolean gst_registry_rebuild (GstRegistry * registry);
gboolean gst_registry_unload (GstRegistry * registry);
gboolean gst_registry_load (GstRegistry *registry);
gboolean gst_registry_is_loaded (GstRegistry *registry);
gboolean gst_registry_save (GstRegistry *registry);
gboolean gst_registry_rebuild (GstRegistry *registry);
gboolean gst_registry_unload (GstRegistry *registry);
void gst_registry_add_path (GstRegistry * registry, const gchar * path);
GList *gst_registry_get_path_list (GstRegistry * registry);
void gst_registry_clear_paths (GstRegistry * registry);
void gst_registry_add_path (GstRegistry *registry, const gchar *path);
GList* gst_registry_get_path_list (GstRegistry *registry);
void gst_registry_clear_paths (GstRegistry *registry);
gboolean gst_registry_add_plugin (GstRegistry * registry, GstPlugin * plugin);
void gst_registry_remove_plugin (GstRegistry * registry, GstPlugin * plugin);
gboolean gst_registry_add_plugin (GstRegistry *registry, GstPlugin *plugin);
void gst_registry_remove_plugin (GstRegistry *registry, GstPlugin *plugin);
GList *gst_registry_plugin_filter (GstRegistry * registry,
GstPluginFilter filter, gboolean first, gpointer user_data);
GList *gst_registry_feature_filter (GstRegistry * registry,
GstPluginFeatureFilter filter, gboolean first, gpointer user_data);
GList* gst_registry_plugin_filter (GstRegistry *registry,
GstPluginFilter filter,
gboolean first,
gpointer user_data);
GList* gst_registry_feature_filter (GstRegistry *registry,
GstPluginFeatureFilter filter,
gboolean first,
gpointer user_data);
GstPlugin *gst_registry_find_plugin (GstRegistry * registry,
const gchar * name);
GstPluginFeature *gst_registry_find_feature (GstRegistry * registry,
const gchar * name, GType type);
GstPlugin* gst_registry_find_plugin (GstRegistry *registry, const gchar *name);
GstPluginFeature* gst_registry_find_feature (GstRegistry *registry, const gchar *name, GType type);
GstRegistryReturn gst_registry_load_plugin (GstRegistry * registry,
GstPlugin * plugin);
GstRegistryReturn gst_registry_unload_plugin (GstRegistry * registry,
GstPlugin * plugin);
GstRegistryReturn gst_registry_update_plugin (GstRegistry * registry,
GstPlugin * plugin);
GstRegistryReturn gst_registry_load_plugin (GstRegistry *registry, GstPlugin *plugin);
GstRegistryReturn gst_registry_unload_plugin (GstRegistry *registry, GstPlugin *plugin);
GstRegistryReturn gst_registry_update_plugin (GstRegistry *registry, GstPlugin *plugin);
G_END_DECLS
#endif /* __GST_REGISTRY_H__ */

View file

@ -25,33 +25,35 @@
#define __GST_REGISTRY_POOL_H__
G_BEGIN_DECLS
#include <gst/gstplugin.h>
#include <gst/gstregistry.h>
/* the pool of registries */
GList * gst_registry_pool_list (void);
GList* gst_registry_pool_list (void);
void gst_registry_pool_add (GstRegistry * registry, guint priority);
void gst_registry_pool_remove (GstRegistry * registry);
void gst_registry_pool_add (GstRegistry *registry, guint priority);
void gst_registry_pool_remove (GstRegistry *registry);
void gst_registry_pool_add_plugin (GstPlugin * plugin);
void gst_registry_pool_add_plugin (GstPlugin *plugin);
void gst_registry_pool_load_all (void);
/* query the plugins/features */
GList *gst_registry_pool_plugin_filter (GstPluginFilter filter,
GList* gst_registry_pool_plugin_filter (GstPluginFilter filter,
gboolean first, gpointer user_data);
GList *gst_registry_pool_feature_filter (GstPluginFeatureFilter filter,
GList* gst_registry_pool_feature_filter (GstPluginFeatureFilter filter,
gboolean first, gpointer user_data);
/* some predefined filters */
GList *gst_registry_pool_plugin_list (void);
GList *gst_registry_pool_feature_list (GType type);
GList* gst_registry_pool_plugin_list (void);
GList* gst_registry_pool_feature_list (GType type);
GstPlugin *gst_registry_pool_find_plugin (const gchar * name);
GstPluginFeature *gst_registry_pool_find_feature (const gchar * name,
GType type);
GstPlugin* gst_registry_pool_find_plugin (const gchar *name);
GstPluginFeature* gst_registry_pool_find_feature (const gchar *name, GType type);
GstRegistry *gst_registry_pool_get_prefered (GstRegistryFlags flags);
GstRegistry* gst_registry_pool_get_prefered (GstRegistryFlags flags);
G_END_DECLS
#endif /* __GST_REGISTRY_POOL_H__ */

View file

@ -29,38 +29,35 @@
#include <gst/gstbin.h>
G_BEGIN_DECLS
#define GST_TYPE_SCHEDULER (gst_scheduler_get_type ())
#define GST_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SCHEDULER, GstScheduler))
#define GST_IS_SCHEDULER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SCHEDULER))
#define GST_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SCHEDULER,GstSchedulerClass))
#define GST_IS_SCHEDULER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SCHEDULER))
#define GST_SCHEDULER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_SCHEDULER, GstSchedulerClass))
typedef enum
{
typedef enum {
/* this scheduler works with a fixed clock */
GST_SCHEDULER_FLAG_FIXED_CLOCK = GST_OBJECT_FLAG_LAST,
/* padding */
GST_SCHEDULER_FLAG_LAST = GST_OBJECT_FLAG_LAST + 4
}
GstSchedulerFlags;
} GstSchedulerFlags;
#define GST_SCHEDULER_PARENT(sched) ((sched)->parent)
#define GST_SCHEDULER_STATE(sched) ((sched)->state)
/*typedef struct _GstScheduler GstScheduler; */
/*typedef struct _GstSchedulerClass GstSchedulerClass; */
typedef enum
{
typedef enum {
GST_SCHEDULER_STATE_NONE,
GST_SCHEDULER_STATE_RUNNING,
GST_SCHEDULER_STATE_STOPPED,
GST_SCHEDULER_STATE_ERROR
}
GstSchedulerState;
} GstSchedulerState;
struct _GstScheduler
{
struct _GstScheduler {
GstObject object;
GstElement *parent;
@ -78,37 +75,35 @@ struct _GstScheduler
gpointer _gst_reserved[GST_PADDING];
};
struct _GstSchedulerClass
{
struct _GstSchedulerClass {
GstObjectClass parent_class;
/* virtual methods */
void (*setup) (GstScheduler * sched);
void (*reset) (GstScheduler * sched);
void (*add_element) (GstScheduler * sched, GstElement * element);
void (*remove_element) (GstScheduler * sched, GstElement * element);
void (*add_scheduler) (GstScheduler * sched, GstScheduler * sched2);
void (*remove_scheduler) (GstScheduler * sched, GstScheduler * sched2);
GstElementStateReturn (*state_transition) (GstScheduler * sched,
GstElement * element, gint transition);
void (*scheduling_change) (GstScheduler * sched, GstElement * element);
void (*lock_element) (GstScheduler * sched, GstElement * element);
void (*unlock_element) (GstScheduler * sched, GstElement * element);
gboolean (*yield) (GstScheduler * sched, GstElement * element);
gboolean (*interrupt) (GstScheduler * sched, GstElement * element);
void (*error) (GstScheduler * sched, GstElement * element);
void (*pad_link) (GstScheduler * sched, GstPad * srcpad, GstPad * sinkpad);
void (*pad_unlink) (GstScheduler * sched, GstPad * srcpad, GstPad * sinkpad);
void (*pad_select) (GstScheduler * sched, GList * padlist);
GstClockReturn (*clock_wait) (GstScheduler * sched, GstElement * element,
GstClockID id, GstClockTimeDiff * jitter);
GstSchedulerState (*iterate) (GstScheduler * sched);
void (*setup) (GstScheduler *sched);
void (*reset) (GstScheduler *sched);
void (*add_element) (GstScheduler *sched, GstElement *element);
void (*remove_element) (GstScheduler *sched, GstElement *element);
void (*add_scheduler) (GstScheduler *sched, GstScheduler *sched2);
void (*remove_scheduler) (GstScheduler *sched, GstScheduler *sched2);
GstElementStateReturn (*state_transition) (GstScheduler *sched, GstElement *element, gint transition);
void (*scheduling_change) (GstScheduler *sched, GstElement *element);
void (*lock_element) (GstScheduler *sched, GstElement *element);
void (*unlock_element) (GstScheduler *sched, GstElement *element);
gboolean (*yield) (GstScheduler *sched, GstElement *element);
gboolean (*interrupt) (GstScheduler *sched, GstElement *element);
void (*error) (GstScheduler *sched, GstElement *element);
void (*pad_link) (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad);
void (*pad_unlink) (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad);
void (*pad_select) (GstScheduler *sched, GList *padlist);
GstClockReturn (*clock_wait) (GstScheduler *sched, GstElement *element,
GstClockID id, GstClockTimeDiff *jitter);
GstSchedulerState (*iterate) (GstScheduler *sched);
/* for debugging */
void (*show) (GstScheduler * sched);
void (*show) (GstScheduler *sched);
/* signals */
void (*object_sync) (GstScheduler * sched, GstClock * clock,
GstObject * object, GstClockID id);
void (*object_sync) (GstScheduler *sched, GstClock *clock, GstObject *object,
GstClockID id);
gpointer _gst_reserved[GST_PADDING];
};
@ -116,37 +111,32 @@ struct _GstSchedulerClass
GType gst_scheduler_get_type (void);
void gst_scheduler_setup (GstScheduler * sched);
void gst_scheduler_reset (GstScheduler * sched);
void gst_scheduler_add_element (GstScheduler * sched, GstElement * element);
void gst_scheduler_remove_element (GstScheduler * sched, GstElement * element);
void gst_scheduler_add_scheduler (GstScheduler * sched, GstScheduler * sched2);
void gst_scheduler_remove_scheduler (GstScheduler * sched,
GstScheduler * sched2);
GstElementStateReturn gst_scheduler_state_transition (GstScheduler * sched,
GstElement * element, gint transition);
void gst_scheduler_scheduling_change (GstScheduler * sched,
GstElement * element);
void gst_scheduler_lock_element (GstScheduler * sched, GstElement * element);
void gst_scheduler_unlock_element (GstScheduler * sched, GstElement * element);
gboolean gst_scheduler_yield (GstScheduler * sched, GstElement * element);
gboolean gst_scheduler_interrupt (GstScheduler * sched, GstElement * element);
void gst_scheduler_error (GstScheduler * sched, GstElement * element);
void gst_scheduler_pad_link (GstScheduler * sched, GstPad * srcpad,
GstPad * sinkpad);
void gst_scheduler_pad_unlink (GstScheduler * sched, GstPad * srcpad,
GstPad * sinkpad);
GstPad *gst_scheduler_pad_select (GstScheduler * sched, GList * padlist);
GstClockReturn gst_scheduler_clock_wait (GstScheduler * sched,
GstElement * element, GstClockID id, GstClockTimeDiff * jitter);
gboolean gst_scheduler_iterate (GstScheduler * sched);
void gst_scheduler_setup (GstScheduler *sched);
void gst_scheduler_reset (GstScheduler *sched);
void gst_scheduler_add_element (GstScheduler *sched, GstElement *element);
void gst_scheduler_remove_element (GstScheduler *sched, GstElement *element);
void gst_scheduler_add_scheduler (GstScheduler *sched, GstScheduler *sched2);
void gst_scheduler_remove_scheduler (GstScheduler *sched, GstScheduler *sched2);
GstElementStateReturn gst_scheduler_state_transition (GstScheduler *sched, GstElement *element, gint transition);
void gst_scheduler_scheduling_change (GstScheduler *sched, GstElement *element);
void gst_scheduler_lock_element (GstScheduler *sched, GstElement *element);
void gst_scheduler_unlock_element (GstScheduler *sched, GstElement *element);
gboolean gst_scheduler_yield (GstScheduler *sched, GstElement *element);
gboolean gst_scheduler_interrupt (GstScheduler *sched, GstElement *element);
void gst_scheduler_error (GstScheduler *sched, GstElement *element);
void gst_scheduler_pad_link (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad);
void gst_scheduler_pad_unlink (GstScheduler *sched, GstPad *srcpad, GstPad *sinkpad);
GstPad* gst_scheduler_pad_select (GstScheduler *sched, GList *padlist);
GstClockReturn gst_scheduler_clock_wait (GstScheduler *sched, GstElement *element,
GstClockID id, GstClockTimeDiff *jitter);
gboolean gst_scheduler_iterate (GstScheduler *sched);
void gst_scheduler_use_clock (GstScheduler * sched, GstClock * clock);
void gst_scheduler_set_clock (GstScheduler * sched, GstClock * clock);
GstClock *gst_scheduler_get_clock (GstScheduler * sched);
void gst_scheduler_auto_clock (GstScheduler * sched);
void gst_scheduler_use_clock (GstScheduler *sched, GstClock *clock);
void gst_scheduler_set_clock (GstScheduler *sched, GstClock *clock);
GstClock* gst_scheduler_get_clock (GstScheduler *sched);
void gst_scheduler_auto_clock (GstScheduler *sched);
void gst_scheduler_show (GstScheduler * sched);
void gst_scheduler_show (GstScheduler *sched);
/*
* creating schedulers
@ -165,8 +155,7 @@ void gst_scheduler_show (GstScheduler * sched);
typedef struct _GstSchedulerFactory GstSchedulerFactory;
typedef struct _GstSchedulerFactoryClass GstSchedulerFactoryClass;
struct _GstSchedulerFactory
{
struct _GstSchedulerFactory {
GstPluginFeature feature;
gchar *longdesc; /* long description of the scheduler (well, don't overdo it..) */
@ -175,8 +164,7 @@ struct _GstSchedulerFactory
gpointer _gst_reserved[GST_PADDING];
};
struct _GstSchedulerFactoryClass
{
struct _GstSchedulerFactoryClass {
GstPluginFeatureClass parent;
gpointer _gst_reserved[GST_PADDING];
@ -184,20 +172,18 @@ struct _GstSchedulerFactoryClass
GType gst_scheduler_factory_get_type (void);
GstSchedulerFactory *gst_scheduler_factory_new (const gchar * name,
const gchar * longdesc, GType type);
void gst_scheduler_factory_destroy (GstSchedulerFactory * factory);
GstSchedulerFactory* gst_scheduler_factory_new (const gchar *name, const gchar *longdesc, GType type);
void gst_scheduler_factory_destroy (GstSchedulerFactory *factory);
GstSchedulerFactory *gst_scheduler_factory_find (const gchar * name);
GstSchedulerFactory* gst_scheduler_factory_find (const gchar *name);
GstScheduler *gst_scheduler_factory_create (GstSchedulerFactory * factory,
GstElement * parent);
GstScheduler *gst_scheduler_factory_make (const gchar * name,
GstElement * parent);
GstScheduler* gst_scheduler_factory_create (GstSchedulerFactory *factory, GstElement *parent);
GstScheduler* gst_scheduler_factory_make (const gchar *name, GstElement *parent);
void gst_scheduler_factory_set_default_name (const gchar * name);
G_CONST_RETURN gchar *gst_scheduler_factory_get_default_name (void);
void gst_scheduler_factory_set_default_name (const gchar* name);
G_CONST_RETURN gchar* gst_scheduler_factory_get_default_name (void);
G_END_DECLS
#endif /* __GST_SCHEDULER_H__ */

View file

@ -24,16 +24,18 @@
#include <glib-object.h>
G_BEGIN_DECLS
#define GST_TYPE_STRUCTURE (gst_structure_get_type ())
#define GST_STRUCTURE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), GST_TYPE_STRUCTURE, GstStructure))
#define GST_IS_STRUCTURE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), GST_TYPE_STRUCTURE))
typedef struct _GstStructure GstStructure;
typedef gboolean (*GstStructureForeachFunc) (GQuark field_id,
GValue * value, gpointer user_data);
GValue * value,
gpointer user_data);
struct _GstStructure
{
struct _GstStructure {
GType type;
GQuark name;
@ -41,68 +43,82 @@ struct _GstStructure
GArray *fields;
};
GType
gst_structure_get_type (void)
G_GNUC_CONST;
GType gst_structure_get_type (void) G_GNUC_CONST;
GstStructure *gst_structure_empty_new (const gchar * name);
GstStructure *gst_structure_id_empty_new (GQuark quark);
GstStructure *gst_structure_new (const gchar * name,
const gchar * firstfield, ...);
GstStructure *gst_structure_new_valist (const gchar * name,
const gchar * firstfield, va_list varargs);
GstStructure *gst_structure_copy (const GstStructure * structure);
void gst_structure_free (GstStructure * structure);
GstStructure * gst_structure_empty_new (const gchar * name);
GstStructure * gst_structure_id_empty_new (GQuark quark);
GstStructure * gst_structure_new (const gchar * name,
const gchar * firstfield,
...);
GstStructure * gst_structure_new_valist (const gchar * name,
const gchar * firstfield,
va_list varargs);
GstStructure * gst_structure_copy (const GstStructure *structure);
void gst_structure_free (GstStructure *structure);
G_CONST_RETURN gchar *gst_structure_get_name (const GstStructure *
structure);
void gst_structure_set_name (GstStructure * structure, const gchar * name);
G_CONST_RETURN gchar * gst_structure_get_name (const GstStructure *structure);
void gst_structure_set_name (GstStructure *structure,
const gchar *name);
void gst_structure_id_set_value (GstStructure * structure,
GQuark field, const GValue * value);
void gst_structure_set_value (GstStructure * structure,
const gchar * fieldname, const GValue * value);
void gst_structure_set (GstStructure * structure,
const gchar * fieldname, ...);
void gst_structure_set_valist (GstStructure * structure,
const gchar * fieldname, va_list varargs);
G_CONST_RETURN GValue *gst_structure_id_get_value (const GstStructure *
structure, GQuark field);
G_CONST_RETURN GValue *gst_structure_get_value (const GstStructure *
structure, const gchar * fieldname);
void gst_structure_remove_field (GstStructure * structure,
const gchar * fieldname);
void gst_structure_remove_fields (GstStructure * structure,
const gchar * fieldname, ...);
void gst_structure_remove_fields_valist (GstStructure * structure,
const gchar * fieldname, va_list varargs);
void gst_structure_remove_all_fields (GstStructure * structure);
void gst_structure_id_set_value (GstStructure *structure,
GQuark field,
const GValue *value);
void gst_structure_set_value (GstStructure *structure,
const gchar *fieldname,
const GValue *value);
void gst_structure_set (GstStructure *structure,
const gchar *fieldname,
...);
void gst_structure_set_valist (GstStructure *structure,
const gchar *fieldname,
va_list varargs);
G_CONST_RETURN GValue * gst_structure_id_get_value (const GstStructure *structure,
GQuark field);
G_CONST_RETURN GValue * gst_structure_get_value (const GstStructure *structure,
const gchar *fieldname);
void gst_structure_remove_field (GstStructure *structure,
const gchar *fieldname);
void gst_structure_remove_fields (GstStructure *structure,
const gchar *fieldname,
...);
void gst_structure_remove_fields_valist (GstStructure *structure,
const gchar *fieldname,
va_list varargs);
void gst_structure_remove_all_fields (GstStructure *structure);
GType gst_structure_get_field_type (const GstStructure * structure,
const gchar * fieldname);
gboolean gst_structure_foreach (GstStructure * structure,
GstStructureForeachFunc func, gpointer user_data);
gint gst_structure_n_fields (const GstStructure * structure);
gboolean gst_structure_has_field (const GstStructure * structure,
const gchar * fieldname);
gboolean gst_structure_has_field_typed (const GstStructure * structure,
const gchar * fieldname, GType type);
GType gst_structure_get_field_type (const GstStructure *structure,
const gchar *fieldname);
gboolean gst_structure_foreach (GstStructure *structure,
GstStructureForeachFunc func,
gpointer user_data);
gint gst_structure_n_fields (const GstStructure *structure);
gboolean gst_structure_has_field (const GstStructure *structure,
const gchar *fieldname);
gboolean gst_structure_has_field_typed (const GstStructure *structure,
const gchar *fieldname,
GType type);
/* utility functions */
gboolean gst_structure_get_boolean (const GstStructure * structure,
const gchar * fieldname, gboolean * value);
gboolean gst_structure_get_int (const GstStructure * structure,
const gchar * fieldname, gint * value);
gboolean gst_structure_get_fourcc (const GstStructure * structure,
const gchar * fieldname, guint32 * value);
gboolean gst_structure_get_double (const GstStructure * structure,
const gchar * fieldname, gdouble * value);
G_CONST_RETURN gchar *gst_structure_get_string (const GstStructure *
structure, const gchar * fieldname);
gboolean gst_structure_get_boolean (const GstStructure *structure,
const gchar *fieldname,
gboolean *value);
gboolean gst_structure_get_int (const GstStructure *structure,
const gchar *fieldname,
gint *value);
gboolean gst_structure_get_fourcc (const GstStructure *structure,
const gchar *fieldname,
guint32 *value);
gboolean gst_structure_get_double (const GstStructure *structure,
const gchar *fieldname,
gdouble *value);
G_CONST_RETURN gchar * gst_structure_get_string (const GstStructure *structure,
const gchar *fieldname);
gchar *gst_structure_to_string (const GstStructure * structure);
GstStructure *gst_structure_from_string (const gchar * string,
gchar ** end);
gchar * gst_structure_to_string (const GstStructure *structure);
GstStructure * gst_structure_from_string (const gchar *string,
gchar **end);
G_END_DECLS
#endif

View file

@ -27,27 +27,28 @@
#include <gst/gstclock.h>
G_BEGIN_DECLS
#define GST_TYPE_SYSTEM_CLOCK (gst_system_clock_get_type ())
#define GST_SYSTEM_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SYSTEM_CLOCK, GstSystemClock))
#define GST_IS_SYSTEM_CLOCK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SYSTEM_CLOCK))
#define GST_SYSTEM_CLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SYSTEM_CLOCK, GstSystemClockClass))
#define GST_IS_SYSTEM_CLOCK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SYSTEM_CLOCK))
#define GST_SYSTEM_CLOCK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_SYSTEM_CLOCK, GstSystemClockClass))
typedef struct _GstSystemClock GstSystemClock;
typedef struct _GstSystemClockClass GstSystemClockClass;
struct _GstSystemClock
{
struct _GstSystemClock {
GstClock clock;
GMutex *mutex;
GCond *cond;
GMutex * mutex;
GCond * cond;
gpointer _gst_reserved[GST_PADDING];
};
struct _GstSystemClockClass
{
struct _GstSystemClockClass {
GstClockClass parent_class;
gpointer _gst_reserved[GST_PADDING];
@ -55,7 +56,8 @@ struct _GstSystemClockClass
GType gst_system_clock_get_type (void);
GstClock *gst_system_clock_obtain (void);
GstClock* gst_system_clock_obtain (void);
G_END_DECLS
#endif /* __GST_SYSTEM_CLOCK_H__ */

View file

@ -26,8 +26,9 @@
#include <gst/gststructure.h>
#include <gst/gstevent.h>
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
GST_TAG_MERGE_UNDEFINED,
GST_TAG_MERGE_REPLACE_ALL,
GST_TAG_MERGE_REPLACE,
@ -37,32 +38,25 @@ G_BEGIN_DECLS typedef enum
GST_TAG_MERGE_KEEP_ALL,
/* add more */
GST_TAG_MERGE_COUNT
}
GstTagMergeMode;
} GstTagMergeMode;
#define GST_TAG_MODE_IS_VALID(mode) (((mode) > GST_TAG_MERGE_UNDEFINED) && ((mode) < GST_TAG_MERGE_COUNT))
typedef enum
{
typedef enum {
GST_TAG_FLAG_UNDEFINED,
GST_TAG_FLAG_META,
GST_TAG_FLAG_ENCODED,
GST_TAG_FLAG_DECODED,
GST_TAG_FLAG_COUNT
}
GstTagFlag;
} GstTagFlag;
#define GST_TAG_FLAG_IS_VALID(flag) (((flag) > GST_TAG_FLAG_UNDEFINED) && ((flag) < GST_TAG_FLAG_COUNT))
typedef GstStructure GstTagList;
#define GST_TAG_LIST(x) ((GstTagList *) (x))
#define GST_IS_TAG_LIST(x) (gst_is_tag_list (GST_TAG_LIST (x)))
#define GST_TYPE_TAG_LIST (gst_tag_list_get_type ())
typedef void (*GstTagForeachFunc) (const GstTagList * list, const gchar * tag,
gpointer user_data);
typedef void (*GstTagMergeFunc) (GValue * dest, const GValue * src);
typedef void (* GstTagForeachFunc) (const GstTagList *list, const gchar *tag, gpointer user_data);
typedef void (* GstTagMergeFunc) (GValue *dest, const GValue *src);
/* initialize tagging system */
void _gst_tag_initialize (void);
@ -70,103 +64,165 @@ GType gst_tag_list_get_type (void);
void gst_tag_register (gchar * name,
GstTagFlag flag,
GType type, gchar * nick, gchar * blurb, GstTagMergeFunc func);
GType type,
gchar * nick,
gchar * blurb,
GstTagMergeFunc func);
/* some default merging functions */
void gst_tag_merge_use_first (GValue * dest, const GValue * src);
void gst_tag_merge_strings_with_comma (GValue * dest, const GValue * src);
void gst_tag_merge_use_first (GValue * dest,
const GValue * src);
void gst_tag_merge_strings_with_comma (GValue * dest,
const GValue * src);
/* basic tag support */
gboolean gst_tag_exists (const gchar * tag);
GType gst_tag_get_type (const gchar * tag);
G_CONST_RETURN gchar *gst_tag_get_nick (const gchar * tag);
G_CONST_RETURN gchar *gst_tag_get_description (const gchar * tag);
G_CONST_RETURN gchar *
gst_tag_get_nick (const gchar * tag);
G_CONST_RETURN gchar *
gst_tag_get_description (const gchar * tag);
GstTagFlag gst_tag_get_flag (const gchar * tag);
gboolean gst_tag_is_fixed (const gchar * tag);
/* tag lists */
GstTagList *gst_tag_list_new (void);
GstTagList * gst_tag_list_new (void);
gboolean gst_is_tag_list (gconstpointer p);
GstTagList *gst_tag_list_copy (const GstTagList * list);
GstTagList * gst_tag_list_copy (const GstTagList * list);
void gst_tag_list_insert (GstTagList * into,
const GstTagList * from, GstTagMergeMode mode);
GstTagList *gst_tag_list_merge (const GstTagList * list1,
const GstTagList * list2, GstTagMergeMode mode);
const GstTagList * from,
GstTagMergeMode mode);
GstTagList * gst_tag_list_merge (const GstTagList * list1,
const GstTagList * list2,
GstTagMergeMode mode);
void gst_tag_list_free (GstTagList * list);
guint gst_tag_list_get_tag_size (const GstTagList * list, const gchar * tag);
guint gst_tag_list_get_tag_size (const GstTagList * list,
const gchar * tag);
void gst_tag_list_add (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, ...);
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_list_add_values (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, ...);
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_list_add_valist (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
void gst_tag_list_add_valist_values (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
void gst_tag_list_remove_tag (GstTagList * list, const gchar * tag);
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
void gst_tag_list_remove_tag (GstTagList * list,
const gchar * tag);
void gst_tag_list_foreach (GstTagList * list,
GstTagForeachFunc func, gpointer user_data);
GstTagForeachFunc func,
gpointer user_data);
G_CONST_RETURN GValue *gst_tag_list_get_value_index (const GstTagList * list,
const gchar * tag, guint index);
G_CONST_RETURN GValue *
gst_tag_list_get_value_index (const GstTagList * list,
const gchar * tag,
guint index);
gboolean gst_tag_list_copy_value (GValue * dest,
const GstTagList * list, const gchar * tag);
const GstTagList * list,
const gchar * tag);
/* simplifications (FIXME: do we want them?) */
gboolean gst_tag_list_get_char (const GstTagList * list,
const gchar * tag, gchar * value);
const gchar * tag,
gchar * value);
gboolean gst_tag_list_get_char_index (const GstTagList * list,
const gchar * tag, guint index, gchar * value);
const gchar * tag,
guint index,
gchar * value);
gboolean gst_tag_list_get_uchar (const GstTagList * list,
const gchar * tag, guchar * value);
const gchar * tag,
guchar * value);
gboolean gst_tag_list_get_uchar_index (const GstTagList * list,
const gchar * tag, guint index, guchar * value);
const gchar * tag,
guint index,
guchar * value);
gboolean gst_tag_list_get_boolean (const GstTagList * list,
const gchar * tag, gboolean * value);
const gchar * tag,
gboolean * value);
gboolean gst_tag_list_get_boolean_index (const GstTagList * list,
const gchar * tag, guint index, gboolean * value);
const gchar * tag,
guint index,
gboolean * value);
gboolean gst_tag_list_get_int (const GstTagList * list,
const gchar * tag, gint * value);
const gchar * tag,
gint * value);
gboolean gst_tag_list_get_int_index (const GstTagList * list,
const gchar * tag, guint index, gint * value);
const gchar * tag,
guint index,
gint * value);
gboolean gst_tag_list_get_uint (const GstTagList * list,
const gchar * tag, guint * value);
const gchar * tag,
guint * value);
gboolean gst_tag_list_get_uint_index (const GstTagList * list,
const gchar * tag, guint index, guint * value);
const gchar * tag,
guint index,
guint * value);
gboolean gst_tag_list_get_long (const GstTagList * list,
const gchar * tag, glong * value);
const gchar * tag,
glong * value);
gboolean gst_tag_list_get_long_index (const GstTagList * list,
const gchar * tag, guint index, glong * value);
const gchar * tag,
guint index,
glong * value);
gboolean gst_tag_list_get_ulong (const GstTagList * list,
const gchar * tag, gulong * value);
const gchar * tag,
gulong * value);
gboolean gst_tag_list_get_ulong_index (const GstTagList * list,
const gchar * tag, guint index, gulong * value);
const gchar * tag,
guint index,
gulong * value);
gboolean gst_tag_list_get_int64 (const GstTagList * list,
const gchar * tag, gint64 * value);
const gchar * tag,
gint64 * value);
gboolean gst_tag_list_get_int64_index (const GstTagList * list,
const gchar * tag, guint index, gint64 * value);
const gchar * tag,
guint index,
gint64 * value);
gboolean gst_tag_list_get_uint64 (const GstTagList * list,
const gchar * tag, guint64 * value);
const gchar * tag,
guint64 * value);
gboolean gst_tag_list_get_uint64_index (const GstTagList * list,
const gchar * tag, guint index, guint64 * value);
const gchar * tag,
guint index,
guint64 * value);
gboolean gst_tag_list_get_float (const GstTagList * list,
const gchar * tag, gfloat * value);
const gchar * tag,
gfloat * value);
gboolean gst_tag_list_get_float_index (const GstTagList * list,
const gchar * tag, guint index, gfloat * value);
const gchar * tag,
guint index,
gfloat * value);
gboolean gst_tag_list_get_double (const GstTagList * list,
const gchar * tag, gdouble * value);
const gchar * tag,
gdouble * value);
gboolean gst_tag_list_get_double_index (const GstTagList * list,
const gchar * tag, guint index, gdouble * value);
const gchar * tag,
guint index,
gdouble * value);
gboolean gst_tag_list_get_string (const GstTagList * list,
const gchar * tag, gchar ** value);
const gchar * tag,
gchar ** value);
gboolean gst_tag_list_get_string_index (const GstTagList * list,
const gchar * tag, guint index, gchar ** value);
const gchar * tag,
guint index,
gchar ** value);
gboolean gst_tag_list_get_pointer (const GstTagList * list,
const gchar * tag, gpointer * value);
const gchar * tag,
gpointer * value);
gboolean gst_tag_list_get_pointer_index (const GstTagList * list,
const gchar * tag, guint index, gpointer * value);
const gchar * tag,
guint index,
gpointer * value);
/* tag events */
GstEvent *gst_event_new_tag (GstTagList * list);
GstTagList *gst_event_tag_get_list (GstEvent * tag_event);
GstEvent * gst_event_new_tag (GstTagList * list);
GstTagList * gst_event_tag_get_list (GstEvent * tag_event);
/* GStreamer core tags (need to be discussed) */
@ -206,4 +262,5 @@ GstTagList *gst_event_tag_get_list (GstEvent * tag_event);
#define GST_TAG_ALBUM_PEAK "replaygain-album-peak"
G_END_DECLS
#endif /* __GST_EVENT_H__ */

View file

@ -25,11 +25,13 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_TAG_SETTER (gst_tag_setter_get_type ())
#define GST_TAG_SETTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_TAG_SETTER, GstTagSetter))
#define GST_TAG_SETTER_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), GST_TYPE_TAG_SETTER, GstTagSetter))
#define GST_IS_TAG_SETTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_TAG_SETTER))
#define GST_TAG_SETTER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GST_TYPE_TAG_SETTER, GstTagSetterIFace))
typedef struct _GstTagSetter GstTagSetter; /* Dummy typedef */
typedef struct _GstTagSetterIFace GstTagSetterIFace;
@ -44,29 +46,38 @@ struct _GstTagSetterIFace
/* virtual table */
};
GType
gst_tag_setter_get_type (void)
G_GNUC_CONST;
GType gst_tag_setter_get_type (void) G_GNUC_CONST;
void gst_tag_setter_merge (GstTagSetter * setter,
const GstTagList * list, GstTagMergeMode mode);
void gst_tag_setter_add (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, ...);
void gst_tag_setter_add_values (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, ...);
void gst_tag_setter_add_valist (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
void gst_tag_setter_add_valist_values (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
G_CONST_RETURN GstTagList *gst_tag_setter_get_list (GstTagSetter * setter);
void gst_tag_setter_set_merge_mode (GstTagSetter * setter,
void gst_tag_setter_merge (GstTagSetter * setter,
const GstTagList * list,
GstTagMergeMode mode);
GstTagMergeMode gst_tag_setter_get_merge_mode (GstTagSetter * setter);
void gst_tag_setter_add (GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_setter_add_values (GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_setter_add_valist (GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
void gst_tag_setter_add_valist_values(GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
G_CONST_RETURN GstTagList *
gst_tag_setter_get_list (GstTagSetter * setter);
void gst_tag_setter_set_merge_mode (GstTagSetter * setter,
GstTagMergeMode mode);
GstTagMergeMode gst_tag_setter_get_merge_mode (GstTagSetter * setter);
G_END_DECLS
#endif /* __GST_TAG_INTERFACE_H__ */

View file

@ -26,8 +26,9 @@
#include <gst/gststructure.h>
#include <gst/gstevent.h>
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
GST_TAG_MERGE_UNDEFINED,
GST_TAG_MERGE_REPLACE_ALL,
GST_TAG_MERGE_REPLACE,
@ -37,32 +38,25 @@ G_BEGIN_DECLS typedef enum
GST_TAG_MERGE_KEEP_ALL,
/* add more */
GST_TAG_MERGE_COUNT
}
GstTagMergeMode;
} GstTagMergeMode;
#define GST_TAG_MODE_IS_VALID(mode) (((mode) > GST_TAG_MERGE_UNDEFINED) && ((mode) < GST_TAG_MERGE_COUNT))
typedef enum
{
typedef enum {
GST_TAG_FLAG_UNDEFINED,
GST_TAG_FLAG_META,
GST_TAG_FLAG_ENCODED,
GST_TAG_FLAG_DECODED,
GST_TAG_FLAG_COUNT
}
GstTagFlag;
} GstTagFlag;
#define GST_TAG_FLAG_IS_VALID(flag) (((flag) > GST_TAG_FLAG_UNDEFINED) && ((flag) < GST_TAG_FLAG_COUNT))
typedef GstStructure GstTagList;
#define GST_TAG_LIST(x) ((GstTagList *) (x))
#define GST_IS_TAG_LIST(x) (gst_is_tag_list (GST_TAG_LIST (x)))
#define GST_TYPE_TAG_LIST (gst_tag_list_get_type ())
typedef void (*GstTagForeachFunc) (const GstTagList * list, const gchar * tag,
gpointer user_data);
typedef void (*GstTagMergeFunc) (GValue * dest, const GValue * src);
typedef void (* GstTagForeachFunc) (const GstTagList *list, const gchar *tag, gpointer user_data);
typedef void (* GstTagMergeFunc) (GValue *dest, const GValue *src);
/* initialize tagging system */
void _gst_tag_initialize (void);
@ -70,103 +64,165 @@ GType gst_tag_list_get_type (void);
void gst_tag_register (gchar * name,
GstTagFlag flag,
GType type, gchar * nick, gchar * blurb, GstTagMergeFunc func);
GType type,
gchar * nick,
gchar * blurb,
GstTagMergeFunc func);
/* some default merging functions */
void gst_tag_merge_use_first (GValue * dest, const GValue * src);
void gst_tag_merge_strings_with_comma (GValue * dest, const GValue * src);
void gst_tag_merge_use_first (GValue * dest,
const GValue * src);
void gst_tag_merge_strings_with_comma (GValue * dest,
const GValue * src);
/* basic tag support */
gboolean gst_tag_exists (const gchar * tag);
GType gst_tag_get_type (const gchar * tag);
G_CONST_RETURN gchar *gst_tag_get_nick (const gchar * tag);
G_CONST_RETURN gchar *gst_tag_get_description (const gchar * tag);
G_CONST_RETURN gchar *
gst_tag_get_nick (const gchar * tag);
G_CONST_RETURN gchar *
gst_tag_get_description (const gchar * tag);
GstTagFlag gst_tag_get_flag (const gchar * tag);
gboolean gst_tag_is_fixed (const gchar * tag);
/* tag lists */
GstTagList *gst_tag_list_new (void);
GstTagList * gst_tag_list_new (void);
gboolean gst_is_tag_list (gconstpointer p);
GstTagList *gst_tag_list_copy (const GstTagList * list);
GstTagList * gst_tag_list_copy (const GstTagList * list);
void gst_tag_list_insert (GstTagList * into,
const GstTagList * from, GstTagMergeMode mode);
GstTagList *gst_tag_list_merge (const GstTagList * list1,
const GstTagList * list2, GstTagMergeMode mode);
const GstTagList * from,
GstTagMergeMode mode);
GstTagList * gst_tag_list_merge (const GstTagList * list1,
const GstTagList * list2,
GstTagMergeMode mode);
void gst_tag_list_free (GstTagList * list);
guint gst_tag_list_get_tag_size (const GstTagList * list, const gchar * tag);
guint gst_tag_list_get_tag_size (const GstTagList * list,
const gchar * tag);
void gst_tag_list_add (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, ...);
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_list_add_values (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, ...);
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_list_add_valist (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
void gst_tag_list_add_valist_values (GstTagList * list,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
void gst_tag_list_remove_tag (GstTagList * list, const gchar * tag);
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
void gst_tag_list_remove_tag (GstTagList * list,
const gchar * tag);
void gst_tag_list_foreach (GstTagList * list,
GstTagForeachFunc func, gpointer user_data);
GstTagForeachFunc func,
gpointer user_data);
G_CONST_RETURN GValue *gst_tag_list_get_value_index (const GstTagList * list,
const gchar * tag, guint index);
G_CONST_RETURN GValue *
gst_tag_list_get_value_index (const GstTagList * list,
const gchar * tag,
guint index);
gboolean gst_tag_list_copy_value (GValue * dest,
const GstTagList * list, const gchar * tag);
const GstTagList * list,
const gchar * tag);
/* simplifications (FIXME: do we want them?) */
gboolean gst_tag_list_get_char (const GstTagList * list,
const gchar * tag, gchar * value);
const gchar * tag,
gchar * value);
gboolean gst_tag_list_get_char_index (const GstTagList * list,
const gchar * tag, guint index, gchar * value);
const gchar * tag,
guint index,
gchar * value);
gboolean gst_tag_list_get_uchar (const GstTagList * list,
const gchar * tag, guchar * value);
const gchar * tag,
guchar * value);
gboolean gst_tag_list_get_uchar_index (const GstTagList * list,
const gchar * tag, guint index, guchar * value);
const gchar * tag,
guint index,
guchar * value);
gboolean gst_tag_list_get_boolean (const GstTagList * list,
const gchar * tag, gboolean * value);
const gchar * tag,
gboolean * value);
gboolean gst_tag_list_get_boolean_index (const GstTagList * list,
const gchar * tag, guint index, gboolean * value);
const gchar * tag,
guint index,
gboolean * value);
gboolean gst_tag_list_get_int (const GstTagList * list,
const gchar * tag, gint * value);
const gchar * tag,
gint * value);
gboolean gst_tag_list_get_int_index (const GstTagList * list,
const gchar * tag, guint index, gint * value);
const gchar * tag,
guint index,
gint * value);
gboolean gst_tag_list_get_uint (const GstTagList * list,
const gchar * tag, guint * value);
const gchar * tag,
guint * value);
gboolean gst_tag_list_get_uint_index (const GstTagList * list,
const gchar * tag, guint index, guint * value);
const gchar * tag,
guint index,
guint * value);
gboolean gst_tag_list_get_long (const GstTagList * list,
const gchar * tag, glong * value);
const gchar * tag,
glong * value);
gboolean gst_tag_list_get_long_index (const GstTagList * list,
const gchar * tag, guint index, glong * value);
const gchar * tag,
guint index,
glong * value);
gboolean gst_tag_list_get_ulong (const GstTagList * list,
const gchar * tag, gulong * value);
const gchar * tag,
gulong * value);
gboolean gst_tag_list_get_ulong_index (const GstTagList * list,
const gchar * tag, guint index, gulong * value);
const gchar * tag,
guint index,
gulong * value);
gboolean gst_tag_list_get_int64 (const GstTagList * list,
const gchar * tag, gint64 * value);
const gchar * tag,
gint64 * value);
gboolean gst_tag_list_get_int64_index (const GstTagList * list,
const gchar * tag, guint index, gint64 * value);
const gchar * tag,
guint index,
gint64 * value);
gboolean gst_tag_list_get_uint64 (const GstTagList * list,
const gchar * tag, guint64 * value);
const gchar * tag,
guint64 * value);
gboolean gst_tag_list_get_uint64_index (const GstTagList * list,
const gchar * tag, guint index, guint64 * value);
const gchar * tag,
guint index,
guint64 * value);
gboolean gst_tag_list_get_float (const GstTagList * list,
const gchar * tag, gfloat * value);
const gchar * tag,
gfloat * value);
gboolean gst_tag_list_get_float_index (const GstTagList * list,
const gchar * tag, guint index, gfloat * value);
const gchar * tag,
guint index,
gfloat * value);
gboolean gst_tag_list_get_double (const GstTagList * list,
const gchar * tag, gdouble * value);
const gchar * tag,
gdouble * value);
gboolean gst_tag_list_get_double_index (const GstTagList * list,
const gchar * tag, guint index, gdouble * value);
const gchar * tag,
guint index,
gdouble * value);
gboolean gst_tag_list_get_string (const GstTagList * list,
const gchar * tag, gchar ** value);
const gchar * tag,
gchar ** value);
gboolean gst_tag_list_get_string_index (const GstTagList * list,
const gchar * tag, guint index, gchar ** value);
const gchar * tag,
guint index,
gchar ** value);
gboolean gst_tag_list_get_pointer (const GstTagList * list,
const gchar * tag, gpointer * value);
const gchar * tag,
gpointer * value);
gboolean gst_tag_list_get_pointer_index (const GstTagList * list,
const gchar * tag, guint index, gpointer * value);
const gchar * tag,
guint index,
gpointer * value);
/* tag events */
GstEvent *gst_event_new_tag (GstTagList * list);
GstTagList *gst_event_tag_get_list (GstEvent * tag_event);
GstEvent * gst_event_new_tag (GstTagList * list);
GstTagList * gst_event_tag_get_list (GstEvent * tag_event);
/* GStreamer core tags (need to be discussed) */
@ -206,4 +262,5 @@ GstTagList *gst_event_tag_get_list (GstEvent * tag_event);
#define GST_TAG_ALBUM_PEAK "replaygain-album-peak"
G_END_DECLS
#endif /* __GST_EVENT_H__ */

View file

@ -25,11 +25,13 @@
#include <gst/gst.h>
G_BEGIN_DECLS
#define GST_TYPE_TAG_SETTER (gst_tag_setter_get_type ())
#define GST_TAG_SETTER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_TAG_SETTER, GstTagSetter))
#define GST_TAG_SETTER_CLASS(obj) (G_TYPE_CHECK_CLASS_CAST ((obj), GST_TYPE_TAG_SETTER, GstTagSetter))
#define GST_IS_TAG_SETTER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_TAG_SETTER))
#define GST_TAG_SETTER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), GST_TYPE_TAG_SETTER, GstTagSetterIFace))
typedef struct _GstTagSetter GstTagSetter; /* Dummy typedef */
typedef struct _GstTagSetterIFace GstTagSetterIFace;
@ -44,29 +46,38 @@ struct _GstTagSetterIFace
/* virtual table */
};
GType
gst_tag_setter_get_type (void)
G_GNUC_CONST;
GType gst_tag_setter_get_type (void) G_GNUC_CONST;
void gst_tag_setter_merge (GstTagSetter * setter,
const GstTagList * list, GstTagMergeMode mode);
void gst_tag_setter_add (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, ...);
void gst_tag_setter_add_values (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, ...);
void gst_tag_setter_add_valist (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
void gst_tag_setter_add_valist_values (GstTagSetter * setter,
GstTagMergeMode mode, const gchar * tag, va_list var_args);
G_CONST_RETURN GstTagList *gst_tag_setter_get_list (GstTagSetter * setter);
void gst_tag_setter_set_merge_mode (GstTagSetter * setter,
void gst_tag_setter_merge (GstTagSetter * setter,
const GstTagList * list,
GstTagMergeMode mode);
GstTagMergeMode gst_tag_setter_get_merge_mode (GstTagSetter * setter);
void gst_tag_setter_add (GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_setter_add_values (GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
...);
void gst_tag_setter_add_valist (GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
void gst_tag_setter_add_valist_values(GstTagSetter * setter,
GstTagMergeMode mode,
const gchar * tag,
va_list var_args);
G_CONST_RETURN GstTagList *
gst_tag_setter_get_list (GstTagSetter * setter);
void gst_tag_setter_set_merge_mode (GstTagSetter * setter,
GstTagMergeMode mode);
GstTagMergeMode gst_tag_setter_get_merge_mode (GstTagSetter * setter);
G_END_DECLS
#endif /* __GST_TAG_INTERFACE_H__ */

View file

@ -29,10 +29,11 @@
#include <gst/gstbin.h>
G_BEGIN_DECLS extern GPrivate *gst_thread_current;
G_BEGIN_DECLS
typedef enum
{
extern GPrivate *gst_thread_current;
typedef enum {
GST_THREAD_STATE_SPINNING = GST_BIN_FLAG_LAST,
GST_THREAD_STATE_REAPING,
/* when iterating with mutex locked (special cases)
@ -41,8 +42,7 @@ typedef enum
/* padding */
GST_THREAD_FLAG_LAST = GST_BIN_FLAG_LAST + 4
}
GstThreadState;
} GstThreadState;
#define GST_TYPE_THREAD (gst_thread_get_type())
#define GST_THREAD(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_THREAD,GstThread))
@ -54,8 +54,7 @@ GstThreadState;
typedef struct _GstThread GstThread;
typedef struct _GstThreadClass GstThreadClass;
struct _GstThread
{
struct _GstThread {
GstBin bin;
GThread *thread_id; /* id of the thread, if any */
@ -67,22 +66,23 @@ struct _GstThread
gpointer _gst_reserved[GST_PADDING];
};
struct _GstThreadClass
{
struct _GstThreadClass {
GstBinClass parent_class;
/* signals */
void (*shutdown) (GstThread * thread);
void (*shutdown) (GstThread *thread);
gpointer _gst_reserved[GST_PADDING];
};
GType gst_thread_get_type (void);
GstElement *gst_thread_new (const gchar * name);
GstElement* gst_thread_new (const gchar *name);
void gst_thread_set_priority (GstThread * thread, GThreadPriority priority);
GstThread *gst_thread_get_current (void);
void gst_thread_set_priority (GstThread *thread, GThreadPriority priority);
GstThread * gst_thread_get_current (void);
G_END_DECLS
#endif /* __GST_THREAD_H__ */

View file

@ -28,11 +28,12 @@
#include <glib.h>
G_BEGIN_DECLS typedef struct _GstTrace GstTrace;
G_BEGIN_DECLS
typedef struct _GstTrace GstTrace;
typedef struct _GstTraceEntry GstTraceEntry;
struct _GstTrace
{
struct _GstTrace {
/* where this trace is going */
gchar *filename;
int fd;
@ -43,8 +44,7 @@ struct _GstTrace
gint bufoffset;
};
struct _GstTraceEntry
{
struct _GstTraceEntry {
gint64 timestamp;
guint32 sequence;
guint32 data;
@ -53,34 +53,31 @@ struct _GstTraceEntry
GstTrace *gst_trace_new (gchar * filename, gint size);
void gst_trace_destroy (GstTrace * trace);
void gst_trace_flush (GstTrace * trace);
void gst_trace_text_flush (GstTrace * trace);
GstTrace* gst_trace_new (gchar *filename, gint size);
void gst_trace_destroy (GstTrace *trace);
void gst_trace_flush (GstTrace *trace);
void gst_trace_text_flush (GstTrace *trace);
#define gst_trace_get_size(trace) ((trace)->bufsize)
#define gst_trace_get_offset(trace) ((trace)->bufoffset)
#define gst_trace_get_remaining(trace) ((trace)->bufsize - (trace)->bufoffset)
void gst_trace_set_default (GstTrace * trace);
void gst_trace_set_default (GstTrace *trace);
void _gst_trace_add_entry (GstTrace * trace, guint32 seq,
guint32 data, gchar * msg);
void _gst_trace_add_entry (GstTrace *trace, guint32 seq,
guint32 data, gchar *msg);
void gst_trace_read_tsc (gint64 * dst);
void gst_trace_read_tsc (gint64 *dst);
typedef enum
{
GST_ALLOC_TRACE_LIVE = (1 << 0),
GST_ALLOC_TRACE_MEM_LIVE = (1 << 1)
}
GstAllocTraceFlags;
} GstAllocTraceFlags;
typedef struct _GstAllocTrace GstAllocTrace;
struct _GstAllocTrace
{
struct _GstAllocTrace {
gchar *name;
gint flags;
@ -89,17 +86,16 @@ struct _GstAllocTrace
};
gboolean gst_alloc_trace_available (void);
G_CONST_RETURN GList *gst_alloc_trace_list (void);
GstAllocTrace *_gst_alloc_trace_register (const gchar * name);
G_CONST_RETURN GList* gst_alloc_trace_list (void);
GstAllocTrace* _gst_alloc_trace_register (const gchar *name);
int gst_alloc_trace_live_all (void);
void gst_alloc_trace_print_all (void);
void gst_alloc_trace_set_flags_all (GstAllocTraceFlags flags);
GstAllocTrace *gst_alloc_trace_get (const gchar * name);
void gst_alloc_trace_print (const GstAllocTrace * trace);
void gst_alloc_trace_set_flags (GstAllocTrace * trace,
GstAllocTraceFlags flags);
GstAllocTrace* gst_alloc_trace_get (const gchar *name);
void gst_alloc_trace_print (const GstAllocTrace *trace);
void gst_alloc_trace_set_flags (GstAllocTrace *trace, GstAllocTraceFlags flags);
#ifndef GST_DISABLE_ALLOC_TRACE
@ -131,7 +127,6 @@ G_STMT_START { \
#ifndef GST_DISABLE_TRACE
extern gint _gst_trace_on;
#define gst_trace_add_entry(trace,seq,data,msg) \
if (_gst_trace_on) { \
_gst_trace_add_entry(trace,(guint32)seq,(guint32)data,msg); \
@ -173,4 +168,5 @@ extern gint _gst_trace_on;
#endif /* GST_DISABLE_TRACE */
G_END_DECLS
#endif /* __GST_TRACE_H__ */

View file

@ -23,31 +23,31 @@
#include <glib.h>
#include "gstmacros.h"
G_BEGIN_DECLS typedef struct _GstTrashStack GstTrashStack;
G_BEGIN_DECLS
typedef struct _GstTrashStack GstTrashStack;
typedef struct _GstTrashStackElement GstTrashStackElement;
struct _GstTrashStackElement
{
struct _GstTrashStackElement {
GstTrashStackElement *next;
};
typedef volatile gpointer gst_vgpointer; /* gtk-doc volatile workaround */
typedef volatile gpointer gst_vgpointer;/* gtk-doc volatile workaround */
typedef volatile gulong gst_vgulong; /* gtk-doc volatile workaround */
struct _GstTrashStack
{
struct _GstTrashStack {
gst_vgpointer head;
gst_vgulong count; /* for the ABA problem */
GMutex *lock; /* lock for C fallback */
};
GST_INLINE_FUNC GstTrashStack *gst_trash_stack_new (void);
GST_INLINE_FUNC void gst_trash_stack_init (GstTrashStack * stack);
GST_INLINE_FUNC void gst_trash_stack_destroy (GstTrashStack * stack);
GST_INLINE_FUNC void gst_trash_stack_free (GstTrashStack * stack);
GST_INLINE_FUNC GstTrashStack* gst_trash_stack_new (void);
GST_INLINE_FUNC void gst_trash_stack_init (GstTrashStack *stack);
GST_INLINE_FUNC void gst_trash_stack_destroy (GstTrashStack *stack);
GST_INLINE_FUNC void gst_trash_stack_free (GstTrashStack *stack);
GST_INLINE_FUNC void gst_trash_stack_push (GstTrashStack * stack, gpointer mem);
GST_INLINE_FUNC gpointer gst_trash_stack_pop (GstTrashStack * stack);
GST_INLINE_FUNC void gst_trash_stack_push (GstTrashStack *stack, gpointer mem);
GST_INLINE_FUNC gpointer gst_trash_stack_pop (GstTrashStack *stack);
#if defined (GST_CAN_INLINE) || defined (__GST_TRASH_STACK_C__)
@ -63,29 +63,34 @@ GST_INLINE_FUNC gpointer gst_trash_stack_pop (GstTrashStack * stack);
* intel ia32 optimized lockfree implementations
*/
GST_INLINE_FUNC void
gst_trash_stack_init (GstTrashStack * stack)
gst_trash_stack_init (GstTrashStack *stack)
{
stack->head = NULL;
stack->count = 0;
}
GST_INLINE_FUNC void
gst_trash_stack_destroy (GstTrashStack * stack)
gst_trash_stack_destroy (GstTrashStack *stack)
{
}
GST_INLINE_FUNC void
gst_trash_stack_push (GstTrashStack * stack, gpointer mem)
gst_trash_stack_push (GstTrashStack *stack, gpointer mem)
{
__asm__ __volatile__ ("1: \n\t" " movl %2, (%1); \n\t" /* mem->next == stack->head */
__asm__ __volatile__ (
"1: \n\t"
" movl %2, (%1); \n\t" /* mem->next == stack->head */
SMP_LOCK "cmpxchg %1, %0; \n\t" /* if head unchanged, move mem into it */
" jnz 1b; \n" /* head changed, retry */
::"m" (*stack), "r" (mem), "a" (stack->head)
:
: "m" (*stack),
"r" (mem),
"a" (stack->head)
);
}
GST_INLINE_FUNC gpointer
gst_trash_stack_pop (GstTrashStack * stack)
gst_trash_stack_pop (GstTrashStack *stack)
{
GstTrashStackElement *head;
@ -95,16 +100,23 @@ gst_trash_stack_pop (GstTrashStack * stack)
* into place. This is usually solved using a counter which makes it highly
* inlikely that we manage to grab the wrong head->next value.
*/
__asm__ __volatile__ (" testl %%eax, %%eax; \n\t" /* if (head == NULL) return */
" jz 20f; \n\t" "10: \n\t" " movl (%%eax), %%ebx; \n\t" /* take value pointed to by head (head->next) */
__asm__ __volatile__ (
" testl %%eax, %%eax; \n\t" /* if (head == NULL) return */
" jz 20f; \n\t"
"10: \n\t"
" movl (%%eax), %%ebx; \n\t" /* take value pointed to by head (head->next) */
" movl %%edx, %%ecx; \n\t" /* take counter */
" incl %%ecx; \n\t" /* and increment */
SMP_LOCK "cmpxchg8b %1; \n\t" /* if eax:edx == *stack, move ebx:ecx to *stack,
* else *stack is moved into eax:edx again... */
" jnz 10b; \n\t" /* ... and we retry */
"20: \n":"=a" (head)
:"m" (*stack), "a" (stack->head), "d" (stack->count)
:"ecx", "ebx");
"20: \n"
: "=a" (head)
: "m" (*stack),
"a" (stack->head),
"d" (stack->count)
: "ecx", "ebx"
);
return head;
}
@ -115,20 +127,20 @@ gst_trash_stack_pop (GstTrashStack * stack)
* generic implementation
*/
GST_INLINE_FUNC void
gst_trash_stack_init (GstTrashStack * stack)
gst_trash_stack_init (GstTrashStack *stack)
{
stack->head = NULL;
stack->lock = g_mutex_new ();
stack->lock = g_mutex_new();
}
GST_INLINE_FUNC void
gst_trash_stack_destroy (GstTrashStack * stack)
gst_trash_stack_destroy (GstTrashStack *stack)
{
g_mutex_free (stack->lock);
}
GST_INLINE_FUNC void
gst_trash_stack_push (GstTrashStack * stack, gpointer mem)
gst_trash_stack_push (GstTrashStack *stack, gpointer mem)
{
GstTrashStackElement *elem = (GstTrashStackElement *) mem;
@ -139,7 +151,7 @@ gst_trash_stack_push (GstTrashStack * stack, gpointer mem)
}
GST_INLINE_FUNC gpointer
gst_trash_stack_pop (GstTrashStack * stack)
gst_trash_stack_pop (GstTrashStack *stack)
{
GstTrashStackElement *head;
@ -157,7 +169,7 @@ gst_trash_stack_pop (GstTrashStack * stack)
/*
* common functions
*/
GST_INLINE_FUNC GstTrashStack *
GST_INLINE_FUNC GstTrashStack*
gst_trash_stack_new (void)
{
GstTrashStack *stack;
@ -169,13 +181,14 @@ gst_trash_stack_new (void)
}
GST_INLINE_FUNC void
gst_trash_stack_free (GstTrashStack * stack)
gst_trash_stack_free (GstTrashStack *stack)
{
gst_trash_stack_destroy (stack);
g_free (stack);
}
#endif /* defined (GST_CAN_INLINE) || defined (__GST_TRASH_STACK_C__) */
#endif /* defined (GST_CAN_INLINE) || defined (__GST_TRASH_STACK_C__)*/
G_END_DECLS
#endif /* __GST_TRASH_STACK_H__ */

View file

@ -30,59 +30,60 @@
#include <gst/gsttypes.h>
G_BEGIN_DECLS
#define GST_TYPE_TYPE_FIND_FACTORY (gst_type_find_factory_get_type())
#define GST_TYPE_FIND_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_TYPE_FIND_FACTORY, GstTypeFindFactory))
#define GST_IS_TYPE_FIND_FACTORY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_TYPE_FIND_FACTORY))
#define GST_TYPE_FIND_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_TYPE_FIND_FACTORY, GstTypeFindFactoryClass))
#define GST_IS_TYPE_FIND_FACTORY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_TYPE_FIND_FACTORY))
#define GST_TYPE_FIND_FACTORY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_TYPE_FIND_FACTORY, GstTypeFindFactoryClass))
typedef struct _GstTypeFind GstTypeFind;
typedef struct _GstTypeFindFactory GstTypeFindFactory;
typedef struct _GstTypeFindFactoryClass GstTypeFindFactoryClass;
typedef void (*GstTypeFindFunction) (GstTypeFind * find, gpointer data);
typedef void (* GstTypeFindFunction) (GstTypeFind *find, gpointer data);
typedef enum
{
typedef enum {
GST_TYPE_FIND_MINIMUM = 1,
GST_TYPE_FIND_POSSIBLE = 50,
GST_TYPE_FIND_LIKELY = 80,
GST_TYPE_FIND_NEARLY_CERTAIN = 99,
GST_TYPE_FIND_MAXIMUM = 100,
}
GstTypeFindProbability;
} GstTypeFindProbability;
struct _GstTypeFind
{
struct _GstTypeFind {
/* private to the caller of the typefind function */
guint8 *(*peek) (gpointer data, gint64 offset, guint size);
void (*suggest) (gpointer data, guint probability, const GstCaps * caps);
guint8 * (* peek) (gpointer data,
gint64 offset,
guint size);
void (* suggest) (gpointer data,
guint probability,
const GstCaps * caps);
gpointer data;
/* optional */
guint64 (*get_length) (gpointer data);
guint64 (* get_length) (gpointer data);
/* <private> */
gpointer _gst_reserved[GST_PADDING];
};
struct _GstTypeFindFactory
{
struct _GstTypeFindFactory {
GstPluginFeature feature;
/* <private> */
GstTypeFindFunction function;
gchar **extensions;
GstCaps *caps; /* FIXME: not yet saved in registry */
gchar ** extensions;
GstCaps * caps; /* FIXME: not yet saved in registry */
gpointer user_data;
gpointer _gst_reserved[GST_PADDING];
};
struct _GstTypeFindFactoryClass
{
struct _GstTypeFindFactoryClass {
GstPluginFeatureClass parent;
/* <private> */
@ -90,9 +91,12 @@ struct _GstTypeFindFactoryClass
};
/* typefind function interface */
guint8 *gst_type_find_peek (GstTypeFind * find, gint64 offset, guint size);
guint8 * gst_type_find_peek (GstTypeFind * find,
gint64 offset,
guint size);
void gst_type_find_suggest (GstTypeFind * find,
guint probability, const GstCaps * caps);
guint probability,
const GstCaps * caps);
guint64 gst_type_find_get_length (GstTypeFind * find);
/* registration interface */
@ -100,21 +104,22 @@ gboolean gst_type_find_register (GstPlugin * plugin,
const gchar * name,
guint rank,
GstTypeFindFunction func,
gchar ** extensions, const GstCaps * possible_caps, gpointer data);
gchar ** extensions,
const GstCaps * possible_caps,
gpointer data);
/* typefinding interface */
GType gst_type_find_factory_get_type (void);
GList *gst_type_find_factory_get_list (void);
GList * gst_type_find_factory_get_list (void);
gchar **gst_type_find_factory_get_extensions (const GstTypeFindFactory *
factory);
const GstCaps *gst_type_find_factory_get_caps (const GstTypeFindFactory *
factory);
void gst_type_find_factory_call_function (const GstTypeFindFactory * factory,
GstTypeFind * find);
gchar ** gst_type_find_factory_get_extensions (const GstTypeFindFactory *factory);
const GstCaps * gst_type_find_factory_get_caps (const GstTypeFindFactory *factory);
void gst_type_find_factory_call_function (const GstTypeFindFactory *factory,
GstTypeFind *find);
G_END_DECLS
#endif /* __GST_TYPE_FIND_H__ */

View file

@ -22,7 +22,9 @@
#include <glib.h>
G_BEGIN_DECLS typedef struct _GstObject GstObject;
G_BEGIN_DECLS
typedef struct _GstObject GstObject;
typedef struct _GstObjectClass GstObjectClass;
typedef struct _GstPad GstPad;
typedef struct _GstPadClass GstPadClass;
@ -36,31 +38,25 @@ typedef struct _GstScheduler GstScheduler;
typedef struct _GstSchedulerClass GstSchedulerClass;
typedef struct _GstEvent GstEvent;
typedef enum
{
typedef enum {
GST_STATE_VOID_PENDING = 0,
GST_STATE_NULL = (1 << 0),
GST_STATE_READY = (1 << 1),
GST_STATE_PAUSED = (1 << 2),
GST_STATE_PLAYING = (1 << 3)
}
GstElementState;
} GstElementState;
typedef enum
{
typedef enum {
GST_STATE_FAILURE = 0,
GST_STATE_SUCCESS = 1,
GST_STATE_ASYNC = 2
}
GstElementStateReturn;
} GstElementStateReturn;
typedef enum
{
typedef enum {
GST_RESULT_OK,
GST_RESULT_NOK,
GST_RESULT_NOT_IMPL
}
GstResult;
} GstResult;
#define GST_RANK_PRIMARY 256
#define GST_RANK_SECONDARY 128
@ -71,4 +67,5 @@ GstResult;
#define GST_PADDING_INIT { 0 }
G_END_DECLS
#endif /* __GST_TYPES_H__ */

View file

@ -28,13 +28,13 @@
#include <gst/gstelement.h>
#include <gst/gstpluginfeature.h>
G_BEGIN_DECLS typedef enum
{
G_BEGIN_DECLS
typedef enum {
GST_URI_UNKNOWN,
GST_URI_SINK,
GST_URI_SRC
}
GstURIType;
} GstURIType;
#define GST_URI_TYPE_IS_VALID(type) ((type) == GST_URI_SRC || (type) == GST_URI_SINK)
@ -48,12 +48,12 @@ GstURIType;
typedef struct _GstURIHandler GstURIHandler;
typedef struct _GstURIHandlerInterface GstURIHandlerInterface;
struct _GstURIHandlerInterface
{
struct _GstURIHandlerInterface {
GTypeInterface parent;
/* signals */
void (*new_uri) (GstURIHandler * handler, const gchar * uri);
void (* new_uri) (GstURIHandler * handler,
const gchar * uri);
/* idea for the future ?
gboolean (* require_password) (GstURIHandler * handler,
gchar ** username,
@ -63,12 +63,13 @@ struct _GstURIHandlerInterface
/* vtable */
/* querying capabilities */
GstURIType (*get_type) (void);
gchar **(*get_protocols) (void);
GstURIType (* get_type) (void);
gchar ** (* get_protocols) (void);
/* using the interface */
G_CONST_RETURN gchar *(*get_uri) (GstURIHandler * handler);
gboolean (*set_uri) (GstURIHandler * handler, const gchar * uri);
G_CONST_RETURN gchar *(* get_uri) (GstURIHandler * handler);
gboolean (* set_uri) (GstURIHandler * handler,
const gchar * uri);
/* we might want to add functions here to query features, someone with gnome-vfs knowledge go ahead */
@ -79,21 +80,26 @@ struct _GstURIHandlerInterface
gboolean gst_uri_protocol_is_valid (const gchar * protocol);
gboolean gst_uri_is_valid (const gchar * uri);
gchar *gst_uri_get_protocol (const gchar * uri);
gchar *gst_uri_get_location (const gchar * uri);
gchar *gst_uri_construct (const gchar * protocol, const gchar * location);
gchar * gst_uri_get_protocol (const gchar * uri);
gchar * gst_uri_get_location (const gchar * uri);
gchar * gst_uri_construct (const gchar * protocol,
const gchar * location);
GstElement *gst_element_make_from_uri (const GstURIType type,
const gchar * uri, const gchar * elementname);
GstElement * gst_element_make_from_uri (const GstURIType type,
const gchar * uri,
const gchar * elementname);
/* accessing the interface */
GType gst_uri_handler_get_type (void);
guint gst_uri_handler_get_uri_type (GstURIHandler * handler);
gchar **gst_uri_handler_get_protocols (GstURIHandler * handler);
G_CONST_RETURN gchar *gst_uri_handler_get_uri (GstURIHandler * handler);
gboolean gst_uri_handler_set_uri (GstURIHandler * handler, const gchar * uri);
void gst_uri_handler_new_uri (GstURIHandler * handler, const gchar * uri);
gchar ** gst_uri_handler_get_protocols (GstURIHandler * handler);
G_CONST_RETURN gchar * gst_uri_handler_get_uri (GstURIHandler * handler);
gboolean gst_uri_handler_set_uri (GstURIHandler * handler,
const gchar * uri);
void gst_uri_handler_new_uri (GstURIHandler * handler,
const gchar * uri);
G_END_DECLS
#endif /* __GST_URI_H__ */

View file

@ -27,9 +27,11 @@
#include <glib.h>
G_BEGIN_DECLS
/* a static type for making uri element properties */
#define GST_TYPE_URI (gst_uri_get_uri_type())
GType gst_uri_get_uri_type (void);
GType gst_uri_get_uri_type (void);
G_END_DECLS
#endif /* __GST_URI_TYPE_H */

View file

@ -28,15 +28,14 @@
#include <gst/gstelement.h>
G_BEGIN_DECLS
void gst_util_set_value_from_string (GValue * value,
const gchar * value_str);
void gst_util_set_object_arg (GObject * object, const gchar * name,
const gchar * value);
void gst_util_dump_mem (guchar * mem, guint size);
void gst_util_set_value_from_string (GValue *value, const gchar *value_str);
void gst_util_set_object_arg (GObject *object, const gchar *name, const gchar *value);
void gst_print_pad_caps (GString * buf, gint indent, GstPad * pad);
void gst_print_element_args (GString * buf, gint indent, GstElement * element);
void gst_util_dump_mem (guchar *mem, guint size);
void gst_print_pad_caps (GString *buf, gint indent, GstPad *pad);
void gst_print_element_args (GString *buf, gint indent, GstElement *element);
/* Macros for defining classes. Ideas taken from Bonobo, which took theirs
@ -106,4 +105,5 @@ type_as_function ## _get_type (void) \
G_END_DECLS
#endif /* __GST_UTILS_H__ */

View file

@ -24,24 +24,24 @@
#include <gst/gstcaps.h>
G_BEGIN_DECLS
typedef int (*GstValueCompareFunc) (const GValue * value1,
const GValue * value2);
typedef char *(*GstValueSerializeFunc) (const GValue * value1);
typedef gboolean (*GstValueDeserializeFunc) (GValue * dest, const char *s);
typedef int (*GstValueUnionFunc) (GValue * dest, const GValue * value1,
const GValue * value2);
typedef int (*GstValueIntersectFunc) (GValue * dest, const GValue * value1,
const GValue * value2);
typedef int (* GstValueCompareFunc) (const GValue *value1,
const GValue *value2);
typedef char * (* GstValueSerializeFunc) (const GValue *value1);
typedef gboolean (* GstValueDeserializeFunc) (GValue *dest, const char *s);
typedef int (* GstValueUnionFunc) (GValue *dest, const GValue *value1,
const GValue *value2);
typedef int (* GstValueIntersectFunc) (GValue *dest, const GValue *value1,
const GValue *value2);
typedef struct _GstValueTable GstValueTable;
struct _GstValueTable
{
struct _GstValueTable {
GType type;
GstValueCompareFunc compare;
GstValueSerializeFunc serialize;
GstValueDeserializeFunc deserialize;
void *_gst_reserved[GST_PADDING];
void *_gst_reserved [GST_PADDING];
};
@ -78,66 +78,62 @@ extern GType gst_type_list;
/* list */
void gst_value_list_prepend_value (GValue * value,
const GValue * prepend_value);
void gst_value_list_append_value (GValue * value, const GValue * append_value);
guint gst_value_list_get_size (const GValue * value);
G_CONST_RETURN GValue *gst_value_list_get_value (const GValue * value,
guint index);
void gst_value_list_concat (GValue * dest, const GValue * value1,
const GValue * value2);
void gst_value_list_prepend_value (GValue *value, const GValue *prepend_value);
void gst_value_list_append_value (GValue *value, const GValue *append_value);
guint gst_value_list_get_size (const GValue *value);
G_CONST_RETURN GValue *gst_value_list_get_value (const GValue *value, guint index);
void gst_value_list_concat (GValue *dest, const GValue *value1, const GValue *value2);
/* fourcc */
void gst_value_set_fourcc (GValue * value, guint32 fourcc);
guint32 gst_value_get_fourcc (const GValue * value);
void gst_value_set_fourcc (GValue *value, guint32 fourcc);
guint32 gst_value_get_fourcc (const GValue *value);
/* int range */
void gst_value_set_int_range (GValue * value, int start, int end);
int gst_value_get_int_range_min (const GValue * value);
int gst_value_get_int_range_max (const GValue * value);
void gst_value_set_int_range (GValue *value, int start, int end);
int gst_value_get_int_range_min (const GValue *value);
int gst_value_get_int_range_max (const GValue *value);
/* double range */
void gst_value_set_double_range (GValue * value, double start, double end);
double gst_value_get_double_range_min (const GValue * value);
double gst_value_get_double_range_max (const GValue * value);
void gst_value_set_double_range (GValue *value, double start, double end);
double gst_value_get_double_range_min (const GValue *value);
double gst_value_get_double_range_max (const GValue *value);
/* caps */
G_CONST_RETURN GstCaps *gst_value_get_caps (const GValue * value);
void gst_value_set_caps (GValue * value, const GstCaps * caps);
G_CONST_RETURN GstCaps *gst_value_get_caps (const GValue *value);
void gst_value_set_caps (GValue *value, const GstCaps *caps);
/* compare */
gboolean gst_value_can_compare (const GValue * value1, const GValue * value2);
int gst_value_compare (const GValue * value1, const GValue * value2);
gboolean gst_value_can_compare (const GValue *value1, const GValue *value2);
int gst_value_compare (const GValue *value1, const GValue *value2);
/* union */
gboolean gst_value_can_union (const GValue * value1, const GValue * value2);
gboolean gst_value_union (GValue * dest, const GValue * value1,
const GValue * value2);
void gst_value_register_union_func (GType type1, GType type2,
GstValueUnionFunc func);
gboolean gst_value_can_union (const GValue *value1, const GValue *value2);
gboolean gst_value_union (GValue *dest, const GValue *value1, const GValue *value2);
void gst_value_register_union_func (GType type1, GType type2, GstValueUnionFunc func);
/* intersection */
gboolean gst_value_can_intersect (const GValue * value1, const GValue * value2);
gboolean gst_value_intersect (GValue * dest, const GValue * value1,
const GValue * value2);
void gst_value_register_intersect_func (GType type1, GType type2,
GstValueIntersectFunc func);
gboolean gst_value_can_intersect (const GValue *value1, const GValue *value2);
gboolean gst_value_intersect (GValue *dest, const GValue *value1, const GValue *value2);
void gst_value_register_intersect_func (GType type1, GType type2, GstValueIntersectFunc func);
/* */
void gst_value_register (const GstValueTable * table);
void gst_value_init_and_copy (GValue * dest, const GValue * src);
void gst_value_register (const GstValueTable *table);
void gst_value_init_and_copy (GValue *dest, const GValue *src);
void _gst_value_initialize (void);
gchar *gst_value_serialize (const GValue * value);
gboolean gst_value_deserialize (GValue * dest, const gchar * src);
gchar * gst_value_serialize (const GValue *value);
gboolean gst_value_deserialize (GValue *dest, const gchar *src);
G_END_DECLS
#endif

View file

@ -30,17 +30,19 @@
#include <gst/gstelement.h>
G_BEGIN_DECLS
#define GST_TYPE_XML (gst_xml_get_type ())
#define GST_XML(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_XML, GstXML))
#define GST_IS_XML(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_XML))
#define GST_XML_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_XML, GstXMLClass))
#define GST_IS_XML_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_XML))
#define GST_XML_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_XML, GstXMLClass))
typedef struct _GstXML GstXML;
typedef struct _GstXMLClass GstXMLClass;
struct _GstXML
{
struct _GstXML {
GstObject object;
GList *topelements;
@ -52,13 +54,12 @@ struct _GstXML
typedef struct _GstXMLNs GstXMLNs;
struct _GstXMLClass
{
struct _GstXMLClass {
GstObjectClass parent_class;
/* signal callbacks */
void (*object_loaded) (GstXML * xml, GstObject * object, xmlNodePtr self);
void (*object_saved) (GstXML * xml, GstObject * object, xmlNodePtr self);
void (*object_loaded) (GstXML *xml, GstObject *object, xmlNodePtr self);
void (*object_saved) (GstXML *xml, GstObject *object, xmlNodePtr self);
gpointer _gst_reserved[GST_PADDING];
};
@ -67,26 +68,25 @@ GType gst_xml_get_type (void);
/* create an XML document out of a pipeline */
xmlDocPtr gst_xml_write (GstElement * element);
xmlDocPtr gst_xml_write (GstElement *element);
/* write a formatted representation of a pipeline to an open file */
gint gst_xml_write_file (GstElement * element, FILE * out);
gint gst_xml_write_file (GstElement *element, FILE *out);
GstXML *gst_xml_new (void);
GstXML* gst_xml_new (void);
gboolean gst_xml_parse_doc (GstXML * xml, xmlDocPtr doc, const guchar * root);
gboolean gst_xml_parse_file (GstXML * xml, const guchar * fname,
const guchar * root);
gboolean gst_xml_parse_memory (GstXML * xml, guchar * buffer, guint size,
const gchar * root);
gboolean gst_xml_parse_doc (GstXML *xml, xmlDocPtr doc, const guchar *root);
gboolean gst_xml_parse_file (GstXML *xml, const guchar *fname, const guchar *root);
gboolean gst_xml_parse_memory (GstXML *xml, guchar *buffer, guint size, const gchar *root);
GstElement *gst_xml_get_element (GstXML * xml, const guchar * name);
GList *gst_xml_get_topelements (GstXML * xml);
GstElement* gst_xml_get_element (GstXML *xml, const guchar *name);
GList* gst_xml_get_topelements (GstXML *xml);
GstElement *gst_xml_make_element (xmlNodePtr cur, GstObject * parent);
GstElement* gst_xml_make_element (xmlNodePtr cur, GstObject *parent);
G_END_DECLS
#else /* GST_DISABLE_LOADSAVE */
#pragma GCC poison gst_xml_write

View file

@ -8,8 +8,7 @@
# include "config.h"
#endif
typedef struct
{
typedef struct {
GstElement *src;
GstElement *sink;
gchar *src_name;
@ -17,22 +16,18 @@ typedef struct
GSList *src_pads;
GSList *sink_pads;
GstCaps *caps;
}
link_t;
} link_t;
typedef struct
{
typedef struct {
GSList *elements;
GstElement *first;
GstElement *last;
link_t *front;
link_t *back;
}
chain_t;
} chain_t;
typedef struct _graph_t graph_t;
struct _graph_t
{
struct _graph_t {
chain_t *chain; /* links are supposed to be done now */
GSList *links;
GError **error;
@ -50,13 +45,12 @@ struct _graph_t
#endif
#ifdef __GST_PARSE_TRACE
gchar *__gst_parse_strdup (gchar * org);
void __gst_parse_strfree (gchar * str);
gchar *__gst_parse_strdup (gchar *org);
void __gst_parse_strfree (gchar *str);
link_t *__gst_parse_link_new ();
void __gst_parse_link_free (link_t * data);
void __gst_parse_link_free (link_t *data);
chain_t *__gst_parse_chain_new ();
void __gst_parse_chain_free (chain_t * data);
void __gst_parse_chain_free (chain_t *data);
# define gst_parse_strdup __gst_parse_strdup
# define gst_parse_strfree __gst_parse_strfree
# define gst_parse_link_new __gst_parse_link_new
@ -73,7 +67,7 @@ void __gst_parse_chain_free (chain_t * data);
#endif /* __GST_PARSE_TRACE */
static inline void
gst_parse_unescape (gchar * str)
gst_parse_unescape (gchar *str)
{
gchar *walk;

View file

@ -27,6 +27,7 @@
#include <gst/gstregistry.h>
G_BEGIN_DECLS
#define GST_TYPE_XML_REGISTRY \
(gst_xml_registry_get_type())
#define GST_XML_REGISTRY(obj) \
@ -37,11 +38,11 @@ G_BEGIN_DECLS
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_XML_REGISTRY))
#define GST_IS_XML_REGISTRY_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_XML_REGISTRY))
typedef struct _GstXMLRegistry GstXMLRegistry;
typedef struct _GstXMLRegistryClass GstXMLRegistryClass;
typedef enum
{
typedef enum {
GST_XML_REGISTRY_NONE,
GST_XML_REGISTRY_TOP,
GST_XML_REGISTRY_PATHS,
@ -53,33 +54,33 @@ typedef enum
GST_XML_REGISTRY_CAPS,
GST_XML_REGISTRY_STRUCTURE,
GST_XML_REGISTRY_PROPERTIES
}
GstXMLRegistryState;
} GstXMLRegistryState;
typedef enum
{
typedef enum {
GST_XML_REGISTRY_READ,
GST_XML_REGISTRY_WRITE
}
GstXMLRegistryMode;
} GstXMLRegistryMode;
typedef void (*GstXMLRegistryGetPerms) (GstXMLRegistry * registry);
typedef void (*GstXMLRegistryAddPathList) (GstXMLRegistry * registry);
typedef gboolean (*GstXMLRegistryParser) (GMarkupParseContext * context,
const gchar * tag,
const gchar * text,
gsize text_len, GstXMLRegistry * registry, GError ** error);
typedef void (*GstXMLRegistryGetPerms) (GstXMLRegistry *registry);
typedef void (*GstXMLRegistryAddPathList) (GstXMLRegistry *registry);
typedef gboolean (*GstXMLRegistryParser) (GMarkupParseContext *context,
const gchar *tag,
const gchar *text,
gsize text_len,
GstXMLRegistry *registry,
GError **error);
typedef gboolean (*GstXMLRegistryOpen) (GstXMLRegistry * registry,
typedef gboolean (*GstXMLRegistryOpen) (GstXMLRegistry *registry,
GstXMLRegistryMode mode);
typedef gboolean (*GstXMLRegistryLoad) (GstXMLRegistry * registry,
gchar * dest, gssize * size);
typedef gboolean (*GstXMLRegistrySave) (GstXMLRegistry * registry,
gchar * format, ...);
typedef gboolean (*GstXMLRegistryClose) (GstXMLRegistry * registry);
typedef gboolean (*GstXMLRegistryLoad) (GstXMLRegistry *registry,
gchar *dest,
gssize *size);
typedef gboolean (*GstXMLRegistrySave) (GstXMLRegistry *registry,
gchar *format,
...);
typedef gboolean (*GstXMLRegistryClose) (GstXMLRegistry *registry);
struct _GstXMLRegistry
{
struct _GstXMLRegistry {
GstRegistry object;
gchar *location;
@ -109,8 +110,7 @@ struct _GstXMLRegistry
gchar *list_name;
};
struct _GstXMLRegistryClass
{
struct _GstXMLRegistryClass {
GstRegistryClass parent_class;
GstXMLRegistryGetPerms get_perms_func;
@ -125,7 +125,9 @@ struct _GstXMLRegistryClass
/* normal GObject stuff */
GType gst_xml_registry_get_type (void);
GstRegistry *gst_xml_registry_new (const gchar * name, const gchar * location);
GstRegistry* gst_xml_registry_new (const gchar *name, const gchar *location);
G_END_DECLS
#endif /* __GST_XML_REGISTRY_H__ */

View file

@ -83,8 +83,7 @@
by LL and unsigned long long values by ULL, lest
they be truncated by the compiler)
*/
typedef union
{
typedef union {
long long q; /* Quadword (64-bit) value */
unsigned long long uq; /* Unsigned Quadword */
int d[2]; /* 2 Doubleword (32-bit) values */
@ -94,15 +93,14 @@ typedef union
char b[8]; /* 8 Byte (8-bit) values */
unsigned char ub[8]; /* 8 Unsigned Byte */
float s[2]; /* Single-precision (32-bit) value */
}
mmx_t;
} mmx_t;
/* Function to test if multimedia instructions are supported...
*/
inline extern int
mm_support (void)
mm_support(void)
{
/* Returns 1 if MMX instructions are supported,
3 if Cyrix MMX and Extended MMX instructions are supported
@ -114,66 +112,117 @@ mm_support (void)
__asm__ __volatile__ (
/* See if CPUID instruction is supported ... */
/* ... Get copies of EFLAGS into eax and ecx */
"pushf\n\t" "popl %%eax\n\t" "movl %%eax, %%ecx\n\t"
"pushf\n\t"
"popl %%eax\n\t"
"movl %%eax, %%ecx\n\t"
/* ... Toggle the ID bit in one copy and store */
/* to the EFLAGS reg */
"xorl $0x200000, %%eax\n\t" "push %%eax\n\t" "popf\n\t"
"xorl $0x200000, %%eax\n\t"
"push %%eax\n\t"
"popf\n\t"
/* ... Get the (hopefully modified) EFLAGS */
"pushf\n\t" "popl %%eax\n\t"
"pushf\n\t"
"popl %%eax\n\t"
/* ... Compare and test result */
"xorl %%eax, %%ecx\n\t" "testl $0x200000, %%ecx\n\t" "jz NotSupported1\n\t" /* Nothing supported */
"xorl %%eax, %%ecx\n\t"
"testl $0x200000, %%ecx\n\t"
"jz NotSupported1\n\t" /* Nothing supported */
/* Get standard CPUID information, and
go to a specific vendor section */
"movl $0, %%eax\n\t" "cpuid\n\t"
"movl $0, %%eax\n\t"
"cpuid\n\t"
/* Check for Intel */
"cmpl $0x756e6547, %%ebx\n\t"
"jne TryAMD\n\t"
"cmpl $0x49656e69, %%edx\n\t"
"jne TryAMD\n\t"
"cmpl $0x6c65746e, %%ecx\n" "jne TryAMD\n\t" "jmp Intel\n\t"
"cmpl $0x6c65746e, %%ecx\n"
"jne TryAMD\n\t"
"jmp Intel\n\t"
/* Check for AMD */
"\nTryAMD:\n\t"
"cmpl $0x68747541, %%ebx\n\t"
"jne TryCyrix\n\t"
"cmpl $0x69746e65, %%edx\n\t"
"jne TryCyrix\n\t"
"cmpl $0x444d4163, %%ecx\n" "jne TryCyrix\n\t" "jmp AMD\n\t"
"cmpl $0x444d4163, %%ecx\n"
"jne TryCyrix\n\t"
"jmp AMD\n\t"
/* Check for Cyrix */
"\nTryCyrix:\n\t"
"cmpl $0x69727943, %%ebx\n\t"
"jne NotSupported2\n\t"
"cmpl $0x736e4978, %%edx\n\t"
"jne NotSupported3\n\t"
"cmpl $0x64616574, %%ecx\n\t" "jne NotSupported4\n\t"
"cmpl $0x64616574, %%ecx\n\t"
"jne NotSupported4\n\t"
/* Drop through to Cyrix... */
/* Cyrix Section */
/* See if extended CPUID is supported */
"movl $0x80000000, %%eax\n\t" "cpuid\n\t" "cmpl $0x80000000, %%eax\n\t" "jl MMXtest\n\t" /* Try standard CPUID instead */
"movl $0x80000000, %%eax\n\t"
"cpuid\n\t"
"cmpl $0x80000000, %%eax\n\t"
"jl MMXtest\n\t" /* Try standard CPUID instead */
/* Extended CPUID supported, so get extended features */
"movl $0x80000001, %%eax\n\t" "cpuid\n\t" "testl $0x00800000, %%eax\n\t" /* Test for MMX */
"movl $0x80000001, %%eax\n\t"
"cpuid\n\t"
"testl $0x00800000, %%eax\n\t" /* Test for MMX */
"jz NotSupported5\n\t" /* MMX not supported */
"testl $0x01000000, %%eax\n\t" /* Test for Ext'd MMX */
"jnz EMMXSupported\n\t" "movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n" "EMMXSupported:\n\t" "movl $3, %0:\n\n\t" /* EMMX and MMX Supported */
"jnz EMMXSupported\n\t"
"movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n"
"EMMXSupported:\n\t"
"movl $3, %0:\n\n\t" /* EMMX and MMX Supported */
"jmp Return\n\t"
/* AMD Section */
"AMD:\n\t"
/* See if extended CPUID is supported */
"movl $0x80000000, %%eax\n\t" "cpuid\n\t" "cmpl $0x80000000, %%eax\n\t" "jl MMXtest\n\t" /* Try standard CPUID instead */
"movl $0x80000000, %%eax\n\t"
"cpuid\n\t"
"cmpl $0x80000000, %%eax\n\t"
"jl MMXtest\n\t" /* Try standard CPUID instead */
/* Extended CPUID supported, so get extended features */
"movl $0x80000001, %%eax\n\t" "cpuid\n\t" "testl $0x00800000, %%edx\n\t" /* Test for MMX */
"movl $0x80000001, %%eax\n\t"
"cpuid\n\t"
"testl $0x00800000, %%edx\n\t" /* Test for MMX */
"jz NotSupported6\n\t" /* MMX not supported */
"testl $0x80000000, %%edx\n\t" /* Test for 3DNow! */
"jnz ThreeDNowSupported\n\t" "movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n" "ThreeDNowSupported:\n\t" "movl $5, %0:\n\n\t" /* 3DNow! and MMX Supported */
"jnz ThreeDNowSupported\n\t"
"movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n"
"ThreeDNowSupported:\n\t"
"movl $5, %0:\n\n\t" /* 3DNow! and MMX Supported */
"jmp Return\n\t"
/* Intel Section */
"Intel:\n\t"
/* Check for MMX */
"MMXtest:\n\t" "movl $1, %%eax\n\t" "cpuid\n\t" "testl $0x00800000, %%edx\n\t" /* Test for MMX */
"MMXtest:\n\t"
"movl $1, %%eax\n\t"
"cpuid\n\t"
"testl $0x00800000, %%edx\n\t" /* Test for MMX */
"jz NotSupported7\n\t" /* MMX Not supported */
"movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\t"
/* Nothing supported */
"\nNotSupported1:\n\t"
"#movl $101, %0:\n\n\t"
@ -188,21 +237,26 @@ mm_support (void)
"\nNotSupported6:\n\t"
"#movl $106, %0:\n\n\t"
"\nNotSupported7:\n\t"
"#movl $107, %0:\n\n\t" "movl $0, %0:\n\n\t" "Return:\n\t":"=a" (rval)
"#movl $107, %0:\n\n\t"
"movl $0, %0:\n\n\t"
"Return:\n\t"
: "=a" (rval)
: /* no input */
:"eax", "ebx", "ecx", "edx");
: "eax", "ebx", "ecx", "edx"
);
/* Return */
return (rval);
return(rval);
}
/* Function to test if mmx instructions are supported...
*/
inline extern int
mmx_ok (void)
mmx_ok(void)
{
/* Returns 1 if MMX instructions are supported, 0 otherwise */
return (mm_support () & 0x1);
return ( mm_support() & 0x1 );
}
@ -668,3 +722,4 @@ mmx_ok (void)
#endif
#endif

View file

@ -43,18 +43,16 @@
by LL and unsigned long long values by ULL, lest
they be truncated by the compiler)
*/
typedef union
{
typedef union {
float sf[4]; /* Single-precision (32-bit) value */
}
__attribute__ ((aligned (16))) sse_t; /* On a 16 byte (128-bit) boundary */
} __attribute__ ((aligned (16))) sse_t; /* On a 16 byte (128-bit) boundary */
#if 0
/* Function to test if multimedia instructions are supported...
*/
inline extern int
mm_support (void)
mm_support(void)
{
/* Returns 1 if MMX instructions are supported,
3 if Cyrix MMX and Extended MMX instructions are supported
@ -67,38 +65,61 @@ mm_support (void)
__asm__ __volatile__ (
/* See if CPUID instruction is supported ... */
/* ... Get copies of EFLAGS into eax and ecx */
"pushf\n\t" "popl %%eax\n\t" "movl %%eax, %%ecx\n\t"
"pushf\n\t"
"popl %%eax\n\t"
"movl %%eax, %%ecx\n\t"
/* ... Toggle the ID bit in one copy and store */
/* to the EFLAGS reg */
"xorl $0x200000, %%eax\n\t" "push %%eax\n\t" "popf\n\t"
"xorl $0x200000, %%eax\n\t"
"push %%eax\n\t"
"popf\n\t"
/* ... Get the (hopefully modified) EFLAGS */
"pushf\n\t" "popl %%eax\n\t"
"pushf\n\t"
"popl %%eax\n\t"
/* ... Compare and test result */
"xorl %%eax, %%ecx\n\t" "testl $0x200000, %%ecx\n\t" "jz NotSupported1\n\t" /* CPUID not supported */
"xorl %%eax, %%ecx\n\t"
"testl $0x200000, %%ecx\n\t"
"jz NotSupported1\n\t" /* CPUID not supported */
/* Get standard CPUID information, and
go to a specific vendor section */
"movl $0, %%eax\n\t" "cpuid\n\t"
"movl $0, %%eax\n\t"
"cpuid\n\t"
/* Check for Intel */
"cmpl $0x756e6547, %%ebx\n\t"
"jne TryAMD\n\t"
"cmpl $0x49656e69, %%edx\n\t"
"jne TryAMD\n\t"
"cmpl $0x6c65746e, %%ecx\n" "jne TryAMD\n\t" "jmp Intel\n\t"
"cmpl $0x6c65746e, %%ecx\n"
"jne TryAMD\n\t"
"jmp Intel\n\t"
/* Check for AMD */
"\nTryAMD:\n\t"
"cmpl $0x68747541, %%ebx\n\t"
"jne TryCyrix\n\t"
"cmpl $0x69746e65, %%edx\n\t"
"jne TryCyrix\n\t"
"cmpl $0x444d4163, %%ecx\n" "jne TryCyrix\n\t" "jmp AMD\n\t"
"cmpl $0x444d4163, %%ecx\n"
"jne TryCyrix\n\t"
"jmp AMD\n\t"
/* Check for Cyrix */
"\nTryCyrix:\n\t"
"cmpl $0x69727943, %%ebx\n\t"
"jne NotSupported2\n\t"
"cmpl $0x736e4978, %%edx\n\t"
"jne NotSupported3\n\t"
"cmpl $0x64616574, %%ecx\n\t" "jne NotSupported4\n\t"
"cmpl $0x64616574, %%ecx\n\t"
"jne NotSupported4\n\t"
/* Drop through to Cyrix... */
/* Cyrix Section */
/* See if extended CPUID level 80000001 is supported */
/* The value of CPUID/80000001 for the 6x86MX is undefined
@ -108,38 +129,68 @@ mm_support (void)
According to the table, the only CPU which supports level
2 is also the only one which supports extended CPUID levels.
*/
"cmpl $0x2, %%eax\n\t" "jne MMXtest\n\t" /* Use standard CPUID instead */
"cmpl $0x2, %%eax\n\t"
"jne MMXtest\n\t" /* Use standard CPUID instead */
/* Extended CPUID supported (in theory), so get extended
features */
"movl $0x80000001, %%eax\n\t" "cpuid\n\t" "testl $0x00800000, %%eax\n\t" /* Test for MMX */
"movl $0x80000001, %%eax\n\t"
"cpuid\n\t"
"testl $0x00800000, %%eax\n\t" /* Test for MMX */
"jz NotSupported5\n\t" /* MMX not supported */
"testl $0x01000000, %%eax\n\t" /* Test for Ext'd MMX */
"jnz EMMXSupported\n\t" "movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n" "EMMXSupported:\n\t" "movl $3, %0:\n\n\t" /* EMMX and MMX Supported */
"jnz EMMXSupported\n\t"
"movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n"
"EMMXSupported:\n\t"
"movl $3, %0:\n\n\t" /* EMMX and MMX Supported */
"jmp Return\n\t"
/* AMD Section */
"AMD:\n\t"
/* See if extended CPUID is supported */
"movl $0x80000000, %%eax\n\t" "cpuid\n\t" "cmpl $0x80000000, %%eax\n\t" "jl MMXtest\n\t" /* Use standard CPUID instead */
"movl $0x80000000, %%eax\n\t"
"cpuid\n\t"
"cmpl $0x80000000, %%eax\n\t"
"jl MMXtest\n\t" /* Use standard CPUID instead */
/* Extended CPUID supported, so get extended features */
"movl $0x80000001, %%eax\n\t" "cpuid\n\t" "testl $0x00800000, %%edx\n\t" /* Test for MMX */
"movl $0x80000001, %%eax\n\t"
"cpuid\n\t"
"testl $0x00800000, %%edx\n\t" /* Test for MMX */
"jz NotSupported6\n\t" /* MMX not supported */
"testl $0x80000000, %%edx\n\t" /* Test for 3DNow! */
"jnz ThreeDNowSupported\n\t" "movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n" "ThreeDNowSupported:\n\t" "movl $5, %0:\n\n\t" /* 3DNow! and MMX Supported */
"jnz ThreeDNowSupported\n\t"
"movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\n"
"ThreeDNowSupported:\n\t"
"movl $5, %0:\n\n\t" /* 3DNow! and MMX Supported */
"jmp Return\n\t"
/* Intel Section */
"Intel:\n\t"
/* Check for SSE */
"SSEtest:\n\t" "movl $1, %%eax\n\t" "cpuid\n\t" "testl $0x02000000, %%edx\n\t" /* Test for SSE */
"SSEtest:\n\t"
"movl $1, %%eax\n\t"
"cpuid\n\t"
"testl $0x02000000, %%edx\n\t" /* Test for SSE */
"jz MMXtest\n\t" /* SSE Not supported */
"movl $9, %0:\n\n\t" /* SSE Supported */
"jmp Return\n\t"
/* Check for MMX */
"MMXtest:\n\t" "movl $1, %%eax\n\t" "cpuid\n\t" "testl $0x00800000, %%edx\n\t" /* Test for MMX */
"MMXtest:\n\t"
"movl $1, %%eax\n\t"
"cpuid\n\t"
"testl $0x00800000, %%edx\n\t" /* Test for MMX */
"jz NotSupported7\n\t" /* MMX Not supported */
"movl $1, %0:\n\n\t" /* MMX Supported */
"jmp Return\n\t"
/* Nothing supported */
"\nNotSupported1:\n\t"
"#movl $101, %0:\n\n\t"
@ -154,21 +205,26 @@ mm_support (void)
"\nNotSupported6:\n\t"
"#movl $106, %0:\n\n\t"
"\nNotSupported7:\n\t"
"#movl $107, %0:\n\n\t" "movl $0, %0:\n\n\t" "Return:\n\t":"=a" (rval)
"#movl $107, %0:\n\n\t"
"movl $0, %0:\n\n\t"
"Return:\n\t"
: "=a" (rval)
: /* no input */
:"eax", "ebx", "ecx", "edx");
: "eax", "ebx", "ecx", "edx"
);
/* Return */
return (rval);
return(rval);
}
/* Function to test if sse instructions are supported...
*/
inline extern int
sse_ok (void)
sse_ok(void)
{
/* Returns 1 if SSE instructions are supported, 0 otherwise */
return ((mm_support () & 0x8) >> 3);
return ( (mm_support() & 0x8) >> 3 );
}
#endif
@ -485,13 +541,13 @@ sse_ok (void)
/* MOVe MaSK from Packed Single-fp
*/
#ifdef SSE_TRACE
#define movmskps(xmmreg, reg) \
#define movmskps(xmmreg, reg) \
{ \
fprintf(stderr, "movmskps()\n"); \
__asm__ __volatile__ ("movmskps %" #xmmreg ", %" #reg) \
}
#else
#define movmskps(xmmreg, reg) \
#define movmskps(xmmreg, reg) \
__asm__ __volatile__ ("movmskps %" #xmmreg ", %" #reg)
#endif
@ -499,13 +555,13 @@ sse_ok (void)
/* Parallel MOVe MaSK from mmx reg to 32-bit reg
*/
#ifdef SSE_TRACE
#define pmovmskb(mmreg, reg) \
#define pmovmskb(mmreg, reg) \
{ \
fprintf(stderr, "movmskps()\n"); \
__asm__ __volatile__ ("movmskps %" #mmreg ", %" #reg) \
}
#else
#define pmovmskb(mmreg, reg) \
#define pmovmskb(mmreg, reg) \
__asm__ __volatile__ ("movmskps %" #mmreg ", %" #reg)
#endif
@ -828,7 +884,7 @@ sse_ok (void)
/* Fp and mmX ReSTORe state
*/
#ifdef SSE_TRACE
#define fxrstor(mem) \
#define fxrstor(mem) \
{ \
fprintf(stderr, "fxrstor()\n"); \
__asm__ __volatile__ ("fxrstor %0" \
@ -836,7 +892,7 @@ sse_ok (void)
: "X" (mem)) \
}
#else
#define fxrstor(mem) \
#define fxrstor(mem) \
__asm__ __volatile__ ("fxrstor %0" \
: /* nothing */ \
: "X" (mem))
@ -846,7 +902,7 @@ sse_ok (void)
/* Fp and mmX SAVE state
*/
#ifdef SSE_TRACE
#define fxsave(mem) \
#define fxsave(mem) \
{ \
fprintf(stderr, "fxsave()\n"); \
__asm__ __volatile__ ("fxsave %0" \
@ -854,7 +910,7 @@ sse_ok (void)
: "X" (mem)) \
}
#else
#define fxsave(mem) \
#define fxsave(mem) \
__asm__ __volatile__ ("fxsave %0" \
: /* nothing */ \
: "X" (mem))
@ -864,7 +920,7 @@ sse_ok (void)
/* STore streaMing simd eXtensions Control/Status Register
*/
#ifdef SSE_TRACE
#define stmxcsr(mem) \
#define stmxcsr(mem) \
{ \
fprintf(stderr, "stmxcsr()\n"); \
__asm__ __volatile__ ("stmxcsr %0" \
@ -872,7 +928,7 @@ sse_ok (void)
: "X" (mem)) \
}
#else
#define stmxcsr(mem) \
#define stmxcsr(mem) \
__asm__ __volatile__ ("stmxcsr %0" \
: /* nothing */ \
: "X" (mem))
@ -882,7 +938,7 @@ sse_ok (void)
/* LoaD streaMing simd eXtensions Control/Status Register
*/
#ifdef SSE_TRACE
#define ldmxcsr(mem) \
#define ldmxcsr(mem) \
{ \
fprintf(stderr, "ldmxcsr()\n"); \
__asm__ __volatile__ ("ldmxcsr %0" \
@ -890,7 +946,7 @@ sse_ok (void)
: "X" (mem)) \
}
#else
#define ldmxcsr(mem) \
#define ldmxcsr(mem) \
__asm__ __volatile__ ("ldmxcsr %0" \
: /* nothing */ \
: "X" (mem))
@ -901,13 +957,13 @@ sse_ok (void)
occuring after fence in source code.
*/
#ifdef SSE_TRACE
#define sfence() \
#define sfence() \
{ \
fprintf(stderr, "sfence()\n"); \
__asm__ __volatile__ ("sfence\n\t") \
}
#else
#define sfence() \
#define sfence() \
__asm__ __volatile__ ("sfence\n\t")
#endif
@ -920,17 +976,18 @@ sse_ok (void)
*/
#ifdef SSE_TRACE
#else
#define prefetch(mem, hint) \
#define prefetch(mem, hint) \
__asm__ __volatile__ ("prefetch" #hint " %0" \
: /* nothing */ \
: "X" (mem))
#define prefetcht0(mem) prefetch(mem, t0)
#define prefetcht1(mem) prefetch(mem, t1)
#define prefetcht2(mem) prefetch(mem, t2)
#define prefetchnta(mem) prefetch(mem, nta)
#define prefetcht0(mem) prefetch(mem, t0)
#define prefetcht1(mem) prefetch(mem, t1)
#define prefetcht2(mem) prefetch(mem, t2)
#define prefetchnta(mem) prefetch(mem, nta)
#endif
#endif

View file

@ -24,10 +24,11 @@
#include <gst/gstpad.h>
#include <gst/gstevent.h>
G_BEGIN_DECLS typedef struct _GstByteStream GstByteStream;
G_BEGIN_DECLS
struct _GstByteStream
{
typedef struct _GstByteStream GstByteStream;
struct _GstByteStream {
GstPad *pad;
GstEvent *event;
@ -50,26 +51,24 @@ struct _GstByteStream
gpointer _gst_reserved[GST_PADDING];
};
GstByteStream *gst_bytestream_new (GstPad * pad);
void gst_bytestream_destroy (GstByteStream * bs);
GstByteStream* gst_bytestream_new (GstPad *pad);
void gst_bytestream_destroy (GstByteStream *bs);
void gst_bytestream_reset (GstByteStream * bs);
guint32 gst_bytestream_read (GstByteStream * bs, GstBuffer ** buf, guint32 len);
guint64 gst_bytestream_tell (GstByteStream * bs);
guint64 gst_bytestream_length (GstByteStream * bs);
gboolean gst_bytestream_size_hint (GstByteStream * bs, guint32 size);
gboolean gst_bytestream_seek (GstByteStream * bs, gint64 offset,
GstSeekType type);
guint32 gst_bytestream_peek (GstByteStream * bs, GstBuffer ** buf, guint32 len);
guint32 gst_bytestream_peek_bytes (GstByteStream * bs, guint8 ** data,
guint32 len);
gboolean gst_bytestream_flush (GstByteStream * bs, guint32 len);
void gst_bytestream_flush_fast (GstByteStream * bs, guint32 len);
void gst_bytestream_get_status (GstByteStream * bs, guint32 * avail_out,
GstEvent ** event_out);
guint64 gst_bytestream_get_timestamp (GstByteStream * bs);
void gst_bytestream_reset (GstByteStream *bs);
guint32 gst_bytestream_read (GstByteStream *bs, GstBuffer** buf, guint32 len);
guint64 gst_bytestream_tell (GstByteStream *bs);
guint64 gst_bytestream_length (GstByteStream *bs);
gboolean gst_bytestream_size_hint (GstByteStream *bs, guint32 size);
gboolean gst_bytestream_seek (GstByteStream *bs, gint64 offset, GstSeekType type);
guint32 gst_bytestream_peek (GstByteStream *bs, GstBuffer** buf, guint32 len);
guint32 gst_bytestream_peek_bytes (GstByteStream *bs, guint8** data, guint32 len);
gboolean gst_bytestream_flush (GstByteStream *bs, guint32 len);
void gst_bytestream_flush_fast (GstByteStream *bs, guint32 len);
void gst_bytestream_get_status (GstByteStream *bs, guint32 *avail_out, GstEvent **event_out);
guint64 gst_bytestream_get_timestamp (GstByteStream *bs);
void gst_bytestream_print_status (GstByteStream * bs);
void gst_bytestream_print_status (GstByteStream *bs);
G_END_DECLS
#endif /* __GST_BYTESTREAM_H__ */

View file

@ -28,7 +28,10 @@
#include <gst/control/dplinearinterp.h>
#include <gst/control/unitconvert.h>
G_BEGIN_DECLS void gst_control_init (int *argc, char **argv[]);
G_BEGIN_DECLS
void gst_control_init (int *argc, char **argv[]);
G_END_DECLS
#endif /* __GST_CONTROL_H__ */

View file

@ -26,11 +26,13 @@
#include "dparamcommon.h"
G_BEGIN_DECLS
#define GST_TYPE_DPARAM (gst_dparam_get_type ())
#define GST_DPARAM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DPARAM,GstDParam))
#define GST_DPARAM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DPARAM,GstDParam))
#define GST_IS_DPARAM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DPARAM))
#define GST_IS_DPARAM_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DPARAM))
#define GST_DPARAM_NAME(dparam) (GST_OBJECT_NAME(dparam))
#define GST_DPARAM_PARENT(dparam) (GST_OBJECT_PARENT(dparam))
#define GST_DPARAM_CHANGE_VALUE(dparam) ((dparam)->change_value)
@ -43,25 +45,25 @@ G_BEGIN_DECLS
#define GST_DPARAM_META_PARAM_SPECS(dparam) ((dparam)->meta_param_specs)
#define GST_DPARAM_LOCK(dparam) (g_mutex_lock((dparam)->lock))
#define GST_DPARAM_UNLOCK(dparam) (g_mutex_unlock((dparam)->lock))
#define GST_DPARAM_READY_FOR_UPDATE(dparam) ((dparam)->ready_for_update)
#define GST_DPARAM_NEXT_UPDATE_TIMESTAMP(dparam) ((dparam)->next_update_timestamp)
#define GST_DPARAM_LAST_UPDATE_TIMESTAMP(dparam) ((dparam)->last_update_timestamp)
#define GST_DPARAM_DO_UPDATE(dparam, timestamp, value, update_info) \
((dparam->do_update_func)(dparam, timestamp, value, update_info))
typedef struct _GstDParamClass GstDParamClass;
typedef enum
{
typedef enum {
GST_DPARAM_UPDATE_FIRST,
GST_DPARAM_UPDATE_NORMAL,
} GstDParamUpdateInfo;
typedef void (*GstDParamDoUpdateFunction) (GstDParam * dparam, gint64 timestamp,
GValue * value, GstDParamUpdateInfo update_info);
typedef void (*GstDParamDoUpdateFunction) (GstDParam *dparam, gint64 timestamp, GValue *value, GstDParamUpdateInfo update_info);
struct _GstDParam
{
struct _GstDParam {
GstObject object;
GstDParamDoUpdateFunction do_update_func;
@ -86,24 +88,22 @@ struct _GstDParam
gpointer _gst_reserved[GST_PADDING];
};
struct _GstDParamClass
{
struct _GstDParamClass {
GstObjectClass parent_class;
/* signal callbacks */
void (*value_changed) (GstDParam * dparam);
void (*value_changed) (GstDParam *dparam);
gpointer _gst_reserved[GST_PADDING];
};
GType gst_dparam_get_type (void);
GstDParam *gst_dparam_new (GType type);
void gst_dparam_attach (GstDParam * dparam, GstDParamManager * manager,
GParamSpec * param_spec, gchar * unit_name);
void gst_dparam_detach (GstDParam * dparam);
void gst_dparam_do_update_default (GstDParam * dparam, gint64 timestamp,
GValue * value, GstDParamUpdateInfo update_info);
GstDParam* gst_dparam_new (GType type);
void gst_dparam_attach (GstDParam *dparam, GstDParamManager *manager, GParamSpec *param_spec, gchar *unit_name);
void gst_dparam_detach (GstDParam *dparam);
void gst_dparam_do_update_default (GstDParam *dparam, gint64 timestamp, GValue *value, GstDParamUpdateInfo update_info);
G_END_DECLS
#endif /* __GST_DPARAM_H__ */

View file

@ -25,16 +25,17 @@
#include "dparam.h"
G_BEGIN_DECLS
#define GST_TYPE_DPSMOOTH (gst_dpsmooth_get_type ())
#define GST_DPSMOOTH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_DPSMOOTH,GstDParamSmooth))
#define GST_DPSMOOTH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_DPSMOOTH,GstDParamSmooth))
#define GST_IS_DPSMOOTH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_DPSMOOTH))
#define GST_IS_DPSMOOTH_CLASS(obj) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_DPSMOOTH))
typedef struct _GstDParamSmoothClass GstDParamSmoothClass;
typedef struct _GstDParamSmooth GstDParamSmooth;
struct _GstDParamSmooth
{
struct _GstDParamSmooth {
GstDParam dparam;
gint64 start_interp;
@ -58,8 +59,7 @@ struct _GstDParamSmooth
gpointer _gst_reserved[GST_PADDING];
};
struct _GstDParamSmoothClass
{
struct _GstDParamSmoothClass {
GstDParamClass parent_class;
/* signal callbacks */
@ -68,7 +68,8 @@ struct _GstDParamSmoothClass
GType gst_dpsmooth_get_type (void);
GstDParam *gst_dpsmooth_new (GType type);
GstDParam* gst_dpsmooth_new (GType type);
G_END_DECLS
#endif /* __GST_DPSMOOTH_H__ */

Some files were not shown because too many files have changed in this diff Show more