decoder/vorbis: implement method stream_tag()
This allows tags in archive files.
This commit is contained in:
parent
3b0bf856c4
commit
8af52fa205
|
@ -371,21 +371,14 @@ vorbis_stream_decode(struct decoder *decoder,
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct tag *
|
static struct tag *
|
||||||
vorbis_tag_dup(const char *file)
|
vorbis_stream_tag(struct input_stream *is)
|
||||||
{
|
{
|
||||||
struct tag *ret;
|
struct tag *ret;
|
||||||
FILE *fp;
|
struct vorbis_input_stream vis;
|
||||||
OggVorbis_File vf;
|
OggVorbis_File vf;
|
||||||
|
|
||||||
fp = fopen(file, "rb");
|
if (!vorbis_is_open(&vis, &vf, NULL, is))
|
||||||
if (!fp) {
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
|
||||||
|
|
||||||
if (ov_open(fp, &vf, NULL, 0) < 0) {
|
|
||||||
fclose(fp);
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
ret = vorbis_comments_to_tag(ov_comment(&vf, -1)->user_comments);
|
ret = vorbis_comments_to_tag(ov_comment(&vf, -1)->user_comments);
|
||||||
|
|
||||||
|
@ -417,7 +410,7 @@ static const char *const vorbis_mime_types[] = {
|
||||||
const struct decoder_plugin vorbis_decoder_plugin = {
|
const struct decoder_plugin vorbis_decoder_plugin = {
|
||||||
.name = "vorbis",
|
.name = "vorbis",
|
||||||
.stream_decode = vorbis_stream_decode,
|
.stream_decode = vorbis_stream_decode,
|
||||||
.tag_dup = vorbis_tag_dup,
|
.stream_tag = vorbis_stream_tag,
|
||||||
.suffixes = vorbis_suffixes,
|
.suffixes = vorbis_suffixes,
|
||||||
.mime_types = vorbis_mime_types
|
.mime_types = vorbis_mime_types
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue