static void gst_convert2tensor_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
+/* GstBaseTransformer vmethod implementations */
+static GstFlowReturn gst_convert2tensor_transform(GstBaseTransform *trans,
+ GstBuffer *inbuf,
+ GstBuffer *outbuf);
+static GstFlowReturn gst_convert2tensor_transform_ip(GstBaseTransform *trans,
+ GstBuffer *buf);
+static GstCaps* gst_convert2tensor_transform_caps(GstBaseTransform *trans,
+ GstPadDirection direction,
+ GstCaps *caps,
+ GstCaps *filter);
+static GstCaps* gst_convert2tensor_fixate_caps(GstBaseTransform *trans,
+ GstPadDirection direction,
+ GstCaps *caps,
+ GstCaps *othercaps);
+static gboolean gst_convert2tensor_set_caps(GstBaseTransform *trans,
+ GstCaps *incaps,
+ GstCaps *outcaps);
+static gboolean gst_convert2tensor_transform_size(GstBaseTransform *trans,
+ GstPadDirection direction,
+ GstCaps *caps, gsize size,
+ GstCaps *othercpas, gsize *othersize);
+static gboolean gst_convert2tensor_get_unit_size(GstBaseTransform *trans,
+ GstCaps *caps, gsize *size);
/* GObject vmethod implementations */
/* initialize the convert2tensor's class */
/* Refer: https://gstreamer.freedesktop.org/documentation/design/element-transform.html */
trans_class->passthrough_on_same_caps = FALSE;
+ /* Processing units */
+ trans_class->transform = GST_DEBUG_FUNCPTR(gst_convert2tensor_transform);
+ trans_class->transform_ip = GST_DEBUG_FUNCPTR(gst_convert2tensor_transform_ip);
+
+ /* Negotiation units */
+ trans_class->transform_caps = GST_DEBUG_FUNCPTR(gst_convert2tensor_transform_caps);
+ trans_class->fixate_caps = GST_DEBUG_FUNCPTR(gst_convert2tensor_fixate_caps);
+ trans_class->set_caps = GST_DEBUG_FUNCPTR(gst_convert2tensor_set_caps);
+
+ /* Allocation units */
+ trans_class->transform_size = GST_DEBUG_FUNCPTR(gst_convert2tensor_transform_size);
+ trans_class->get_unit_size = GST_DEBUG_FUNCPTR(gst_convert2tensor_get_unit_size);
}
/* initialize the new element
"GStreamer",
"http://gstreamer.net/"
)
+
+
+static GstFlowReturn gst_convert2tensor_transform(GstBaseTransform *trans,
+ GstBuffer *inbuf,
+ GstBuffer *outbuf)
+{
+}
+
+static GstFlowReturn gst_convert2tensor_transform_ip(GstBaseTransform *trans,
+ GstBuffer *buf)
+{
+}
+
+static GstCaps* gst_convert2tensor_transform_caps(GstBaseTransform *trans,
+ GstPadDirection direction,
+ GstCaps *caps,
+ GstCaps *filter)
+{
+}
+
+static GstCaps* gst_convert2tensor_fixate_caps(GstBaseTransform *trans,
+ GstPadDirection direction,
+ GstCaps *caps,
+ GstCaps *othercaps)
+{
+}
+
+static gboolean gst_convert2tensor_set_caps(GstBaseTransform *trans,
+ GstCaps *incaps,
+ GstCaps *outcaps)
+{
+}
+
+static gboolean gst_convert2tensor_transform_size(GstBaseTransform *trans,
+ GstPadDirection direction,
+ GstCaps *caps, gsize size,
+ GstCaps *othercpas, gsize *othersize)
+{
+}
+
+static gboolean gst_convert2tensor_get_unit_size(GstBaseTransform *trans,
+ GstCaps *caps, gsize *size)
+{
+}
(G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_CONVERT2TENSOR))
#define GST_IS_CONVERT2TENSOR_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_CONVERT2TENSOR))
+#define GST_CONVERT2TENSOR_CAST(obj) ((GstConvert2Tensor *)(obj))
typedef struct _GstConvert2Tensor GstConvert2Tensor;
} tensor_type;
struct _GstConvert2Tensor
{
- GstElement element; /**< This element itself is the convert2tensor filter */
- GstPad *sinkpad; /**< Media stream input */
- GstPad *srcpad; /**< Tensor stream output */
+ GstBaseTransform element; /**< This is the parent object */
+
gboolean silent; /**< True if logging is minimized */
- gboolean tensorConfigured; /**< True if sinkpad has successfully configured tensor metadata */
+ gboolean tensorConfigured; /**< True if already successfully configured tensor metadata */
gint rank; /**< Tensor Rank (# dimensions) */
gint dimension[GST_CONVERT2TENSOR_TENSOR_RANK_LIMIT]; /**< Dimensions. We support up to 4th ranks */
tensor_type type; /**< Type of each element in the tensor. User must designate this. Otherwise, this is UINT8 for video/x-raw byte stream */