decoder_api: added decoder_tag()
Provide an API for submitting additional tags from the stream.
This commit is contained in:
parent
5b13f067cd
commit
020c04e702
@ -179,7 +179,9 @@ static struct tag *oggCommentsParse(char **comments)
|
|||||||
return tag;
|
return tag;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void putOggCommentsIntoOutputBuffer(char *streamName,
|
static void putOggCommentsIntoOutputBuffer(struct decoder *decoder,
|
||||||
|
struct input_stream *is,
|
||||||
|
char *streamName,
|
||||||
char **comments)
|
char **comments)
|
||||||
{
|
{
|
||||||
struct tag *tag;
|
struct tag *tag;
|
||||||
@ -196,6 +198,7 @@ static void putOggCommentsIntoOutputBuffer(char *streamName,
|
|||||||
tag_add_item(tag, TAG_ITEM_NAME, streamName);
|
tag_add_item(tag, TAG_ITEM_NAME, streamName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
decoder_tag(decoder, is, tag);
|
||||||
tag_free(tag);
|
tag_free(tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,7 +287,8 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
|||||||
initialized = true;
|
initialized = true;
|
||||||
}
|
}
|
||||||
comments = ov_comment(&vf, -1)->user_comments;
|
comments = ov_comment(&vf, -1)->user_comments;
|
||||||
putOggCommentsIntoOutputBuffer(inStream->meta_name,
|
putOggCommentsIntoOutputBuffer(decoder, inStream,
|
||||||
|
inStream->meta_name,
|
||||||
comments);
|
comments);
|
||||||
ogg_getReplayGainInfo(comments, &replayGainInfo);
|
ogg_getReplayGainInfo(comments, &replayGainInfo);
|
||||||
}
|
}
|
||||||
|
@ -190,3 +190,16 @@ decoder_data(struct decoder *decoder,
|
|||||||
|
|
||||||
return DECODE_COMMAND_NONE;
|
return DECODE_COMMAND_NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum decoder_command
|
||||||
|
decoder_tag(mpd_unused struct decoder *decoder, struct input_stream *is,
|
||||||
|
const struct tag *tag)
|
||||||
|
{
|
||||||
|
while (!music_pipe_tag(tag)) {
|
||||||
|
enum decoder_command cmd = need_chunks(is);
|
||||||
|
if (cmd != DECODE_COMMAND_NONE)
|
||||||
|
return cmd;
|
||||||
|
}
|
||||||
|
|
||||||
|
return DECODE_COMMAND_NONE;
|
||||||
|
}
|
||||||
|
@ -155,4 +155,15 @@ decoder_data(struct decoder *decoder,
|
|||||||
void *data, size_t datalen, float data_time, uint16_t bitRate,
|
void *data, size_t datalen, float data_time, uint16_t bitRate,
|
||||||
ReplayGainInfo * replayGainInfo);
|
ReplayGainInfo * replayGainInfo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This function is called by the decoder plugin when it has
|
||||||
|
* successfully decoded a tag.
|
||||||
|
*
|
||||||
|
* @param is an input stream which is buffering while we are waiting
|
||||||
|
* for the player
|
||||||
|
*/
|
||||||
|
enum decoder_command
|
||||||
|
decoder_tag(struct decoder *decoder, struct input_stream *is,
|
||||||
|
const struct tag *tag);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user