decoder_api: send song tag in decoder_data()

Before passing the first chunk to the audio output device, send the
current song's tag.
This commit is contained in:
Max Kellermann 2008-11-03 20:20:09 +01:00
parent ac96022c1d
commit b3dfcfef52
1 changed files with 24 additions and 6 deletions

View File

@ -176,14 +176,32 @@ decoder_data(struct decoder *decoder,
char *data;
if (is != NULL && !decoder->stream_tag_sent) {
struct tag *tag1 = tag_new(), *tag2;
const struct tag *src;
struct tag *tag1, *tag2;
tag2 = tag_add_stream_tags(tag1, is);
tag_free(tag1);
/* base is the current song's tag, or an empty new
tag if the song has no tag */
src = dc.current_song->tag;
if (src == NULL)
src = tag1 = tag_new();
else
tag1 = NULL;
if (tag2 != NULL) {
music_pipe_tag(tag2);
tag_free(tag2);
tag2 = tag_add_stream_tags(src, is);
if (tag1 != NULL)
/* free the empty tag created by tag_new(), we
aren't going to send it */
tag_free(tag1);
if (tag2 != NULL)
/* use the composite tag returned by
tag_add_stream_tags() */
src = tag2;
if (src != NULL) {
music_pipe_tag(src);
if (tag2 != NULL)
tag_free(tag2);
}
decoder->stream_tag_sent = true;