summaryrefslogtreecommitdiff
path: root/libavformat/oggparsevorbis.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-01-07 14:05:29 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-01-07 14:20:21 +0100
commit1700be585593634c68fa7ccd193bfcb6b3c70822 (patch)
tree26efaeaccb56d63c2c4b8ef42c5ad049ee558f1f /libavformat/oggparsevorbis.c
parent2db8660f094ab15ce15f024f97134440a3654932 (diff)
parentd894f74762bc95310ba23f804b7ba8dffc8f6646 (diff)
Merge remote-tracking branch 'qatar/master'
* qatar/master: oggdec: make sure the private parse data is cleaned up Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/oggparsevorbis.c')
-rw-r--r--libavformat/oggparsevorbis.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/libavformat/oggparsevorbis.c b/libavformat/oggparsevorbis.c
index 7e8f6cede3..5510115bc8 100644
--- a/libavformat/oggparsevorbis.c
+++ b/libavformat/oggparsevorbis.c
@@ -192,6 +192,16 @@ fixup_vorbis_headers(AVFormatContext * as, struct oggvorbis_private *priv,
return offset;
}
+static int vorbis_cleanup(AVFormatContext *s, int idx)
+{
+ struct ogg *ogg = s->priv_data;
+ struct ogg_stream *os = ogg->streams + idx;
+ struct oggvorbis_private *priv = os->private;
+ int i;
+ if (os->private)
+ for (i = 0; i < 3; i++)
+ av_freep(&priv->packet[i]);
+}
static int
vorbis_header (AVFormatContext * s, int idx)
@@ -373,5 +383,6 @@ const struct ogg_codec ff_vorbis_codec = {
.magicsize = 7,
.header = vorbis_header,
.packet = vorbis_packet,
+ .cleanup= vorbis_cleanup,
.nb_header = 3,
};