diff --git a/.gitlab-image-tags.yml b/.gitlab-image-tags.yml index 1ee044dce9..06ee8e51d1 100644 --- a/.gitlab-image-tags.yml +++ b/.gitlab-image-tags.yml @@ -13,6 +13,6 @@ variables: LINT_TAG: '2024-02-20.0' - ABI_CHECK_TAG: '2024-12-20.2' + ABI_CHECK_TAG: '2025-01-08.1' WINDOWS_TAG: '2024-11-29.0' diff --git a/girs/GstAnalytics-1.0.gir b/girs/GstAnalytics-1.0.gir index 69b91757bd..f05f68c13a 100644 --- a/girs/GstAnalytics-1.0.gir +++ b/girs/GstAnalytics-1.0.gir @@ -1259,7 +1259,7 @@ pixel to instance of an object is identified. number of tensor dimensions - + @@ -1346,8 +1346,8 @@ dimension is dynamic. The dims array form the tensor - - + + @@ -1408,18 +1408,6 @@ dimension is dynamic. "brain" 16 bit floating point tensor data - - Hold properties of the tensor's dimension - - - Size of the dimension. Use 0 for dynamic dimension using. - - - - Dimension order in memory. @see_also #GST_TENSOR_DIM_ORDER_INDEXED - - - Indicate to read tensor from memory in row-major or column-major order. @@ -1429,13 +1417,6 @@ dimension is dynamic. elements along a column are consecutive in memory - - elements storage follow the order defined by - #GstTensorDim.order_index This mean that when iterating the tensor - the dimension with index 0 is the most nested in the loops and consecutive - in memory, followed by other dimensions in the order defined by - #GstTensorDim.order_index. - Indicate tensor storage in memory. diff --git a/subprojects/gst-plugins-bad/ext/onnx/gstonnxclient.cpp b/subprojects/gst-plugins-bad/ext/onnx/gstonnxclient.cpp index 4e5172bd8d..d632af3c6d 100644 --- a/subprojects/gst-plugins-bad/ext/onnx/gstonnxclient.cpp +++ b/subprojects/gst-plugins-bad/ext/onnx/gstonnxclient.cpp @@ -351,7 +351,7 @@ GstOnnxClient::GstOnnxClient (GstElement *debug_parent):debug_parent(debug_paren tensor->num_dims = tensorShape.size (); for (size_t j = 0; j < tensorShape.size (); ++j) - tensor->dims[j].size = tensorShape[j]; + tensor->dims[j] = tensorShape[j]; size_t numElements = outputTensor.GetTensorTypeAndShapeInfo ().GetElementCount (); diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c index d20e353f0f..67b24dcf01 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.c @@ -25,7 +25,7 @@ #include "gsttensor.h" #define GST_TENSOR_SIZE(num_dims) \ - (sizeof (GstTensor) + (sizeof (GstTensorDim) * num_dims)) + (sizeof (GstTensor) + (sizeof (gsize) * num_dims)) G_DEFINE_BOXED_TYPE (GstTensor, gst_tensor, (GBoxedCopyFunc) gst_tensor_copy, (GBoxedFreeFunc) gst_tensor_free); @@ -145,9 +145,8 @@ gst_tensor_new_simple (GQuark id, GstTensorDataType data_type, GstBuffer * data, tensor->data = data; tensor->dims_order = dims_order; tensor->num_dims = num_dims; - for (i = 0; i < num_dims; i++) { - tensor->dims[i].size = dims[i]; - } + memcpy (tensor->dims, dims, sizeof (gsize) * num_dims); + return tensor; } @@ -203,7 +202,7 @@ gst_tensor_copy (const GstTensor * tensor) * Since: 1.26 */ -GstTensorDim * +gsize * gst_tensor_get_dims (GstTensor * tensor, gsize * num_dims) { if (num_dims) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h index 1ab15606f6..0781286406 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h +++ b/subprojects/gst-plugins-bad/gst-libs/gst/analytics/gsttensor.h @@ -73,11 +73,6 @@ typedef enum _GstTensorDataType * GstTensorDimOrder: * @GST_TENSOR_DIM_ORDER_ROW_MAJOR: elements along a row are consecutive in memory * @GST_TENSOR_DIM_ORDER_COL_MAJOR: elements along a column are consecutive in memory - * @GST_TENSOR_DIM_ORDER_INDEXED: elements storage follow the order defined by - * #GstTensorDim.order_index This mean that when iterating the tensor - * the dimension with index 0 is the most nested in the loops and consecutive - * in memory, followed by other dimensions in the order defined by - * #GstTensorDim.order_index. * * Indicate to read tensor from memory in row-major or column-major order. * @@ -86,8 +81,7 @@ typedef enum _GstTensorDataType typedef enum _GstTensorDimOrder { GST_TENSOR_DIM_ORDER_ROW_MAJOR, - GST_TENSOR_DIM_ORDER_COL_MAJOR, - GST_TENSOR_DIM_ORDER_INDEXED + GST_TENSOR_DIM_ORDER_COL_MAJOR } GstTensorDimOrder; /** @@ -103,22 +97,6 @@ typedef enum _GstTensorLayout GST_TENSOR_LAYOUT_CONTIGUOUS } GstTensorLayout; - -/** - * GstTensorDim: - * @size: Size of the dimension. Use 0 for dynamic dimension using. - * @order_index: Dimension order in memory. @see_also #GST_TENSOR_DIM_ORDER_INDEXED - * - * Hold properties of the tensor's dimension - * - * Since: 1.26 - */ -typedef struct _GstTensorDim -{ - gsize size; - gsize order_index; -} GstTensorDim; - /** * GstTensor: * @id: semantically identify the contents of the tensor @@ -141,7 +119,7 @@ typedef struct _GstTensor GstBuffer *data; GstTensorDimOrder dims_order; gsize num_dims; - GstTensorDim dims[]; + gsize dims[]; } GstTensor; G_BEGIN_DECLS @@ -166,7 +144,7 @@ GST_ANALYTICS_META_API GstTensor * gst_tensor_copy (const GstTensor * tensor); GST_ANALYTICS_META_API -GstTensorDim * gst_tensor_get_dims (GstTensor * tensor, gsize * num_dims); +gsize * gst_tensor_get_dims (GstTensor * tensor, gsize * num_dims); GST_ANALYTICS_META_API GType gst_tensor_get_type (void); diff --git a/subprojects/gst-python/testsuite/test_analytics.py b/subprojects/gst-python/testsuite/test_analytics.py index c9af179440..f65ece65ff 100644 --- a/subprojects/gst-python/testsuite/test_analytics.py +++ b/subprojects/gst-python/testsuite/test_analytics.py @@ -218,10 +218,10 @@ class TestAnalyticsTensorMeta(TestCase): self.assertEqual(tensor.num_dims, 4) dims = tensor.get_dims() self.assertEqual(len(dims), 4) - self.assertEqual(dims[0].size, 1) - self.assertEqual(dims[1].size, 2) - self.assertEqual(dims[2].size, 3) - self.assertEqual(dims[3].size, 4) + self.assertEqual(dims[0], 1) + self.assertEqual(dims[1], 2) + self.assertEqual(dims[2], 3) + self.assertEqual(dims[3], 4) self.assertEqual(tensor.data, data) self.assertEqual(tensor.data_type, GstAnalytics.TensorDataType.UINT8) self.assertEqual(tensor.dims_order, GstAnalytics.TensorDimOrder.ROW_MAJOR)