edtpdvsrc: make number of ring buffers configurable
This commit is contained in:
parent
530fd119a5
commit
000fab6c14
@ -66,11 +66,13 @@ enum
|
|||||||
PROP_0,
|
PROP_0,
|
||||||
PROP_UNIT,
|
PROP_UNIT,
|
||||||
PROP_CHANNEL,
|
PROP_CHANNEL,
|
||||||
PROP_CONFIG_FILE
|
PROP_CONFIG_FILE,
|
||||||
|
PROP_NUM_RING_BUFFERS
|
||||||
};
|
};
|
||||||
|
|
||||||
#define DEFAULT_PROP_UNIT 0
|
#define DEFAULT_PROP_UNIT 0
|
||||||
#define DEFAULT_PROP_CHANNEL 0
|
#define DEFAULT_PROP_CHANNEL 0
|
||||||
|
#define DEFAULT_PROP_NUM_RING_BUFFERS 4
|
||||||
|
|
||||||
/* pad templates */
|
/* pad templates */
|
||||||
|
|
||||||
@ -133,6 +135,12 @@ gst_edt_pdv_src_class_init (GstEdtPdvSrcClass * klass)
|
|||||||
NULL,
|
NULL,
|
||||||
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
||||||
GST_PARAM_MUTABLE_READY)));
|
GST_PARAM_MUTABLE_READY)));
|
||||||
|
g_object_class_install_property (gobject_class, PROP_NUM_RING_BUFFERS,
|
||||||
|
g_param_spec_uint ("num-ring-buffers", "Number of ring buffers",
|
||||||
|
"Number of ring buffers to use for DMAing frames from card", 1,
|
||||||
|
G_MAXUINT, DEFAULT_PROP_NUM_RING_BUFFERS,
|
||||||
|
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
|
||||||
|
GST_PARAM_MUTABLE_READY)));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -148,6 +156,7 @@ gst_edt_pdv_src_init (GstEdtPdvSrc * src)
|
|||||||
src->unit = DEFAULT_PROP_UNIT;
|
src->unit = DEFAULT_PROP_UNIT;
|
||||||
src->channel = DEFAULT_PROP_CHANNEL;
|
src->channel = DEFAULT_PROP_CHANNEL;
|
||||||
src->config_file_path = NULL;
|
src->config_file_path = NULL;
|
||||||
|
src->num_ring_buffers = DEFAULT_PROP_NUM_RING_BUFFERS;
|
||||||
|
|
||||||
gst_edt_pdv_src_reset (src);
|
gst_edt_pdv_src_reset (src);
|
||||||
}
|
}
|
||||||
@ -181,6 +190,9 @@ gst_edt_pdv_src_set_property (GObject * object, guint property_id,
|
|||||||
}
|
}
|
||||||
src->config_file_path = g_strdup (g_value_get_string (value));
|
src->config_file_path = g_strdup (g_value_get_string (value));
|
||||||
break;
|
break;
|
||||||
|
case PROP_NUM_RING_BUFFERS:
|
||||||
|
src->num_ring_buffers = g_value_get_uint (value);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -206,6 +218,9 @@ gst_edt_pdv_src_get_property (GObject * object, guint property_id,
|
|||||||
case PROP_CONFIG_FILE:
|
case PROP_CONFIG_FILE:
|
||||||
g_value_set_string (value, src->config_file_path);
|
g_value_set_string (value, src->config_file_path);
|
||||||
break;
|
break;
|
||||||
|
case PROP_NUM_RING_BUFFERS:
|
||||||
|
g_value_set_uint (value, src->num_ring_buffers);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -288,7 +303,7 @@ gst_edt_pdv_src_start (GstBaseSrc * bsrc)
|
|||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pdv_multibuf (src->dev, 4)) {
|
if (pdv_multibuf (src->dev, src->num_ring_buffers)) {
|
||||||
GST_ERROR_OBJECT (src, "Failed to setup ring buffer");
|
GST_ERROR_OBJECT (src, "Failed to setup ring buffer");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -55,6 +55,7 @@ struct _GstEdtPdvSrc
|
|||||||
guint unit;
|
guint unit;
|
||||||
guint channel;
|
guint channel;
|
||||||
gchar *config_file_path;
|
gchar *config_file_path;
|
||||||
|
guint num_ring_buffers;
|
||||||
|
|
||||||
PdvDev *dev;
|
PdvDev *dev;
|
||||||
gboolean acq_started;
|
gboolean acq_started;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user