mirror of
https://github.com/sle118/squeezelite-esp32.git
synced 2025-12-08 04:27:12 +03:00
Fix AirPlay artwork disappearing
This commit is contained in:
@@ -626,15 +626,19 @@ static bool handle_rtsp(raop_ctx_t *ctx, int sock)
|
|||||||
struct metadata_s metadata;
|
struct metadata_s metadata;
|
||||||
dmap_settings settings = {
|
dmap_settings settings = {
|
||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, on_dmap_string, NULL,
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, on_dmap_string, NULL,
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
settings.ctx = &metadata;
|
||||||
memset(&metadata, 0, sizeof(struct metadata_s));
|
memset(&metadata, 0, sizeof(struct metadata_s));
|
||||||
settings.ctx = &metadata;
|
if (!dmap_parse(&settings, body, len)) {
|
||||||
uint32_t timestamp = 0;
|
uint32_t timestamp = 0;
|
||||||
if ((p = kd_lookup(headers, "RTP-Info")) != NULL) sscanf(p, "%*[^=]=%d", ×tamp);
|
if ((p = kd_lookup(headers, "RTP-Info")) != NULL) sscanf(p, "%*[^=]=%d", ×tamp);
|
||||||
LOG_INFO("[%p]: received metadata (ts: %d)\n\tartist: %s\n\talbum: %s\n\ttitle: %s",
|
LOG_INFO("[%p]: received metadata (ts: %d)\n\tartist: %s\n\talbum: %s\n\ttitle: %s",
|
||||||
ctx, metadata.artist ? metadata.artist : "", metadata.album ? metadata.album : "",
|
ctx, timestamp, metadata.artist ? metadata.artist : "", metadata.album ? metadata.album : "",
|
||||||
metadata.title ? metadata.title : "");
|
metadata.title ? metadata.title : "");
|
||||||
|
success = ctx->cmd_cb(RAOP_METADATA, timestamp, metadata.artist, metadata.album, metadata.title);
|
||||||
|
free_metadata(&metadata);
|
||||||
}
|
}
|
||||||
} else if (body && ((p = kd_lookup(headers, "Content-Type")) != NULL) && strcasestr(p, "image/jpeg")) {
|
} else if (body && ((p = kd_lookup(headers, "Content-Type")) != NULL) && strcasestr(p, "image/jpeg")) {
|
||||||
uint32_t timestamp = 0;
|
uint32_t timestamp = 0;
|
||||||
|
|||||||
@@ -113,6 +113,7 @@ static bool cmd_handler(raop_event_t event, ...) {
|
|||||||
case RAOP_SETUP:
|
case RAOP_SETUP:
|
||||||
actrls_set(controls, false, NULL, actrls_ir_action);
|
actrls_set(controls, false, NULL, actrls_ir_action);
|
||||||
displayer_control(DISPLAYER_ACTIVATE, "AIRPLAY", true);
|
displayer_control(DISPLAYER_ACTIVATE, "AIRPLAY", true);
|
||||||
|
displayer_artwork(NULL);
|
||||||
break;
|
break;
|
||||||
case RAOP_PLAY:
|
case RAOP_PLAY:
|
||||||
displayer_control(DISPLAYER_TIMER_RUN);
|
displayer_control(DISPLAYER_TIMER_RUN);
|
||||||
@@ -130,12 +131,13 @@ static bool cmd_handler(raop_event_t event, ...) {
|
|||||||
displayer_control(DISPLAYER_SUSPEND);
|
displayer_control(DISPLAYER_SUSPEND);
|
||||||
break;
|
break;
|
||||||
case RAOP_METADATA: {
|
case RAOP_METADATA: {
|
||||||
|
uint32_t timestamp = va_arg(args, uint32_t);
|
||||||
char *artist = va_arg(args, char*), *album = va_arg(args, char*), *title = va_arg(args, char*);
|
char *artist = va_arg(args, char*), *album = va_arg(args, char*), *title = va_arg(args, char*);
|
||||||
displayer_metadata(artist, album, title);
|
displayer_metadata(artist, album, title);
|
||||||
displayer_artwork(NULL);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case RAOP_ARTWORK: {
|
case RAOP_ARTWORK: {
|
||||||
|
uint32_t timestamp = va_arg(args, uint32_t);
|
||||||
uint8_t *data = va_arg(args, uint8_t*);
|
uint8_t *data = va_arg(args, uint8_t*);
|
||||||
displayer_artwork(data);
|
displayer_artwork(data);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user