edtpdvsrc: make number of ring buffers configurable

This commit is contained in:
Joshua M. Doe 2013-11-20 14:04:06 -05:00
parent 530fd119a5
commit 000fab6c14
2 changed files with 18 additions and 2 deletions

View File

@ -66,11 +66,13 @@ enum
PROP_0,
PROP_UNIT,
PROP_CHANNEL,
PROP_CONFIG_FILE
PROP_CONFIG_FILE,
PROP_NUM_RING_BUFFERS
};
#define DEFAULT_PROP_UNIT 0
#define DEFAULT_PROP_CHANNEL 0
#define DEFAULT_PROP_NUM_RING_BUFFERS 4
/* pad templates */
@ -133,6 +135,12 @@ gst_edt_pdv_src_class_init (GstEdtPdvSrcClass * klass)
NULL,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
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
@ -148,6 +156,7 @@ gst_edt_pdv_src_init (GstEdtPdvSrc * src)
src->unit = DEFAULT_PROP_UNIT;
src->channel = DEFAULT_PROP_CHANNEL;
src->config_file_path = NULL;
src->num_ring_buffers = DEFAULT_PROP_NUM_RING_BUFFERS;
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));
break;
case PROP_NUM_RING_BUFFERS:
src->num_ring_buffers = g_value_get_uint (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@ -206,6 +218,9 @@ gst_edt_pdv_src_get_property (GObject * object, guint property_id,
case PROP_CONFIG_FILE:
g_value_set_string (value, src->config_file_path);
break;
case PROP_NUM_RING_BUFFERS:
g_value_set_uint (value, src->num_ring_buffers);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@ -288,7 +303,7 @@ gst_edt_pdv_src_start (GstBaseSrc * bsrc)
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");
goto fail;
}

View File

@ -55,6 +55,7 @@ struct _GstEdtPdvSrc
guint unit;
guint channel;
gchar *config_file_path;
guint num_ring_buffers;
PdvDev *dev;
gboolean acq_started;