mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-25 04:30:02 +00:00
lavf/oggdec: rework allocations in ogg_new_streams().
This commit is contained in:
parent
edca80387c
commit
3a89553347
@ -165,28 +165,36 @@ static int ogg_new_stream(AVFormatContext *s, uint32_t serial, int new_avstream)
|
||||
{
|
||||
|
||||
struct ogg *ogg = s->priv_data;
|
||||
int idx = ogg->nstreams++;
|
||||
int idx = ogg->nstreams;
|
||||
AVStream *st;
|
||||
struct ogg_stream *os;
|
||||
size_t size;
|
||||
|
||||
ogg->streams = av_realloc (ogg->streams,
|
||||
ogg->nstreams * sizeof (*ogg->streams));
|
||||
if (av_size_mult(ogg->nstreams + 1, sizeof(*ogg->streams), &size) < 0 ||
|
||||
!(os = av_realloc(ogg->streams, size)))
|
||||
return AVERROR(ENOMEM);
|
||||
ogg->streams = os;
|
||||
memset (ogg->streams + idx, 0, sizeof (*ogg->streams));
|
||||
os = ogg->streams + idx;
|
||||
os->serial = serial;
|
||||
os->bufsize = DECODER_BUFFER_SIZE;
|
||||
os->buf = av_malloc(os->bufsize + FF_INPUT_BUFFER_PADDING_SIZE);
|
||||
os->header = -1;
|
||||
if (!os->buf)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
if (new_avstream) {
|
||||
st = avformat_new_stream(s, NULL);
|
||||
if (!st)
|
||||
if (!st) {
|
||||
av_freep(&os->buf);
|
||||
return AVERROR(ENOMEM);
|
||||
}
|
||||
|
||||
st->id = idx;
|
||||
avpriv_set_pts_info(st, 64, 1, 1000000);
|
||||
}
|
||||
|
||||
ogg->nstreams++;
|
||||
return idx;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user