[grilo] core: Add support for binary thumbnails



commit 81972d8db63df0608abf39df099019807524593f
Author: Fabien Lebaillif - Delamare <fabien developers arq-media com>
Date:   Thu Jan 20 12:39:08 2011 +0100

    core: Add support for binary thumbnails
    
    Add a new property, "thumbnail-binary", to directly store thumbnails.
    
    Signed-off-by: Juan A. Suarez Romero <jasuarez igalia com>

 src/data/grl-media.c   |   32 ++++++++++++++++++++++++++++++++
 src/data/grl-media.h   |    4 ++++
 src/grl-metadata-key.c |   11 +++++++++++
 src/grl-metadata-key.h |    1 +
 4 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/src/data/grl-media.c b/src/data/grl-media.c
index 21fe538..0a41bb9 100644
--- a/src/data/grl-media.c
+++ b/src/data/grl-media.c
@@ -493,6 +493,23 @@ grl_media_set_thumbnail (GrlMedia *data, const gchar *thumbnail)
 }
 
 /**
+ * grl_media_set_thumbnail_binary:
+ * @data: the media
+ * @thumbnail: thumbnail buffer
+ * @size: thumbnail buffer size
+ *
+ * Set the media's binary thumbnail
+ */
+void
+grl_media_set_thumbnail_binary (GrlMedia *data, const guint8 *thumbnail, gsize size)
+{
+  grl_data_set_binary (GRL_DATA (data),
+                       GRL_METADATA_KEY_THUMBNAIL_BINARY,
+                       thumbnail,
+                       size);
+}
+
+/**
  * grl_media_set_site:
  * @data: the media
  * @site: the site
@@ -793,6 +810,21 @@ grl_media_get_thumbnail (GrlMedia *data)
 }
 
 /**
+ * grl_media_get_thumbnail_binary:
+ * @data: the media object
+ * @size: pointer to storing the thumbnail buffer size
+ *
+ * Returns: the media's thumbnail data and set size to the thumbnail buffer size
+ */
+const guint8 *
+grl_media_get_thumbnail_binary (GrlMedia *data, gsize *size)
+{
+  return grl_data_get_binary (GRL_DATA (data),
+                              GRL_METADATA_KEY_THUMBNAIL_BINARY,
+                              size);
+}
+
+/**
  * grl_media_get_site:
  * @data: the media object
  *
diff --git a/src/data/grl-media.h b/src/data/grl-media.h
index 4d2f9e3..31c2928 100644
--- a/src/data/grl-media.h
+++ b/src/data/grl-media.h
@@ -113,6 +113,8 @@ void grl_media_set_source (GrlMedia *data, const gchar *source);
 
 void grl_media_set_thumbnail (GrlMedia *data, const gchar *thumbnail);
 
+void grl_media_set_thumbnail_binary (GrlMedia *data, const guint8 *thumbnail, gsize size);
+
 void grl_media_set_site (GrlMedia *data, const gchar *site);
 
 void grl_media_set_duration (GrlMedia *data, gint duration);
@@ -153,6 +155,8 @@ const gchar *grl_media_get_source (GrlMedia *data);
 
 const gchar *grl_media_get_thumbnail (GrlMedia *data);
 
+const guint8 *grl_media_get_thumbnail_binary (GrlMedia *data, gsize *size);
+
 const gchar *grl_media_get_site (GrlMedia *data);
 
 gint grl_media_get_duration (GrlMedia *data);
diff --git a/src/grl-metadata-key.c b/src/grl-metadata-key.c
index 57c7203..92e7a10 100644
--- a/src/grl-metadata-key.c
+++ b/src/grl-metadata-key.c
@@ -39,6 +39,7 @@ GrlKeyID GRL_METADATA_KEY_MIME = NULL;
 GrlKeyID GRL_METADATA_KEY_SITE = NULL;
 GrlKeyID GRL_METADATA_KEY_SOURCE = NULL;
 GrlKeyID GRL_METADATA_KEY_THUMBNAIL = NULL;
+GrlKeyID GRL_METADATA_KEY_THUMBNAIL_BINARY = NULL;
 GrlKeyID GRL_METADATA_KEY_TITLE = NULL;
 
 GrlKeyID GRL_METADATA_KEY_URL = NULL;
@@ -167,6 +168,16 @@ grl_metadata_key_setup_system_keys (GrlPluginRegistry *registry)
                                                                     NULL,
                                                                     G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
                                                NULL);
+
+  GRL_METADATA_KEY_THUMBNAIL_BINARY =
+    grl_plugin_registry_register_metadata_key (registry,
+                                               g_param_spec_boxed ("thumbnail-binary",
+                                                                   "Thumbnail Binary",
+                                                                   "Thumbnail binary image",
+                                                                   G_TYPE_BYTE_ARRAY,
+                                                                   G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE),
+
+                                               NULL);
   GRL_METADATA_KEY_TITLE =
     grl_plugin_registry_register_metadata_key (registry,
                                                g_param_spec_string ("title",
diff --git a/src/grl-metadata-key.h b/src/grl-metadata-key.h
index f0521e8..f4f1c11 100644
--- a/src/grl-metadata-key.h
+++ b/src/grl-metadata-key.h
@@ -69,6 +69,7 @@ extern GrlKeyID GRL_METADATA_KEY_SITE;
 extern GrlKeyID GRL_METADATA_KEY_SOURCE;
 extern GrlKeyID GRL_METADATA_KEY_STUDIO;
 extern GrlKeyID GRL_METADATA_KEY_THUMBNAIL;
+extern GrlKeyID GRL_METADATA_KEY_THUMBNAIL_BINARY;
 extern GrlKeyID GRL_METADATA_KEY_TITLE;
 extern GrlKeyID GRL_METADATA_KEY_URL;
 extern GrlKeyID GRL_METADATA_KEY_WIDTH;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]