vaapisink overlay

Víctor M. Jáquez L. vjaquez at igalia.com
Thu Jan 5 09:57:34 UTC 2017


For sake of completion, there is a closed bug regarding this issue:

https://bugzilla.gnome.org/show_bug.cgi?id=770877

vmjl

On 08/05/16 at 11:54pm, imeshns wrote:
> Hi,
> 
> I use example from the internet and when I'm using glimagesink everything is
> ok, but when I use vaapisink the overlay does not work correct, only black
> screen. When I use gst-inspect with vaapisink it's ok, but Gtk overlay does
> not work.
> What's wrong?
> Thanks for all help.
> 
> My code:
> 
> #include <gst/gst.h>
> #include <gst/video/videooverlay.h>
> #include <gtk/gtk.h>
> #include <gdk/gdk.h>
> 
> #if defined (GDK_WINDOWING_X11)
> #include <gdk/gdkx.h>
> #elif defined (GDK_WINDOWING_WIN32)
> #include <gdk/gdkwin32.h>
> #elif defined (GDK_WINDOWING_QUARTZ)
> #include <gdk/gdkquartz.h>
> #endif
> 
> static void realize_cb (GtkWidget *widget, GstElement *sink)
> {
> 	GdkWindow *window = gtk_widget_get_window (widget);
> 	guintptr window_handle;
> 
> 	if (!gdk_window_ensure_native (window))
> 		g_error ("Couldn't create native window needed for GstXOverlay!");
> 
> 	#if defined (GDK_WINDOWING_WIN32)
> 		window_handle = (guintptr)GDK_WINDOW_HWND (window);
> 	#elif defined (GDK_WINDOWING_QUARTZ)
> 		window_handle = gdk_quartz_window_get_nsview (window);
> 	#elif defined (GDK_WINDOWING_X11)
> 		window_handle = GDK_WINDOW_XID (window);
> 	#endif
> 
> 	gst_video_overlay_set_window_handle (GST_VIDEO_OVERLAY (sink),
> window_handle);
> }
> 
> int main (void)
> {
> 	gst_init (NULL, NULL);
> 	gtk_init (NULL, NULL);
> 	GError *error = NULL;
> 	
> 	GstElement *pipeline, *sink;
> 	
> 	GtkWidget *windowHead = gtk_window_new(GTK_WINDOW_TOPLEVEL);
> 	GtkWidget *video_window;
> 	
> 	pipeline = gst_parse_launch ("rtspsrc latency=5 drop-on-latency=true
> protocols=1 location=rtsp://x.x.x.x ! rtph264depay ! h264parse !
> vaapidecodebin ! vaapisink name=sink", &error);	
> 	sink = gst_bin_get_by_name (GST_BIN (pipeline), "sink");
> 	
> 	video_window = gtk_drawing_area_new ();
> 	g_signal_connect (video_window, "realize", G_CALLBACK (realize_cb), sink);
> 	
> 	gtk_container_add (GTK_CONTAINER (windowHead), video_window);
> 	gtk_window_set_default_size (GTK_WINDOW (windowHead), 800, 600);
> 
> 	gtk_widget_show_all (windowHead);	
> 	gst_element_set_state (pipeline, GST_STATE_PLAYING);
> 	
> 	g_print ("Now playing...\n");
> 	
> 	gtk_main();
> 	
> 	return 0;
> }
> 
> 
> 
> --
> View this message in context: http://gstreamer-devel.966125.n4.nabble.com/vaapisink-overlay-tp4678988.html
> Sent from the GStreamer-devel mailing list archive at Nabble.com.
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel


More information about the gstreamer-devel mailing list