add features used in proposed macOS native renderer

This commit is contained in:
F. Duncanh
2026-02-04 15:25:45 -05:00
parent 1e7a199324
commit 1b84706462
3 changed files with 36 additions and 0 deletions

View File

@@ -193,6 +193,8 @@ static uint32_t rtptime_start = 0;
static uint32_t rtptime_end = 0;
static uint32_t rtptime_coverart_expired = 0;
static std::string artist;
static std::string track_title;
static std::string track_album;
static std::string coverart_artist;
static std::string ble_filename = "";
static std::string rtp_pipeline = "";
@@ -1766,6 +1768,10 @@ static void process_metadata(int count, const char *dmap_tag, const unsigned cha
break;
case 'l':
metadata_text->append("Album: "); /*asal*/
if (render_coverart) {
track_album.erase();
track_album.append(metadata, metadata + datalen);
}
break;
case 'r':
metadata_text->append("Artist: "); /*asar*/
@@ -1849,6 +1855,10 @@ static void process_metadata(int count, const char *dmap_tag, const unsigned cha
} else if (strcmp (dmap_tag, "minm") == 0) {
dmap_type = 9;
metadata_text->append("Title: ");
if (render_coverart) {
track_title.erase();
track_title.append(metadata, metadata + datalen);
}
}
if (dmap_type == 9) {
@@ -2251,6 +2261,10 @@ extern "C" void report_client_request(void *cls, char *deviceid, char * model, c
*admit = false;
LOGI("*** attempt to connect by blocked client (clientID %s): DENIED\n", deviceid);
}
// Pass device model to renderer for device frame display
if (*admit && use_video) {
video_renderer_set_device_model(model, name);
}
}
extern "C" void audio_process (void *cls, raop_ntp_t *ntp, audio_decode_struct *data) {
@@ -2518,6 +2532,13 @@ extern "C" void audio_set_metadata(void *cls, const void *buffer, int buflen) {
if (buflen != 0) {
LOGE("%d bytes of metadata were not processed", buflen);
}
// Update video renderer with track metadata for cover art display
if (render_coverart) {
video_renderer_set_track_metadata(
track_title.length() ? track_title.c_str() : NULL,
artist.length() ? artist.c_str() : NULL,
track_album.length() ? track_album.c_str() : NULL);
}
}
extern "C" void register_client(void *cls, const char *device_id, const char *client_pk, const char *client_name) {