gstreamer/gst/parse/types.h
Tim-Philipp Müller ebc08ddfb9 API: gst_parse_launch_full()
Original commit message from CVS:
* docs/gst/gstreamer-sections.txt:
* gst/gst.c: (init_post):
* gst/gst_private.h: (_GstParseContext):
* gst/gstparse.c: (gst_parse_error_quark), (gst_parse_context_new),
(gst_parse_context_free), (gst_parse_context_get_missing_elements),
(gst_parse_launchv), (gst_parse_launchv_full), (gst_parse_launch),
(gst_parse_launch_full):
* gst/gstparse.h: (GST_PARSE_FLAG_NONE), (GST_PARSE_FLAG_FATAL_ERRORS),
(GstParseFlags), (GstParseContext):
* gst/gstutils.c: (gst_parse_bin_from_description),
(gst_parse_bin_from_description_full):
* gst/gstutils.h:
* gst/parse/grammar.y:
* gst/parse/types.h:
* win32/common/libgstreamer.def:
Add new gst_parse_*_full API (#528178):
API: gst_parse_launch_full()
API: gst_parse_launchv_full()
API: gst_parse_bin_from_description_full()
API: gst_parse_context_new()
API: gst_parse_context_free()
API: gst_parse_context_get_missing_elements()
2008-05-24 15:33:53 +00:00

88 lines
2 KiB
C

#ifndef __GST_PARSE_TYPES_H__
#define __GST_PARSE_TYPES_H__
#include <glib-object.h>
#include "../gstelement.h"
#include "../gstparse.h"
typedef struct {
GstElement *src;
GstElement *sink;
gchar *src_name;
gchar *sink_name;
GSList *src_pads;
GSList *sink_pads;
GstCaps *caps;
} link_t;
typedef struct {
GSList *elements;
GstElement *first;
GstElement *last;
link_t *front;
link_t *back;
} chain_t;
typedef struct _graph_t graph_t;
struct _graph_t {
chain_t *chain; /* links are supposed to be done now */
GSList *links;
GError **error;
GstParseContext *ctx; /* may be NULL */
GstParseFlags flags;
};
/*
* Memory checking. Should probably be done with gsttrace stuff, but that
* doesn't really work.
* This is not safe from reentrance issues, but that doesn't matter as long as
* we lock a mutex before parsing anyway.
*/
#ifdef GST_DEBUG_ENABLED
# define __GST_PARSE_TRACE
#endif
#ifdef __GST_PARSE_TRACE
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);
chain_t *__gst_parse_chain_new ();
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
# define gst_parse_link_free __gst_parse_link_free
# define gst_parse_chain_new __gst_parse_chain_new
# define gst_parse_chain_free __gst_parse_chain_free
#else /* __GST_PARSE_TRACE */
# define gst_parse_strdup g_strdup
# define gst_parse_strfree g_free
# define gst_parse_link_new() g_new0 (link_t, 1)
# define gst_parse_link_free g_free
# define gst_parse_chain_new() g_new0 (chain_t, 1)
# define gst_parse_chain_free g_free
#endif /* __GST_PARSE_TRACE */
static inline void
gst_parse_unescape (gchar *str)
{
gchar *walk;
g_return_if_fail (str != NULL);
walk = str;
while (*walk) {
if (*walk == '\\')
walk++;
*str = *walk;
str++;
walk++;
}
*str = '\0';
}
#endif /* __GST_PARSE_TYPES_H__ */