What is "g"? Is it you toplebel Gtk::Window or your Gtk::DrawingArea? Also as someone else mentioned, you don't have to use "loop = g_main_loop_new (NULL, FALSE);" the gtkmm's Gtk::Main is sufficient. Date: Fri, 7 May 2010 17:25:27 +0200 From: mattia db gmail com To: gtkmm-list gnome org Subject: Gstreamer inside Gtkmm window Hi, I'm trying to insert a gstreamer output inside a Gtk window. I managed to do that but I would to reserve to the gstreamer output just a portion of the entire window; in fact I associated the output with a Gtk::DrawingArea, but when the video plays the video frame acquires all the toplevel window area. How can I prevent that? I set the size of the Gtk::DrawingArea with the function set_size_request(width,height). Here is my code: GstElement *pipeline; loop = g_main_loop_new (NULL, FALSE); pipeline = gst_pipeline_new ("gst-player"); bin = gst_element_factory_make ("playbin", "bin"); videosink = gst_element_factory_make ("directdrawsink", "videosink"); g_object_set (G_OBJECT (bin), "video-sink", videosink, NULL); gst_bin_add (GST_BIN (pipeline), bin); { GstBus *bus; bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline)); gst_bus_add_watch (bus, bus_call, NULL); gst_object_unref (bus); } if (g->getUri()) { g_object_set (G_OBJECT (bin), "uri", g->getUri(), NULL); printf("primo passo.....\n"); } window=reinterpret_cast<unsigned long>GDK_WINDOW_HWND(g->getFrame()->get_window()->gobj()); if (GST_IS_X_OVERLAY (videosink)) { gst_x_overlay_set_xwindow_id (GST_X_OVERLAY (videosink), window); } gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING); Thank you in advanced, Mattia Donna Bianco Hotmail: Δωρεάν, αξιόπιστη και αποτελεσματική υπηρεσία email. Αποκτήστε το τώρα. |