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

@@ -657,6 +657,19 @@ void video_renderer_stop() {
}
}
void video_renderer_set_device_model(const char *model, const char *name) {
// Device frame not supported in GStreamer renderer
(void)model;
(void)name;
}
void video_renderer_set_track_metadata(const char *title, const char *artist, const char *album) {
// Track metadata display not supported in GStreamer renderer
(void)title;
(void)artist;
(void)album;
}
static void video_renderer_destroy_instance(video_renderer_t *renderer) {
if (renderer) {
logger_log(logger, LOGGER_DEBUG,"destroying renderer instance %p codec=%s ", renderer, renderer->codec);

View File

@@ -53,6 +53,8 @@ void video_renderer_init (logger_t *logger, const char *server_name, videoflip_t
guint playbin_version, const char *uri);
void video_renderer_start ();
void video_renderer_stop ();
void video_renderer_set_device_model(const char *model, const char *name);
void video_renderer_set_track_metadata(const char *title, const char *artist, const char *album);
void video_renderer_pause ();
void video_renderer_hls_ready ();
void video_renderer_seek(float position);

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) {