tests: elements: clean up vaapisink test
authorVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 12 May 2017 16:17:55 +0000 (18:17 +0200)
committerVíctor Manuel Jáquez Leal <vjaquez@igalia.com>
Fri, 12 May 2017 16:38:58 +0000 (18:38 +0200)
- Use gst_element_send_event() instead of gst_pad_push_event()
- don't zero App structure
- check for pipeline parsing error
- only get vaapisink for property set

tests/elements/test-vaapisink.c

index 5005755..c09988e 100644 (file)
@@ -6,9 +6,7 @@ typedef struct _CustomData
 {
   GstElement *pipeline;
   GstElement *video_sink;
-  GstElement *src_sink;
   GMainLoop *loop;
-  GstPad *src_pad;
   gboolean orient_automatic;
 } AppData;
 
@@ -26,7 +24,7 @@ send_rotate_event (AppData * data)
           tags[counter++ % G_N_ELEMENTS (tags)], NULL));
 
   /* Send the event */
-  res = gst_pad_push_event (data->src_pad, event);
+  res = gst_element_send_event (data->pipeline, event);
   g_print ("Sending event %p done: %d\n", event, res);
 }
 
@@ -67,25 +65,24 @@ main (int argc, char *argv[])
   AppData data;
   GstStateChangeReturn ret;
   GIOChannel *io_stdin;
+  GError *err = NULL;
 
   /* Initialize GStreamer */
   gst_init (&argc, &argv);
 
-  /* Initialize our data structure */
-  memset (&data, 0, sizeof (data));
-
   /* Print usage map */
   g_print ("USAGE: Choose one of the following options, then press enter:\n"
-      " 'r' to send image-orientation tag event\n \
-      's' to set orient-automatic\n \
-      'Q' to quit\n");
+      " 'r' to send image-orientation tag event\n"
+      " 's' to set orient-automatic\n" " 'Q' to quit\n");
+
+  data.pipeline = gst_parse_launch ("videotestsrc ! vaapisink name=sink", &err);
+  if (err) {
+    g_printerr ("failed to create pipeline: %s\n", err->message);
+    g_error_free (err);
+    return -1;
+  }
 
-  data.pipeline =
-      gst_parse_launch
-      ("videotestsrc name=src ! vaapisink name=vaapisink", NULL);
-  data.video_sink = gst_bin_get_by_name (GST_BIN (data.pipeline), "vaapisink");
-  data.src_sink = gst_bin_get_by_name (GST_BIN (data.pipeline), "src");
-  data.src_pad = gst_element_get_static_pad (data.src_sink, "src");
+  data.video_sink = gst_bin_get_by_name (GST_BIN (data.pipeline), "sink");
 
   /* Add a keyboard watch so we get notified of keystrokes */
   io_stdin = g_io_channel_unix_new (fileno (stdin));
@@ -95,21 +92,21 @@ main (int argc, char *argv[])
   ret = gst_element_set_state (data.pipeline, GST_STATE_PLAYING);
   if (ret == GST_STATE_CHANGE_FAILURE) {
     g_printerr ("Unable to set the pipeline to the playing state.\n");
-    gst_object_unref (data.pipeline);
-    return -1;
+    goto bail;
   }
 
   /* Create a GLib Main Loop and set it to run */
   data.loop = g_main_loop_new (NULL, FALSE);
   g_main_loop_run (data.loop);
 
+  gst_element_set_state (data.pipeline, GST_STATE_NULL);
+
+bail:
   /* Free resources */
   g_main_loop_unref (data.loop);
   g_io_channel_unref (io_stdin);
-  gst_element_set_state (data.pipeline, GST_STATE_NULL);
 
-  if (data.video_sink != NULL)
-    gst_object_unref (data.video_sink);
+  gst_object_unref (data.video_sink);
   gst_object_unref (data.pipeline);
 
   return 0;