From 185e96aeecd4abf16325c70879f017d215f85568 Mon Sep 17 00:00:00 2001 From: Daniel Morin Date: Tue, 15 Apr 2025 16:28:38 -0400 Subject: [PATCH] test: add test for tensor-meta - Verify we can add a tensor-meta to a buffer - Verify we can get a tensor from a tensor-meta Part-of: --- .../tests/check/libs/analyticsmeta.c | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/subprojects/gst-plugins-bad/tests/check/libs/analyticsmeta.c b/subprojects/gst-plugins-bad/tests/check/libs/analyticsmeta.c index deac1a0468..2b8c470ec5 100644 --- a/subprojects/gst-plugins-bad/tests/check/libs/analyticsmeta.c +++ b/subprojects/gst-plugins-bad/tests/check/libs/analyticsmeta.c @@ -1798,6 +1798,60 @@ GST_START_TEST (test_iou_float) GST_END_TEST; +GST_START_TEST (test_get_tensor) +{ + GstBuffer *buf, *tensor_data; + GstTensorMeta *tmeta; + GstTensor *tensor; + const GstTensor *tensor2; + GstTensor **tensors; + GQuark tensor_id = g_quark_from_string ("tensor-encoding-1"); + gsize dims[] = { 1 }; + gsize index; + + /* Verify we can add a tensor-meta to a buffer */ + + /* Create tensor data */ + guint8 *data = g_malloc0 (1); + *data = 28; + + /* Wrap tensor data into a GstBuffer */ + tensor_data = gst_buffer_new_wrapped_full (0, data, 1, 0, 1, data, g_free); + + /* Create a new buffer where we attach tensor-meta */ + buf = gst_buffer_new (); + tmeta = gst_buffer_add_tensor_meta (buf); + + /* Create a tensor */ + tensor = gst_tensor_new_simple (tensor_id, GST_TENSOR_DATA_TYPE_UINT8, + tensor_data, GST_TENSOR_DIM_ORDER_COL_MAJOR, 1, dims); + + /* Create an array of tensor to fullfil GstTensor API */ + tensors = g_new (GstTensor *, 1); + tensors[0] = tensor; + + /* Set tensor-meta's tensors */ + gst_tensor_meta_set (tmeta, 1, tensors); + + /* Retieve tensor using index interface */ + index = gst_tensor_meta_get_index_from_id (tmeta, tensor_id); + + fail_unless (index == 0); + + tensor2 = gst_tensor_meta_get (tmeta, index); + + /* Verify tensor retrieved */ + fail_unless (tensor == tensor2); + + /* Retrieve tensor using tensor-id directly */ + tensor2 = gst_tensor_meta_get_by_id (tmeta, tensor_id); + + fail_unless (tensor == tensor2); + + gst_buffer_unref (buf); +} + +GST_END_TEST; static Suite * analyticmeta_suite (void) @@ -1811,6 +1865,7 @@ analyticmeta_suite (void) TCase *tc_chain_tracking; TCase *tc_chain_segmentation; TCase *tc_chain_util; + TCase *tc_chain_tensors; s = suite_create ("Analytic Meta Library"); @@ -1861,6 +1916,10 @@ analyticmeta_suite (void) tcase_add_test (tc_chain_util, test_iou_int); tcase_add_test (tc_chain_util, test_iou_float); + tc_chain_tensors = tcase_create ("TensorMeta"); + suite_add_tcase (s, tc_chain_tensors); + tcase_add_test (tc_chain_tensors, test_get_tensor); + return s; }