X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Flibvorbis.c;h=f7ea253c4f068183c209c0858dfe33d83f05696c;hb=f963f80399deb1a2b44c1bac3af7123e8a0c9e46;hp=fc4a0a471601cdb30cdb5b354b54d9e01da8f132;hpb=6896f95b2483e52e717e2c75a4fd24fcb0e14b67;p=ffmpeg diff --git a/libavcodec/libvorbis.c b/libavcodec/libvorbis.c index fc4a0a47160..f7ea253c4f0 100644 --- a/libavcodec/libvorbis.c +++ b/libavcodec/libvorbis.c @@ -58,7 +58,7 @@ typedef struct LibvorbisContext { vorbis_comment vc; /**< VorbisComment info */ ogg_packet op; /**< ogg packet */ double iblock; /**< impulse block bias option */ - AVVorbisParseContext vp; /**< parse context to get durations */ + AVVorbisParseContext *vp; /**< parse context to get durations */ AudioFrameQueue afq; /**< frame queue for timestamps */ } LibvorbisContext; @@ -163,6 +163,8 @@ static av_cold int libvorbis_encode_close(AVCodecContext *avctx) ff_af_queue_close(&s->afq); av_freep(&avctx->extradata); + av_vorbis_parse_free(&s->vp); + return 0; } @@ -221,7 +223,8 @@ static av_cold int libvorbis_encode_init(AVCodecContext *avctx) offset += header_code.bytes; assert(offset == avctx->extradata_size); - if ((ret = avpriv_vorbis_parse_extradata(avctx, &s->vp)) < 0) { + s->vp = av_vorbis_parse_init(avctx->extradata, avctx->extradata_size); + if (!s->vp) { av_log(avctx, AV_LOG_ERROR, "invalid extradata\n"); return ret; } @@ -318,7 +321,7 @@ static int libvorbis_encode_frame(AVCodecContext *avctx, AVPacket *avpkt, avpkt->pts = ff_samples_to_time_base(avctx, op.granulepos); - duration = avpriv_vorbis_parse_frame(&s->vp, avpkt->data, avpkt->size); + duration = av_vorbis_parse_frame(s->vp, avpkt->data, avpkt->size); if (duration > 0) { /* we do not know encoder delay until we get the first packet from * libvorbis, so we have to update the AudioFrameQueue counts */