1 /* GStreamer 2 * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> 3 * 2000 Wim Taymans <wtay@chello.be> 4 * 5 * gstparse.h: get a pipeline from a text pipeline description 6 * 7 * This library is free software; you can redistribute it and/or 8 * modify it under the terms of the GNU Library General Public 9 * License as published by the Free Software Foundation; either 10 * version 2 of the License, or (at your option) any later version. 11 * 12 * This library is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 15 * Library General Public License for more details. 16 * 17 * You should have received a copy of the GNU Library General Public 18 * License along with this library; if not, write to the 19 * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 20 * Boston, MA 02110-1301, USA. 21 */ 22 23 #ifndef __GST_PARSE_H__ 24 #define __GST_PARSE_H__ 25 26 #include <gst/gstelement.h> 27 28 G_BEGIN_DECLS 29 30 GST_API 31 GQuark gst_parse_error_quark (void); 32 /** 33 * GST_PARSE_ERROR: 34 * 35 * Get access to the error quark of the parse subsystem. 36 */ 37 #define GST_PARSE_ERROR gst_parse_error_quark () 38 39 /* FIXME 2.0: rename to GstParseLaunchError, this is not only related to 40 *parsing */ 41 /** 42 * GstParseError: 43 * @GST_PARSE_ERROR_SYNTAX: A syntax error occurred. 44 * @GST_PARSE_ERROR_NO_SUCH_ELEMENT: The description contained an unknown element 45 * @GST_PARSE_ERROR_NO_SUCH_PROPERTY: An element did not have a specified property 46 * @GST_PARSE_ERROR_LINK: There was an error linking two pads. 47 * @GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY: There was an error setting a property 48 * @GST_PARSE_ERROR_EMPTY_BIN: An empty bin was specified. 49 * @GST_PARSE_ERROR_EMPTY: An empty description was specified 50 * @GST_PARSE_ERROR_DELAYED_LINK: A delayed link did not get resolved. 51 * 52 * The different parsing errors that can occur. 53 */ 54 typedef enum 55 { 56 GST_PARSE_ERROR_SYNTAX, 57 GST_PARSE_ERROR_NO_SUCH_ELEMENT, 58 GST_PARSE_ERROR_NO_SUCH_PROPERTY, 59 GST_PARSE_ERROR_LINK, 60 GST_PARSE_ERROR_COULD_NOT_SET_PROPERTY, 61 GST_PARSE_ERROR_EMPTY_BIN, 62 GST_PARSE_ERROR_EMPTY, 63 GST_PARSE_ERROR_DELAYED_LINK 64 } GstParseError; 65 66 /** 67 * GstParseFlags: 68 * @GST_PARSE_FLAG_NONE: Do not use any special parsing options. 69 * @GST_PARSE_FLAG_FATAL_ERRORS: Always return %NULL when an error occurs 70 * (default behaviour is to return partially constructed bins or elements 71 * in some cases) 72 * @GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS: If a bin only has a single element, 73 * just return the element. 74 * @GST_PARSE_FLAG_PLACE_IN_BIN: If more than one toplevel element is described 75 * by the pipeline description string, put them in a #GstBin instead of a 76 * #GstPipeline. (Since: 1.10) 77 * 78 * Parsing options. 79 */ 80 typedef enum 81 { 82 GST_PARSE_FLAG_NONE = 0, 83 GST_PARSE_FLAG_FATAL_ERRORS = (1 << 0), 84 GST_PARSE_FLAG_NO_SINGLE_ELEMENT_BINS = (1 << 1), 85 GST_PARSE_FLAG_PLACE_IN_BIN = (1 << 2) 86 } GstParseFlags; 87 88 #define GST_TYPE_PARSE_CONTEXT (gst_parse_context_get_type()) 89 90 /** 91 * GstParseContext: 92 * 93 * Opaque structure. 94 */ 95 typedef struct _GstParseContext GstParseContext; 96 97 /* create, process and free a parse context */ 98 99 GST_API 100 GType gst_parse_context_get_type (void); 101 102 GST_API 103 GstParseContext * gst_parse_context_new (void) G_GNUC_MALLOC; 104 105 GST_API 106 gchar ** gst_parse_context_get_missing_elements (GstParseContext * context) G_GNUC_MALLOC; 107 108 GST_API 109 void gst_parse_context_free (GstParseContext * context); 110 111 GST_API 112 GstParseContext * gst_parse_context_copy (const GstParseContext * context); 113 114 115 /* parse functions */ 116 117 GST_API 118 GstElement * gst_parse_launch (const gchar * pipeline_description, 119 GError ** error) G_GNUC_MALLOC; 120 GST_API 121 GstElement * gst_parse_launchv (const gchar ** argv, 122 GError ** error) G_GNUC_MALLOC; 123 GST_API 124 GstElement * gst_parse_launch_full (const gchar * pipeline_description, 125 GstParseContext * context, 126 GstParseFlags flags, 127 GError ** error) G_GNUC_MALLOC; 128 GST_API 129 GstElement * gst_parse_launchv_full (const gchar ** argv, 130 GstParseContext * context, 131 GstParseFlags flags, 132 GError ** error) G_GNUC_MALLOC; 133 134 G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstParseContext, gst_parse_context_free) 135 136 G_END_DECLS 137 138 #endif /* __GST_PARSE_H__ */ 139