mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-26 11:41:09 +00:00
Header cleanup: try to include as little as possible; this will probably speed up compilation a bit.
Original commit message from CVS: Header cleanup: try to include as little as possible; this will probably speed up compilation a bit. changed the .c files to use #include "..." Fix for the 'plugins are loaded twice' bug. Fix 22186: GstObject flags are now used everywhere. Added *_FLAG_LAST so elements do not use the same flags. Added some padding in the flag enum for future expansion.
This commit is contained in:
parent
f8386fbaa0
commit
a63780a377
73 changed files with 289 additions and 298 deletions
|
@ -83,7 +83,7 @@ noinst_HEADERS = \
|
||||||
gsti386.h \
|
gsti386.h \
|
||||||
gstppc.h
|
gstppc.h
|
||||||
|
|
||||||
CFLAGS += -g -O6 -Wall
|
CFLAGS += -O6 -Wall
|
||||||
|
|
||||||
libgst_la_LIBADD = $(GLIB_LIBS) $(GTK_LIBS) $(XML_LIBS)
|
libgst_la_LIBADD = $(GLIB_LIBS) $(GTK_LIBS) $(XML_LIBS)
|
||||||
libgst_la_LDFLAGS = -version-info $(STREAMER_CURRENT):$(STREAMER_REVISION):$(STREAMER_AGE)
|
libgst_la_LDFLAGS = -version-info $(STREAMER_CURRENT):$(STREAMER_REVISION):$(STREAMER_AGE)
|
||||||
|
|
|
@ -18,8 +18,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <sys/time.h>
|
|
||||||
#include <linux/linkage.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
@ -30,9 +28,9 @@
|
||||||
/* we make too much noise for normal debugging... */
|
/* we make too much noise for normal debugging... */
|
||||||
#define GST_DEBUG_FORCE_DISABLE
|
#define GST_DEBUG_FORCE_DISABLE
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include "gstdebug.h"
|
||||||
#include <gst/cothreads.h>
|
#include "cothreads.h"
|
||||||
#include <gst/gstarch.h>
|
#include "gstarch.h"
|
||||||
|
|
||||||
pthread_key_t _cothread_key = -1;
|
pthread_key_t _cothread_key = -1;
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,6 @@
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <pthread.h>
|
|
||||||
|
|
||||||
#define COTHREAD_STACKSIZE 8192
|
#define COTHREAD_STACKSIZE 8192
|
||||||
#define COTHREAD_MAXTHREADS 16
|
#define COTHREAD_MAXTHREADS 16
|
||||||
|
|
|
@ -118,7 +118,7 @@ gst_asyncdisksrc_class_init (GstAsyncDiskSrcClass *klass)
|
||||||
static void
|
static void
|
||||||
gst_asyncdisksrc_init (GstAsyncDiskSrc *asyncdisksrc)
|
gst_asyncdisksrc_init (GstAsyncDiskSrc *asyncdisksrc)
|
||||||
{
|
{
|
||||||
GST_SRC_SET_FLAGS (asyncdisksrc, GST_SRC_ASYNC);
|
GST_FLAG_SET (asyncdisksrc, GST_SRC_ASYNC);
|
||||||
|
|
||||||
g_print("init\n");
|
g_print("init\n");
|
||||||
asyncdisksrc->srcpad = gst_pad_new ("src", GST_PAD_SRC);
|
asyncdisksrc->srcpad = gst_pad_new ("src", GST_PAD_SRC);
|
||||||
|
|
|
@ -44,9 +44,10 @@ GstElementDetails gst_asyncdisksrc_details;
|
||||||
#define GST_IS_ASYNCDISKSRC_CLASS(obj) \
|
#define GST_IS_ASYNCDISKSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ASYNCDISKSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ASYNCDISKSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_ASYNCDISKSRC_OPEN = (1 << 16),
|
GST_ASYNCDISKSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_ASYNCDISKSRC_FLAG_LAST = GST_SRC_FLAG_LAST + 2,
|
||||||
} GstAsyncDiskSrcFlags;
|
} GstAsyncDiskSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstAsyncDiskSrc GstAsyncDiskSrc;
|
typedef struct _GstAsyncDiskSrc GstAsyncDiskSrc;
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <gst/gstclock.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -46,9 +45,10 @@ GstElementDetails gst_audiosink_details;
|
||||||
#define GST_IS_AUDIOSINK_CLASS(obj) \
|
#define GST_IS_AUDIOSINK_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSINK))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSINK))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_AUDIOSINK_OPEN = (1 << 16),
|
GST_AUDIOSINK_OPEN = GST_SINK_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_AUDIOSINK_FLAG_LAST = GST_SINK_FLAG_LAST+2,
|
||||||
} GstAudioSinkFlags;
|
} GstAudioSinkFlags;
|
||||||
|
|
||||||
typedef struct _GstAudioSink GstAudioSink;
|
typedef struct _GstAudioSink GstAudioSink;
|
||||||
|
|
|
@ -46,9 +46,10 @@ GstElementDetails gst_audiosrc_details;
|
||||||
#define GST_IS_AUDIOSRC_CLASS(obj) \
|
#define GST_IS_AUDIOSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_AUDIOSRC_OPEN = (1 < 16),
|
GST_AUDIOSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_AUDIOSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2,
|
||||||
} GstAudioSrcFlags;
|
} GstAudioSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstAudioSrc GstAudioSrc;
|
typedef struct _GstAudioSrc GstAudioSrc;
|
||||||
|
|
|
@ -45,9 +45,10 @@ extern GstElementDetails gst_disksrc_details;
|
||||||
#define GST_IS_DISKSRC_CLASS(obj) \
|
#define GST_IS_DISKSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_DISKSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_DISKSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_DISKSRC_OPEN = (1 << 16),
|
GST_DISKSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_DISKSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2,
|
||||||
} GstDiskSrcFlags;
|
} GstDiskSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstDiskSrc GstDiskSrc;
|
typedef struct _GstDiskSrc GstDiskSrc;
|
||||||
|
|
|
@ -72,9 +72,6 @@ GstPlugin *plugin_init (GModule *module)
|
||||||
GstElementFactory *factory;
|
GstElementFactory *factory;
|
||||||
gint i = 0;
|
gint i = 0;
|
||||||
|
|
||||||
/* we depend on having the usual types loaded first */
|
|
||||||
gst_plugin_load("gsttypes");
|
|
||||||
|
|
||||||
plugin = gst_plugin_new("gstelements");
|
plugin = gst_plugin_new("gstelements");
|
||||||
g_return_val_if_fail(plugin != NULL,NULL);
|
g_return_val_if_fail(plugin != NULL,NULL);
|
||||||
|
|
||||||
|
|
|
@ -47,9 +47,10 @@ GstElementDetails gst_httpsrc_details;
|
||||||
#define GST_IS_HTTPSRC_CLASS(obj) \
|
#define GST_IS_HTTPSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_HTTPSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_HTTPSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_HTTPSRC_OPEN = (1 << 16),
|
GST_HTTPSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_HTTPSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2,
|
||||||
} GstHttpSrcFlags;
|
} GstHttpSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstHttpSrc GstHttpSrc;
|
typedef struct _GstHttpSrc GstHttpSrc;
|
||||||
|
|
|
@ -44,9 +44,10 @@ GstElementDetails gst_pipefilter_details;
|
||||||
#define GST_IS_PIPEFILTER_CLASS(obj) \
|
#define GST_IS_PIPEFILTER_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPEFILTER))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPEFILTER))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_PIPEFILTER_OPEN = (1 << 16 ),
|
GST_PIPEFILTER_OPEN = GST_FILTER_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_PIPEFILTER_FLAG_LAST = GST_FILTER_FLAG_LAST,
|
||||||
} GstPipeFilterFlags;
|
} GstPipeFilterFlags;
|
||||||
|
|
||||||
typedef struct _GstPipefilter GstPipefilter;
|
typedef struct _GstPipefilter GstPipefilter;
|
||||||
|
|
12
gst/gst.c
12
gst/gst.c
|
@ -17,7 +17,14 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include "gstdebug.h"
|
||||||
|
#include "gstcpu.h"
|
||||||
|
#include "gsttype.h"
|
||||||
|
#include "gstplugin.h"
|
||||||
|
#include "gstbuffer.h"
|
||||||
|
#include "gstbin.h"
|
||||||
|
#include "gstpipeline.h"
|
||||||
|
#include "gstthread.h"
|
||||||
|
|
||||||
extern gint _gst_trace_on;
|
extern gint _gst_trace_on;
|
||||||
|
|
||||||
|
@ -51,9 +58,6 @@ gst_init (int *argc, char **argv[])
|
||||||
gst_elementfactory_register (gst_elementfactory_new("thread",
|
gst_elementfactory_register (gst_elementfactory_new("thread",
|
||||||
gst_thread_get_type (), &gst_thread_details));
|
gst_thread_get_type (), &gst_thread_details));
|
||||||
|
|
||||||
//gst_plugin_load_elementfactory("gsttypes");
|
|
||||||
//gst_plugin_load("libgstelements.so");
|
|
||||||
|
|
||||||
_gst_trace_on = 0;
|
_gst_trace_on = 0;
|
||||||
if (_gst_trace_on) {
|
if (_gst_trace_on) {
|
||||||
gst_trace = gst_trace_new ("gst.trace",1024);
|
gst_trace = gst_trace_new ("gst.trace",1024);
|
||||||
|
|
13
gst/gst.h
13
gst/gst.h
|
@ -21,23 +21,13 @@
|
||||||
#ifndef __GST_H__
|
#ifndef __GST_H__
|
||||||
#define __GST_H__
|
#define __GST_H__
|
||||||
|
|
||||||
#ifdef HAVE_CONFIG_H
|
|
||||||
#include <config.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <unistd.h>
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
#include <gmodule.h>
|
|
||||||
|
|
||||||
#include <gst/gstdebug.h>
|
#include <gst/gstdebug.h>
|
||||||
|
|
||||||
#include <gst/gstlog.h>
|
#include <gst/gstlog.h>
|
||||||
|
|
||||||
#include <gst/gstobject.h>
|
#include <gst/gstobject.h>
|
||||||
#include <gst/gstpad.h>
|
#include <gst/gstpad.h>
|
||||||
#include <gst/gstbuffer.h>
|
#include <gst/gstbuffer.h>
|
||||||
#include <gst/gstcpu.h>
|
#include <gst/gstcpu.h>
|
||||||
|
#include <gst/gstclock.h>
|
||||||
#include <gst/gstelement.h>
|
#include <gst/gstelement.h>
|
||||||
#include <gst/gstextratypes.h>
|
#include <gst/gstextratypes.h>
|
||||||
#include <gst/gstbin.h>
|
#include <gst/gstbin.h>
|
||||||
|
@ -55,7 +45,6 @@
|
||||||
#include <gst/gsttrace.h>
|
#include <gst/gsttrace.h>
|
||||||
#include <gst/gstxml.h>
|
#include <gst/gstxml.h>
|
||||||
#include <gst/gsttee.h>
|
#include <gst/gsttee.h>
|
||||||
|
|
||||||
#include <gst/cothreads.h>
|
#include <gst/cothreads.h>
|
||||||
|
|
||||||
/* initialize GST */
|
/* initialize GST */
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
#ifndef GST_HGUARD_GSTARCH_H
|
#ifndef GST_HGUARD_GSTARCH_H
|
||||||
#define GST_HGUARD_GSTARCH_H
|
#define GST_HGUARD_GSTARCH_H
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_CPU_I386
|
#ifdef HAVE_CPU_I386
|
||||||
#include "gsti386.h"
|
#include "gsti386.h"
|
||||||
|
|
75
gst/gstbin.c
75
gst/gstbin.c
|
@ -19,10 +19,10 @@
|
||||||
|
|
||||||
//#define GST_DEBUG_ENABLED
|
//#define GST_DEBUG_ENABLED
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include "gstbin.h"
|
||||||
|
#include "gstdebug.h"
|
||||||
#include "config.h"
|
#include "gstsrc.h"
|
||||||
|
#include "gstconnection.h"
|
||||||
|
|
||||||
GstElementDetails gst_bin_details = {
|
GstElementDetails gst_bin_details = {
|
||||||
"Generic bin",
|
"Generic bin",
|
||||||
|
@ -592,73 +592,6 @@ gst_bin_src_wrapper (int argc,char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
|
||||||
gst_bin_connection_wrapper (int argc,char *argv[])
|
|
||||||
{
|
|
||||||
GstElement *element = GST_ELEMENT (argv);
|
|
||||||
GList *pads;
|
|
||||||
GstPad *pad;
|
|
||||||
G_GNUC_UNUSED const gchar *name = gst_element_get_name (element);
|
|
||||||
|
|
||||||
DEBUG_ENTER("(%d,\"%s\")",argc,name);
|
|
||||||
|
|
||||||
do {
|
|
||||||
DEBUG("Connection checking pads\n");
|
|
||||||
pads = element->pads;
|
|
||||||
while (pads) {
|
|
||||||
pad = GST_PAD (pads->data);
|
|
||||||
if (pad->direction == GST_PAD_SRC) {
|
|
||||||
DEBUG("pullfunc for %s:%s(%p) at %p is set to %p\n",GST_DEBUG_PAD_NAME(pad),pad,&pad->pullfunc,pad->pullfunc);
|
|
||||||
if (pad->pullfunc == NULL) fprintf(stderr,"error, no pullfunc in \"%s\"\n", name);
|
|
||||||
(pad->pullfunc)(pad);
|
|
||||||
}
|
|
||||||
pads = g_list_next(pads);
|
|
||||||
}
|
|
||||||
DEBUG("Connection done checking pads, checking COTHREAD_STOPPING on \"%s\"(%p)\n",
|
|
||||||
gst_element_get_name(element),element);
|
|
||||||
} while (!GST_ELEMENT_IS_COTHREAD_STOPPING(element));
|
|
||||||
GST_FLAG_UNSET(element,GST_ELEMENT_COTHREAD_STOPPING);
|
|
||||||
|
|
||||||
DEBUG_LEAVE("");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int
|
|
||||||
gst_bin_sched_wrapper (int argc, char *argv[])
|
|
||||||
{
|
|
||||||
_GstBinOutsideSchedule *sched = (_GstBinOutsideSchedule *)argv;
|
|
||||||
GstElement *element = sched->element;
|
|
||||||
GSList *pads;
|
|
||||||
GstPad *pad;
|
|
||||||
region_struct *region;
|
|
||||||
G_GNUC_UNUSED const gchar *name = gst_element_get_name (element);
|
|
||||||
|
|
||||||
DEBUG_ENTER("(\"%s\")",name);
|
|
||||||
|
|
||||||
do {
|
|
||||||
pads = sched->padlist;
|
|
||||||
while (pads) {
|
|
||||||
pad = GST_PAD (pads->data);
|
|
||||||
region = cothread_get_data (pad->threadstate, "region");
|
|
||||||
if (region) {
|
|
||||||
//gst_src_push_region (GST_SRC (element), region->offset, region->size);
|
|
||||||
if (pad->pullregionfunc == NULL)
|
|
||||||
fprintf(stderr,"error, no pullregionfunc in \"%s\"\n", name);
|
|
||||||
(pad->pullregionfunc)(pad, region->offset, region->size);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (pad->pullfunc == NULL)
|
|
||||||
fprintf(stderr,"error, no pullfunc in \"%s\"\n", name);
|
|
||||||
(pad->pullfunc)(pad);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} while (!(sched->flags && GST_ELEMENT_COTHREAD_STOPPING));
|
|
||||||
sched->flags &= ~GST_ELEMENT_COTHREAD_STOPPING;
|
|
||||||
|
|
||||||
DEBUG_LEAVE("");
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_bin_pullfunc_proxy (GstPad *pad)
|
gst_bin_pullfunc_proxy (GstPad *pad)
|
||||||
{
|
{
|
||||||
|
|
|
@ -21,13 +21,9 @@
|
||||||
#ifndef __GST_BIN_H__
|
#ifndef __GST_BIN_H__
|
||||||
#define __GST_BIN_H__
|
#define __GST_BIN_H__
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gstelement.h>
|
#include <gst/gstelement.h>
|
||||||
#include <gst/gstsrc.h>
|
|
||||||
#include <gst/gstconnection.h>
|
|
||||||
#include <gst/cothreads.h>
|
#include <gst/cothreads.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@ -45,6 +41,8 @@ extern GstElementDetails gst_bin_details;
|
||||||
#define GST_IS_BIN_CLASS(obj) \
|
#define GST_IS_BIN_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_BIN))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_BIN))
|
||||||
|
|
||||||
|
#define GST_BIN_FLAG_LAST (GST_ELEMENT_FLAG_LAST + 2)
|
||||||
|
|
||||||
typedef struct _GstBin GstBin;
|
typedef struct _GstBin GstBin;
|
||||||
typedef struct _GstBinClass GstBinClass;
|
typedef struct _GstBinClass GstBinClass;
|
||||||
|
|
||||||
|
|
|
@ -20,9 +20,9 @@
|
||||||
|
|
||||||
/* this file makes too much noise for most debugging sessions */
|
/* this file makes too much noise for most debugging sessions */
|
||||||
#define GST_DEBUG_FORCE_DISABLE
|
#define GST_DEBUG_FORCE_DISABLE
|
||||||
#include <gst/gst.h>
|
|
||||||
#include <gst/gstbuffer.h>
|
|
||||||
|
|
||||||
|
#include "gstdebug.h"
|
||||||
|
#include "gstbuffer.h"
|
||||||
|
|
||||||
GMemChunk *_gst_buffer_chunk;
|
GMemChunk *_gst_buffer_chunk;
|
||||||
|
|
||||||
|
@ -245,7 +245,7 @@ gst_buffer_ref (GstBuffer *buffer)
|
||||||
|
|
||||||
#ifdef HAVE_ATOMIC_H
|
#ifdef HAVE_ATOMIC_H
|
||||||
//g_return_if_fail(atomic_read(&(buffer->refcount)) > 0);
|
//g_return_if_fail(atomic_read(&(buffer->refcount)) > 0);
|
||||||
atomic_inc (&(buffer->refcount))
|
atomic_inc (&(buffer->refcount));
|
||||||
#else
|
#else
|
||||||
g_return_if_fail (buffer->refcount > 0);
|
g_return_if_fail (buffer->refcount > 0);
|
||||||
GST_BUFFER_LOCK (buffer);
|
GST_BUFFER_LOCK (buffer);
|
||||||
|
@ -269,7 +269,7 @@ gst_buffer_ref_by_count (GstBuffer *buffer, int count)
|
||||||
|
|
||||||
#ifdef HAVE_ATOMIC_H
|
#ifdef HAVE_ATOMIC_H
|
||||||
g_return_if_fail (atomic_read (&(buffer->refcount)) > 0);
|
g_return_if_fail (atomic_read (&(buffer->refcount)) > 0);
|
||||||
atomic_add (count, &(buffer->refcount))
|
atomic_add (count, &(buffer->refcount));
|
||||||
#else
|
#else
|
||||||
g_return_if_fail (buffer->refcount > 0);
|
g_return_if_fail (buffer->refcount > 0);
|
||||||
GST_BUFFER_LOCK (buffer);
|
GST_BUFFER_LOCK (buffer);
|
||||||
|
@ -296,7 +296,7 @@ gst_buffer_unref (GstBuffer *buffer)
|
||||||
|
|
||||||
#ifdef HAVE_ATOMIC_H
|
#ifdef HAVE_ATOMIC_H
|
||||||
g_return_if_fail (atomic_read (&(buffer->refcount)) > 0);
|
g_return_if_fail (atomic_read (&(buffer->refcount)) > 0);
|
||||||
zero = atomic_dec_and_test (&(buffer->refcount))
|
zero = atomic_dec_and_test (&(buffer->refcount));
|
||||||
#else
|
#else
|
||||||
g_return_if_fail (buffer->refcount > 0);
|
g_return_if_fail (buffer->refcount > 0);
|
||||||
GST_BUFFER_LOCK (buffer);
|
GST_BUFFER_LOCK (buffer);
|
||||||
|
|
|
@ -21,8 +21,15 @@
|
||||||
#ifndef __GST_BUFFER_H__
|
#ifndef __GST_BUFFER_H__
|
||||||
#define __GST_BUFFER_H__
|
#define __GST_BUFFER_H__
|
||||||
|
|
||||||
#include <gst/gstmeta.h>
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ATOMIC_H
|
||||||
|
#include <asm/atomic.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <gst/gstmeta.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -66,7 +73,7 @@ typedef enum {
|
||||||
|
|
||||||
typedef struct _GstBuffer GstBuffer;
|
typedef struct _GstBuffer GstBuffer;
|
||||||
|
|
||||||
#include "gstbufferpool.h"
|
#include <gst/gstbufferpool.h>
|
||||||
|
|
||||||
struct _GstBuffer {
|
struct _GstBuffer {
|
||||||
/* locking */
|
/* locking */
|
||||||
|
|
|
@ -18,9 +18,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include "gstdebug.h"
|
||||||
#include <gst/gstbufferpool.h>
|
#include "gstbuffer.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#ifndef __GST_BUFFER_POOL_H__
|
#ifndef __GST_BUFFER_POOL_H__
|
||||||
#define __GST_BUFFER_POOL_H__
|
#define __GST_BUFFER_POOL_H__
|
||||||
|
|
||||||
#include "gstbuffer.h"
|
#include <gst/gstbuffer.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -19,8 +19,8 @@
|
||||||
|
|
||||||
//#define DEBUG_ENABLED
|
//#define DEBUG_ENABLED
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include "gstcaps.h"
|
||||||
#include <gst/gst.h>
|
#include "gsttype.h"
|
||||||
|
|
||||||
void
|
void
|
||||||
_gst_caps_initialize (void)
|
_gst_caps_initialize (void)
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
#ifndef __GST_CAPS_H__
|
#ifndef __GST_CAPS_H__
|
||||||
#define __GST_CAPS_H__
|
#define __GST_CAPS_H__
|
||||||
|
|
||||||
#include <glib.h>
|
#include <gnome-xml/parser.h>
|
||||||
#include <gst/gstprops.h>
|
#include <gst/gstprops.h>
|
||||||
|
|
||||||
typedef struct _GstCaps GstCaps;
|
typedef struct _GstCaps GstCaps;
|
||||||
|
|
|
@ -19,7 +19,9 @@
|
||||||
|
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
//#define DEBUG_ENABLED
|
//#define DEBUG_ENABLED
|
||||||
#include <gstclock.h>
|
#include "gstclock.h"
|
||||||
|
#include "gstdebug.h"
|
||||||
|
#include "gstsink.h"
|
||||||
|
|
||||||
static GstClock *the_system_clock = NULL;
|
static GstClock *the_system_clock = NULL;
|
||||||
|
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
#define __GST_CLOCK_H__
|
#define __GST_CLOCK_H__
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gstobject.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gstconnection.h>
|
#include "gstconnection.h"
|
||||||
|
|
||||||
|
|
||||||
/* Connection signals and args */
|
/* Connection signals and args */
|
||||||
|
|
|
@ -17,8 +17,12 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "gstcpu.h"
|
#include "gstcpu.h"
|
||||||
|
|
||||||
static guint32 _gst_cpu_flags;
|
static guint32 _gst_cpu_flags;
|
||||||
|
|
|
@ -21,8 +21,6 @@
|
||||||
#ifndef __GST_CPU_H__
|
#ifndef __GST_CPU_H__
|
||||||
#define __GST_CPU_H__
|
#define __GST_CPU_H__
|
||||||
|
|
||||||
#include <glib.h>
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_CPU_FLAG_MMX = (1<<0),
|
GST_CPU_FLAG_MMX = (1<<0),
|
||||||
GST_CPU_FLAG_SSE = (1<<1),
|
GST_CPU_FLAG_SSE = (1<<1),
|
||||||
|
|
|
@ -25,7 +25,8 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gmodule.h>
|
||||||
|
#include <gst/gsttrace.h>
|
||||||
|
|
||||||
/* for include files that make too much noise normally */
|
/* for include files that make too much noise normally */
|
||||||
#ifdef GST_DEBUG_FORCE_DISABLE
|
#ifdef GST_DEBUG_FORCE_DISABLE
|
||||||
|
|
|
@ -17,9 +17,9 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gstelement.h>
|
#include "gstdebug.h"
|
||||||
#include <gst/gstextratypes.h>
|
#include "gstelement.h"
|
||||||
#include <gst/gstxml.h>
|
#include "gstextratypes.h"
|
||||||
|
|
||||||
/* Element signals and args */
|
/* Element signals and args */
|
||||||
enum {
|
enum {
|
||||||
|
|
|
@ -26,8 +26,6 @@
|
||||||
#include <gst/gstlog.h>
|
#include <gst/gstlog.h>
|
||||||
#include <gst/gstobject.h>
|
#include <gst/gstobject.h>
|
||||||
#include <gst/gstpad.h>
|
#include <gst/gstpad.h>
|
||||||
#include <gst/gstbuffer.h>
|
|
||||||
#include <gst/gstcaps.h>
|
|
||||||
#include <gst/cothreads.h>
|
#include <gst/cothreads.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -77,12 +75,15 @@ static inline char *_gst_print_statename(int state) {
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ELEMENT))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ELEMENT))
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_ELEMENT_MULTI_IN = (1 << 4),
|
GST_ELEMENT_MULTI_IN = GST_OBJECT_FLAG_LAST,
|
||||||
GST_ELEMENT_THREAD_SUGGESTED = (1 << 5),
|
GST_ELEMENT_THREAD_SUGGESTED,
|
||||||
GST_ELEMENT_NO_SEEK = (1 << 6),
|
GST_ELEMENT_NO_SEEK,
|
||||||
|
|
||||||
GST_ELEMENT_NEW_LOOPFUNC = (1 << 16),
|
GST_ELEMENT_NEW_LOOPFUNC,
|
||||||
GST_ELEMENT_COTHREAD_STOPPING = (1 << 17),
|
GST_ELEMENT_COTHREAD_STOPPING,
|
||||||
|
|
||||||
|
/* use some padding for future expansion */
|
||||||
|
GST_ELEMENT_FLAG_LAST = GST_OBJECT_FLAG_LAST + 8,
|
||||||
} GstElementFlags;
|
} GstElementFlags;
|
||||||
|
|
||||||
#define GST_ELEMENT_IS_MULTI_IN(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_MULTI_IN))
|
#define GST_ELEMENT_IS_MULTI_IN(obj) (GST_FLAG_IS_SET(obj,GST_ELEMENT_MULTI_IN))
|
||||||
|
|
|
@ -19,10 +19,9 @@
|
||||||
|
|
||||||
//#define DEBUG_ENABLED
|
//#define DEBUG_ENABLED
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include "gstdebug.h"
|
||||||
|
#include "gstelement.h"
|
||||||
#include <gst/gstelement.h>
|
#include "gstplugin.h"
|
||||||
#include <gst/gstplugin.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* global list of registered elementfactories */
|
/* global list of registered elementfactories */
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gstextratypes.h>
|
#include "gstextratypes.h"
|
||||||
|
|
||||||
GtkType
|
GtkType
|
||||||
gst_extra_get_filename_type (void)
|
gst_extra_get_filename_type (void)
|
||||||
|
|
|
@ -21,8 +21,7 @@
|
||||||
#ifndef __GST_EXTRA_TYPES_H__
|
#ifndef __GST_EXTRA_TYPES_H__
|
||||||
#define __GST_EXTRA_TYPES_H__
|
#define __GST_EXTRA_TYPES_H__
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gnome-xml/parser.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gstfilter.h>
|
#include "gstfilter.h"
|
||||||
|
|
||||||
|
|
||||||
/* Filter signals and args */
|
/* Filter signals and args */
|
||||||
|
|
|
@ -21,10 +21,8 @@
|
||||||
#ifndef __GST_FILTER_H__
|
#ifndef __GST_FILTER_H__
|
||||||
#define __GST_FILTER_H__
|
#define __GST_FILTER_H__
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gstelement.h>
|
#include <gst/gstelement.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@ -44,6 +42,8 @@ extern "C" {
|
||||||
typedef struct _GstFilter GstFilter;
|
typedef struct _GstFilter GstFilter;
|
||||||
typedef struct _GstFilterClass GstFilterClass;
|
typedef struct _GstFilterClass GstFilterClass;
|
||||||
|
|
||||||
|
#define GST_FILTER_FLAG_LAST GST_ELEMENT_FLAG_LAST
|
||||||
|
|
||||||
struct _GstFilter {
|
struct _GstFilter {
|
||||||
GstElement element;
|
GstElement element;
|
||||||
};
|
};
|
||||||
|
|
|
@ -18,8 +18,8 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gstmeta.h>
|
#include "gstmeta.h"
|
||||||
#include <gst/gsttrace.h>
|
#include "gsttrace.h"
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -54,7 +54,11 @@ gst_meta_ref (GstMeta *meta)
|
||||||
|
|
||||||
gst_trace_add_entry (NULL, 0, meta, "ref meta");
|
gst_trace_add_entry (NULL, 0, meta, "ref meta");
|
||||||
|
|
||||||
|
#ifdef HAVE_ATOMIC_H
|
||||||
|
atomic_inc (&(meta->refcount));
|
||||||
|
#else
|
||||||
meta->refcount++;
|
meta->refcount++;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,12 +71,17 @@ gst_meta_ref (GstMeta *meta)
|
||||||
void
|
void
|
||||||
gst_meta_unref (GstMeta *meta)
|
gst_meta_unref (GstMeta *meta)
|
||||||
{
|
{
|
||||||
|
gint zero;
|
||||||
g_return_if_fail (meta != NULL);
|
g_return_if_fail (meta != NULL);
|
||||||
|
|
||||||
gst_trace_add_entry (NULL, 0, meta, "unref meta");
|
gst_trace_add_entry (NULL, 0, meta, "unref meta");
|
||||||
|
#ifdef HAVE_ATOMIC_H
|
||||||
|
zero = atomic_dec_and_test (&(meta->refcount));
|
||||||
|
#else
|
||||||
meta->refcount--;
|
meta->refcount--;
|
||||||
|
zero = (meta->refcount == 0);
|
||||||
if (meta->refcount == 0) {
|
#endif
|
||||||
|
if (zero) {
|
||||||
// gst_trace_add_entry(NULL,0,meta,"destroy meta");
|
// gst_trace_add_entry(NULL,0,meta,"destroy meta");
|
||||||
g_free (meta);
|
g_free (meta);
|
||||||
// g_print("freeing metadata\n");
|
// g_print("freeing metadata\n");
|
||||||
|
|
|
@ -24,7 +24,14 @@
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ATOMIC_H
|
||||||
|
#include <asm/atomic.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@ -42,12 +49,10 @@ extern "C" {
|
||||||
#define GST_META_FLAG_UNSET(meta,flag) \
|
#define GST_META_FLAG_UNSET(meta,flag) \
|
||||||
G_STMT_START{ (GST_META_FLAGS(meta) &= ~(flag)); }G_STMT_END
|
G_STMT_START{ (GST_META_FLAGS(meta) &= ~(flag)); }G_STMT_END
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_META_FREEABLE = 1 << 0,
|
GST_META_FREEABLE = 1 << 0,
|
||||||
} GstMetaFlags;
|
} GstMetaFlags;
|
||||||
|
|
||||||
|
|
||||||
typedef struct _GstMeta GstMeta;
|
typedef struct _GstMeta GstMeta;
|
||||||
|
|
||||||
struct _GstMeta {
|
struct _GstMeta {
|
||||||
|
|
|
@ -17,10 +17,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "gstobject.h"
|
||||||
#include <gst/gstobject.h>
|
|
||||||
#include <gst/gstbin.h>
|
|
||||||
|
|
||||||
|
|
||||||
/* Object signals and args */
|
/* Object signals and args */
|
||||||
enum {
|
enum {
|
||||||
|
|
|
@ -21,18 +21,17 @@
|
||||||
#ifndef __GST_OBJECT_H__
|
#ifndef __GST_OBJECT_H__
|
||||||
#define __GST_OBJECT_H__
|
#define __GST_OBJECT_H__
|
||||||
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <gst/gsttrace.h>
|
#include <gst/gsttrace.h>
|
||||||
//#include "config.h"
|
|
||||||
|
|
||||||
#undef HAVE_ATOMIC_H
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <config.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_ATOMIC_H
|
#ifdef HAVE_ATOMIC_H
|
||||||
#include <asm/atomic.h>
|
#include <asm/atomic.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@ -52,6 +51,8 @@ extern "C" {
|
||||||
typedef struct _GstObject GstObject;
|
typedef struct _GstObject GstObject;
|
||||||
typedef struct _GstObjectClass GstObjectClass;
|
typedef struct _GstObjectClass GstObjectClass;
|
||||||
|
|
||||||
|
#define GST_OBJECT_FLAG_LAST 4
|
||||||
|
|
||||||
struct _GstObject {
|
struct _GstObject {
|
||||||
GtkObject object;
|
GtkObject object;
|
||||||
|
|
||||||
|
@ -80,9 +81,9 @@ struct _GstObjectClass {
|
||||||
|
|
||||||
|
|
||||||
#define GST_FLAGS(obj) GTK_OBJECT_FLAGS(obj)
|
#define GST_FLAGS(obj) GTK_OBJECT_FLAGS(obj)
|
||||||
#define GST_FLAG_IS_SET(obj,flag) (GST_FLAGS (obj) & (flag))
|
#define GST_FLAG_IS_SET(obj,flag) (GST_FLAGS (obj) & (1<<(flag)))
|
||||||
#define GST_FLAG_SET(obj,flag) G_STMT_START{ (GST_FLAGS (obj) |= (flag)); }G_STMT_END
|
#define GST_FLAG_SET(obj,flag) G_STMT_START{ (GST_FLAGS (obj) |= (1<<(flag))); }G_STMT_END
|
||||||
#define GST_FLAG_UNSET(obj,flag) G_STMT_START{ (GST_FLAGS (obj) &= ~(flag)); }G_STMT_END
|
#define GST_FLAG_UNSET(obj,flag) G_STMT_START{ (GST_FLAGS (obj) &= ~(1<<(flag))); }G_STMT_END
|
||||||
|
|
||||||
#define GST_LOCK(obj) (g_mutex_lock(GST_OBJECT(obj)->lock))
|
#define GST_LOCK(obj) (g_mutex_lock(GST_OBJECT(obj)->lock))
|
||||||
#define GST_TRYLOCK(obj) (g_mutex_trylock(GST_OBJECT(obj)->lock))
|
#define GST_TRYLOCK(obj) (g_mutex_trylock(GST_OBJECT(obj)->lock))
|
||||||
|
|
11
gst/gstpad.c
11
gst/gstpad.c
|
@ -19,11 +19,10 @@
|
||||||
|
|
||||||
|
|
||||||
//#define DEBUG_ENABLED
|
//#define DEBUG_ENABLED
|
||||||
#include <gst/gst.h>
|
#include "gstdebug.h"
|
||||||
#include <gst/gstpad.h>
|
#include "gstpad.h"
|
||||||
#include <gst/gstelement.h>
|
#include "gstelement.h"
|
||||||
#include <gst/gsttype.h>
|
#include "gsttype.h"
|
||||||
|
|
||||||
|
|
||||||
/* Pad signals and args */
|
/* Pad signals and args */
|
||||||
enum {
|
enum {
|
||||||
|
@ -910,7 +909,7 @@ gst_padtemplate_new (GstPadFactory *factory)
|
||||||
GstPadTemplate*
|
GstPadTemplate*
|
||||||
gst_padtemplate_create (gchar *name_template,
|
gst_padtemplate_create (gchar *name_template,
|
||||||
GstPadDirection direction, GstPadPresence presence,
|
GstPadDirection direction, GstPadPresence presence,
|
||||||
GstCaps *caps, ...)
|
GstCaps *caps)
|
||||||
{
|
{
|
||||||
GstPadTemplate *new;
|
GstPadTemplate *new;
|
||||||
|
|
||||||
|
|
|
@ -23,12 +23,12 @@
|
||||||
|
|
||||||
|
|
||||||
#include <gnome-xml/parser.h>
|
#include <gnome-xml/parser.h>
|
||||||
|
|
||||||
#include <gst/gstobject.h>
|
#include <gst/gstobject.h>
|
||||||
#include <gst/gstbuffer.h>
|
#include <gst/gstbuffer.h>
|
||||||
#include <gst/cothreads.h>
|
#include <gst/cothreads.h>
|
||||||
#include <gst/gstcaps.h>
|
#include <gst/gstcaps.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@ -63,7 +63,9 @@ typedef enum {
|
||||||
} GstPadDirection;
|
} GstPadDirection;
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_PAD_DISABLED = (1 << 4),
|
GST_PAD_DISABLED = GST_OBJECT_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_PAD_FLAG_LAST = GST_OBJECT_FLAG_LAST+2,
|
||||||
} GstPadFlags;
|
} GstPadFlags;
|
||||||
|
|
||||||
struct _GstPad {
|
struct _GstPad {
|
||||||
|
@ -165,7 +167,7 @@ void gst_pad_load_and_connect (xmlNodePtr parent, GstObject *element, GHashTa
|
||||||
GstPadTemplate* gst_padtemplate_new (GstPadFactory *factory);
|
GstPadTemplate* gst_padtemplate_new (GstPadFactory *factory);
|
||||||
GstPadTemplate* gst_padtemplate_create (gchar *name_template,
|
GstPadTemplate* gst_padtemplate_create (gchar *name_template,
|
||||||
GstPadDirection direction, GstPadPresence presence,
|
GstPadDirection direction, GstPadPresence presence,
|
||||||
GstCaps *caps, ...);
|
GstCaps *caps);
|
||||||
|
|
||||||
xmlNodePtr gst_padtemplate_save_thyself (GstPadTemplate *pad, xmlNodePtr parent);
|
xmlNodePtr gst_padtemplate_save_thyself (GstPadTemplate *pad, xmlNodePtr parent);
|
||||||
GstPadTemplate* gst_padtemplate_load_thyself (xmlNodePtr parent);
|
GstPadTemplate* gst_padtemplate_load_thyself (xmlNodePtr parent);
|
||||||
|
|
|
@ -17,13 +17,11 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gstpipeline.h>
|
#include "gstpipeline.h"
|
||||||
#include <gst/gstthread.h>
|
#include "gstthread.h"
|
||||||
#include <gst/gstsink.h>
|
#include "gstsink.h"
|
||||||
#include <gst/gstutils.h>
|
#include "gstutils.h"
|
||||||
#include <gst/gsttype.h>
|
#include "gsttype.h"
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
GstElementDetails gst_pipeline_details = {
|
GstElementDetails gst_pipeline_details = {
|
||||||
"Pipeline object",
|
"Pipeline object",
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
#include <gst/gstbin.h>
|
#include <gst/gstbin.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
|
145
gst/gstplugin.c
145
gst/gstplugin.c
|
@ -17,6 +17,9 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
@ -24,9 +27,8 @@
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include <gst/gstplugin.h>
|
#include "gstplugin.h"
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
//#undef PLUGINS_USE_SRCDIR
|
//#undef PLUGINS_USE_SRCDIR
|
||||||
|
|
||||||
|
@ -43,10 +45,12 @@ GList *_gst_libraries;
|
||||||
gint _gst_libraries_seqno;
|
gint _gst_libraries_seqno;
|
||||||
|
|
||||||
/* whether or not to spew library load issues */
|
/* whether or not to spew library load issues */
|
||||||
gboolean _gst_plugin_spew = TRUE;
|
gboolean _gst_plugin_spew = FALSE;
|
||||||
|
|
||||||
|
|
||||||
void _gst_plugin_initialize() {
|
void
|
||||||
|
_gst_plugin_initialize (void)
|
||||||
|
{
|
||||||
xmlDocPtr doc;
|
xmlDocPtr doc;
|
||||||
_gst_modules = NULL;
|
_gst_modules = NULL;
|
||||||
_gst_modules_seqno = 0;
|
_gst_modules_seqno = 0;
|
||||||
|
@ -60,37 +64,39 @@ void _gst_plugin_initialize() {
|
||||||
/* if this is set, we add build-directory paths to the list */
|
/* if this is set, we add build-directory paths to the list */
|
||||||
#ifdef PLUGINS_USE_SRCDIR
|
#ifdef PLUGINS_USE_SRCDIR
|
||||||
/* the catch-all plugins directory */
|
/* the catch-all plugins directory */
|
||||||
_gst_plugin_paths = g_list_append(_gst_plugin_paths,
|
_gst_plugin_paths = g_list_prepend (_gst_plugin_paths,
|
||||||
PLUGINS_SRCDIR "/plugins");
|
PLUGINS_SRCDIR "/plugins");
|
||||||
/* the libreary directory */
|
/* the libreary directory */
|
||||||
_gst_plugin_paths = g_list_append(_gst_plugin_paths,
|
_gst_plugin_paths = g_list_prepend (_gst_plugin_paths,
|
||||||
PLUGINS_SRCDIR "/libs");
|
PLUGINS_SRCDIR "/libs");
|
||||||
/* location libgstelements.so */
|
/* location libgstelements.so */
|
||||||
_gst_plugin_paths = g_list_append(_gst_plugin_paths,
|
_gst_plugin_paths = g_list_prepend (_gst_plugin_paths,
|
||||||
PLUGINS_SRCDIR "/gst/elements");
|
PLUGINS_SRCDIR "/gst/elements");
|
||||||
_gst_plugin_paths = g_list_append(_gst_plugin_paths,
|
_gst_plugin_paths = g_list_prepend (_gst_plugin_paths,
|
||||||
PLUGINS_SRCDIR "/gst/types");
|
PLUGINS_SRCDIR "/gst/types");
|
||||||
#else
|
#else
|
||||||
/* add the main (installed) library path */
|
/* add the main (installed) library path */
|
||||||
_gst_plugin_paths = g_list_append(_gst_plugin_paths,PLUGINS_DIR);
|
_gst_plugin_paths = g_list_prepend (_gst_plugin_paths, PLUGINS_DIR);
|
||||||
#endif /* PLUGINS_USE_SRCDIR */
|
#endif /* PLUGINS_USE_SRCDIR */
|
||||||
|
|
||||||
doc = xmlParseFile("/etc/gstreamer/reg.xml");
|
doc = xmlParseFile ("/etc/gstreamer/reg.xml");
|
||||||
|
|
||||||
if (!doc || strcmp(doc->root->name, "GST-PluginRegistry")) {
|
if (!doc || strcmp (doc->root->name, "GST-PluginRegistry")) {
|
||||||
g_print("gstplugin: registry needs rebuild\n");
|
g_print ("gstplugin: registry needs rebuild\n");
|
||||||
gst_plugin_load_all();
|
gst_plugin_load_all ();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
gst_plugin_load_thyself(doc->root);
|
gst_plugin_load_thyself (doc->root);
|
||||||
}
|
}
|
||||||
|
|
||||||
static gboolean gst_plugin_load_recurse(gchar *directory,gchar *name) {
|
static gboolean
|
||||||
|
gst_plugin_load_recurse (gchar *directory, gchar *name)
|
||||||
|
{
|
||||||
DIR *dir;
|
DIR *dir;
|
||||||
struct dirent *dirent;
|
struct dirent *dirent;
|
||||||
gboolean loaded = FALSE;
|
gboolean loaded = FALSE;
|
||||||
|
|
||||||
//g_print("recursive load of '%s' in '%s'\n", name, directory);
|
//g_print("recursive load of '%s' in '%s'\n", name, directory);
|
||||||
dir = opendir(directory);
|
dir = opendir(directory);
|
||||||
if (dir) {
|
if (dir) {
|
||||||
while ((dirent = readdir(dir))) {
|
while ((dirent = readdir(dir))) {
|
||||||
|
@ -98,7 +104,7 @@ static gboolean gst_plugin_load_recurse(gchar *directory,gchar *name) {
|
||||||
if (strcmp(dirent->d_name,".") && strcmp(dirent->d_name,"..")) {
|
if (strcmp(dirent->d_name,".") && strcmp(dirent->d_name,"..")) {
|
||||||
loaded = gst_plugin_load_recurse(g_strjoin("/",directory,dirent->d_name,
|
loaded = gst_plugin_load_recurse(g_strjoin("/",directory,dirent->d_name,
|
||||||
NULL),name);
|
NULL),name);
|
||||||
if (loaded && name) return TRUE;
|
if (loaded && name) return TRUE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
closedir(dir);
|
closedir(dir);
|
||||||
|
@ -109,12 +115,10 @@ static gboolean gst_plugin_load_recurse(gchar *directory,gchar *name) {
|
||||||
if ((temp = strstr(directory,name)) &&
|
if ((temp = strstr(directory,name)) &&
|
||||||
(!strcmp(temp,name))) {
|
(!strcmp(temp,name))) {
|
||||||
loaded = gst_plugin_load_absolute(directory);
|
loaded = gst_plugin_load_absolute(directory);
|
||||||
return loaded;
|
|
||||||
}
|
}
|
||||||
} else if ((temp = strstr(directory,".so")) &&
|
} else if ((temp = strstr(directory,".so")) &&
|
||||||
(!strcmp(temp,".so"))) {
|
(!strcmp(temp,".so"))) {
|
||||||
loaded = gst_plugin_load_absolute(directory);
|
loaded = gst_plugin_load_absolute(directory);
|
||||||
//return loaded;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,7 +130,9 @@ static gboolean gst_plugin_load_recurse(gchar *directory,gchar *name) {
|
||||||
*
|
*
|
||||||
* Load all plugins in the path.
|
* Load all plugins in the path.
|
||||||
*/
|
*/
|
||||||
void gst_plugin_load_all() {
|
void
|
||||||
|
gst_plugin_load_all(void)
|
||||||
|
{
|
||||||
GList *path;
|
GList *path;
|
||||||
|
|
||||||
path = _gst_plugin_paths;
|
path = _gst_plugin_paths;
|
||||||
|
@ -145,7 +151,9 @@ void gst_plugin_load_all() {
|
||||||
*
|
*
|
||||||
* Returns: whether the library was loaded or not
|
* Returns: whether the library was loaded or not
|
||||||
*/
|
*/
|
||||||
gboolean gst_library_load(gchar *name) {
|
gboolean
|
||||||
|
gst_library_load (gchar *name)
|
||||||
|
{
|
||||||
gboolean res;
|
gboolean res;
|
||||||
GList *libraries = _gst_libraries;
|
GList *libraries = _gst_libraries;
|
||||||
|
|
||||||
|
@ -166,7 +174,7 @@ gboolean gst_library_load(gchar *name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gst_plugin_remove(GstPlugin *plugin)
|
gst_plugin_remove (GstPlugin *plugin)
|
||||||
{
|
{
|
||||||
GList *factories;
|
GList *factories;
|
||||||
|
|
||||||
|
@ -188,12 +196,19 @@ gst_plugin_remove(GstPlugin *plugin)
|
||||||
*
|
*
|
||||||
* Returns: whether the plugin was loaded or not
|
* Returns: whether the plugin was loaded or not
|
||||||
*/
|
*/
|
||||||
gboolean gst_plugin_load(gchar *name) {
|
gboolean
|
||||||
|
gst_plugin_load (gchar *name)
|
||||||
|
{
|
||||||
GList *path;
|
GList *path;
|
||||||
gchar *libspath;
|
gchar *libspath;
|
||||||
|
GstPlugin *plugin;
|
||||||
|
|
||||||
//g_print("attempting to load plugin '%s'\n",name);
|
//g_print("attempting to load plugin '%s'\n",name);
|
||||||
|
|
||||||
|
plugin = gst_plugin_find (name);
|
||||||
|
|
||||||
|
if (plugin && plugin->loaded) return TRUE;
|
||||||
|
|
||||||
path = _gst_plugin_paths;
|
path = _gst_plugin_paths;
|
||||||
while (path != NULL) {
|
while (path != NULL) {
|
||||||
if (gst_plugin_load_absolute(g_module_build_path(path->data,name)))
|
if (gst_plugin_load_absolute(g_module_build_path(path->data,name)))
|
||||||
|
@ -220,7 +235,9 @@ gboolean gst_plugin_load(gchar *name) {
|
||||||
*
|
*
|
||||||
* Returns: whether or not the plugin loaded
|
* Returns: whether or not the plugin loaded
|
||||||
*/
|
*/
|
||||||
gboolean gst_plugin_load_absolute(gchar *name) {
|
gboolean
|
||||||
|
gst_plugin_load_absolute (gchar *name)
|
||||||
|
{
|
||||||
GModule *module;
|
GModule *module;
|
||||||
GstPluginInitFunc initfunc;
|
GstPluginInitFunc initfunc;
|
||||||
GstPlugin *plugin;
|
GstPlugin *plugin;
|
||||||
|
@ -243,7 +260,7 @@ gboolean gst_plugin_load_absolute(gchar *name) {
|
||||||
g_print("gstplugin: plugin %s loaded\n", plugin->name);
|
g_print("gstplugin: plugin %s loaded\n", plugin->name);
|
||||||
plugin->filename = g_strdup(name);
|
plugin->filename = g_strdup(name);
|
||||||
plugin->loaded = TRUE;
|
plugin->loaded = TRUE;
|
||||||
_gst_modules = g_list_append(_gst_modules,module);
|
_gst_modules = g_list_prepend(_gst_modules,module);
|
||||||
_gst_modules_seqno++;
|
_gst_modules_seqno++;
|
||||||
_gst_plugins = g_list_prepend(_gst_plugins,plugin);
|
_gst_plugins = g_list_prepend(_gst_plugins,plugin);
|
||||||
_gst_plugins_seqno++;
|
_gst_plugins_seqno++;
|
||||||
|
@ -252,8 +269,7 @@ gboolean gst_plugin_load_absolute(gchar *name) {
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
} else if (_gst_plugin_spew) {
|
} else if (_gst_plugin_spew) {
|
||||||
// if (strstr(g_module_error(),"No such") == NULL)
|
gst_info("error loading plugin: %s, reason: %s\n", name, g_module_error());
|
||||||
gst_info("error loading plugin: %s, reason: %s\n", name, g_module_error());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
@ -267,10 +283,17 @@ gboolean gst_plugin_load_absolute(gchar *name) {
|
||||||
*
|
*
|
||||||
* Returns: new plugin
|
* Returns: new plugin
|
||||||
*/
|
*/
|
||||||
GstPlugin *gst_plugin_new(gchar *name) {
|
GstPlugin*
|
||||||
GstPlugin *plugin = (GstPlugin *)g_malloc(sizeof(GstPlugin));
|
gst_plugin_new (gchar *name)
|
||||||
|
{
|
||||||
|
GstPlugin *plugin;
|
||||||
|
|
||||||
|
// return NULL if the plugin is allready loaded
|
||||||
|
plugin = gst_plugin_find (name);
|
||||||
|
if (plugin) return NULL;
|
||||||
|
|
||||||
|
plugin = (GstPlugin *)g_malloc(sizeof(GstPlugin));
|
||||||
|
|
||||||
// FIXME need to make sure the plugin hasn't already loaded
|
|
||||||
plugin->name = g_strdup(name);
|
plugin->name = g_strdup(name);
|
||||||
plugin->longname = NULL;
|
plugin->longname = NULL;
|
||||||
plugin->types = NULL;
|
plugin->types = NULL;
|
||||||
|
@ -287,7 +310,9 @@ GstPlugin *gst_plugin_new(gchar *name) {
|
||||||
*
|
*
|
||||||
* Sets the long name (should be descriptive) of the plugin.
|
* Sets the long name (should be descriptive) of the plugin.
|
||||||
*/
|
*/
|
||||||
void gst_plugin_set_longname(GstPlugin *plugin,gchar *longname) {
|
void
|
||||||
|
gst_plugin_set_longname (GstPlugin *plugin, gchar *longname)
|
||||||
|
{
|
||||||
g_return_if_fail(plugin != NULL);
|
g_return_if_fail(plugin != NULL);
|
||||||
|
|
||||||
if (plugin->longname) g_free(plugin->longname);
|
if (plugin->longname) g_free(plugin->longname);
|
||||||
|
@ -302,7 +327,9 @@ void gst_plugin_set_longname(GstPlugin *plugin,gchar *longname) {
|
||||||
*
|
*
|
||||||
* Returns: pointer to the #GstPlugin if found, NULL otherwise
|
* Returns: pointer to the #GstPlugin if found, NULL otherwise
|
||||||
*/
|
*/
|
||||||
GstPlugin *gst_plugin_find(const gchar *name) {
|
GstPlugin*
|
||||||
|
gst_plugin_find (const gchar *name)
|
||||||
|
{
|
||||||
GList *plugins = _gst_plugins;
|
GList *plugins = _gst_plugins;
|
||||||
|
|
||||||
g_return_val_if_fail(name != NULL, NULL);
|
g_return_val_if_fail(name != NULL, NULL);
|
||||||
|
@ -328,7 +355,9 @@ GstPlugin *gst_plugin_find(const gchar *name) {
|
||||||
*
|
*
|
||||||
* Returns: @GstElementFactory if found, NULL if not
|
* Returns: @GstElementFactory if found, NULL if not
|
||||||
*/
|
*/
|
||||||
GstElementFactory *gst_plugin_find_elementfactory(gchar *name) {
|
GstElementFactory*
|
||||||
|
gst_plugin_find_elementfactory (gchar *name)
|
||||||
|
{
|
||||||
GList *plugins, *factories;
|
GList *plugins, *factories;
|
||||||
GstElementFactory *factory;
|
GstElementFactory *factory;
|
||||||
|
|
||||||
|
@ -357,7 +386,9 @@ GstElementFactory *gst_plugin_find_elementfactory(gchar *name) {
|
||||||
*
|
*
|
||||||
* Returns: @GstElementFactory if loaded, NULL if not
|
* Returns: @GstElementFactory if loaded, NULL if not
|
||||||
*/
|
*/
|
||||||
GstElementFactory *gst_plugin_load_elementfactory(gchar *name) {
|
GstElementFactory*
|
||||||
|
gst_plugin_load_elementfactory (gchar *name)
|
||||||
|
{
|
||||||
GList *plugins, *factories;
|
GList *plugins, *factories;
|
||||||
GstElementFactory *factory = NULL;
|
GstElementFactory *factory = NULL;
|
||||||
GstPlugin *plugin;
|
GstPlugin *plugin;
|
||||||
|
@ -397,12 +428,14 @@ GstElementFactory *gst_plugin_load_elementfactory(gchar *name) {
|
||||||
*
|
*
|
||||||
* Load a registered typefactory by mime type.
|
* Load a registered typefactory by mime type.
|
||||||
*/
|
*/
|
||||||
void gst_plugin_load_typefactory(gchar *mime) {
|
void
|
||||||
|
gst_plugin_load_typefactory (gchar *mime)
|
||||||
|
{
|
||||||
GList *plugins, *factories;
|
GList *plugins, *factories;
|
||||||
GstTypeFactory *factory;
|
GstTypeFactory *factory;
|
||||||
GstPlugin *plugin;
|
GstPlugin *plugin;
|
||||||
|
|
||||||
g_return_if_fail(mime != NULL);
|
g_return_if_fail (mime != NULL);
|
||||||
|
|
||||||
plugins = _gst_plugins;
|
plugins = _gst_plugins;
|
||||||
while (plugins) {
|
while (plugins) {
|
||||||
|
@ -437,12 +470,14 @@ void gst_plugin_load_typefactory(gchar *mime) {
|
||||||
*
|
*
|
||||||
* Add factory to the list of those provided by the plugin.
|
* Add factory to the list of those provided by the plugin.
|
||||||
*/
|
*/
|
||||||
void gst_plugin_add_factory(GstPlugin *plugin,GstElementFactory *factory) {
|
void
|
||||||
g_return_if_fail(plugin != NULL);
|
gst_plugin_add_factory (GstPlugin *plugin, GstElementFactory *factory)
|
||||||
g_return_if_fail(factory != NULL);
|
{
|
||||||
|
g_return_if_fail (plugin != NULL);
|
||||||
|
g_return_if_fail (factory != NULL);
|
||||||
|
|
||||||
// g_print("adding factory to plugin\n");
|
// g_print("adding factory to plugin\n");
|
||||||
plugin->elements = g_list_append(plugin->elements,factory);
|
plugin->elements = g_list_prepend (plugin->elements, factory);
|
||||||
gst_elementfactory_register (factory);
|
gst_elementfactory_register (factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -453,12 +488,14 @@ void gst_plugin_add_factory(GstPlugin *plugin,GstElementFactory *factory) {
|
||||||
*
|
*
|
||||||
* Add a typefactory to the list of those provided by the plugin.
|
* Add a typefactory to the list of those provided by the plugin.
|
||||||
*/
|
*/
|
||||||
void gst_plugin_add_type(GstPlugin *plugin,GstTypeFactory *factory) {
|
void
|
||||||
g_return_if_fail(plugin != NULL);
|
gst_plugin_add_type (GstPlugin *plugin, GstTypeFactory *factory)
|
||||||
g_return_if_fail(factory != NULL);
|
{
|
||||||
|
g_return_if_fail (plugin != NULL);
|
||||||
|
g_return_if_fail (factory != NULL);
|
||||||
|
|
||||||
// g_print("adding factory to plugin\n");
|
// g_print("adding factory to plugin\n");
|
||||||
plugin->types = g_list_append(plugin->types,factory);
|
plugin->types = g_list_prepend (plugin->types, factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -468,7 +505,9 @@ void gst_plugin_add_type(GstPlugin *plugin,GstTypeFactory *factory) {
|
||||||
*
|
*
|
||||||
* Returns; a GList of GstPlugin elements
|
* Returns; a GList of GstPlugin elements
|
||||||
*/
|
*/
|
||||||
GList *gst_plugin_get_list() {
|
GList*
|
||||||
|
gst_plugin_get_list(void)
|
||||||
|
{
|
||||||
return _gst_plugins;
|
return _gst_plugins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -480,7 +519,9 @@ GList *gst_plugin_get_list() {
|
||||||
*
|
*
|
||||||
* Returns: the new XML node
|
* Returns: the new XML node
|
||||||
*/
|
*/
|
||||||
xmlNodePtr gst_plugin_save_thyself(xmlNodePtr parent) {
|
xmlNodePtr
|
||||||
|
gst_plugin_save_thyself (xmlNodePtr parent)
|
||||||
|
{
|
||||||
xmlNodePtr tree, subtree;
|
xmlNodePtr tree, subtree;
|
||||||
GList *plugins = NULL, *elements = NULL, *types = NULL;
|
GList *plugins = NULL, *elements = NULL, *types = NULL;
|
||||||
|
|
||||||
|
@ -520,7 +561,9 @@ xmlNodePtr gst_plugin_save_thyself(xmlNodePtr parent) {
|
||||||
*
|
*
|
||||||
* load the plugin from an XML representation
|
* load the plugin from an XML representation
|
||||||
*/
|
*/
|
||||||
void gst_plugin_load_thyself(xmlNodePtr parent) {
|
void
|
||||||
|
gst_plugin_load_thyself (xmlNodePtr parent)
|
||||||
|
{
|
||||||
xmlNodePtr kinderen;
|
xmlNodePtr kinderen;
|
||||||
gint elementcount = 0;
|
gint elementcount = 0;
|
||||||
gint typecount = 0;
|
gint typecount = 0;
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
#ifndef __GST_PLUGIN_H__
|
#ifndef __GST_PLUGIN_H__
|
||||||
#define __GST_PLUGIN_H__
|
#define __GST_PLUGIN_H__
|
||||||
|
|
||||||
|
|
||||||
#include <gmodule.h>
|
#include <gmodule.h>
|
||||||
|
#include <gnome-xml/parser.h>
|
||||||
|
|
||||||
#include <gst/gsttype.h>
|
#include <gst/gsttype.h>
|
||||||
#include <gst/gstelement.h>
|
#include <gst/gstelement.h>
|
||||||
|
|
|
@ -19,9 +19,9 @@
|
||||||
|
|
||||||
//#define DEBUG_ENABLED
|
//#define DEBUG_ENABLED
|
||||||
|
|
||||||
#include <stdarg.h>
|
#include "gstdebug.h"
|
||||||
#include <gst/gst.h>
|
#include "gstprops.h"
|
||||||
#include <gst/gstpropsprivate.h>
|
#include "gstpropsprivate.h"
|
||||||
|
|
||||||
static gboolean gst_props_entry_check_compatibility (GstPropsEntry *entry1, GstPropsEntry *entry2);
|
static gboolean gst_props_entry_check_compatibility (GstPropsEntry *entry1, GstPropsEntry *entry2);
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
#define __GST_PROPS_H__
|
#define __GST_PROPS_H__
|
||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
#include <gnome-xml/parser.h>
|
||||||
|
|
||||||
typedef struct _GstProps GstProps;
|
typedef struct _GstProps GstProps;
|
||||||
typedef gpointer GstPropsFactoryEntry;
|
typedef gpointer GstPropsFactoryEntry;
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gstsink.h>
|
#include "gstsink.h"
|
||||||
|
|
||||||
|
|
||||||
/* Sink signals and args */
|
/* Sink signals and args */
|
||||||
|
|
|
@ -44,6 +44,8 @@ extern "C" {
|
||||||
typedef struct _GstSink GstSink;
|
typedef struct _GstSink GstSink;
|
||||||
typedef struct _GstSinkClass GstSinkClass;
|
typedef struct _GstSinkClass GstSinkClass;
|
||||||
|
|
||||||
|
#define GST_SINK_FLAG_LAST GST_ELEMENT_FLAG_LAST
|
||||||
|
|
||||||
struct _GstSink {
|
struct _GstSink {
|
||||||
GstElement element;
|
GstElement element;
|
||||||
};
|
};
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include "gstsrc.h"
|
||||||
|
|
||||||
|
|
||||||
/* Src signals and args */
|
/* Src signals and args */
|
||||||
|
@ -79,7 +79,6 @@ gst_src_class_init (GstSrcClass *klass)
|
||||||
static void
|
static void
|
||||||
gst_src_init (GstSrc *src)
|
gst_src_init (GstSrc *src)
|
||||||
{
|
{
|
||||||
src->flags = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
18
gst/gstsrc.h
18
gst/gstsrc.h
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
#include <gst/gstelement.h>
|
#include <gst/gstelement.h>
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif /* __cplusplus */
|
#endif /* __cplusplus */
|
||||||
|
@ -42,20 +41,18 @@ extern "C" {
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_SRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_SRC))
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_SRC_ASYNC = (1 << 0),
|
GST_SRC_ASYNC = GST_ELEMENT_FLAG_LAST,
|
||||||
} GstSrcFlags;
|
|
||||||
|
|
||||||
#define GST_SRC_FLAGS(obj) \
|
GST_SRC_FLAG_LAST = GST_ELEMENT_FLAG_LAST +2,
|
||||||
(GST_SRC(obj)->flags)
|
} GstSrcFlags;
|
||||||
#define GST_SRC_ASYNC(obj) \
|
|
||||||
((GST_SRC_FLAGS(obj) & GST_SRC_ASYNC))
|
|
||||||
|
|
||||||
typedef struct _GstSrc GstSrc;
|
typedef struct _GstSrc GstSrc;
|
||||||
typedef struct _GstSrcClass GstSrcClass;
|
typedef struct _GstSrcClass GstSrcClass;
|
||||||
|
|
||||||
|
#define GST_SRC_ASYNC(obj) (GST_FLAG_IS_SET(obj,GST_SRC_ASYNC))
|
||||||
|
|
||||||
struct _GstSrc {
|
struct _GstSrc {
|
||||||
GstElement element;
|
GstElement element;
|
||||||
gint32 flags;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GstSrcClass {
|
struct _GstSrcClass {
|
||||||
|
@ -65,11 +62,6 @@ struct _GstSrcClass {
|
||||||
void (*eos) (GstSrc *src);
|
void (*eos) (GstSrc *src);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define GST_SRC_SET_FLAGS(src,flag) \
|
|
||||||
G_STMT_START{ (GST_SRC_FLAGS (src) |= (flag)); }G_STMT_END
|
|
||||||
#define GST_SRC_UNSET_FLAGS(src,flag) \
|
|
||||||
G_STMT_START{ (GST_SRC_FLAGS (src) &= ~(flag)); }G_STMT_END
|
|
||||||
|
|
||||||
GtkType gst_src_get_type (void);
|
GtkType gst_src_get_type (void);
|
||||||
|
|
||||||
void gst_src_signal_eos (GstSrc *src);
|
void gst_src_signal_eos (GstSrc *src);
|
||||||
|
|
|
@ -17,9 +17,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gsttee.h>
|
#include "gsttee.h"
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
GstElementDetails gst_tee_details = {
|
GstElementDetails gst_tee_details = {
|
||||||
"Tee pipe fitting",
|
"Tee pipe fitting",
|
||||||
|
|
|
@ -17,10 +17,10 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gst.h>
|
#include <unistd.h>
|
||||||
#include <gst/gstthread.h>
|
|
||||||
|
|
||||||
#include "config.h"
|
#include "gstthread.h"
|
||||||
|
#include "gstdebug.h"
|
||||||
|
|
||||||
GstElementDetails gst_thread_details = {
|
GstElementDetails gst_thread_details = {
|
||||||
"Threaded container",
|
"Threaded container",
|
||||||
|
|
|
@ -22,9 +22,9 @@
|
||||||
#define __GST_THREAD_H__
|
#define __GST_THREAD_H__
|
||||||
|
|
||||||
|
|
||||||
#include <gst/gstbin.h>
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
|
|
||||||
|
#include <gst/gstbin.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
@ -34,9 +34,12 @@ extern GstElementDetails gst_thread_details;
|
||||||
|
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_THREAD_CREATE = (1 << 16),
|
GST_THREAD_CREATE = GST_BIN_FLAG_LAST,
|
||||||
GST_THREAD_STATE_SPINNING = (1 << 17),
|
GST_THREAD_STATE_SPINNING,
|
||||||
GST_THREAD_STATE_REAPING = (1 << 18),
|
GST_THREAD_STATE_REAPING,
|
||||||
|
|
||||||
|
/* padding */
|
||||||
|
GST_THREAD_FLAG_LAST = GST_BIN_FLAG_LAST + 4,
|
||||||
} GstThreadState;
|
} GstThreadState;
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,8 @@
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <glib.h>
|
|
||||||
#include <gst/gsttrace.h>
|
#include "gsttrace.h"
|
||||||
|
|
||||||
#ifdef HAVE_RDTS
|
#ifdef HAVE_RDTS
|
||||||
__inline__ void read_tsc(guint64 *dst) {
|
__inline__ void read_tsc(guint64 *dst) {
|
||||||
|
|
|
@ -21,6 +21,7 @@
|
||||||
#ifndef __GST_TRACE_H__
|
#ifndef __GST_TRACE_H__
|
||||||
#define __GST_TRACE_H__
|
#define __GST_TRACE_H__
|
||||||
|
|
||||||
|
#include <glib.h>
|
||||||
|
|
||||||
typedef struct _GstTrace GstTrace;
|
typedef struct _GstTrace GstTrace;
|
||||||
typedef struct _GstTraceEntry GstTraceEntry;
|
typedef struct _GstTraceEntry GstTraceEntry;
|
||||||
|
|
|
@ -24,9 +24,10 @@
|
||||||
* I'm not overly worried yet...
|
* I'm not overly worried yet...
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gst.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "gsttype.h"
|
||||||
|
#include "gstplugin.h"
|
||||||
|
|
||||||
/* global list of registered types */
|
/* global list of registered types */
|
||||||
GList *_gst_types;
|
GList *_gst_types;
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
#include "gstutils.h"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gst_util_get_int_arg:
|
* gst_util_get_int_arg:
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* Boston, MA 02111-1307, USA.
|
* Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <gst/gstxml.h>
|
#include "gstxml.h"
|
||||||
|
|
||||||
static void gst_xml_class_init(GstXMLClass *klass);
|
static void gst_xml_class_init(GstXMLClass *klass);
|
||||||
static void gst_xml_init(GstXML *xml);
|
static void gst_xml_init(GstXML *xml);
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
#ifndef __GST_XML_H__
|
#ifndef __GST_XML_H__
|
||||||
#define __GST_XML_H__
|
#define __GST_XML_H__
|
||||||
|
|
||||||
#include <gst/gst.h>
|
|
||||||
#include <gnome-xml/parser.h>
|
#include <gnome-xml/parser.h>
|
||||||
|
#include <gst/gstelement.h>
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -18,7 +18,6 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <gtk/gtk.h>
|
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
|
@ -179,7 +179,7 @@ gst_media_play_init(GstMediaPlay *mplay)
|
||||||
|
|
||||||
gtk_widget_show (GTK_WIDGET (mplay->play));
|
gtk_widget_show (GTK_WIDGET (mplay->play));
|
||||||
|
|
||||||
mplay->status = glade_xml_get_widget (mplay->xml, "status_area");
|
mplay->status = (GstStatusArea *)glade_xml_get_widget (mplay->xml, "status_area");
|
||||||
gst_status_area_set_state (mplay->status, GST_STATUS_AREA_STATE_INIT);
|
gst_status_area_set_state (mplay->status, GST_STATUS_AREA_STATE_INIT);
|
||||||
gst_status_area_set_playtime (mplay->status, "00:00 / 00:00");
|
gst_status_area_set_playtime (mplay->status, "00:00 / 00:00");
|
||||||
|
|
||||||
|
|
|
@ -118,7 +118,7 @@ gst_asyncdisksrc_class_init (GstAsyncDiskSrcClass *klass)
|
||||||
static void
|
static void
|
||||||
gst_asyncdisksrc_init (GstAsyncDiskSrc *asyncdisksrc)
|
gst_asyncdisksrc_init (GstAsyncDiskSrc *asyncdisksrc)
|
||||||
{
|
{
|
||||||
GST_SRC_SET_FLAGS (asyncdisksrc, GST_SRC_ASYNC);
|
GST_FLAG_SET (asyncdisksrc, GST_SRC_ASYNC);
|
||||||
|
|
||||||
g_print("init\n");
|
g_print("init\n");
|
||||||
asyncdisksrc->srcpad = gst_pad_new ("src", GST_PAD_SRC);
|
asyncdisksrc->srcpad = gst_pad_new ("src", GST_PAD_SRC);
|
||||||
|
|
|
@ -44,9 +44,10 @@ GstElementDetails gst_asyncdisksrc_details;
|
||||||
#define GST_IS_ASYNCDISKSRC_CLASS(obj) \
|
#define GST_IS_ASYNCDISKSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ASYNCDISKSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_ASYNCDISKSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_ASYNCDISKSRC_OPEN = (1 << 16),
|
GST_ASYNCDISKSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_ASYNCDISKSRC_FLAG_LAST = GST_SRC_FLAG_LAST + 2,
|
||||||
} GstAsyncDiskSrcFlags;
|
} GstAsyncDiskSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstAsyncDiskSrc GstAsyncDiskSrc;
|
typedef struct _GstAsyncDiskSrc GstAsyncDiskSrc;
|
||||||
|
|
|
@ -24,7 +24,6 @@
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <gst/gst.h>
|
#include <gst/gst.h>
|
||||||
#include <gst/gstclock.h>
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -46,9 +45,10 @@ GstElementDetails gst_audiosink_details;
|
||||||
#define GST_IS_AUDIOSINK_CLASS(obj) \
|
#define GST_IS_AUDIOSINK_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSINK))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSINK))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_AUDIOSINK_OPEN = (1 << 16),
|
GST_AUDIOSINK_OPEN = GST_SINK_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_AUDIOSINK_FLAG_LAST = GST_SINK_FLAG_LAST+2,
|
||||||
} GstAudioSinkFlags;
|
} GstAudioSinkFlags;
|
||||||
|
|
||||||
typedef struct _GstAudioSink GstAudioSink;
|
typedef struct _GstAudioSink GstAudioSink;
|
||||||
|
|
|
@ -46,9 +46,10 @@ GstElementDetails gst_audiosrc_details;
|
||||||
#define GST_IS_AUDIOSRC_CLASS(obj) \
|
#define GST_IS_AUDIOSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_AUDIOSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_AUDIOSRC_OPEN = (1 < 16),
|
GST_AUDIOSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_AUDIOSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2,
|
||||||
} GstAudioSrcFlags;
|
} GstAudioSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstAudioSrc GstAudioSrc;
|
typedef struct _GstAudioSrc GstAudioSrc;
|
||||||
|
|
|
@ -45,9 +45,10 @@ extern GstElementDetails gst_disksrc_details;
|
||||||
#define GST_IS_DISKSRC_CLASS(obj) \
|
#define GST_IS_DISKSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_DISKSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_DISKSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_DISKSRC_OPEN = (1 << 16),
|
GST_DISKSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_DISKSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2,
|
||||||
} GstDiskSrcFlags;
|
} GstDiskSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstDiskSrc GstDiskSrc;
|
typedef struct _GstDiskSrc GstDiskSrc;
|
||||||
|
|
|
@ -72,9 +72,6 @@ GstPlugin *plugin_init (GModule *module)
|
||||||
GstElementFactory *factory;
|
GstElementFactory *factory;
|
||||||
gint i = 0;
|
gint i = 0;
|
||||||
|
|
||||||
/* we depend on having the usual types loaded first */
|
|
||||||
gst_plugin_load("gsttypes");
|
|
||||||
|
|
||||||
plugin = gst_plugin_new("gstelements");
|
plugin = gst_plugin_new("gstelements");
|
||||||
g_return_val_if_fail(plugin != NULL,NULL);
|
g_return_val_if_fail(plugin != NULL,NULL);
|
||||||
|
|
||||||
|
|
|
@ -47,9 +47,10 @@ GstElementDetails gst_httpsrc_details;
|
||||||
#define GST_IS_HTTPSRC_CLASS(obj) \
|
#define GST_IS_HTTPSRC_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_HTTPSRC))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_HTTPSRC))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_HTTPSRC_OPEN = (1 << 16),
|
GST_HTTPSRC_OPEN = GST_SRC_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_HTTPSRC_FLAG_LAST = GST_SRC_FLAG_LAST+2,
|
||||||
} GstHttpSrcFlags;
|
} GstHttpSrcFlags;
|
||||||
|
|
||||||
typedef struct _GstHttpSrc GstHttpSrc;
|
typedef struct _GstHttpSrc GstHttpSrc;
|
||||||
|
|
|
@ -44,9 +44,10 @@ GstElementDetails gst_pipefilter_details;
|
||||||
#define GST_IS_PIPEFILTER_CLASS(obj) \
|
#define GST_IS_PIPEFILTER_CLASS(obj) \
|
||||||
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPEFILTER))
|
(GTK_CHECK_CLASS_TYPE((klass),GST_TYPE_PIPEFILTER))
|
||||||
|
|
||||||
// NOTE: per-element flags start with 16 for now
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
GST_PIPEFILTER_OPEN = (1 << 16 ),
|
GST_PIPEFILTER_OPEN = GST_FILTER_FLAG_LAST,
|
||||||
|
|
||||||
|
GST_PIPEFILTER_FLAG_LAST = GST_FILTER_FLAG_LAST,
|
||||||
} GstPipeFilterFlags;
|
} GstPipeFilterFlags;
|
||||||
|
|
||||||
typedef struct _GstPipefilter GstPipefilter;
|
typedef struct _GstPipefilter GstPipefilter;
|
||||||
|
|
2
tests/.gitignore
vendored
2
tests/.gitignore
vendored
|
@ -13,3 +13,5 @@ states
|
||||||
caps
|
caps
|
||||||
queue
|
queue
|
||||||
registry
|
registry
|
||||||
|
rip
|
||||||
|
paranoia
|
||||||
|
|
|
@ -2,9 +2,11 @@
|
||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
int main(int argc,char *argv[]) {
|
int main(int argc,char *argv[]) {
|
||||||
GstPipeline *pipeline;
|
GstElement *pipeline;
|
||||||
GstElement *paranoia,*lame,*sink;
|
GstElement *paranoia,*lame,*sink;
|
||||||
int i;
|
int i;
|
||||||
int outfile;
|
int outfile;
|
||||||
|
@ -46,4 +48,6 @@ int main(int argc,char *argv[]) {
|
||||||
fprintf(stderr,"\n");
|
fprintf(stderr,"\n");
|
||||||
gst_bin_iterate(GST_BIN(pipeline));
|
gst_bin_iterate(GST_BIN(pipeline));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ int main(int argc,char *argv[])
|
||||||
unlink("/etc/gstreamer/reg.xml");
|
unlink("/etc/gstreamer/reg.xml");
|
||||||
|
|
||||||
gst_init(&argc,&argv);
|
gst_init(&argc,&argv);
|
||||||
gst_plugin_load_all();
|
|
||||||
|
|
||||||
doc = xmlNewDoc("1.0");
|
doc = xmlNewDoc("1.0");
|
||||||
doc->root = xmlNewDocNode(doc, NULL, "GST-PluginRegistry", NULL);
|
doc->root = xmlNewDocNode(doc, NULL, "GST-PluginRegistry", NULL);
|
||||||
|
|
Loading…
Reference in a new issue