in awstreamer/gst_plugins/mxnet/src/gstmxnet.cpp [113:170]
static void gst_mxnet_class_init(GstMXNetClass * klass) {
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstBaseTransformClass *base_transform_class = GST_BASE_TRANSFORM_CLASS (klass);
GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass);
/* Setting up pads and setting metadata should be moved to
base_class_init if you intend to subclass this class. */
gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
gst_caps_from_string (VIDEO_SRC_CAPS)));
gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
gst_caps_from_string (VIDEO_SINK_CAPS)));
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS(klass),
"MXNet inference filter", "Generic", "CV/ML filtering plug-in",
"Bartek Pawlik <pawlikb@amazon.com>");
gobject_class->set_property = gst_mxnet_set_property;
gobject_class->get_property = gst_mxnet_get_property;
gobject_class->dispose = gst_mxnet_dispose;
gobject_class->finalize = gst_mxnet_finalize;
base_transform_class->start = GST_DEBUG_FUNCPTR (gst_mxnet_start);
base_transform_class->stop = GST_DEBUG_FUNCPTR (gst_mxnet_stop);
video_filter_class->set_info = GST_DEBUG_FUNCPTR (gst_mxnet_set_info);
video_filter_class->transform_frame = GST_DEBUG_FUNCPTR (gst_mxnet_transform_frame);
video_filter_class->transform_frame_ip = GST_DEBUG_FUNCPTR (gst_mxnet_transform_frame_ip);
g_object_class_install_property(gobject_class, PROP_MODEL_FILE,
g_param_spec_string ("model-file", "Model file",
"Basename of the model files: <model-file>-0000.params and <model-file>-symbol.json",
DEFAULT_MODEL_FILE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_CLASS_FILE,
g_param_spec_string ("class-file", "Class file",
"Plain text file for class names, one name per line. Needed only for visualization.", DEFAULT_CLASS_FILE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_DEVICE_TYPE,
g_param_spec_string ("device-type", "Device type",
"Device type, cpu or gpu. You can also specify GPU index, e.g. gpu:0", DEFAULT_DEVICE_TYPE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_IMAGE_SIZE,
g_param_spec_int ("image-size", "Image size", "Image size for inference", 32, G_MAXINT, DEFAULT_IMAGE_SIZE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property(gobject_class, PROP_FILTER_TAGS,
g_param_spec_boxed ("stream-tags", "Stream Tags",
"key-value pair that you can define and assign to each stream",
GST_TYPE_STRUCTURE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
processing_complete_signal =
g_signal_new ("processing-complete", G_TYPE_FROM_CLASS(klass),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL,
G_TYPE_NONE, 1, G_TYPE_UINT);
}