[player] cleanup metadata_trigger
metadata_trigger is always called for the current streaming item and source_open makes sure that the stream_start and output_start values are set correctly
This commit is contained in:
parent
64698eb3a4
commit
064dfef2de
30
src/player.c
30
src/player.c
|
@ -725,31 +725,19 @@ metadata_purge(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
metadata_trigger(struct player_source *ps, int startup)
|
metadata_trigger(int startup)
|
||||||
{
|
{
|
||||||
struct player_metadata pmd;
|
struct player_metadata pmd;
|
||||||
|
|
||||||
memset(&pmd, 0, sizeof(struct player_metadata));
|
memset(&pmd, 0, sizeof(struct player_metadata));
|
||||||
|
|
||||||
pmd.id = ps->id;
|
pmd.id = cur_streaming->id;
|
||||||
pmd.startup = startup;
|
pmd.startup = startup;
|
||||||
|
|
||||||
/* Determine song boundaries, dependent on context */
|
if (cur_streaming->stream_start && cur_streaming->output_start)
|
||||||
|
|
||||||
/* Restart after pause/seek */
|
|
||||||
if (ps->stream_start)
|
|
||||||
{
|
{
|
||||||
pmd.offset = ps->output_start - ps->stream_start;
|
pmd.offset = cur_streaming->output_start - cur_streaming->stream_start;
|
||||||
pmd.rtptime = ps->stream_start;
|
pmd.rtptime = cur_streaming->stream_start;
|
||||||
}
|
|
||||||
else if (startup)
|
|
||||||
{
|
|
||||||
/* Will be set later, right before sending */
|
|
||||||
}
|
|
||||||
/* Generic case */
|
|
||||||
else if (cur_streaming && (cur_streaming->end))
|
|
||||||
{
|
|
||||||
pmd.rtptime = cur_streaming->end + 1;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -783,7 +771,7 @@ metadata_check_icy(void)
|
||||||
worker_execute(update_icy_cb, metadata, sizeof(struct http_icy_metadata), 0);
|
worker_execute(update_icy_cb, metadata, sizeof(struct http_icy_metadata), 0);
|
||||||
|
|
||||||
/* Triggers preparing and sending RAOP metadata */
|
/* Triggers preparing and sending RAOP metadata */
|
||||||
metadata_trigger(cur_streaming, 0);
|
metadata_trigger(0);
|
||||||
|
|
||||||
/* Only free the struct, the content must be preserved for update_icy_cb */
|
/* Only free the struct, the content must be preserved for update_icy_cb */
|
||||||
free(metadata);
|
free(metadata);
|
||||||
|
@ -815,7 +803,7 @@ history_add(uint32_t id)
|
||||||
cur_index = (history->start_index + history->count - 1) % MAX_HISTORY_COUNT;
|
cur_index = (history->start_index + history->count - 1) % MAX_HISTORY_COUNT;
|
||||||
if (id == history->id[cur_index])
|
if (id == history->id[cur_index])
|
||||||
{
|
{
|
||||||
DPRINTF(E_LOG, L_PLAYER, "Current playing/streaming song already in history\n");
|
DPRINTF(E_DBG, L_PLAYER, "Current playing/streaming song already in history\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1551,7 +1539,7 @@ source_read(uint8_t *buf, int len, uint64_t rtptime)
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
metadata_trigger(cur_streaming, 0);
|
metadata_trigger(0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -2475,7 +2463,7 @@ playback_start_item(struct player_command *cmd, struct queue_item_info *qii)
|
||||||
if (dbmfi_id)
|
if (dbmfi_id)
|
||||||
*dbmfi_id = cur_streaming->id;
|
*dbmfi_id = cur_streaming->id;
|
||||||
|
|
||||||
metadata_trigger(cur_streaming, 1);
|
metadata_trigger(1);
|
||||||
|
|
||||||
|
|
||||||
/* Start local audio if needed */
|
/* Start local audio if needed */
|
||||||
|
|
Loading…
Reference in New Issue