|
|
|
@@ -256,8 +256,16 @@ vorbis_header (AVFormatContext * s, int idx) |
|
|
|
st->time_base.den = srate; |
|
|
|
} |
|
|
|
} else if (os->buf[os->pstart] == 3) { |
|
|
|
if (os->psize > 8) |
|
|
|
ff_vorbis_comment (s, &st->metadata, os->buf + os->pstart + 7, os->psize - 8); |
|
|
|
if (os->psize > 8 && |
|
|
|
ff_vorbis_comment(s, &st->metadata, os->buf + os->pstart + 7, os->psize - 8) >= 0) { |
|
|
|
// drop all metadata we parsed and which is not required by libvorbis |
|
|
|
unsigned new_len = 7 + 4 + AV_RL32(priv->packet[1] + 7) + 4 + 1; |
|
|
|
if (new_len >= 16 && new_len < os->psize) { |
|
|
|
AV_WL32(priv->packet[1] + new_len - 5, 0); |
|
|
|
priv->packet[1][new_len - 1] = 1; |
|
|
|
priv->len[1] = new_len; |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
st->codec->extradata_size = |
|
|
|
fixup_vorbis_headers(s, priv, &st->codec->extradata); |
|
|
|
|