summaryrefslogtreecommitdiff
path: root/test/gstreamer/gstreamer_single_stream_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/gstreamer/gstreamer_single_stream_test.cpp')
-rw-r--r--test/gstreamer/gstreamer_single_stream_test.cpp69
1 files changed, 69 insertions, 0 deletions
diff --git a/test/gstreamer/gstreamer_single_stream_test.cpp b/test/gstreamer/gstreamer_single_stream_test.cpp
new file mode 100644
index 00000000..3ef2d323
--- /dev/null
+++ b/test/gstreamer/gstreamer_single_stream_test.cpp
@@ -0,0 +1,69 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2021, Vedant Paranjape
+ *
+ * GStreamer single stream capture test
+ */
+
+#include <iostream>
+#include <unistd.h>
+
+#include <gst/gst.h>
+
+#include "gstreamer_test.h"
+#include "test.h"
+
+using namespace std;
+
+class GstreamerSingleStreamTest : public GstreamerTest, public Test
+{
+public:
+ GstreamerSingleStreamTest()
+ : GstreamerTest()
+ {
+ }
+
+protected:
+ int init() override
+ {
+ if (status_ != TestPass)
+ return status_;
+
+ fakesink_ = gst_element_factory_make("fakesink", nullptr);
+ if (!fakesink_) {
+ g_printerr("Your installation is missing 'fakesink'\n");
+ return TestFail;
+ }
+ g_object_ref_sink(fakesink_);
+
+ return createPipeline();
+ }
+
+ int run() override
+ {
+ /* Build the pipeline */
+ gst_bin_add_many(GST_BIN(pipeline_), libcameraSrc_, fakesink_, nullptr);
+ if (!gst_element_link(libcameraSrc_, fakesink_)) {
+ g_printerr("Elements could not be linked.\n");
+ return TestFail;
+ }
+
+ if (startPipeline() != TestPass)
+ return TestFail;
+
+ if (processEvent() != TestPass)
+ return TestFail;
+
+ return TestPass;
+ }
+
+ void cleanup() override
+ {
+ g_clear_object(&fakesink_);
+ }
+
+private:
+ GstElement *fakesink_;
+};
+
+TEST_REGISTER(GstreamerSingleStreamTest)