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?
Bookmarks