From d868b734996b7b2e36d52d0283f4966f213167da Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Tue, 16 Jul 2013 18:27:07 +0200 Subject: tests/examples: fix and port some of the examples. Realize widgets, remove glupload element. --- tests/examples/gtk/filternovideooverlay/main.cpp | 11 ++++--- tests/examples/gtk/fxtest/fxtest.c | 7 ++--- tests/examples/gtk/fxtest/pixbufdrop.c | 23 +++++---------- tests/examples/gtk/gtkvideooverlay/main.cpp | 37 ++++-------------------- tests/examples/gtk/switchvideooverlay/main.cpp | 30 +++++-------------- tests/examples/sdl/sdlshare.c | 2 +- 6 files changed, 30 insertions(+), 80 deletions(-) diff --git a/tests/examples/gtk/filternovideooverlay/main.cpp b/tests/examples/gtk/filternovideooverlay/main.cpp index eb1afd5..df01d1a 100644 --- a/tests/examples/gtk/filternovideooverlay/main.cpp +++ b/tests/examples/gtk/filternovideooverlay/main.cpp @@ -128,7 +128,6 @@ gint main (gint argc, gchar *argv[]) gtk_widget_show (window_control); GstElement* videosrc = gst_element_factory_make ("videotestsrc", "videotestsrc"); - GstElement* glupload = gst_element_factory_make ("glupload", "glupload"); GstElement* glfilterlaplacian = gst_element_factory_make ("glfilterblur", "glfilterblur"); GstElement* glfiltercube = gst_element_factory_make ("glfiltercube", "glfiltercube"); GstElement* videosink = gst_element_factory_make ("glimagesink", "glimagesink"); @@ -140,19 +139,19 @@ gint main (gint argc, gchar *argv[]) "format", G_TYPE_STRING, "YV12", NULL) ; - gst_bin_add_many (GST_BIN (pipeline), videosrc, glupload, glfiltercube, glfilterlaplacian, videosink, NULL); + gst_bin_add_many (GST_BIN (pipeline), videosrc, glfiltercube, glfilterlaplacian, videosink, NULL); - gboolean link_ok = gst_element_link_filtered(videosrc, glupload, caps) ; + gboolean link_ok = gst_element_link_filtered(videosrc, glfiltercube, caps) ; gst_caps_unref(caps) ; if(!link_ok) { - g_warning("Failed to link videosrc to glupload!\n") ; + g_warning("Failed to link videosrc to glfiltercube!\n") ; return -1; } - if(!gst_element_link_many(glupload, glfiltercube, glfilterlaplacian, videosink, NULL)) + if(!gst_element_link_many(glfiltercube, glfilterlaplacian, videosink, NULL)) { - g_warning("Failed to link glupload to videosink!\n") ; + g_warning("Failed to link glfiltercube to videosink!\n") ; return -1; } diff --git a/tests/examples/gtk/fxtest/fxtest.c b/tests/examples/gtk/fxtest/fxtest.c index c4a8e0b..8152cb8 100644 --- a/tests/examples/gtk/fxtest/fxtest.c +++ b/tests/examples/gtk/fxtest/fxtest.c @@ -114,7 +114,7 @@ main (gint argc, gchar * argv[]) { GstStateChangeReturn ret; GstElement *pipeline; - GstElement *uload, *filter, *sink; + GstElement *filter, *sink; GstElement *sourcebin; GError *error = NULL; @@ -171,13 +171,12 @@ main (gint argc, gchar * argv[]) pipeline = gst_pipeline_new ("pipeline"); - uload = gst_element_factory_make ("glupload", "glu"); filter = gst_element_factory_make ("gleffects", "flt"); sink = gst_element_factory_make ("glimagesink", "glsink"); - gst_bin_add_many (GST_BIN (pipeline), sourcebin, uload, filter, sink, NULL); + gst_bin_add_many (GST_BIN (pipeline), sourcebin, filter, sink, NULL); - if (!gst_element_link_many (sourcebin, uload, filter, sink, NULL)) { + if (!gst_element_link_many (sourcebin, filter, sink, NULL)) { g_print ("Failed to link one or more elements!\n"); return -1; } diff --git a/tests/examples/gtk/fxtest/pixbufdrop.c b/tests/examples/gtk/fxtest/pixbufdrop.c index d9f363b..5f10b01 100644 --- a/tests/examples/gtk/fxtest/pixbufdrop.c +++ b/tests/examples/gtk/fxtest/pixbufdrop.c @@ -71,17 +71,6 @@ message_cb (GstBus * bus, GstMessage * message, GstElement * pipeline) gtk_main_quit (); } -static void -realize_cb (GtkWidget * widget, GstElement * pipeline) -{ -#if GTK_CHECK_VERSION(2,18,0) - if (!gdk_window_ensure_native (widget->window)) - g_error ("Failed to create native window!"); -#endif - - gst_element_set_state (pipeline, GST_STATE_PLAYING); -} - static gboolean expose_cb (GtkWidget * widget, GdkEventExpose * event, GstElement * videosink) { @@ -187,7 +176,7 @@ gint main (gint argc, gchar * argv[]) { GstElement *pipeline; - GstElement *uload, *filter, *sink; + GstElement *filter, *sink; GstElement *sourcebin; GstBus *bus; GError *error = NULL; @@ -252,7 +241,6 @@ main (gint argc, gchar * argv[]) pipeline = gst_pipeline_new ("pipeline"); - uload = gst_element_factory_make ("glupload", "glu"); if (method == 2) { filter = gst_element_factory_make ("gloverlay", "flt"); } else { @@ -260,9 +248,9 @@ main (gint argc, gchar * argv[]) } sink = gst_element_factory_make ("glimagesink", "glsink"); - gst_bin_add_many (GST_BIN (pipeline), sourcebin, uload, filter, sink, NULL); + gst_bin_add_many (GST_BIN (pipeline), sourcebin, filter, sink, NULL); - if (!gst_element_link_many (sourcebin, uload, filter, sink, NULL)) { + if (!gst_element_link_many (sourcebin, filter, sink, NULL)) { g_print ("Failed to link one or more elements!\n"); return -1; } @@ -309,6 +297,8 @@ main (gint argc, gchar * argv[]) gtk_container_add (GTK_CONTAINER (window), vbox); + gtk_widget_realize (screen); + bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, screen, NULL); @@ -318,7 +308,6 @@ main (gint argc, gchar * argv[]) g_signal_connect (bus, "message::eos", G_CALLBACK (message_cb), pipeline); gst_object_unref (bus); g_signal_connect (screen, "expose-event", G_CALLBACK (expose_cb), sink); - g_signal_connect (screen, "realize", G_CALLBACK (realize_cb), pipeline); gtk_drag_dest_set (screen, GTK_DEST_DEFAULT_ALL, NULL, 0, GDK_ACTION_COPY); gtk_drag_dest_add_uri_targets (screen); @@ -328,6 +317,8 @@ main (gint argc, gchar * argv[]) gtk_widget_show_all (GTK_WIDGET (window)); + gst_element_set_state (pipeline, GST_STATE_PLAYING); + gtk_main (); return 0; diff --git a/tests/examples/gtk/gtkvideooverlay/main.cpp b/tests/examples/gtk/gtkvideooverlay/main.cpp index e4f843d..d01b707 100644 --- a/tests/examples/gtk/gtkvideooverlay/main.cpp +++ b/tests/examples/gtk/gtkvideooverlay/main.cpp @@ -36,9 +36,6 @@ static GstBusSyncReply create_window (GstBus* bus, GstMessage* message, GtkWidge g_print ("setting window handle\n"); - //at this point we are sure that gdk_window_ensure_native has been already - //called (see area_realize_cb) - //do not call gdk_window_ensure_native for the first time here because //we are in a different thread than the main thread //(and the main thread the onne) @@ -60,32 +57,9 @@ static void end_stream_cb(GstBus* bus, GstMessage* message, GstElement* pipeline gtk_main_quit(); } - -static void area_realize_cb(GtkWidget* widget, GstElement* pipeline) -{ - g_print ("drawing area realized\n"); - -#if GTK_CHECK_VERSION(2,18,0) - //Tries to ensure that there is a native window - //Call it in the same thread as the one who created this widget - if (!gdk_window_ensure_native (widget->window)) - g_error ("Failed to create native window!"); -#endif - - //avoid flickering when resizing or obscuring the main window - gdk_window_set_back_pixmap(widget->window, NULL, FALSE); - gtk_widget_set_app_paintable(widget,TRUE); - gtk_widget_set_double_buffered(widget, FALSE); - - //now we have a native window we can play the pipeline - gst_element_set_state (pipeline, GST_STATE_PLAYING); -} - - static gboolean expose_cb(GtkWidget* widget, GdkEventExpose* event, GstElement* videosink) { g_print ("expose_cb\n"); - //expose callback is garanted to be called after realized callback gst_video_overlay_expose (GST_VIDEO_OVERLAY (videosink)); return FALSE; } @@ -212,11 +186,10 @@ gint main (gint argc, gchar *argv[]) GstElement* videosrc = gst_element_factory_make ("videotestsrc", "videotestsrc"); GstElement* videosink = gst_element_factory_make ("glimagesink", "glimagesink"); - GstElement* upload = gst_element_factory_make ("glupload", "glupload"); - gst_bin_add_many (GST_BIN (pipeline), videosrc, upload, videosink, NULL); + gst_bin_add_many (GST_BIN (pipeline), videosrc, videosink, NULL); - gboolean link_ok = gst_element_link_many(videosrc, upload, videosink, NULL) ; + gboolean link_ok = gst_element_link_many(videosrc, videosink, NULL) ; if(!link_ok) { g_warning("Failed to link an element!\n") ; @@ -226,8 +199,8 @@ gint main (gint argc, gchar *argv[]) //area where the video is drawn GtkWidget* area = gtk_drawing_area_new(); gtk_container_add (GTK_CONTAINER (window), area); - g_signal_connect (area, "realize", - G_CALLBACK (area_realize_cb), pipeline); + + gtk_widget_realize(area); //set window id on this event GstBus* bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); @@ -244,6 +217,8 @@ gint main (gint argc, gchar *argv[]) gtk_widget_show_all (window); + gst_element_set_state(pipeline, GST_STATE_PLAYING); + gtk_main(); return 0; diff --git a/tests/examples/gtk/switchvideooverlay/main.cpp b/tests/examples/gtk/switchvideooverlay/main.cpp index 64126dc..685526f 100644 --- a/tests/examples/gtk/switchvideooverlay/main.cpp +++ b/tests/examples/gtk/switchvideooverlay/main.cpp @@ -61,22 +61,6 @@ static gboolean expose_cb(GtkWidget* widget, GdkEventExpose* event, GstElement* return FALSE; } - -static void area_realize_cb(GtkWidget* widget, GstElement* pipeline) -{ -#if GTK_CHECK_VERSION(2,18,0) - if (!gdk_window_ensure_native (widget->window)) - g_error ("Failed to create native window!"); -#endif - - //avoid flickering when resizing or obscuring the main window - gdk_window_set_back_pixmap(widget->window, NULL, FALSE); - gtk_widget_set_app_paintable(widget,TRUE); - - gst_element_set_state (pipeline, GST_STATE_PLAYING); -} - - static gboolean on_click_drawing_area(GtkWidget* widget, GdkEventButton* event, GstElement* videosink) { g_print ("switch the drawing area\n"); @@ -192,11 +176,10 @@ gint main (gint argc, gchar *argv[]) GstElement* videosrc = gst_element_factory_make ("videotestsrc", "videotestsrc"); GstElement* videosink = gst_element_factory_make ("glimagesink", "glimagesink"); - GstElement* upload = gst_element_factory_make ("glupload", "glupload"); - gst_bin_add_many (GST_BIN (pipeline), videosrc, upload, videosink, NULL); + gst_bin_add_many (GST_BIN (pipeline), videosrc, videosink, NULL); - gboolean link_ok = gst_element_link_many(videosrc, upload, videosink, NULL); + gboolean link_ok = gst_element_link_many(videosrc, videosink, NULL); if(!link_ok) { g_warning("Failed to link videosrc to videosink!\n") ; @@ -214,6 +197,10 @@ gint main (gint argc, gchar *argv[]) gtk_table_attach_defaults (GTK_TABLE (table_areas), area_top_right, 1, 2, 0, 1); //set window id on this event + + gtk_widget_realize(area_top_left); + gtk_widget_realize(area_top_right); + GstBus* bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, area_top_right, NULL); gst_bus_add_signal_watch (bus); @@ -231,11 +218,10 @@ gint main (gint argc, gchar *argv[]) g_signal_connect(area_top_left, "button-press-event", G_CALLBACK(on_click_drawing_area), videosink); g_signal_connect(area_top_right, "button-press-event", G_CALLBACK(on_click_drawing_area), videosink); - g_signal_connect (area_top_left, "realize", G_CALLBACK (area_realize_cb), pipeline); - g_signal_connect (area_top_right, "realize", G_CALLBACK (area_realize_cb), pipeline); - gtk_widget_show_all (window); + gst_element_set_state(pipeline, GST_STATE_PLAYING); + gtk_main(); return 0; diff --git a/tests/examples/sdl/sdlshare.c b/tests/examples/sdl/sdlshare.c index 8665544..871a90b 100644 --- a/tests/examples/sdl/sdlshare.c +++ b/tests/examples/sdl/sdlshare.c @@ -297,7 +297,7 @@ main (int argc, char **argv) pipeline = GST_PIPELINE (gst_parse_launch ("videotestsrc ! video/x-raw, width=320, height=240, framerate=(fraction)30/1 ! " - "glupload ! gleffects effect=5 ! fakesink sync=1", NULL)); + "gleffects effect=5 ! fakesink sync=1", NULL)); bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_add_signal_watch (bus); -- cgit v1.2.3