type_name = g_strdup_printf ("ffdec_%s", plugin_name);
g_free (plugin_name);
- /* if it's already registered, drop it */
- if (g_type_from_name (type_name)) {
- g_free (type_name);
- goto next;
- }
+ type = g_type_from_name (type_name);
- params = g_new0 (GstFFMpegDecClassParams, 1);
- params->in_plugin = in_plugin;
- params->srccaps = gst_caps_ref (srccaps);
- params->sinkcaps = gst_caps_ref (sinkcaps);
+ if (!type) {
+ params = g_new0 (GstFFMpegDecClassParams, 1);
+ params->in_plugin = in_plugin;
+ params->srccaps = gst_caps_ref (srccaps);
+ params->sinkcaps = gst_caps_ref (sinkcaps);
- /* create the gtype now */
- type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
- g_type_set_qdata (type, GST_FFDEC_PARAMS_QDATA, (gpointer) params);
+ /* create the gtype now */
+ type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
+ g_type_set_qdata (type, GST_FFDEC_PARAMS_QDATA, (gpointer) params);
+ }
/* (Ronald) MPEG-4 gets a higher priority because it has been well-
* tested and by far outperforms divxdec/xviddec - so we prefer it.
/* construct the type */
type_name = g_strdup_printf ("ffenc_%s", in_plugin->name);
- /* if it's already registered, drop it */
- if (g_type_from_name (type_name)) {
- g_free (type_name);
- goto next;
- }
-
- params = g_new0 (GstFFMpegEncClassParams, 1);
- params->in_plugin = in_plugin;
- params->srccaps = gst_caps_ref (srccaps);
- params->sinkcaps = gst_caps_ref (sinkcaps);
-
- /* create the glib type now */
- type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
- g_type_set_qdata (type, GST_FFENC_PARAMS_QDATA, (gpointer) params);
-
- {
- static const GInterfaceInfo preset_info = {
- NULL,
- NULL,
- NULL
- };
- g_type_add_interface_static (type, GST_TYPE_PRESET, &preset_info);
+ type = g_type_from_name (type_name);
+
+ if (!type) {
+ params = g_new0 (GstFFMpegEncClassParams, 1);
+ params->in_plugin = in_plugin;
+ params->srccaps = gst_caps_ref (srccaps);
+ params->sinkcaps = gst_caps_ref (sinkcaps);
+
+ /* create the glib type now */
+ type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
+ g_type_set_qdata (type, GST_FFENC_PARAMS_QDATA, (gpointer) params);
+
+ {
+ static const GInterfaceInfo preset_info = {
+ NULL,
+ NULL,
+ NULL
+ };
+ g_type_add_interface_static (type, GST_TYPE_PRESET, &preset_info);
+ }
}
if (!gst_element_register (plugin, type_name, GST_RANK_NONE, type)) {
p++;
}
- /* if it's already registered, drop it */
- if (g_type_from_name (type_name)) {
- g_free (type_name);
- gst_caps_unref (srccaps);
- if (audiosinkcaps)
- gst_caps_unref (audiosinkcaps);
- if (videosinkcaps)
- gst_caps_unref (videosinkcaps);
- goto next;
- }
-
/* fix up allowed caps for some muxers */
if (strcmp (in_plugin->name, "flv") == 0) {
const gint rates[] = { 44100, 22050, 11025 };
gst_caps_from_string ("video/x-raw-rgb, bpp=(int)24, depth=(int)24");
}
- /* create a cache for these properties */
- params = g_new0 (GstFFMpegMuxClassParams, 1);
- params->in_plugin = in_plugin;
- params->srccaps = srccaps;
- params->videosinkcaps = videosinkcaps;
- params->audiosinkcaps = audiosinkcaps;
-
- /* create the type now */
- type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
- g_type_set_qdata (type, GST_FFMUX_PARAMS_QDATA, (gpointer) params);
- g_type_add_interface_static (type, GST_TYPE_TAG_SETTER, &tag_setter_info);
+ type = g_type_from_name (type_name);
+
+ if (!type) {
+ /* create a cache for these properties */
+ params = g_new0 (GstFFMpegMuxClassParams, 1);
+ params->in_plugin = in_plugin;
+ params->srccaps = srccaps;
+ params->videosinkcaps = videosinkcaps;
+ params->audiosinkcaps = audiosinkcaps;
+
+ /* create the type now */
+ type = g_type_register_static (GST_TYPE_ELEMENT, type_name, &typeinfo, 0);
+ g_type_set_qdata (type, GST_FFMUX_PARAMS_QDATA, (gpointer) params);
+ g_type_add_interface_static (type, GST_TYPE_TAG_SETTER, &tag_setter_info);
+
+ }
if (!gst_element_register (plugin, type_name, GST_RANK_NONE, type)) {
g_free (type_name);