From 204c9681caa2da890e4fbe19d4417656b82728a7 Mon Sep 17 00:00:00 2001 From: Julien BLACHE Date: Wed, 30 Mar 2011 19:35:13 +0200 Subject: [PATCH] Enable and handle JPEG artwork in DAAP --- src/httpd_daap.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/src/httpd_daap.c b/src/httpd_daap.c index f2dd6cf9..a15f718d 100644 --- a/src/httpd_daap.c +++ b/src/httpd_daap.c @@ -2643,6 +2643,7 @@ daap_reply_extra_data(struct evhttp_request *req, struct evbuffer *evbuf, char * char clen[32]; struct daap_session *s; const char *param; + char *ctype; int id; int max_w; int max_h; @@ -2696,20 +2697,29 @@ daap_reply_extra_data(struct evhttp_request *req, struct evbuffer *evbuf, char * } if (strcmp(uri[2], "groups") == 0) - ret = artwork_get_group(id, max_w, max_h, ART_CAN_PNG, evbuf); + ret = artwork_get_group(id, max_w, max_h, ART_CAN_PNG | ART_CAN_JPEG, evbuf); else if (strcmp(uri[2], "items") == 0) - ret = artwork_get_item(id, max_w, max_h, ART_CAN_PNG, evbuf); + ret = artwork_get_item(id, max_w, max_h, ART_CAN_PNG | ART_CAN_JPEG, evbuf); - if (ret < 0) + switch (ret) { - if (EVBUFFER_LENGTH(evbuf) > 0) - evbuffer_drain(evbuf, EVBUFFER_LENGTH(evbuf)); + case ART_FMT_PNG: + ctype = "image/png"; + break; - goto no_artwork; + case ART_FMT_JPEG: + ctype = "image/jpeg"; + break; + + default: + if (EVBUFFER_LENGTH(evbuf) > 0) + evbuffer_drain(evbuf, EVBUFFER_LENGTH(evbuf)); + + goto no_artwork; } evhttp_remove_header(req->output_headers, "Content-Type"); - evhttp_add_header(req->output_headers, "Content-Type", "image/png"); + evhttp_add_header(req->output_headers, "Content-Type", ctype); snprintf(clen, sizeof(clen), "%ld", (long)EVBUFFER_LENGTH(evbuf)); evhttp_add_header(req->output_headers, "Content-Length", clen);