X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=gst%2Fgstplugin.h;h=500be30def6cca39fc12b36fcc1e874294bd78b0;hb=e10266e3f3cf9b05b69198b1ac6faa9a62840e30;hp=c946041a4bd688a999e4269bbe68509fd7016baf;hpb=4a7c3b929add1c96b853c0c93676879345a77b8d;p=platform%2Fupstream%2Fgstreamer.git diff --git a/gst/gstplugin.h b/gst/gstplugin.h index c946041..500be30 100644 --- a/gst/gstplugin.h +++ b/gst/gstplugin.h @@ -16,8 +16,8 @@ * * You should have received a copy of the GNU Library General Public * License along with this library; if not, write to the - * Free Software Foundation, Inc., 59 Temple Place - Suite 330, - * Boston, MA 02111-1307, USA. + * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, + * Boston, MA 02110-1301, USA. */ @@ -26,19 +26,19 @@ #include -#include /* time_t */ -#include /* off_t */ -#include /* off_t */ -#include #include #include #include G_BEGIN_DECLS +/** + * GstPlugin: + * + * The opaque plugin object + */ typedef struct _GstPlugin GstPlugin; typedef struct _GstPluginClass GstPluginClass; -typedef struct _GstPluginPrivate GstPluginPrivate; typedef struct _GstPluginDesc GstPluginDesc; /** @@ -80,8 +80,8 @@ typedef enum */ typedef enum { - GST_PLUGIN_FLAG_CACHED = (1<<0), - GST_PLUGIN_FLAG_BLACKLISTED = (1<<1) + GST_PLUGIN_FLAG_CACHED = (GST_OBJECT_FLAG_LAST << 0), + GST_PLUGIN_FLAG_BLACKLISTED = (GST_OBJECT_FLAG_LAST << 1) } GstPluginFlags; /** @@ -95,8 +95,6 @@ typedef enum * the directory * * Flags used in connection with gst_plugin_add_dependency(). - * - * Since: 0.10.22 */ typedef enum { GST_PLUGIN_DEPENDENCY_FLAG_NONE = 0, @@ -131,9 +129,6 @@ typedef gboolean (*GstPluginInitFunc) (GstPlugin *plugin); * user data to be passed to init function (useful for bindings). * * Returns: %TRUE if plugin initialised successfully - * - * Since: 0.10.24 - * */ /* FIXME 0.11: Merge with GstPluginInitFunc */ typedef gboolean (*GstPluginInitFullFunc) (GstPlugin *plugin, gpointer user_data); @@ -151,10 +146,10 @@ typedef gboolean (*GstPluginInitFullFunc) (GstPlugin *plugin, gpointer user_data * @package: shipped package plugin belongs to * @origin: URL to provider of plugin * @release_datetime: date time string in ISO 8601 format (or rather, a - * subset thereof), or NULL. Allowed are the following formats: + * subset thereof), or %NULL. Allowed are the following formats: * "YYYY-MM-DD" and "YYY-MM-DDTHH:MMZ" (with 'T' a separator and 'Z' * indicating UTC/Zulu time). This field should be set via the - * GST_PACKAGE_RELEASE_DATETIME preprocessor macro (Since: 0.10.31) + * GST_PACKAGE_RELEASE_DATETIME preprocessor macro. * * A plugin should export a variable of this type called plugin_desc. The plugin * loader will use the data provided there to initialize the plugin. @@ -187,43 +182,6 @@ struct _GstPluginDesc { #define GST_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_PLUGIN, GstPluginClass)) #define GST_PLUGIN_CAST(obj) ((GstPlugin*)(obj)) -/** - * GstPlugin: - * - * The plugin object - */ -struct _GstPlugin { - GstObject object; - - /*< private >*/ - GstPluginDesc desc; - - GstPluginDesc *orig_desc; - - unsigned int flags; - - gchar * filename; - gchar * basename; /* base name (non-dir part) of plugin path */ - - GModule * module; /* contains the module if plugin is loaded */ - - off_t file_size; - time_t file_mtime; - gboolean registered; /* TRUE when the registry has seen a filename - * that matches the plugin's basename */ - - GstPluginPrivate *priv; - - gpointer _gst_reserved[GST_PADDING]; -}; - -struct _GstPluginClass { - GstObjectClass object_class; - - /*< private >*/ - gpointer _gst_reserved[GST_PADDING]; -}; - #ifdef GST_PACKAGE_RELEASE_DATETIME #define __GST_PACKAGE_RELEASE_DATETIME GST_PACKAGE_RELEASE_DATETIME #else @@ -231,6 +189,34 @@ struct _GstPluginClass { #endif /** + * GST_PLUGIN_STATIC_DECLARE: + * @name: short, but unique name of the plugin + * + * This macro can be used to initialize statically linked plugins. It is + * necessary to call this macro before the plugin can be used. + * It has to be used in combination with GST_PLUGIN_STATIC_REGISTER + * and must be placed outside any block to declare the plugin initialization + * function. + * + * Since: 1.2 + */ +#define GST_PLUGIN_STATIC_DECLARE(name) \ + extern void G_PASTE(gst_plugin_, G_PASTE(name, _register)) (void) + +/** + * GST_PLUGIN_STATIC_REGISTER: + * @name: short, but unique name of the plugin + * + * This macro can be used to initialize statically linked plugins. It is + * necessary to call this macro before the plugin can be used. + * It has to be used in combination with GST_PLUGIN_STATIC_DECLARE and + * calls the plugin initialization function. + * + * Since: 1.2 + */ +#define GST_PLUGIN_STATIC_REGISTER(name) G_PASTE(gst_plugin_, G_PASTE(name, _register)) () + +/** * GST_PLUGIN_DEFINE: * @major: major version number of the gstreamer-core that plugin was compiled for * @minor: minor version number of the gstreamer-core that plugin was compiled for @@ -255,12 +241,26 @@ struct _GstPluginClass { * If defined, the GST_PACKAGE_RELEASE_DATETIME will also be used for the * #GstPluginDesc,release_datetime field. */ +#ifdef GST_PLUGIN_BUILD_STATIC +#define GST_PLUGIN_DEFINE(major,minor,name,description,init,version,license,package,origin) \ +G_BEGIN_DECLS \ +GST_PLUGIN_EXPORT void G_PASTE(gst_plugin_, G_PASTE(name, _register)) (void); \ + \ +void \ +G_PASTE(gst_plugin_, G_PASTE(name, _register)) (void) \ +{ \ + gst_plugin_register_static (major, minor, G_STRINGIFY(name), \ + description, init, version, license, \ + PACKAGE, package, origin); \ +} \ +G_END_DECLS +#else /* !GST_PLUGIN_BUILD_STATIC */ #define GST_PLUGIN_DEFINE(major,minor,name,description,init,version,license,package,origin) \ G_BEGIN_DECLS \ GST_PLUGIN_EXPORT GstPluginDesc gst_plugin_desc = { \ major, \ minor, \ - name, \ + G_STRINGIFY(name), \ (gchar *) description, \ init, \ version, \ @@ -272,12 +272,12 @@ GST_PLUGIN_EXPORT GstPluginDesc gst_plugin_desc = { \ GST_PADDING_INIT \ }; \ G_END_DECLS +#endif /* GST_PLUGIN_BUILD_STATIC */ /** * GST_LICENSE_UNKNOWN: * - * To be used in GST_PLUGIN_DEFINE or GST_PLUGIN_DEFINE_STATIC if usure about - * the licence. + * To be used in GST_PLUGIN_DEFINE if unsure about the licence. */ #define GST_LICENSE_UNKNOWN "unknown" @@ -291,7 +291,7 @@ G_END_DECLS * A function that can be used with e.g. gst_registry_plugin_filter() * to get a list of plugins that match certain criteria. * - * Returns: TRUE for a positive match, FALSE otherwise + * Returns: %TRUE for a positive match, %FALSE otherwise */ typedef gboolean (*GstPluginFilter) (GstPlugin *plugin, gpointer user_data); @@ -329,14 +329,12 @@ const gchar* gst_plugin_get_license (GstPlugin *plugin); const gchar* gst_plugin_get_source (GstPlugin *plugin); const gchar* gst_plugin_get_package (GstPlugin *plugin); const gchar* gst_plugin_get_origin (GstPlugin *plugin); +const gchar* gst_plugin_get_release_date_string (GstPlugin *plugin); const GstStructure* gst_plugin_get_cache_data (GstPlugin * plugin); void gst_plugin_set_cache_data (GstPlugin * plugin, GstStructure *cache_data); -GModule * gst_plugin_get_module (GstPlugin *plugin); gboolean gst_plugin_is_loaded (GstPlugin *plugin); -gboolean gst_plugin_name_filter (GstPlugin *plugin, const gchar *name); - GstPlugin * gst_plugin_load_file (const gchar *filename, GError** error); GstPlugin * gst_plugin_load (GstPlugin *plugin);