diff options
-rw-r--r-- | configure.in | 46 | ||||
-rw-r--r-- | src/backend/Makefile.am | 4 | ||||
-rw-r--r-- | src/backend/bacon-video-widget-gst-0.10.c | 121 |
3 files changed, 80 insertions, 91 deletions
diff --git a/configure.in b/configure.in index 797c8fcd..640caed3 100644 --- a/configure.in +++ b/configure.in @@ -75,9 +75,9 @@ AC_SUBST(PLUGINDIR) dnl the two versions here implicate the gstreamer core and gst-plugins dnl release versions. -GST_MAJORMINOR=0.10 -GST_REQS=0.10.30 -GSTPLUG_REQS=0.10.30 +GST_MAJORMINOR=0.11 +GST_REQS=0.11.0 +GSTPLUG_REQS=0.11.0 HAVE_GSTREAMER=no @@ -103,61 +103,61 @@ AC_ARG_ENABLE([easy-codec-installation], AC_MSG_RESULT([$enable_easy_codec_installation]) if test "x$enable_easy_codec_installation" != "xno"; then - PKG_CHECK_MODULES(MISSING_PLUGINS, gstreamer-plugins-base-0.10, + PKG_CHECK_MODULES(MISSING_PLUGINS, gstreamer-plugins-base-0.11, [ - MISSING_PLUGINS_LIBS="$MISSING_PLUGINS_LIBS -lgstpbutils-0.10" + MISSING_PLUGINS_LIBS="$MISSING_PLUGINS_LIBS -lgstpbutils-0.11" AC_DEFINE([ENABLE_MISSING_PLUGIN_INSTALLATION], 1, [Whether we can and want to do installation of missing plugins]) ]) fi -MM="gstreamer-0.10 >= $GST_REQS gstreamer-base-0.10 >= $GST_REQS gstreamer-plugins-base-0.10 >= $GSTPLUG_REQS gstreamer-tag-0.10 >= $GSTPLUG_REQS" +MM="gstreamer-0.11 >= $GST_REQS gstreamer-base-0.11 >= $GST_REQS gstreamer-plugins-base-0.11 >= $GSTPLUG_REQS gstreamer-tag-0.11 >= $GSTPLUG_REQS" PKG_CHECK_MODULES(GST, $MM) GST_LIBS="$GST_LIBS -lgstbase-$GST_MAJORMINOR -lgstinterfaces-$GST_MAJORMINOR -lgstvideo-$GST_MAJORMINOR -lgstaudio-$GST_MAJORMINOR -lgstpbutils-$GST_MAJORMINOR -lgsttag-$GST_MAJORMINOR" AC_SUBST(GST_LIBS) EXTRA_BACKEND_LIBS="-lgstinterfaces-$GST_MAJORMINOR -lgstvideo-$GST_MAJORMINOR -lgstaudio-$GST_MAJORMINOR -lgstpbutils-$GST_MAJORMINOR" dnl Check for required plugins -gst010_toolsdir=`$PKG_CONFIG --variable=toolsdir gstreamer-0.10` -gst010_inspect="$gst010_toolsdir/gst-inspect-0.10" +gst011_toolsdir=`$PKG_CONFIG --variable=toolsdir gstreamer-0.11` +gst011_inspect="$gst011_toolsdir/gst-inspect-0.11" dnl Give error and exit if we don't have the gst_inspect tool -AC_MSG_CHECKING([GStreamer 0.10 inspection tool]) -if test -r "$gst010_inspect"; then +AC_MSG_CHECKING([GStreamer 0.11 inspection tool]) +if test -r "$gst011_inspect"; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_ERROR([ - Cannot find required GStreamer-0.10 tool 'gst-inspect-0.10'. - It should be part of gstreamer-0_10-utils. Please install it. + Cannot find required GStreamer-0.11 tool 'gst-inspect-0.11'. + It should be part of gstreamer-0_11-utils. Please install it. ]) fi dnl Check for elements from gst-plugins-base -for base_element in playbin2 ffmpegcolorspace videoscale +for base_element in playbin videoconvert videoscale do - AC_MSG_CHECKING([GStreamer 0.10 $base_element plugin]) - if $gst010_inspect $base_element >/dev/null 2>/dev/null; then + AC_MSG_CHECKING([GStreamer 0.11 $base_element plugin]) + if $gst011_inspect $base_element >/dev/null 2>/dev/null; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_ERROR([ - Cannot find required GStreamer-0.10 plugin '$base_element'. + Cannot find required GStreamer-0.11 plugin '$base_element'. It should be part of gst-plugins-base. Please install it. ]) fi done dnl Check for elements from gst-plugins-good -for good_element in gconfaudiosink gconfvideosink goom +for good_element in goom do - AC_MSG_CHECKING([GStreamer 0.10 $good_element plugin]) - if $gst010_inspect $good_element >/dev/null 2>/dev/null; then + AC_MSG_CHECKING([GStreamer 0.11 $good_element plugin]) + if $gst011_inspect $good_element >/dev/null 2>/dev/null; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) AC_MSG_ERROR([ - Cannot find required GStreamer-0.10 plugin '$good_element'. + Cannot find required GStreamer-0.11 plugin '$good_element'. It should be part of gst-plugins-good. Please install it. ]) fi @@ -197,7 +197,7 @@ PKG_CHECK_MODULES([DEPENDENCY],[ gdk-x11-3.0 >= $GTK_REQS gmodule-2.0 totem-plparser >= $TOTEM_PLPARSER_REQS - gstreamer-tag-0.10 >= 0.10.26 + gstreamer-tag-0.11 >= 0.11.0 cairo]) PKG_CHECK_MODULES(MM, $MM) @@ -507,8 +507,8 @@ for plugin in ${used_plugins}; do fi dnl We need the souphttpsrc element for the YouTube plugin - AC_MSG_CHECKING([GStreamer 0.10 souphttpsrc plugin]) - if $gst010_inspect souphttpsrc >/dev/null 2>/dev/null; then + AC_MSG_CHECKING([GStreamer 0.11 souphttpsrc plugin]) + if $gst011_inspect souphttpsrc >/dev/null 2>/dev/null; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) diff --git a/src/backend/Makefile.am b/src/backend/Makefile.am index 49c56108..30f0b007 100644 --- a/src/backend/Makefile.am +++ b/src/backend/Makefile.am @@ -55,9 +55,7 @@ libbaconvideowidget_la_SOURCES = \ video-utils.c video-utils.h \ bacon-video-widget-gst-0.10.c \ bacon-video-widget-gst-missing-plugins.c \ - bacon-video-widget-gst-missing-plugins.h \ - gstscreenshot.c \ - gstscreenshot.h + bacon-video-widget-gst-missing-plugins.h libbaconvideowidget_la_CPPFLAGS = \ -D_REENTRANT \ diff --git a/src/backend/bacon-video-widget-gst-0.10.c b/src/backend/bacon-video-widget-gst-0.10.c index bea7283e..b43185e7 100644 --- a/src/backend/bacon-video-widget-gst-0.10.c +++ b/src/backend/bacon-video-widget-gst-0.10.c @@ -153,7 +153,7 @@ static const gchar *video_props_str[4] = { "hue" }; -/* GstPlayFlags flags from playbin2 */ +/* GstPlayFlags flags from playbin */ typedef enum { GST_PLAY_FLAG_VIDEO = (1 << 0), GST_PLAY_FLAG_AUDIO = (1 << 1), @@ -739,7 +739,7 @@ bacon_video_widget_draw (GtkWidget *widget, cairo_t *cr) window = gdk_x11_window_get_xid (bvw->priv->video_window); if (xoverlay != NULL && GST_IS_X_OVERLAY (xoverlay)) - gst_x_overlay_set_xwindow_id (xoverlay, window); + gst_x_overlay_set_window_handle (xoverlay, window); /* Start with a nice black canvas */ gtk_widget_get_allocation (widget, &allocation); @@ -1459,18 +1459,14 @@ bvw_update_stream_info (BaconVideoWidget *bvw) static void bvw_handle_application_message (BaconVideoWidget *bvw, GstMessage *msg) { - const gchar *msg_name; GtkAllocation allocation; - msg_name = gst_structure_get_name (msg->structure); - g_return_if_fail (msg_name != NULL); + GST_DEBUG ("Handling application message: %s", GST_MESSAGE_TYPE_NAME (msg)); - GST_DEBUG ("Handling application message: %" GST_PTR_FORMAT, msg->structure); - - if (strcmp (msg_name, "stream-changed") == 0) { + if (gst_message_has_name(msg, "stream-changed")) { bvw_update_stream_info (bvw); } - else if (strcmp (msg_name, "video-size") == 0) { + else if (gst_message_has_name(msg, "video-size")) { /* if we're not interactive, we want to announce metadata * only later when we can be sure we got it all */ if (bvw->priv->use_type == BVW_USE_TYPE_VIDEO || @@ -1489,7 +1485,7 @@ bvw_handle_application_message (BaconVideoWidget *bvw, GstMessage *msg) } bvw->priv->window_resized = TRUE; } else { - g_message ("Unhandled application message %s", msg_name); + g_message ("Unhandled application message %s", GST_MESSAGE_TYPE_NAME (msg)); } } @@ -1556,11 +1552,10 @@ bvw_handle_element_message (BaconVideoWidget *bvw, GstMessage *msg) gchar *src_name; src_name = gst_object_get_name (msg->src); - if (msg->structure) - type_name = gst_structure_get_name (msg->structure); - - GST_DEBUG ("from %s: %" GST_PTR_FORMAT, src_name, msg->structure); + type_name = GST_MESSAGE_TYPE_NAME (msg); + GST_DEBUG ("from %s: %s", src_name, type_name); +#if 0 if (type_name == NULL) goto unhandled; @@ -1698,6 +1693,7 @@ unhandled: done: g_free (src_name); +#endif } /* This is a hack to avoid doing poll_for_state_change() indirectly @@ -2003,7 +1999,7 @@ bvw_update_tags_delayed (BaconVideoWidget *bvw, GstTagList *tags, const gchar *t } static void -video_tags_changed_cb (GstElement *playbin2, gint stream_id, gpointer user_data) +video_tags_changed_cb (GstElement *playbin, gint stream_id, gpointer user_data) { BaconVideoWidget *bvw = (BaconVideoWidget *) user_data; GstTagList *tags = NULL; @@ -2022,7 +2018,7 @@ video_tags_changed_cb (GstElement *playbin2, gint stream_id, gpointer user_data) } static void -audio_tags_changed_cb (GstElement *playbin2, gint stream_id, gpointer user_data) +audio_tags_changed_cb (GstElement *playbin, gint stream_id, gpointer user_data) { BaconVideoWidget *bvw = (BaconVideoWidget *) user_data; GstTagList *tags = NULL; @@ -2041,7 +2037,7 @@ audio_tags_changed_cb (GstElement *playbin2, gint stream_id, gpointer user_data) } static void -text_tags_changed_cb (GstElement *playbin2, gint stream_id, gpointer user_data) +text_tags_changed_cb (GstElement *playbin, gint stream_id, gpointer user_data) { BaconVideoWidget *bvw = (BaconVideoWidget *) user_data; GstTagList *tags = NULL; @@ -2198,7 +2194,7 @@ bvw_bus_message_cb (GstBus * bus, GstMessage * message, gpointer data) } case GST_MESSAGE_TAG: /* Ignore TAG messages, we get updated tags from the - * {audio,video,text}-tags-changed signals of playbin2 + * {audio,video,text}-tags-changed signals of playbin */ break; case GST_MESSAGE_EOS: @@ -2505,14 +2501,13 @@ playbin_deep_notify_cb (GstObject *gstobject, static gboolean bvw_query_timeout (BaconVideoWidget *bvw) { - GstFormat fmt = GST_FORMAT_TIME; gint64 prev_len = -1; gint64 pos = -1, len = -1; /* check length/pos of stream */ prev_len = bvw->priv->stream_length; - if (gst_element_query_duration (bvw->priv->play, &fmt, &len)) { - if (len != -1 && fmt == GST_FORMAT_TIME) { + if (gst_element_query_duration (bvw->priv->play, GST_FORMAT_TIME, &len)) { + if (len != -1) { bvw->priv->stream_length = len / GST_MSECOND; if (bvw->priv->stream_length != prev_len) { if (bvw->priv->use_type == BVW_USE_TYPE_AUDIO || @@ -2525,8 +2520,8 @@ bvw_query_timeout (BaconVideoWidget *bvw) GST_DEBUG ("could not get duration"); } - if (gst_element_query_position (bvw->priv->play, &fmt, &pos)) { - if (pos != -1 && fmt == GST_FORMAT_TIME) { + if (gst_element_query_position (bvw->priv->play, GST_FORMAT_TIME, &pos)) { + if (pos != -1) { got_time_tick (GST_ELEMENT (bvw->priv->play), pos, bvw); } } else { @@ -3459,7 +3454,7 @@ set_audio_filter (BaconVideoWidget *bvw) /* Start with what the audio sink supports, but limit the allowed * channel count to our speaker output configuration */ pad = gst_element_get_static_pad (bvw->priv->audio_capsfilter, "src"); - caps = gst_pad_peer_get_caps (pad); + caps = gst_pad_peer_get_caps (pad, NULL); gst_object_unref (pad); if ((channels = get_num_audio_channels (bvw)) == -1) @@ -4417,7 +4412,7 @@ bacon_video_widget_dvd_event (BaconVideoWidget * bvw, bvw_set_playback_direction (bvw, TRUE); fmt = gst_format_get_by_nick (fmt_name); - if (gst_element_query_position (bvw->priv->play, &fmt, &val)) { + if (gst_element_query_position (bvw->priv->play, fmt, &val)) { GST_DEBUG ("current %s is: %" G_GINT64_FORMAT, fmt_name, val); val += dir; GST_DEBUG ("seeking to %s: %" G_GINT64_FORMAT, fmt_name, val); @@ -4912,9 +4907,10 @@ setup_vis_find_factory (BaconVideoWidget * bvw, const gchar * vis_name) /* if nothing was found, try the short name (the default schema uses this) */ for (l = features; l != NULL; l = l->next) { GstElementFactory *f = GST_ELEMENT_FACTORY (l->data); + gchar *fname = f ? gst_plugin_feature_get_name(f) : NULL; /* set to long name as key so that the preferences dialog gets it right */ - if (f && strcmp (vis_name, GST_PLUGIN_FEATURE_NAME (f)) == 0) { + if (fname && strcmp (vis_name, fname) == 0) { bacon_video_widget_set_visualization (bvw, gst_element_factory_get_longname (f)); fac = f; goto done; @@ -4975,8 +4971,7 @@ setup_vis (BaconVideoWidget * bvw) goto beach; } /* We created the bin, now ref and sink to make sure we own it */ - gst_object_ref (vis_bin); - gst_object_sink (vis_bin); + gst_object_ref_sink (vis_bin); gst_bin_add_many (GST_BIN (vis_bin), vis_element, vis_capsfilter, NULL); @@ -5600,10 +5595,9 @@ bacon_video_widget_get_stream_length (BaconVideoWidget * bvw) g_return_val_if_fail (BACON_IS_VIDEO_WIDGET (bvw), -1); if (bvw->priv->stream_length == 0 && bvw->priv->play != NULL) { - GstFormat fmt = GST_FORMAT_TIME; gint64 len = -1; - if (gst_element_query_duration (bvw->priv->play, &fmt, &len) && len != -1) { + if (gst_element_query_duration (bvw->priv->play, GST_FORMAT_TIME, &len) && len != -1) { bvw->priv->stream_length = len / GST_MSECOND; } } @@ -6197,10 +6191,14 @@ bacon_video_widget_get_metadata_pixbuf (BaconVideoWidget * bvw, GdkPixbufLoader *loader; GdkPixbuf *pixbuf = NULL; GError *err = NULL; + gpointer data; + gsize size; loader = gdk_pixbuf_loader_new (); - if (gdk_pixbuf_loader_write (loader, buffer->data, buffer->size, &err) && + data = gst_buffer_map(buffer, &size, NULL, GST_MAP_READ); + + if (gdk_pixbuf_loader_write (loader, data, size, &err) && gdk_pixbuf_loader_close (loader, &err)) { pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); if (pixbuf) @@ -6211,6 +6209,9 @@ bacon_video_widget_get_metadata_pixbuf (BaconVideoWidget * bvw, } g_object_unref (loader); + + gst_buffer_unmap (buffer, data, size); + return pixbuf; } @@ -6222,9 +6223,11 @@ bacon_video_widget_get_best_image (BaconVideoWidget *bvw) for (i = 0; ; i++) { const GValue *value; +#if 0 GstBuffer *buffer; GstStructure *caps_struct; int type; +#endif value = gst_tag_list_get_value_index (bvw->priv->tagcache, GST_TAG_IMAGE, @@ -6232,6 +6235,7 @@ bacon_video_widget_get_best_image (BaconVideoWidget *bvw) if (value == NULL) break; +#if 0 buffer = gst_value_get_buffer (value); caps_struct = gst_caps_get_structure (buffer->caps, 0); @@ -6246,6 +6250,9 @@ bacon_video_widget_get_best_image (BaconVideoWidget *bvw) cover_value = value; break; } +#else + cover_value = value; +#endif } return cover_value; @@ -6387,12 +6394,16 @@ destroy_pixbuf (guchar *pix, gpointer data) GdkPixbuf * bacon_video_widget_get_current_frame (BaconVideoWidget * bvw) { +#if 0 GstStructure *s; +#endif GstBuffer *buf = NULL; GdkPixbuf *pixbuf; GstCaps *to_caps; +#if 0 gint outwidth = 0; gint outheight = 0; +#endif g_return_val_if_fail (bvw != NULL, NULL); g_return_val_if_fail (BACON_IS_VIDEO_WIDGET (bvw), NULL); @@ -6419,12 +6430,6 @@ bacon_video_widget_get_current_frame (BaconVideoWidget * bvw) return NULL; } - if (GST_BUFFER_CAPS (buf) == NULL) { - GST_DEBUG ("Could not take screenshot: %s", "no caps on buffer"); - g_warning ("Could not take screenshot: %s", "no caps on buffer"); - return NULL; - } - /* convert to our desired format (RGB24) */ to_caps = gst_caps_new_simple ("video/x-raw-rgb", "bpp", G_TYPE_INT, 24, @@ -6442,11 +6447,10 @@ bacon_video_widget_get_current_frame (BaconVideoWidget * bvw) "blue_mask", G_TYPE_INT, 0x0000ff, NULL); - GST_DEBUG ("frame caps: %" GST_PTR_FORMAT, GST_BUFFER_CAPS (buf)); GST_DEBUG ("pixbuf caps: %" GST_PTR_FORMAT, to_caps); /* bvw_frame_conv_convert () takes ownership of the buffer passed */ - buf = bvw_frame_conv_convert (buf, to_caps); + buf = gst_video_convert_frame (buf, NULL, to_caps, 5 * GST_SECOND, NULL); gst_caps_unref (to_caps); @@ -6456,12 +6460,7 @@ bacon_video_widget_get_current_frame (BaconVideoWidget * bvw) return NULL; } - if (!GST_BUFFER_CAPS (buf)) { - GST_DEBUG ("Could not take screenshot: %s", "no caps on output buffer"); - g_warning ("Could not take screenshot: %s", "no caps on output buffer"); - return NULL; - } - +#if 0 s = gst_caps_get_structure (GST_BUFFER_CAPS (buf), 0); gst_structure_get_int (s, "width", &outwidth); gst_structure_get_int (s, "height", &outheight); @@ -6471,6 +6470,7 @@ bacon_video_widget_get_current_frame (BaconVideoWidget * bvw) pixbuf = gdk_pixbuf_new_from_data (GST_BUFFER_DATA (buf), GDK_COLORSPACE_RGB, FALSE, 8, outwidth, outheight, GST_ROUND_UP_4 (outwidth * 3), destroy_pixbuf, buf); +#endif if (!pixbuf) { GST_DEBUG ("Could not take screenshot: %s", "could not create pixbuf"); @@ -6691,14 +6691,9 @@ bvw_element_msg_sync (GstBus *bus, GstMessage *msg, gpointer data) { BaconVideoWidget *bvw = BACON_VIDEO_WIDGET (data); - g_assert (msg->type == GST_MESSAGE_ELEMENT); - - if (msg->structure == NULL) - return; - /* This only gets sent if we haven't set an ID yet. This is our last * chance to set it before the video sink will create its own window */ - if (gst_structure_has_name (msg->structure, "prepare-xwindow-id")) { + if (gst_message_has_name (msg, "prepare-xwindow-id")) { XID window; GST_DEBUG ("Handling sync prepare-xwindow-id message"); @@ -6716,7 +6711,7 @@ bvw_element_msg_sync (GstBus *bus, GstMessage *msg, gpointer data) g_return_if_fail (bvw->priv->video_window != NULL); window = gdk_x11_window_get_xid (bvw->priv->video_window); - gst_x_overlay_set_xwindow_id (bvw->priv->xoverlay, window); + gst_x_overlay_set_window_handle (bvw->priv->xoverlay, window); } } @@ -6734,14 +6729,12 @@ bvw_set_playback_direction (BaconVideoWidget *bvw, gboolean forward) if (forward == FALSE) { GstEvent *event; - GstFormat fmt; gint64 cur = 0; - fmt = GST_FORMAT_TIME; - if (gst_element_query_position (bvw->priv->play, &fmt, &cur)) { + if (gst_element_query_position (bvw->priv->play, GST_FORMAT_TIME, &cur)) { GST_DEBUG ("Setting playback direction to reverse at %"G_GINT64_FORMAT"", cur); event = gst_event_new_seek (REVERSE_RATE, - fmt, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, + GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, G_GINT64_CONSTANT (0), GST_SEEK_TYPE_SET, cur); if (gst_element_send_event (bvw->priv->play, event) == FALSE) { @@ -6756,15 +6749,13 @@ bvw_set_playback_direction (BaconVideoWidget *bvw, gboolean forward) } } else { GstEvent *event; - GstFormat fmt; gint64 cur = 0; - fmt = GST_FORMAT_TIME; cur = 0; - if (gst_element_query_position (bvw->priv->play, &fmt, &cur)) { + if (gst_element_query_position (bvw->priv->play, GST_FORMAT_TIME, &cur)) { GST_DEBUG ("Setting playback direction to forward at %"G_GINT64_FORMAT"", cur); event = gst_event_new_seek (FORWARD_RATE, - fmt, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, + GST_FORMAT_TIME, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, cur, GST_SEEK_TYPE_SET, GST_CLOCK_TIME_NONE); if (gst_element_send_event (bvw->priv->play, event) == FALSE) { @@ -6841,7 +6832,7 @@ bacon_video_widget_new (int width, int height, bvw->priv->use_type = type; GST_DEBUG ("use_type = %d", type); - bvw->priv->play = gst_element_factory_make ("playbin2", "play"); + bvw->priv->play = gst_element_factory_make ("playbin", "play"); if (!bvw->priv->play) { g_set_error_literal (error, BVW_ERROR, BVW_ERROR_PLUGIN_LOAD, _("Failed to create a GStreamer play object. " @@ -6890,9 +6881,9 @@ bacon_video_widget_new (int width, int height, bvw->priv->auto_resize = FALSE; if (type == BVW_USE_TYPE_VIDEO || type == BVW_USE_TYPE_AUDIO) { - audio_sink = gst_element_factory_make ("gconfaudiosink", "audio-sink"); + /* audio_sink = gst_element_factory_make ("gconfaudiosink", "audio-sink"); */ if (audio_sink == NULL) { - g_warning ("Could not create element 'gconfaudiosink'"); + /* g_warning ("Could not create element 'gconfaudiosink'"); */ /* Try to fallback on autoaudiosink */ audio_sink = gst_element_factory_make ("autoaudiosink", "audio-sink"); } else { @@ -6910,9 +6901,9 @@ bacon_video_widget_new (int width, int height, GST_INFO ("forcing ximagesink, image size only %dx%d", width, height); video_sink = gst_element_factory_make ("ximagesink", "video-sink"); } else { - video_sink = gst_element_factory_make ("gconfvideosink", "video-sink"); + /* video_sink = gst_element_factory_make ("gconfvideosink", "video-sink"); */ if (video_sink == NULL) { - g_warning ("Could not create element 'gconfvideosink'"); + /* g_warning ("Could not create element 'gconfvideosink'"); */ /* Try to fallback on ximagesink */ video_sink = gst_element_factory_make ("ximagesink", "video-sink"); } |