aboutsummaryrefslogtreecommitdiff
path: root/libcrystfel/src/image.h
diff options
context:
space:
mode:
authorThomas White <taw@physics.org>2021-04-19 16:23:41 +0200
committerThomas White <taw@physics.org>2021-04-19 16:45:30 +0200
commitbd6f2aea61668638ddd2e934ce89e3715d30307d (patch)
tree071455c372988dda7217a277155d76e342d0f75c /libcrystfel/src/image.h
parentb126d28c8804fd30ca8934b3987e7a9cd1cfae93 (diff)
Unify loading of image data and header values
This moves the entry point for loading MsgPack data to a new function, image_read_data_block. Inside image.c, the image structure can be created using exactly the same functions as for data files.
Diffstat (limited to 'libcrystfel/src/image.h')
-rw-r--r--libcrystfel/src/image.h23
1 files changed, 23 insertions, 0 deletions
diff --git a/libcrystfel/src/image.h b/libcrystfel/src/image.h
index 181d0433..58228e35 100644
--- a/libcrystfel/src/image.h
+++ b/libcrystfel/src/image.h
@@ -88,6 +88,16 @@ struct header_cache_entry {
};
+typedef enum
+{
+ DST_UNKNOWN,
+ DST_HDF5,
+ DST_CBF,
+ DST_CBFGZ,
+ DST_MSGPACK
+} DataSourceType;
+
+
struct image
{
/** The image data, by panel */
@@ -117,12 +127,19 @@ struct image
/** The detector structure */
struct detgeom *detgeom;
+ DataSourceType data_source_type;
+
/** \name The filename and event ID for the image
* @{ */
char *filename;
char *ev;
/** @} */
+ /** The data block, e.g. received over ZMQ, for the image.
+ * filenename/ev OR this should be filled in, but not both */
+ void *data_block;
+ size_t data_block_size;
+
/** A list of metadata read from the stream */
struct header_cache_entry *header_cache[HEADER_CACHE_SIZE];
int n_cached_headers;
@@ -195,6 +212,12 @@ extern struct image *image_read(const DataTemplate *dtempl,
int no_image_data,
int no_mask_data);
extern struct image *image_create_for_simulation(const DataTemplate *dtempl);
+extern struct image *image_read_data_block(const DataTemplate *dtempl,
+ void *data_block,
+ size_t data_block_size,
+ DataSourceType type,
+ int no_image_data,
+ int no_mask_data);
extern void image_free(struct image *image);
extern void image_cache_header_float(struct image *image,