#ifndef __GST_PARSE_TYPES_H__ #define __GST_PARSE_TYPES_H__ #include #include "../gstelement.h" #ifdef HAVE_CONFIG_H # include "config.h" #endif 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; }; /* * 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__ */