summaryrefslogtreecommitdiff
path: root/tests/examples/overlay/qtgv-xoverlay.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/examples/overlay/qtgv-xoverlay.cpp')
-rw-r--r--tests/examples/overlay/qtgv-xoverlay.cpp42
1 files changed, 41 insertions, 1 deletions
diff --git a/tests/examples/overlay/qtgv-xoverlay.cpp b/tests/examples/overlay/qtgv-xoverlay.cpp
index 74159c4b..69252864 100644
--- a/tests/examples/overlay/qtgv-xoverlay.cpp
+++ b/tests/examples/overlay/qtgv-xoverlay.cpp
@@ -32,9 +32,48 @@
SinkPipeline::SinkPipeline(QGraphicsView *parent) : QObject(parent)
{
+ GstStateChangeReturn sret;
+
pipeline = gst_pipeline_new ("xvoverlay");
src = gst_element_factory_make ("videotestsrc", NULL);
- sink = gst_element_factory_make ("xvimagesink", NULL);
+
+ if ((sink = gst_element_factory_make ("xvimagesink", NULL))) {
+ sret = gst_element_set_state (sink, GST_STATE_READY);
+ if (sret != GST_STATE_CHANGE_SUCCESS) {
+ gst_element_set_state (sink, GST_STATE_NULL);
+ gst_object_unref (sink);
+
+ if ((sink = gst_element_factory_make ("ximagesink", NULL))) {
+ sret = gst_element_set_state (sink, GST_STATE_READY);
+ if (sret != GST_STATE_CHANGE_SUCCESS) {
+ gst_element_set_state (sink, GST_STATE_NULL);
+ gst_object_unref (sink);
+
+ if (strcmp (DEFAULT_VIDEOSINK, "xvimagesink") != 0 &&
+ strcmp (DEFAULT_VIDEOSINK, "ximagesink") != 0) {
+
+ if ((sink = gst_element_factory_make (DEFAULT_VIDEOSINK, NULL))) {
+ if (!GST_IS_BIN (sink)) {
+ sret = gst_element_set_state (sink, GST_STATE_READY);
+ if (sret != GST_STATE_CHANGE_SUCCESS) {
+ gst_element_set_state (sink, GST_STATE_NULL);
+ gst_object_unref (sink);
+ sink = NULL;
+ }
+ } else {
+ gst_object_unref (sink);
+ sink = NULL;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+ if (sink == NULL)
+ g_error ("Couldn't find a working video sink.");
+
gst_bin_add_many (GST_BIN (pipeline), src, sink, NULL);
gst_element_link (src, sink);
xwinid = parent->winId();
@@ -74,6 +113,7 @@ int main( int argc, char **argv )
QGraphicsView view( &scene );
view.resize(320, 240);
+ view.setWindowTitle("GstXOverlay Qt GraphicsView demo");
view.show();
gst_init (&argc, &argv);