2005-09-19 David Schleef <ds@schleef.org>
+ * docs/gst/Makefile.am: Ignore a few more internal headers
+ * docs/gst/gstreamer-docs.sgml: Remove old sections
+ * docs/gst/gstreamer-sections.txt: Remove old sections
+ * docs/gst/tmpl/gstobject.sgml: update
+ * docs/gst/tmpl/gstplugin.sgml: update
+ * docs/gst/tmpl/gstpluginfeature.sgml: update
+ * docs/random/ds/0.9-suggested-changes: update.
+ * gst/Makefile.am: remove memchunk and trashstack, since they're
+ not used.
+ * gst/gst.c: (gst_deinit): rename gst_registry_deinit to _cleanup
+ * gst/gst.h: don't include some headers
+ * gst/gstchildproxy.c: add gstmarshal.h
+ * gst/gstclock.c: Don't use memchunks
+ * gst/gstminiobject.c: Add some docs
+ * gst/gstobject.c: remove DESTROYED flag, since it's redundant
+ * gst/gstobject.h: same
+ * gst/gstplugin.c: include gstmacros.h
+ * gst/gstplugin.h: don't include gstmacros.h, since it's private
+ * gst/gstquery.c: don't use memchunks
+ * gst/gstregistry.c: rename gst_registry_deinit()
+ * gst/gstregistry.h: same
+
+2005-09-19 David Schleef <ds@schleef.org>
+
* docs/libs/gstreamer-libs-docs.sgml: Remove docs for getbits
* docs/libs/gstreamer-libs-sections.txt:
* docs/libs/tmpl/gstgetbits.sgml:
gthread-cothreads.h \
faircothreads.h \
types.h \
+ glib-compat.h \
grammar.tab.h \
gstmarshal.h \
gstaggregator.h \
gstfdsink.h \
gstfdsrc.h \
gstidentity.h \
+ gstmacros.h \
gstmd5sink.h \
gstmultifilesrc.h \
gstmultifdsink.h \
gstshaper.h \
gststatistics.h \
gsttee.h \
+ gsttrashstack.h \
gsttypefindelement.h \
gstspider.h \
gstspideridentity.h \
gstsearchfuncs.h \
+ gsttrashstack.h \
gstxmlregistry.h
# Images to copy into HTML directory.
<!ENTITY GstIndexFactory SYSTEM "xml/gstindexfactory.xml">
<!ENTITY GstInfo SYSTEM "xml/gstinfo.xml">
<!ENTITY GstIterator SYSTEM "xml/gstiterator.xml">
-<!ENTITY GstMacros SYSTEM "xml/gstmacros.xml">
-<!ENTITY GstMemChunk SYSTEM "xml/gstmemchunk.xml">
<!ENTITY GstMessage SYSTEM "xml/gstmessage.xml">
<!ENTITY GstMiniObject SYSTEM "xml/gstminiobject.xml">
<!ENTITY GstObject SYSTEM "xml/gstobject.xml">
<!ENTITY GstQuery SYSTEM "xml/gstquery.xml">
<!ENTITY GstQueue SYSTEM "xml/gstqueue.xml">
<!ENTITY GstRegistry SYSTEM "xml/gstregistry.xml">
-<!ENTITY GstRegistryPool SYSTEM "xml/gstregistrypool.xml">
<!ENTITY GstStructure SYSTEM "xml/gststructure.xml">
<!ENTITY GstSystemClock SYSTEM "xml/gstsystemclock.xml">
<!ENTITY GstTagList SYSTEM "xml/gsttaglist.xml">
<!ENTITY GstTagSetter SYSTEM "xml/gsttagsetter.xml">
<!ENTITY GstTrace SYSTEM "xml/gsttrace.xml">
-<!ENTITY GstTrashStack SYSTEM "xml/gsttrashstack.xml">
<!ENTITY GstTypeFind SYSTEM "xml/gsttypefind.xml">
<!ENTITY GstTypeFindFactory SYSTEM "xml/gsttypefindfactory.xml">
<!ENTITY GstTypes SYSTEM "xml/gsttypes.xml">
&GstQuery;
&GstQueue;
&GstRegistry;
- &GstRegistryPool;
&GstStructure;
&GstSystemClock;
&GstTagList;
&GstCheck;
&GstInfo;
- &GstMacros;
- &GstMemChunk;
&GstTrace;
- &GstTrashStack;
</chapter>
<FILE>gstbus</FILE>
<TITLE>GstBus</TITLE>
GstBus
+GstBusFunc
GstBusFlags
GstBusSyncReply
GstBusHandler
<SECTION>
-<FILE>gstmacros</FILE>
-<TITLE>GstMacros</TITLE>
-<SUBSECTION Private>
-GST_GNUC_CONSTRUCTOR
-GST_INLINE_FUNC
-GST_CAN_INLINE
-</SECTION>
-
-
-<SECTION>
-<FILE>gstmemchunk</FILE>
-<TITLE>GstMemChunk</TITLE>
-GstMemChunk
-gst_mem_chunk_new
-gst_mem_chunk_destroy
-gst_mem_chunk_alloc
-gst_mem_chunk_alloc0
-gst_mem_chunk_free
-</SECTION>
-
-
-<SECTION>
<FILE>gstmessage</FILE>
<TITLE>GstMessage</TITLE>
GstMessage
gst_plugin_unload_plugin
gst_plugin_add_feature
gst_plugin_load
+gst_plugin_load_by_name
+gst_plugin_list_free
<SUBSECTION Standard>
+GstPluginClass
GST_PLUGIN
+GST_PLUGIN_CLASS
+GST_PLUGIN_GET_CLASS
GST_TYPE_PLUGIN
GST_TYPE_PLUGIN_ERROR
+GST_IS_PLUGIN
+GST_IS_PLUGIN_CLASS
+GstPluginFlags
+GST_TYPE_PLUGIN_FLAGS
<SUBSECTION Private>
gst_plugin_get_type
<SUBSECTION Private>
gst_plugin_error_get_type
+gst_plugin_flags_get_type
</SECTION>
gst_plugin_feature_set_name
gst_plugin_feature_get_rank
gst_plugin_feature_get_name
+gst_plugin_feature_load
+gst_plugin_feature_list_free
<SUBSECTION Standard>
GstPluginFeatureClass
GST_PLUGIN_FEATURE
gst_registry_load_plugin
gst_registry_unload_plugin
gst_registry_update_plugin
+gst_registry_scan_path
+gst_registry_get_feature_list
+gst_registry_xml_read_cache
+gst_registry_xml_write_cache
+gst_registry_scan_paths
+gst_registry_get_default
+gst_registry_lookup
+gst_registry_remove_feature
+gst_registry_get_feature_list_by_plugin
+gst_registry_lookup_feature
+gst_registry_get_plugin_list
+gst_registry_add_feature
+<SUBSECTION Default Registry>
+gst_default_registry_find_feature
+gst_default_registry_get_path_list
+gst_default_registry_add_plugin
+gst_default_registry_add_path
+gst_default_registry_scan_paths
+gst_default_registry_find_plugin
+gst_default_registry_get_plugin_list
+gst_default_registry_feature_filter
<SUBSECTION Standard>
GstRegistryClass
GST_REGISTRY
<SECTION>
-<FILE>gstregistrypool</FILE>
-<TITLE>GstRegistryPool</TITLE>
-gst_registry_pool_list
-gst_registry_pool_add
-gst_registry_pool_remove
-gst_registry_pool_add_plugin
-gst_registry_pool_load_all
-gst_registry_pool_plugin_filter
-gst_registry_pool_feature_filter
-gst_registry_pool_plugin_list
-gst_registry_pool_feature_list
-gst_registry_pool_find_plugin
-gst_registry_pool_find_feature
-gst_registry_pool_get_prefered
-</SECTION>
-
-
-<SECTION>
<FILE>gststructure</FILE>
<TITLE>GstStructure</TITLE>
GstStructure
<SECTION>
-<FILE>gsttrashstack</FILE>
-<TITLE>GstTrashStack</TITLE>
-GstTrashStack
-GstTrashStackElement
-gst_vgpointer
-gst_vgulong
-SMP_LOCK
-</SECTION>
-
-
-<SECTION>
<FILE>gsttypefind</FILE>
<TITLE>GstTypeFind</TITLE>
GstTypeFind
</para>
@GST_OBJECT_DISPOSING:
-@GST_OBJECT_DESTROYED:
@GST_OBJECT_FLOATING:
@GST_OBJECT_FLAG_LAST: subclasses can add additional flags starting from this flag
@obj: Object to get the mutex of.
-<!-- ##### MACRO GST_OBJECT_IS_DESTROYED ##### -->
-<para>
-
-</para>
-
-@obj:
-
-
<!-- ##### MACRO GST_OBJECT_IS_DISPOSING ##### -->
<para>
@name:
+<!-- ##### FUNCTION gst_plugin_load_by_name ##### -->
+<para>
+
+</para>
+
+@name:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_plugin_list_free ##### -->
+<para>
+
+</para>
+
+@list:
+
+
@Returns:
+<!-- ##### FUNCTION gst_plugin_feature_load ##### -->
+<para>
+
+</para>
+
+@feature:
+@Returns:
+
+
+<!-- ##### FUNCTION gst_plugin_feature_list_free ##### -->
+<para>
+
+</para>
+
+@list:
+
+
- MAKE A DOCUMENT THAT LISTS ALL API CHANGES AND HOW TO DEAL WITH THEM
- - GstElementState should be a real enum, not something that looks like flags
- changing state can be done with ++ and -- instead of >> and <<
-
- replace object/structure set/get macros with actual functions.
- - events should all use GstStructure
-
- reorganize headers (split app headers vs plugin headers maybe)
while at it also make sure to only allow including of the main headers like
glib, so we can freely shuffle stuff around
(Though the main reason for identities atm is to be able to connect without
plugging - Company)
- - remove float support from dparams
-
- - dparams: should be converted into some kind of special pad and
- object property combination.
-
- read/write locks on buffers
- be able to send events to unlinked pads (bug #114442)
- caps should have a flag on fields to indicate that the field is optional
- - deprecate gst_buffer_merge() and replace with a function that takes
- ownership of the buffers. (bug #136408)
-
- fakesrc handoff should be changed to return a GstData * or carry a
GstData **, wo the user can provide own buffers and events.
- - remove GST_OBJECT_DESTROYED()
-
- - fix plugin code to load plugins with RTLD_LOCAL
-
- don't install gstmarshal.h
- - remove unnecessary headers from gst.h (gstqueue.h in particular)
-
- make sure GstClockTime is used wherever it should (e.g. gstplay)
- make gst_bin_get_list virtual so subclasses can override it (e.g.
24 fps pulled down to 60 and straight video, etc) and make sure our
video stream descriptions make sense.
- - remove GstMemChunk
-
- do an audit to remove GtkObject-isms from gtk-1.2
caps:
gstinfo.c \
gstinterface.c \
gstiterator.c \
- gstmemchunk.c \
gstmessage.c \
gstminiobject.c \
gstpad.c \
gsttagsetter.c \
gsttask.c \
$(GST_TRACE_SRC) \
- gsttrashstack.c \
gsttypefind.c \
gsttypefindfactory.c \
$(GST_URI_SRC) \
gstinterface.h \
gstiterator.h \
gstmacros.h \
- gstmemchunk.h \
gstmessage.h \
gstminiobject.h \
gstpad.h \
gsttagsetter.h \
gsttask.h \
gsttrace.h \
- gsttrashstack.h \
gsttypefind.h \
gsttypefindfactory.h \
gsturi.h \
gst_object_unref (clock);
gst_object_unref (clock);
- gst_registry_deinit ();
+ _gst_registry_cleanup ();
gst_initialized = FALSE;
GST_INFO ("deinitialized GStreamer");
#include <gst/gstinfo.h>
#include <gst/gstinterface.h>
#include <gst/gstiterator.h>
-#include <gst/gstmarshal.h>
#include <gst/gstmessage.h>
#include <gst/gstminiobject.h>
#include <gst/gstobject.h>
#include <gst/gstplugin.h>
#include <gst/gstquery.h>
#include <gst/gstqueryutils.h>
+#include <gst/gstregistry.h>
#include <gst/gststructure.h>
#include <gst/gstsystemclock.h>
#include <gst/gsttaglist.h>
#include <gst/gstxml.h>
#include <gst/gstparse.h>
-#include <gst/gstregistry.h>
/* API compatibility stuff */
#include <gst/gstcompat.h>
#include "gst_private.h"
#include "gstchildproxy.h"
+#include "gstmarshal.h"
#include <gobject/gvaluecollector.h>
/* signals */
#include "gstclock.h"
#include "gstinfo.h"
-#include "gstmemchunk.h"
#include "gstutils.h"
#ifndef GST_DISABLE_TRACE
ARG_EVENT_DIFF
};
-static GstMemChunk *_gst_clock_entries_chunk;
-
static void gst_clock_class_init (GstClockClass * klass);
static void gst_clock_init (GstClock * clock);
static void gst_clock_finalize (GObject * object);
{
GstClockEntry *entry;
- entry = gst_mem_chunk_alloc (_gst_clock_entries_chunk);
+ entry = g_malloc0 (sizeof (GstClockEntry));
#ifndef GST_DISABLE_TRACE
gst_alloc_trace_new (_gst_clock_entry_trace, entry);
#endif
#ifndef GST_DISABLE_TRACE
gst_alloc_trace_free (_gst_clock_entry_trace, id);
#endif
- gst_mem_chunk_free (_gst_clock_entries_chunk, id);
}
/**
if (!g_thread_supported ())
g_thread_init (NULL);
- _gst_clock_entries_chunk = gst_mem_chunk_new ("GstClockEntries",
- sizeof (GstClockEntry), sizeof (GstClockEntry) * 32, G_ALLOC_AND_FREE);
-
#ifndef GST_DISABLE_TRACE
_gst_clock_entry_trace =
gst_alloc_trace_register (GST_CLOCK_ENTRY_TRACE_NAME);
mini_object->refcount = 1;
}
+/**
+ * gst_mini_object_new:
+ * @type: the GType of the mini-object to create
+ *
+ * Creates a new mini-object of the desired type.
+ *
+ * MT safe
+ *
+ * Returns: the new mini-object.
+ */
GstMiniObject *
gst_mini_object_new (GType type)
{
return mini_object;
}
+/**
+ * gst_mini_object_copy:
+ * @mini_object: the mini-object to copy
+ *
+ * Creates a copy of the mini-object.
+ *
+ * MT safe
+ *
+ * Returns: the new mini-object.
+ */
GstMiniObject *
gst_mini_object_copy (const GstMiniObject * mini_object)
{
return mo_class->copy (mini_object);
}
+/**
+ * gst_mini_object_is_writable:
+ * @mini_object: the mini-object to check
+ *
+ * Checks if a mini-object is writable. A mini-object is writable
+ * if the reference count is one and the GST_MINI_OBJECT_FLAG_READONLY
+ * flag is not set. Modification of a mini-object should only be
+ * done after verifying that it is writable.
+ *
+ * MT safe
+ *
+ * Returns: TRUE if the object is writable.
+ */
gboolean
gst_mini_object_is_writable (const GstMiniObject * mini_object)
{
((mini_object->flags & GST_MINI_OBJECT_FLAG_READONLY) == 0);
}
+/**
+ * gst_mini_object_make_writable:
+ * @mini_object: the mini-object to make writable
+ *
+ * Checks if a mini-object is writable. If not, a copy is made and
+ * the copy is returned.
+ *
+ * MT safe
+ *
+ * Returns: a mini-object (possibly a duplicate) that it writable.
+ */
GstMiniObject *
gst_mini_object_make_writable (GstMiniObject * mini_object)
{
return ret;
}
+/**
+ * gst_mini_object_ref:
+ * @mini_object: the mini-object
+ *
+ * Increase the reference count of the mini-object.
+ *
+ * Returns: the mini-object.
+ */
GstMiniObject *
gst_mini_object_ref (GstMiniObject * mini_object)
{
}
}
+/**
+ * gst_mini_object_unref:
+ * @mini_object: the mini-object
+ *
+ * Decreases the reference count of the mini-object, possibly freeing
+ * the mini-object.
+ */
void
gst_mini_object_unref (GstMiniObject * mini_object)
{
}
}
+/**
+ * gst_mini_object_replace:
+ * @olddata: pointer to a pointer to a mini-object to be replaced
+ * @newdata: pointer to new mini-object
+ *
+ * Modifies a pointer to point to a new mini-object. The modification
+ * is done atomically, and the reference counts are updated correctly.
+ * Either @newdata and the value pointed to by @olddata may be NULL.
+ */
void
gst_mini_object_replace (GstMiniObject ** olddata, GstMiniObject * newdata)
{
GST_CAT_LOG_OBJECT (GST_CAT_REFCOUNTING, object, "dispose");
GST_LOCK (object);
- GST_FLAG_SET (GST_OBJECT (object), GST_OBJECT_DESTROYED);
GST_OBJECT_PARENT (object) = NULL;
GST_UNLOCK (object);
typedef enum
{
GST_OBJECT_DISPOSING = 0,
- GST_OBJECT_DESTROYED = 1,
GST_OBJECT_FLOATING,
GST_OBJECT_FLAG_LAST = 4
#define GST_FLAG_UNSET(obj,flag) G_STMT_START{ (GST_FLAGS (obj) &= ~(1<<(flag))); }G_STMT_END
#define GST_OBJECT_IS_DISPOSING(obj) (GST_FLAG_IS_SET (obj, GST_OBJECT_DISPOSING))
-#define GST_OBJECT_IS_DESTROYED(obj) (GST_FLAG_IS_SET (obj, GST_OBJECT_DESTROYED))
#define GST_OBJECT_IS_FLOATING(obj) (GST_FLAG_IS_SET (obj, GST_OBJECT_FLOATING))
typedef struct _GstObject GstObject;
#include "gstinfo.h"
#include "gstfilter.h"
#include "gstregistry.h"
+#include "gstmacros.h"
#define GST_CAT_DEFAULT GST_CAT_PLUGIN_LOADING
#include <time.h> /* time_t */
#include <gmodule.h>
-#include <gst/gstpluginfeature.h>
-#include <gst/gstmacros.h>
#include <gst/gstobject.h>
G_BEGIN_DECLS
struct _GstPlugin {
GstObject object;
+ /*< private >*/
GstPluginDesc desc;
GstPluginDesc *orig_desc;
struct _GstPluginClass {
GstObjectClass object_class;
+ /*< private >*/
};
#include "gst_private.h"
#include "gstquery.h"
-#include "gstmemchunk.h"
#include "gstenumtypes.h"
GST_DEBUG_CATEGORY_STATIC (gst_query_debug);
static GHashTable *_query_type_to_nick = NULL;
static guint32 _n_values = 1; /* we start from 1 because 0 reserved for NONE */
-static GstMemChunk *chunk;
-
static GstQueryTypeDefinition standard_definitions[] = {
{GST_QUERY_POSITION, "position", "Current Position"},
{GST_QUERY_LATENCY, "latency", "Latency"},
g_static_mutex_unlock (&mutex);
gst_query_get_type ();
-
- chunk = gst_mem_chunk_new ("GstQueryChunk", sizeof (GstQuery),
- sizeof (GstQuery) * 20, 0);
}
GType
}
void
-gst_registry_deinit ()
+_gst_registry_cleanup ()
{
if (!_gst_registry_default)
return;
#define __GST_REGISTRY_H__
#include <gst/gstplugin.h>
+#include <gst/gstpluginfeature.h>
G_BEGIN_DECLS
void gst_registry_scan_paths (GstRegistry *registry);
void _gst_registry_remove_cache_plugins (GstRegistry *registry);
-void gst_registry_deinit (void);
+void _gst_registry_cleanup (void);
#define gst_default_registry_add_plugin(plugin) \
gst_registry_add_plugin (gst_registry_get_default(), plugin)