| 1 | /* GStreamer | 
| 2 |  * Copyright (C) 1999,2000 Erik Walthinsen <omega@cse.ogi.edu> | 
| 3 |  *                    2000 Wim Taymans <wtay@chello.be> | 
| 4 |  * | 
| 5 |  * gstpluginfeature.h: Header for base GstPluginFeature | 
| 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 |  | 
| 24 | #ifndef __GST_PLUGIN_FEATURE_H__ | 
| 25 | #define __GST_PLUGIN_FEATURE_H__ | 
| 26 |  | 
| 27 | #include <glib-object.h> | 
| 28 | #include <gst/gstobject.h> | 
| 29 | #include <gst/gstplugin.h> | 
| 30 |  | 
| 31 | G_BEGIN_DECLS | 
| 32 |  | 
| 33 | #define GST_TYPE_PLUGIN_FEATURE                 (gst_plugin_feature_get_type()) | 
| 34 | #define GST_PLUGIN_FEATURE(obj)                 (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_PLUGIN_FEATURE, GstPluginFeature)) | 
| 35 | #define GST_IS_PLUGIN_FEATURE(obj)              (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_PLUGIN_FEATURE)) | 
| 36 | #define GST_PLUGIN_FEATURE_CLASS(klass)         (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PLUGIN_FEATURE, GstPluginFeatureClass)) | 
| 37 | #define GST_IS_PLUGIN_FEATURE_CLASS(klass)      (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_PLUGIN_FEATURE)) | 
| 38 | #define GST_PLUGIN_FEATURE_GET_CLASS(obj)       (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_PLUGIN_FEATURE, GstPluginFeatureClass)) | 
| 39 | #define GST_PLUGIN_FEATURE_CAST(obj)            ((GstPluginFeature*)(obj)) | 
| 40 |  | 
| 41 | /** | 
| 42 |  * GstPluginFeature: | 
| 43 |  * | 
| 44 |  * Opaque #GstPluginFeature structure. | 
| 45 |  */ | 
| 46 | typedef struct _GstPluginFeature GstPluginFeature; | 
| 47 | typedef struct _GstPluginFeatureClass GstPluginFeatureClass; | 
| 48 |  | 
| 49 | /** | 
| 50 |  * GstRank: | 
| 51 |  * @GST_RANK_NONE: will be chosen last or not at all | 
| 52 |  * @GST_RANK_MARGINAL: unlikely to be chosen | 
| 53 |  * @GST_RANK_SECONDARY: likely to be chosen | 
| 54 |  * @GST_RANK_PRIMARY: will be chosen first | 
| 55 |  * | 
| 56 |  * Element priority ranks. Defines the order in which the autoplugger (or | 
| 57 |  * similar rank-picking mechanisms, such as e.g. gst_element_make_from_uri()) | 
| 58 |  * will choose this element over an alternative one with the same function. | 
| 59 |  * | 
| 60 |  * These constants serve as a rough guidance for defining the rank of a | 
| 61 |  * #GstPluginFeature. Any value is valid, including values bigger than | 
| 62 |  * @GST_RANK_PRIMARY. | 
| 63 |  */ | 
| 64 | typedef enum { | 
| 65 |   GST_RANK_NONE                 = 0, | 
| 66 |   GST_RANK_MARGINAL             = 64, | 
| 67 |   GST_RANK_SECONDARY            = 128, | 
| 68 |   GST_RANK_PRIMARY              = 256 | 
| 69 | } GstRank; | 
| 70 |  | 
| 71 | /** | 
| 72 |  * gst_plugin_feature_get_name: | 
| 73 |  * @feature: a #GstPluginFeature to get the name of @feature. | 
| 74 |  * | 
| 75 |  * Returns the name of @feature. | 
| 76 |  * For a nameless plugin feature, this returns %NULL. | 
| 77 |  * | 
| 78 |  * Returns: (transfer none) (nullable): the name of @feature. MT safe. | 
| 79 |  * | 
| 80 |  */ | 
| 81 | #define                 gst_plugin_feature_get_name(feature)      GST_OBJECT_NAME(feature) | 
| 82 |  | 
| 83 | /** | 
| 84 |  * gst_plugin_feature_set_name: | 
| 85 |  * @feature: a #GstPluginFeature to set the name of. | 
| 86 |  * @name: the new name | 
| 87 |  * | 
| 88 |  * Sets the name of the plugin feature, getting rid of the old name if there was one. | 
| 89 |  */ | 
| 90 | #define                 gst_plugin_feature_set_name(feature,name) gst_object_set_name(GST_OBJECT_CAST(feature),name) | 
| 91 |  | 
| 92 | /** | 
| 93 |  * GstPluginFeatureFilter: | 
| 94 |  * @feature: the pluginfeature to check | 
| 95 |  * @user_data: the user_data that has been passed on e.g. | 
| 96 |  *  gst_registry_feature_filter() | 
| 97 |  * | 
| 98 |  * A function that can be used with e.g. gst_registry_feature_filter() | 
| 99 |  * to get a list of pluginfeature that match certain criteria. | 
| 100 |  * | 
| 101 |  * Returns: %TRUE for a positive match, %FALSE otherwise | 
| 102 |  */ | 
| 103 | typedef gboolean        (*GstPluginFeatureFilter)       (GstPluginFeature *feature, | 
| 104 |                                                          gpointer user_data); | 
| 105 |  | 
| 106 | /* normal GObject stuff */ | 
| 107 |  | 
| 108 | GST_API | 
| 109 | GType           gst_plugin_feature_get_type             (void); | 
| 110 |  | 
| 111 | GST_API | 
| 112 | GstPluginFeature * | 
| 113 |                 gst_plugin_feature_load                 (GstPluginFeature *feature); | 
| 114 |  | 
| 115 | GST_API | 
| 116 | void            gst_plugin_feature_set_rank             (GstPluginFeature *feature, guint rank); | 
| 117 |  | 
| 118 | GST_API | 
| 119 | guint           gst_plugin_feature_get_rank             (GstPluginFeature *feature); | 
| 120 |  | 
| 121 | GST_API | 
| 122 | GstPlugin     * gst_plugin_feature_get_plugin           (GstPluginFeature *feature); | 
| 123 |  | 
| 124 | GST_API | 
| 125 | const gchar   * gst_plugin_feature_get_plugin_name      (GstPluginFeature *feature); | 
| 126 |  | 
| 127 | GST_API | 
| 128 | void            gst_plugin_feature_list_free            (GList *list); | 
| 129 |  | 
| 130 | GST_API | 
| 131 | GList          *gst_plugin_feature_list_copy            (GList *list) G_GNUC_MALLOC; | 
| 132 |  | 
| 133 | GST_API | 
| 134 | void            gst_plugin_feature_list_debug           (GList *list); | 
| 135 |  | 
| 136 | /** | 
| 137 |  * GST_PLUGIN_FEATURE_LIST_DEBUG: | 
| 138 |  * @list: (transfer none) (element-type Gst.PluginFeature): a #GList of | 
| 139 |  *     plugin features | 
| 140 |  * | 
| 141 |  * Debug the plugin feature names in @list. | 
| 142 |  */ | 
| 143 | #ifndef GST_DISABLE_GST_DEBUG | 
| 144 | #define GST_PLUGIN_FEATURE_LIST_DEBUG(list) gst_plugin_feature_list_debug(list) | 
| 145 | #else | 
| 146 | #define GST_PLUGIN_FEATURE_LIST_DEBUG(list) | 
| 147 | #endif | 
| 148 |  | 
| 149 | GST_API | 
| 150 | gboolean        gst_plugin_feature_check_version        (GstPluginFeature *feature, | 
| 151 |                                                          guint             min_major, | 
| 152 |                                                          guint             min_minor, | 
| 153 |                                                          guint             min_micro); | 
| 154 | GST_API | 
| 155 | gint            gst_plugin_feature_rank_compare_func    (gconstpointer p1, | 
| 156 | 							 gconstpointer p2); | 
| 157 |  | 
| 158 | G_DEFINE_AUTOPTR_CLEANUP_FUNC(GstPluginFeature, gst_object_unref) | 
| 159 |  | 
| 160 | G_END_DECLS | 
| 161 |  | 
| 162 |  | 
| 163 | #endif /* __GST_PLUGIN_FEATURE_H__ */ | 
| 164 |  | 
| 165 |  |