matroxsrc: change device property to an enum property named system

Easier to choose system type, and language matches up with Matrox terminology
This commit is contained in:
Joshua M. Doe 2020-07-10 15:24:12 -04:00
parent dd0a7bf93e
commit bf76de5b03
2 changed files with 55 additions and 19 deletions

View File

@ -83,7 +83,7 @@ gst_matroxsrc_callback (MIL_INT HookType, MIL_ID EventId, void *UserDataPtr);
enum enum
{ {
PROP_0, PROP_0,
PROP_DEVICE, PROP_SYSTEM,
PROP_BOARD, PROP_BOARD,
PROP_CHANNEL, PROP_CHANNEL,
PROP_CONFIG_FILE, PROP_CONFIG_FILE,
@ -92,7 +92,7 @@ enum
PROP_BAYER_MODE PROP_BAYER_MODE
}; };
#define DEFAULT_PROP_DEVICE "M_SYSTEM_DEFAULT" #define DEFAULT_PROP_SYSTEM 0
#define DEFAULT_PROP_BOARD -1 #define DEFAULT_PROP_BOARD -1
#define DEFAULT_PROP_CHANNEL -1 #define DEFAULT_PROP_CHANNEL -1
#define DEFAULT_PROP_CONFIG_FILE "M_DEFAULT" #define DEFAULT_PROP_CONFIG_FILE "M_DEFAULT"
@ -120,6 +120,40 @@ gst_matrox_bayer_mode_get_type (void)
return matrox_bayer_mode_type; return matrox_bayer_mode_type;
} }
static const GEnumValue matrox_system_enum[] = {
{0, "Default from MilConfig", "M_SYSTEM_DEFAULT"},
{1, "Clarity UHD", "M_SYSTEM_CLARITY_UHD"},
{2, "GigE Vision", "M_SYSTEM_GIGE_VISION"},
{3, "Host", "M_SYSTEM_HOST"},
{4, "Iris GTR", "M_SYSTEM_IRIS_GTR"},
{5, "Morphis Dual/Quad", "M_SYSTEM_MORPHIS"},
{6, "Morphis QxT", "M_SYSTEM_MORPHISQXT"},
{7, "Orion HD", "M_SYSTEM_ORION_HD"},
{8, "Radient eCL", "M_SYSTEM_RADIENT"},
{9, "Radient eV-CL", "M_SYSTEM_RADIENTEVCL"},
{10, "Radient eV-CLHS", "M_SYSTEM_RADIENTCLHS"},
{11, "Radient eV-CXP", "M_SYSTEM_RADIENTCXP"},
{12, "RadientPro CL", "M_SYSTEM_RADIENTPRO"},
{13, "Rapixo CXP", "M_SYSTEM_RAPIXOCXP"},
{14, "Solios", "M_SYSTEM_SOLIOS"},
{15, "USB3 Vision", "M_SYSTEM_USB3_VISION"},
{0, NULL, NULL},
};
#define GST_TYPE_MATROX_SYSTEM (gst_matrox_system_get_type())
static GType
gst_matrox_system_get_type (void)
{
static GType matrox_system_type = 0;
if (!matrox_system_type) {
matrox_system_type =
g_enum_register_static ("GstMatroxSystem", matrox_system_enum);
}
return matrox_system_type;
}
/* pad templates */ /* pad templates */
@ -198,10 +232,10 @@ gst_matroxsrc_class_init (GstMatroxSrcClass * klass)
gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_matroxsrc_create); gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_matroxsrc_create);
/* Install GObject properties */ /* Install GObject properties */
g_object_class_install_property (gobject_class, PROP_DEVICE, g_object_class_install_property (gobject_class, PROP_SYSTEM,
g_param_spec_string ("device", "Device", g_param_spec_enum ("system", "System",
"System descriptor, default is specified in MilConfig", "System descriptor, default is specified in MilConfig",
DEFAULT_PROP_DEVICE, GST_TYPE_MATROX_SYSTEM, DEFAULT_PROP_SYSTEM,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS))); (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (gobject_class, PROP_BOARD, g_object_class_install_property (gobject_class, PROP_BOARD,
g_param_spec_int ("board", "Board", g_param_spec_int ("board", "Board",
@ -226,13 +260,13 @@ gst_matroxsrc_class_init (GstMatroxSrcClass * klass)
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TIMEOUT, g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_TIMEOUT,
g_param_spec_int ("timeout", "Timeout (ms)", g_param_spec_int ("timeout", "Timeout (ms)",
"Timeout in ms (0 to use default)", 0, G_MAXINT, DEFAULT_PROP_TIMEOUT, "Timeout in ms (0 to use default)", 0, G_MAXINT, DEFAULT_PROP_TIMEOUT,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE)); (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (gobject_class, PROP_BAYER_MODE, g_object_class_install_property (gobject_class, PROP_BAYER_MODE,
g_param_spec_enum ("bayer-mode", "Bayer mode", g_param_spec_enum ("bayer-mode", "Bayer mode",
"Pull Bayer frames as raw bayer, grayscale, or demosaiced RGB", "Pull Bayer frames as raw bayer, grayscale, or demosaiced RGB",
GST_TYPE_MATROX_BAYER_MODE, DEFAULT_PROP_BAYER_MODE, GST_TYPE_MATROX_BAYER_MODE, DEFAULT_PROP_BAYER_MODE,
G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE | (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
GST_PARAM_MUTABLE_READY)); GST_PARAM_MUTABLE_READY)));
} }
static void static void
@ -285,7 +319,7 @@ gst_matroxsrc_init (GstMatroxSrc * src)
gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME); gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
/* initialize member variables */ /* initialize member variables */
src->device = g_strdup (DEFAULT_PROP_DEVICE); src->system = DEFAULT_PROP_SYSTEM;
src->board = DEFAULT_PROP_BOARD; src->board = DEFAULT_PROP_BOARD;
src->channel = DEFAULT_PROP_CHANNEL; src->channel = DEFAULT_PROP_CHANNEL;
src->config_file = g_strdup (DEFAULT_PROP_CONFIG_FILE); src->config_file = g_strdup (DEFAULT_PROP_CONFIG_FILE);
@ -306,7 +340,9 @@ gst_matroxsrc_init (GstMatroxSrc * src)
gst_matroxsrc_reset (src); gst_matroxsrc_reset (src);
if (src->MilApplication == M_NULL) {
src->MilApplication = gst_matroxsrc_milapp_get (); src->MilApplication = gst_matroxsrc_milapp_get ();
}
} }
void void
@ -318,9 +354,8 @@ gst_matroxsrc_set_property (GObject * object, guint property_id,
src = GST_MATROX_SRC (object); src = GST_MATROX_SRC (object);
switch (property_id) { switch (property_id) {
case PROP_DEVICE: case PROP_SYSTEM:
g_free (src->device); src->system = g_value_get_enum (value);
src->device = g_strdup (g_value_get_string (value));
break; break;
case PROP_NUM_CAPTURE_BUFFERS: case PROP_NUM_CAPTURE_BUFFERS:
if (src->acq_started) { if (src->acq_started) {
@ -363,8 +398,8 @@ gst_matroxsrc_get_property (GObject * object, guint property_id,
src = GST_MATROX_SRC (object); src = GST_MATROX_SRC (object);
switch (property_id) { switch (property_id) {
case PROP_DEVICE: case PROP_SYSTEM:
g_value_set_string (value, src->device); g_value_set_enum (value, src->system);
break; break;
case PROP_NUM_CAPTURE_BUFFERS: case PROP_NUM_CAPTURE_BUFFERS:
g_value_set_uint (value, src->num_capture_buffers); g_value_set_uint (value, src->num_capture_buffers);
@ -415,7 +450,6 @@ gst_matroxsrc_finalize (GObject * object)
src = GST_MATROX_SRC (object); src = GST_MATROX_SRC (object);
/* clean up object here */ /* clean up object here */
g_free (src->device);
g_free (src->config_file); g_free (src->config_file);
gst_matroxsrc_reset (src); gst_matroxsrc_reset (src);
@ -452,11 +486,13 @@ gst_matroxsrc_start (GstBaseSrc * bsrc)
/* create System */ /* create System */
if (src->board == -1) { if (src->board == -1) {
ret = ret =
MsysAlloc (src->MilApplication, src->device, M_DEFAULT, M_DEFAULT, MsysAlloc (src->MilApplication,
matrox_system_enum[src->system].value_nick, M_DEFAULT, M_DEFAULT,
&src->MilSystem); &src->MilSystem);
} else { } else {
ret = ret =
MsysAlloc (src->MilApplication, src->device, src->board, M_DEFAULT, MsysAlloc (src->MilApplication,
matrox_system_enum[src->system].value_nick, src->board, M_DEFAULT,
&src->MilSystem); &src->MilSystem);
} }
if (ret == M_NULL) { if (ret == M_NULL) {

View File

@ -54,7 +54,7 @@ struct _GstMatroxSrc
MIL_ID *MilGrabBufferList; MIL_ID *MilGrabBufferList;
/* properties */ /* properties */
gchar *device; gint system;
gint board; gint board;
gint channel; gint channel;
gchar *config_file; gchar *config_file;