{
gsize write_size = 0;
GstMapInfo info;
+ GstFlowReturn ret = GST_FLOW_OK;
g_return_val_if_fail (sink != NULL, GST_FLOW_ERROR);
g_return_val_if_fail (buffer != NULL, GST_FLOW_ERROR);
g_return_val_if_fail (sink->fd != 0, GST_FLOW_ERROR);
+ if (!gst_buffer_map (buffer, &info, GST_MAP_READ)) {
+ GST_ERROR_OBJECT (sink, "Failed to map the incoming buffer.");
+ return GST_FLOW_ERROR;
+ }
+
GST_OBJECT_LOCK (sink);
- gst_buffer_map (buffer, &info, GST_MAP_READ);
sink->sample_size = info.size;
GST_LOG_OBJECT (sink,
write_size = write (sink->fd, info.data, info.size);
- gst_buffer_unmap (buffer, &info);
- GST_OBJECT_UNLOCK (sink);
-
if (write_size != info.size) {
GST_ERROR_OBJECT (sink, "Could not write data to file");
- return GST_FLOW_ERROR;
+ ret = GST_FLOW_ERROR;
+ } else {
+ sink->fd_offset += write_size;
+ sink->total_samples++;
}
- sink->fd_offset += write_size;
- sink->total_samples++;
+ GST_OBJECT_UNLOCK (sink);
+ gst_buffer_unmap (buffer, &info);
- return GST_FLOW_OK;
+ return ret;
}
/**
gst_data_repo_sink_write_multi_images (GstDataRepoSink * sink,
GstBuffer * buffer)
{
- gchar *filename;
- gboolean ret;
+ g_autofree gchar *filename = NULL;
+ GstFlowReturn ret = GST_FLOW_OK;
GError *error = NULL;
GstMapInfo info;
g_return_val_if_fail (sink != NULL, GST_FLOW_ERROR);
g_return_val_if_fail (buffer != NULL, GST_FLOW_ERROR);
+ if (!gst_buffer_map (buffer, &info, GST_MAP_READ)) {
+ GST_ERROR_OBJECT (sink, "Failed to map the incoming buffer.");
+ return GST_FLOW_ERROR;
+ }
+
filename = gst_data_repo_sink_get_image_filename (sink);
GST_OBJECT_LOCK (sink);
- gst_buffer_map (buffer, &info, GST_MAP_READ);
-
sink->sample_size = info.size;
GST_DEBUG_OBJECT (sink, "Writing to file \"%s\", size(%zd)", filename,
info.size);
- ret = g_file_set_contents (filename, (char *) info.data, info.size, &error);
-
- gst_buffer_unmap (buffer, &info);
- GST_OBJECT_UNLOCK (sink);
-
- g_free (filename);
- if (!ret) {
+ if (!g_file_set_contents (filename, (char *) info.data, info.size, &error)) {
GST_ERROR_OBJECT (sink, "Could not write data to file: %s",
error ? error->message : "unknown error");
g_clear_error (&error);
- return GST_FLOW_ERROR;
+ ret = GST_FLOW_ERROR;
+ } else {
+ sink->total_samples++;
}
- sink->total_samples++;
+ GST_OBJECT_UNLOCK (sink);
+ gst_buffer_unmap (buffer, &info);
- return GST_FLOW_OK;
+ return ret;
}
/**
*/
TEST (datareposrc, readSparseTensors)
{
- gchar *data = NULL;
+ gchar *sparse_data = NULL, *sample_data = NULL;
gsize size, org_size = 31760;
gint buffer_count = 0;
GstElement *tensor_sink;
gst_object_unref (pipeline);
g_main_loop_unref (loop);
- if (!g_file_get_contents ("sparse.data", &data, &size, NULL)) {
+ if (!g_file_get_contents ("sparse.data", &sparse_data, &size, NULL)) {
goto error;
}
EXPECT_LT (size, org_size);
- g_free (data);
- if (!g_file_get_contents ("sample.data", &data, &size, NULL)) {
+ if (!g_file_get_contents ("sample.data", &sample_data, &size, NULL)) {
goto error;
}
EXPECT_EQ (size, org_size);
error:
- g_free (data);
+ g_free (sparse_data);
+ g_free (sample_data);
g_remove ("sparse.json");
g_remove ("sparse.data");
g_remove ("sample.data");