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;
|
||||
}
|
||||
|
||||
static void putOggCommentsIntoOutputBuffer(char *streamName,
|
||||
static void putOggCommentsIntoOutputBuffer(struct decoder *decoder,
|
||||
struct input_stream *is,
|
||||
char *streamName,
|
||||
char **comments)
|
||||
{
|
||||
struct tag *tag;
|
||||
@ -196,6 +198,7 @@ static void putOggCommentsIntoOutputBuffer(char *streamName,
|
||||
tag_add_item(tag, TAG_ITEM_NAME, streamName);
|
||||
}
|
||||
|
||||
decoder_tag(decoder, is, tag);
|
||||
tag_free(tag);
|
||||
}
|
||||
|
||||
@ -284,7 +287,8 @@ oggvorbis_decode(struct decoder *decoder, struct input_stream *inStream)
|
||||
initialized = true;
|
||||
}
|
||||
comments = ov_comment(&vf, -1)->user_comments;
|
||||
putOggCommentsIntoOutputBuffer(inStream->meta_name,
|
||||
putOggCommentsIntoOutputBuffer(decoder, inStream,
|
||||
inStream->meta_name,
|
||||
comments);
|
||||
ogg_getReplayGainInfo(comments, &replayGainInfo);
|
||||
}
|
||||
|
@ -190,3 +190,16 @@ decoder_data(struct decoder *decoder,
|
||||
|
||||
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,
|
||||
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
|
||||
|
Loading…
Reference in New Issue
Block a user