From 5bd733eaeb4441d2c3e1ea129aedc4d3819c2150 Mon Sep 17 00:00:00 2001 From: Gustavo Sverzut Barbieri Date: Tue, 27 Aug 2013 18:51:06 -0300 Subject: [PATCH] png: provide dlna information. --- src/plugins/png/png.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/src/plugins/png/png.c b/src/plugins/png/png.c index 9982b0a..b07dff9 100644 --- a/src/plugins/png/png.c +++ b/src/plugins/png/png.c @@ -42,6 +42,38 @@ #include #include +static const struct lms_string_size dlna_mime = + LMS_STATIC_STRING_SIZE("image/png"); +static const struct lms_string_size dlna_sm_ico = + LMS_STATIC_STRING_SIZE("PNG_SM_ICO"); +static const struct lms_string_size dlna_lrg_ico = + LMS_STATIC_STRING_SIZE("PNG_LRG_ICO"); +static const struct lms_string_size dlna_tn = + LMS_STATIC_STRING_SIZE("PNG_TN"); +static const struct lms_string_size dlna_lrg = + LMS_STATIC_STRING_SIZE("PNG_LRG"); + +static void +_fill_dlna_profile(struct lms_image_info *info) +{ + const unsigned short w = info->width; + const unsigned short h = info->height; + + info->dlna_mime = dlna_mime; + + if (w == 0 || h == 0) + return; + + if (w == 48 && h == 48) + info->dlna_profile = dlna_sm_ico; + else if (w == 120 && h == 120) + info->dlna_profile = dlna_lrg_ico; + else if (w <= 160 && h <= 160) + info->dlna_profile = dlna_tn; + else if (w <= 4096 && h <= 4096) + info->dlna_profile = dlna_lrg; +} + static inline unsigned int _chunk_to_uint(unsigned char *buf) { @@ -150,6 +182,8 @@ _parse(struct plugin *plugin, struct lms_context *ctxt, const struct lms_file_in if (info.artist.str) lms_charset_conv(ctxt->cs_conv, &info.artist.str, &info.artist.len); + _fill_dlna_profile(&info); + info.id = finfo->id; r = lms_db_image_add(plugin->img_db, &info); -- 2.7.4