summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVedang Patel <vedang.patel@intel.com>2019-09-26 18:12:36 -0700
committervedangpatel1 <vedang.patel@intel.com>2020-04-30 23:31:25 +0000
commit2510052d124288abb3c282eccc1a3b641e040990 (patch)
tree98955e4b0c52f499cbb690689f8d16111f32fbaf /tests
parent4b6a290bebf8c2d2f021d34015fc8d9e282a5cab (diff)
tests: add tests for functions in gstavtpcrfutil.c
This adds tests for the helper functions in ext/avtp/gstavtpcrfutils.c
Diffstat (limited to 'tests')
-rw-r--r--tests/check/elements/avtpcrfutil.c149
-rw-r--r--tests/check/meson.build1
2 files changed, 150 insertions, 0 deletions
diff --git a/tests/check/elements/avtpcrfutil.c b/tests/check/elements/avtpcrfutil.c
new file mode 100644
index 000000000..efecc8fd2
--- /dev/null
+++ b/tests/check/elements/avtpcrfutil.c
@@ -0,0 +1,149 @@
+/*
+ * GStreamer AVTP Plugin
+ * Copyright (C) 2019 Intel Corporation
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later
+ * version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA
+ */
+#include "../../../ext/avtp/gstavtpcrfbase.h"
+#include "../../../ext/avtp/gstavtpcrfutil.h"
+
+#include <avtp.h>
+#include <avtp_aaf.h>
+#include <avtp_cvf.h>
+#include <glib.h>
+#include <gst/check/gstcheck.h>
+#include <gst/check/gstharness.h>
+
+GST_START_TEST (test_buffer_tstamp_valid)
+{
+ struct avtp_stream_pdu pdu;
+ GstMapInfo info;
+ gboolean result;
+
+ info.data = (guint8 *) & pdu;
+
+ avtp_pdu_set ((struct avtp_common_pdu *) &pdu, AVTP_FIELD_SUBTYPE,
+ AVTP_SUBTYPE_AAF);
+ info.size = 50;
+ result = buffer_size_valid (&info);
+ fail_unless (result == TRUE);
+
+ avtp_pdu_set ((struct avtp_common_pdu *) &pdu, AVTP_FIELD_SUBTYPE,
+ AVTP_SUBTYPE_CVF);
+ avtp_cvf_pdu_set (&pdu, AVTP_CVF_FIELD_FORMAT_SUBTYPE,
+ AVTP_CVF_FORMAT_SUBTYPE_H264);
+ info.size = 55;
+ result = buffer_size_valid (&info);
+ fail_unless (result == TRUE);
+
+ avtp_pdu_set ((struct avtp_common_pdu *) &pdu, AVTP_FIELD_SUBTYPE,
+ AVTP_SUBTYPE_AAF);
+ info.size = 15;
+ result = buffer_size_valid (&info);
+ fail_unless (result == FALSE);
+
+ avtp_pdu_set ((struct avtp_common_pdu *) &pdu, AVTP_FIELD_SUBTYPE,
+ AVTP_SUBTYPE_CVF);
+ avtp_cvf_pdu_set (&pdu, AVTP_CVF_FIELD_FORMAT_SUBTYPE,
+ AVTP_CVF_FORMAT_SUBTYPE_H264);
+ info.size = 24;
+ result = buffer_size_valid (&info);
+ fail_unless (result == FALSE);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_get_avtp_tstamp)
+{
+ GstAvtpCrfBase *avtpcrfbase = g_object_new (GST_TYPE_AVTP_CRF_BASE, NULL);
+ struct avtp_stream_pdu pdu;
+ GstClockTime tstamp;
+
+ avtp_aaf_pdu_init (&pdu);
+ avtp_aaf_pdu_set (&pdu, AVTP_AAF_FIELD_TV, 1);
+ avtp_aaf_pdu_set (&pdu, AVTP_AAF_FIELD_TIMESTAMP, 12345);
+ tstamp = get_avtp_tstamp (avtpcrfbase, &pdu);
+ fail_unless_equals_uint64 (tstamp, 12345);
+
+ avtp_aaf_pdu_set (&pdu, AVTP_AAF_FIELD_TV, 0);
+ tstamp = get_avtp_tstamp (avtpcrfbase, &pdu);
+ fail_unless_equals_uint64 (tstamp, GST_CLOCK_TIME_NONE);
+
+ avtp_cvf_pdu_init (&pdu, AVTP_CVF_FORMAT_SUBTYPE_H264);
+ avtp_cvf_pdu_set (&pdu, AVTP_CVF_FIELD_TV, 1);
+ avtp_cvf_pdu_set (&pdu, AVTP_CVF_FIELD_TIMESTAMP, 43567);
+ tstamp = get_avtp_tstamp (avtpcrfbase, &pdu);
+ fail_unless_equals_uint64 (tstamp, 43567);
+
+ avtp_cvf_pdu_set (&pdu, AVTP_CVF_FIELD_TV, 0);
+ tstamp = get_avtp_tstamp (avtpcrfbase, &pdu);
+ fail_unless_equals_uint64 (tstamp, GST_CLOCK_TIME_NONE);
+
+ avtp_pdu_set ((struct avtp_common_pdu *) &pdu, AVTP_FIELD_SUBTYPE,
+ AVTP_SUBTYPE_TSCF);
+ tstamp = get_avtp_tstamp (avtpcrfbase, &pdu);
+ fail_unless_equals_uint64 (tstamp, GST_CLOCK_TIME_NONE);
+}
+
+GST_END_TEST;
+
+GST_START_TEST (test_get_h264_tstamp)
+{
+ struct avtp_stream_pdu *pdu =
+ g_malloc0 (sizeof (struct avtp_stream_pdu) + sizeof (guint32));
+ gboolean tstamp_valid;
+
+ avtp_cvf_pdu_init (pdu, AVTP_CVF_FORMAT_SUBTYPE_H264);
+ avtp_cvf_pdu_set (pdu, AVTP_CVF_FIELD_H264_PTV, 1);
+ avtp_cvf_pdu_set (pdu, AVTP_CVF_FIELD_H264_TIMESTAMP, 43567);
+ tstamp_valid = h264_tstamp_valid (pdu);
+ fail_unless (tstamp_valid == TRUE);
+
+ avtp_cvf_pdu_set (pdu, AVTP_CVF_FIELD_H264_PTV, 0);
+ tstamp_valid = h264_tstamp_valid (pdu);
+ fail_unless (tstamp_valid == FALSE);
+
+ avtp_cvf_pdu_init (pdu, AVTP_CVF_FORMAT_SUBTYPE_MJPEG);
+ avtp_cvf_pdu_set (pdu, AVTP_CVF_FIELD_H264_PTV, 1);
+ avtp_cvf_pdu_set (pdu, AVTP_CVF_FIELD_H264_TIMESTAMP, 43567);
+ tstamp_valid = h264_tstamp_valid (pdu);
+ fail_unless (tstamp_valid == FALSE);
+
+ avtp_aaf_pdu_init (pdu);
+ tstamp_valid = h264_tstamp_valid (pdu);
+ fail_unless (tstamp_valid == FALSE);
+
+ g_free (pdu);
+}
+
+GST_END_TEST;
+
+static Suite *
+avtpcrfutil_suite (void)
+{
+ Suite *s = suite_create ("avtpcrfutil");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_add_test (tc_chain, test_buffer_tstamp_valid);
+ tcase_add_test (tc_chain, test_get_avtp_tstamp);
+ tcase_add_test (tc_chain, test_get_h264_tstamp);
+
+ return s;
+}
+
+GST_CHECK_MAIN (avtpcrfutil);
diff --git a/tests/check/meson.build b/tests/check/meson.build
index eab03d73d..0a222a0c0 100644
--- a/tests/check/meson.build
+++ b/tests/check/meson.build
@@ -84,6 +84,7 @@ if host_machine.system() != 'windows'
[['elements/avtpcrfbase.c'], not avtp_dep.found(), [avtp_dep]],
[['elements/avtpcrfcheck.c'], not avtp_dep.found(), [avtp_dep], ['../../ext/avtp/gstavtpcrfutil.c']],
[['elements/avtpcrfsync.c'], not avtp_dep.found(), [avtp_dep], ['../../ext/avtp/gstavtpcrfutil.c', '../../ext/avtp/gstavtpcrfbase.c']],
+ [['elements/avtpcrfutil.c'], not avtp_dep.found(), [avtp_dep], ['../../ext/avtp/gstavtpcrfutil.c', '../../ext/avtp/gstavtpcrfbase.c']],
[['elements/avtpcvfpay.c'], not avtp_dep.found(), [avtp_dep]],
[['elements/avtpcvfdepay.c'], not avtp_dep.found(), [avtp_dep]],
[['elements/avtpsink.c'], not avtp_dep.found(), [avtp_dep]],