static GstStateChangeReturn gst_tensor_src_iio_change_state (GstElement *
element, GstStateChange transition);
static gboolean gst_tensor_src_iio_event (GstBaseSrc * src, GstEvent * event);
-static gboolean gst_tensor_src_iio_query (GstBaseSrc * src, GstQuery * query);
static gboolean gst_tensor_src_iio_set_caps (GstBaseSrc * src, GstCaps * caps);
static GstCaps *gst_tensor_src_iio_get_caps (GstBaseSrc * src,
GstCaps * filter);
bsrc_class->start = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_start);
bsrc_class->stop = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_stop);
bsrc_class->event = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_event);
- bsrc_class->query = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_query);
bsrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_set_caps);
bsrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_get_caps);
bsrc_class->fixate = GST_DEBUG_FUNCPTR (gst_tensor_src_iio_fixate);
gst_base_src_set_live (GST_BASE_SRC (self), TRUE);
/** set the timestamps on each buffer */
gst_base_src_set_do_timestamp (GST_BASE_SRC (self), TRUE);
+ /**
+ * set async is necessary to make state change async
+ * sync state changes does not need calling _start_complete() from _start()
+ */
+ gst_base_src_set_async (GST_BASE_SRC (self), TRUE);
}
/**
}
/**
- * @brief handle queries
- */
-static gboolean
-gst_tensor_src_iio_query (GstBaseSrc * src, GstQuery * query)
-{
- gboolean res = FALSE;
-
- switch (GST_QUERY_TYPE (query)) {
- case GST_QUERY_SCHEDULING:
- {
- /** Only support sequential data access */
- gst_query_set_scheduling (query, GST_SCHEDULING_FLAG_SEQUENTIAL, 1, -1,
- 0);
- /** Only support push mode for now */
- gst_query_add_scheduling_mode (query, GST_PAD_MODE_PUSH);
-
- res = TRUE;
- break;
- }
- default:
- res = GST_BASE_SRC_CLASS (parent_class)->query (src, query);
- break;
- }
-
- return res;
-}
-
-/**
* @brief set new caps
*/
static gboolean
iio_dev->dev_device_dir =
g_build_filename (iio_dev->dev_dir, device_folder_name, NULL);
+ iio_dev->log_file = NULL;
+
PREV_IIO_DEV_DIR = IIO_DEV_DIR;
IIO_DEV_DIR = g_strdup (iio_dev->dev_dir);
safe_remove (const char *filename)
{
/** cover for both regular file as well as pipes */
- if (g_file_test (filename, G_FILE_TEST_EXISTS)
+ if (filename && g_file_test (filename, G_FILE_TEST_EXISTS)
&& !g_file_test (filename, G_FILE_TEST_IS_DIR)) {
return remove (filename);
}
static gint
safe_rmdir (const char *dirname)
{
- if (g_file_test (dirname, G_FILE_TEST_IS_DIR)) {
+ if (dirname && g_file_test (dirname, G_FILE_TEST_IS_DIR)) {
return rmdir (dirname);
}
return 0;