From 000fab6c14147968d220b7c32b84e69502c4f61e Mon Sep 17 00:00:00 2001 From: "Joshua M. Doe" Date: Wed, 20 Nov 2013 14:04:06 -0500 Subject: [PATCH] edtpdvsrc: make number of ring buffers configurable --- sys/edt/gstedtpdvsrc.c | 19 +++++++++++++++++-- sys/edt/gstedtpdvsrc.h | 1 + 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/sys/edt/gstedtpdvsrc.c b/sys/edt/gstedtpdvsrc.c index 38367de..c33e067 100644 --- a/sys/edt/gstedtpdvsrc.c +++ b/sys/edt/gstedtpdvsrc.c @@ -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; } diff --git a/sys/edt/gstedtpdvsrc.h b/sys/edt/gstedtpdvsrc.h index d2d670e..5849e95 100644 --- a/sys/edt/gstedtpdvsrc.h +++ b/sys/edt/gstedtpdvsrc.h @@ -55,6 +55,7 @@ struct _GstEdtPdvSrc guint unit; guint channel; gchar *config_file_path; + guint num_ring_buffers; PdvDev *dev; gboolean acq_started;