X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavformat%2Foggparseogm.c;h=469b22999536c150c7a25f2faae4ec8203328bc4;hb=240aa70b798e99c15191d986261966bdbce59dba;hp=a07453760b710be903313e7952a72a2773a8c943;hpb=ace96d2e693d804a0ed16aebc1b1027cfff2c527;p=ffmpeg diff --git a/libavformat/oggparseogm.c b/libavformat/oggparseogm.c index a07453760b7..469b2299953 100644 --- a/libavformat/oggparseogm.c +++ b/libavformat/oggparseogm.c @@ -43,6 +43,7 @@ ogm_header(AVFormatContext *s, int idx) uint64_t time_unit; uint64_t spu; uint32_t size; + int ret; bytestream2_init(&p, os->buf + os->pstart, os->psize); if (!(bytestream2_peek_byte(&p) & 1)) @@ -108,12 +109,14 @@ ogm_header(AVFormatContext *s, int idx) size -= 52; if (bytestream2_get_bytes_left(&p) < size) return AVERROR_INVALIDDATA; - av_freep(&st->codecpar->extradata); - if (ff_alloc_extradata(st->codecpar, size) < 0) - return AVERROR(ENOMEM); + if ((ret = ff_alloc_extradata(st->codecpar, size)) < 0) + return ret; bytestream2_get_buffer(&p, st->codecpar->extradata, st->codecpar->extradata_size); } } + + // Update internal avctx with changes to codecpar above. + st->internal->need_context_update = 1; } else if (bytestream2_peek_byte(&p) == 3) { bytestream2_skip(&p, 7); if (bytestream2_get_bytes_left(&p) > 1)