[tracker/custom-dlna: 3/3] tracker-extract: Make JPEG module handle DLNA profiles
- From: Carlos Garnacho <carlosg src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [tracker/custom-dlna: 3/3] tracker-extract: Make JPEG module handle DLNA profiles
- Date: Mon, 13 Jun 2011 15:00:31 +0000 (UTC)
commit f6a4325ad803b1ec991b2cec0ab2e8a25cf8cc02
Author: Carlos Garnacho <carlosg gnome org>
Date: Fri May 27 17:53:25 2011 +0200
tracker-extract: Make JPEG module handle DLNA profiles
In this extractor makes little sense to perform calls to any
dlna library as we have all the necessary data right there.
src/tracker-extract/tracker-extract-jpeg.c | 51 ++++++++++++++++++++++++++++
1 files changed, 51 insertions(+), 0 deletions(-)
---
diff --git a/src/tracker-extract/tracker-extract-jpeg.c b/src/tracker-extract/tracker-extract-jpeg.c
index e30c2f3..36c7ab2 100644
--- a/src/tracker-extract/tracker-extract-jpeg.c
+++ b/src/tracker-extract/tracker-extract-jpeg.c
@@ -94,6 +94,51 @@ extract_jpeg_error_exit (j_common_ptr cinfo)
longjmp (h->setjmp_buffer, 1);
}
+static gboolean
+guess_dlna_profile (gint width,
+ gint height,
+ const gchar **dlna_profile,
+ const gchar **dlna_mimetype)
+{
+ gchar *profile = NULL;
+
+ if (dlna_profile) {
+ *dlna_profile = NULL;
+ }
+
+ if (dlna_mimetype) {
+ *dlna_mimetype = NULL;
+ }
+
+ if (width == 48 && height == 48) {
+ profile = "JPEG_SM_ICO";
+ } else if (width == 120 && height == 120) {
+ profile = "JPEG_LRG_ICO";
+ } else if (width <= 160 && height <= 160) {
+ profile = "JPEG_TN";
+ } else if (width <= 640 && height <= 480) {
+ profile = "JPEG_SM";
+ } else if (width <= 1024 && height <= 768) {
+ profile = "JPEG_MED";
+ } else if (width <= 4096 && height <= 4096) {
+ profile = "JPEG_LRG";
+ }
+
+ if (profile) {
+ if (dlna_profile) {
+ *dlna_profile = profile;
+ }
+
+ if (dlna_mimetype) {
+ *dlna_mimetype = "image/jpeg";
+ }
+
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
G_MODULE_EXPORT gboolean
tracker_extract_get_metadata (const gchar *uri,
const gchar *mimetype,
@@ -112,6 +157,7 @@ tracker_extract_get_metadata (const gchar *uri,
goffset size;
gchar *filename;
gchar *comment = NULL;
+ const gchar *dlna_profile;
GPtrArray *keywords;
gboolean success = TRUE;
guint i;
@@ -270,6 +316,11 @@ tracker_extract_get_metadata (const gchar *uri,
tracker_sparql_builder_predicate (metadata, "nfo:height");
tracker_sparql_builder_object_int64 (metadata, cinfo.image_height);
+ if (guess_dlna_profile (cinfo.image_width, cinfo.image_height, &dlna_profile, NULL)) {
+ tracker_sparql_builder_predicate (metadata, "nmm:dlnaProfile");
+ tracker_sparql_builder_object_string (metadata, dlna_profile);
+ }
+
if (id->contact) {
gchar *uri = tracker_sparql_escape_uri_printf ("urn:contact:%s", id->contact);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]