See my question here:

http://stackoverflow.com/questions/3...streamer-sinks

have linked a simple videotestsrc to an autovideosink, but when I try to play with

gst_element_set_state(data->pipeline_1, GST_STATE_PLAYING);

my application opens a "GStreamer Direct3D sink default window" and outputs the video there.

Before running the video I try to connect the sink to the QVideoWidget by doing:

video_widget_1->setAttribute(Qt::WA_NativeWindow, true); // this is a QVideoWidget
WId win_1_id = video_widget_1->winId();
QApplication::sync();
gst_x_overlay_set_xwindow_id(GST_X_OVERLAY(data->el_autovideo_snk_1), win_1_id);

By the way I saw that QApplication::syncX() is deprecated in Qt5, and noone gave an answer on what to use instead, so I'm guessing sync() is a suitable alternative. Still, even by commenting sync() line as well as setAttribute(Qt::WA_NativeWindow), it opens the sink default window and plays the video there.

I don't plan to use QtGstreamer since I found it very difficult to install; it was giving always errors.

My gstreamer pipeline contains only a videotest src and the autovideosink. The elements are correctly created with:

gst_bin_add_many(GST_BIN(data->pipeline_1), data->el_videotest_src, data->el_autovideo_snk_1, NULL);
if (!gst_element_link(data->el_videotest_src, data->el_autovideo_snk_1))
console_out_err("STREAMING", "Failed to link test elements");
else
console_out_good("STREAMING", "Test elements linked correctly");

Am I missing anything?