[Spice-devel] [PATCH] Add some documentation to image-encoders header
Frediano Ziglio
fziglio at redhat.com
Mon Jun 20 09:09:43 UTC 2016
Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
server/image-encoders.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 48 insertions(+)
diff --git a/server/image-encoders.h b/server/image-encoders.h
index e07c036..230dd7c 100644
--- a/server/image-encoders.h
+++ b/server/image-encoders.h
@@ -45,15 +45,49 @@ void image_encoder_shared_stat_print(const ImageEncoderSharedData *shared_data);
void image_encoders_init(ImageEncoders *enc, ImageEncoderSharedData *shared_data);
void image_encoders_free(ImageEncoders *enc);
+
+/**
+ * Free Glz images which are no more retained.
+ * Caller should prevent encoding using the dictionary during the operation.
+ */
int image_encoders_free_some_independent_glz_drawables(ImageEncoders *enc);
+
+/**
+ * Free all Glz images build from these encoders.
+ */
void image_encoders_free_glz_drawables(ImageEncoders *enc);
+
+/**
+ * Free all Glz images marked as freed.
+ * Images are marked as freed when removed from Glz dictionary but
+ * was not possible to free as the removal was from another thread.
+ */
void image_encoders_free_glz_drawables_to_free(ImageEncoders* enc);
+
gboolean image_encoders_glz_create(ImageEncoders *enc, uint8_t id);
void image_encoders_glz_get_restore_data(ImageEncoders *enc,
uint8_t *out_id, GlzEncDictRestoreData *out_data);
+
+/**
+ * Disable Glz encoding on a given encoder.
+ */
gboolean image_encoders_glz_encode_lock(ImageEncoders *enc);
+
+/**
+ * Enable again Glz encoding on a given encoder.
+ */
void image_encoders_glz_encode_unlock(ImageEncoders *enc);
+
+/**
+ * Free all Glz images associated with a retention structure.
+ * Caller should prevent encoding using the dictionary during the operation.
+ */
void glz_retention_free_drawables(GlzImageRetention *ret);
+
+/**
+ * Mark all Glz images associated with a retention structure
+ * as not retained.
+ */
void glz_retention_detach_drawables(GlzImageRetention *ret);
#define RED_COMPRESS_BUF_SIZE (1024 * 64)
@@ -132,6 +166,12 @@ typedef struct {
EncoderData data;
} GlzData;
+/**
+ * This structure is used to associate Glz images to be freed.
+ * Can be used to notify that attached images should be freed
+ * or are no more associated and could be freed later if
+ * needed.
+ */
struct GlzImageRetention {
Ring ring;
};
@@ -204,6 +244,14 @@ int image_encoders_compress_jpeg(ImageEncoders *enc, SpiceImage *dest,
SpiceBitmap *src, compress_send_data_t* o_comp_data);
int image_encoders_compress_lz4(ImageEncoders *enc, SpiceImage *dest,
SpiceBitmap *src, compress_send_data_t* o_comp_data);
+
+/**
+ * Compress an image with Glz.
+ * Glz use a shared dictionary which needs to access images stored
+ * in RedDrawables even after the compression took place.
+ * For this reason these drawables are marked in a GlzImageRetention
+ * structure.
+ */
int image_encoders_compress_glz(ImageEncoders *enc,
SpiceImage *dest, SpiceBitmap *src,
RedDrawable *red_drawable,
--
2.7.4
More information about the Spice-devel
mailing list