examples: overlaycomposition: Add option for videosink element selection
authorSeungha Yang <seungha.yang@navercorp.com>
Tue, 12 Nov 2019 12:15:38 +0000 (21:15 +0900)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Wed, 13 Nov 2019 12:45:10 +0000 (12:45 +0000)
It would be useful for testing overlaycomposition with specific videosink element.

tests/examples/overlaycomposition/overlaycomposition.c

index 0fd38b7..ce0929e 100644 (file)
@@ -254,15 +254,34 @@ main (int argc, char **argv)
   GstBus *bus;
   GstCaps *filter_caps;
   OverlayState overlay_state = { 0, };
-
-  gst_init (&argc, &argv);
+  GOptionContext *option_ctx;
+  GError *error = NULL;
+  const gchar *video_sink = "autovidesink";
+  gboolean ret;
+  GOptionEntry options[] = {
+    {"videosink", 0, 0, G_OPTION_ARG_STRING, &video_sink,
+        "Video sink element to use (default is autovideosink)", NULL},
+    {NULL}
+  };
+
+  option_ctx = g_option_context_new ("- test overlaycomposition");
+  g_option_context_add_main_entries (option_ctx, options, NULL);
+  g_option_context_add_group (option_ctx, gst_init_get_option_group ());
+  ret = g_option_context_parse (option_ctx, &argc, &argv, &error);
+  g_option_context_free (option_ctx);
+
+  if (!ret) {
+    g_printerr ("option parsing failed: %s\n", error->message);
+    g_clear_error (&error);
+    exit (1);
+  }
 
   pipeline = gst_pipeline_new (NULL);
   src = gst_element_factory_make ("videotestsrc", NULL);
   capsfilter = gst_element_factory_make ("capsfilter", NULL);
   overlay = gst_element_factory_make ("overlaycomposition", NULL);
   conv = gst_element_factory_make ("videoconvert", NULL);
-  sink = gst_element_factory_make ("autovideosink", NULL);
+  sink = gst_element_factory_make (video_sink, NULL);
 
   if (!pipeline || !src || !capsfilter || !overlay || !conv || !sink) {
     g_error ("Failed to create elements");