avformat/mov: use ff_get_extradata()
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
@@ -1086,9 +1086,8 @@ static int mov_read_wave(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
st->codec->codec_id == AV_CODEC_ID_SPEEX) {
|
st->codec->codec_id == AV_CODEC_ID_SPEEX) {
|
||||||
// pass all frma atom to codec, needed at least for QDMC and QDM2
|
// pass all frma atom to codec, needed at least for QDMC and QDM2
|
||||||
av_free(st->codec->extradata);
|
av_free(st->codec->extradata);
|
||||||
if (ff_alloc_extradata(st->codec, atom.size))
|
if (ff_get_extradata(st->codec, pb, atom.size) < 0)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
avio_read(pb, st->codec->extradata, atom.size);
|
|
||||||
} else if (atom.size > 8) { /* to read frma, esds atoms */
|
} else if (atom.size > 8) { /* to read frma, esds atoms */
|
||||||
int ret;
|
int ret;
|
||||||
if ((ret = mov_read_default(c, pb, atom)) < 0)
|
if ((ret = mov_read_default(c, pb, atom)) < 0)
|
||||||
@@ -1123,9 +1122,9 @@ static int mov_read_glbl(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
return mov_read_default(c, pb, atom);
|
return mov_read_default(c, pb, atom);
|
||||||
}
|
}
|
||||||
av_free(st->codec->extradata);
|
av_free(st->codec->extradata);
|
||||||
if (ff_alloc_extradata(st->codec, atom.size))
|
if (ff_get_extradata(st->codec, pb, atom.size) < 0)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
avio_read(pb, st->codec->extradata, atom.size);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1146,13 +1145,10 @@ static int mov_read_dvc1(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
if ((profile_level & 0xf0) != 0xc0)
|
if ((profile_level & 0xf0) != 0xc0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
av_free(st->codec->extradata);
|
|
||||||
if (ff_alloc_extradata(st->codec, atom.size - 7))
|
|
||||||
return AVERROR(ENOMEM);
|
|
||||||
avio_seek(pb, 6, SEEK_CUR);
|
avio_seek(pb, 6, SEEK_CUR);
|
||||||
ret = avio_read(pb, st->codec->extradata, st->codec->extradata_size);
|
av_free(st->codec->extradata);
|
||||||
if (ret != st->codec->extradata_size)
|
if ((ret = ff_get_extradata(st->codec, pb, atom.size - 7)) < 0)
|
||||||
return ret < 0 ? ret : AVERROR_INVALIDDATA;
|
return ret;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1175,11 +1171,10 @@ static int mov_read_strf(MOVContext *c, AVIOContext *pb, MOVAtom atom)
|
|||||||
if ((uint64_t)atom.size > (1<<30))
|
if ((uint64_t)atom.size > (1<<30))
|
||||||
return AVERROR_INVALIDDATA;
|
return AVERROR_INVALIDDATA;
|
||||||
|
|
||||||
av_free(st->codec->extradata);
|
|
||||||
if (ff_alloc_extradata(st->codec, atom.size - 40))
|
|
||||||
return AVERROR(ENOMEM);
|
|
||||||
avio_skip(pb, 40);
|
avio_skip(pb, 40);
|
||||||
avio_read(pb, st->codec->extradata, atom.size - 40);
|
av_free(st->codec->extradata);
|
||||||
|
if (ff_get_extradata(st->codec, pb, atom.size - 40) < 0)
|
||||||
|
return AVERROR(ENOMEM);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1491,9 +1486,8 @@ static int mov_parse_stsd_data(MOVContext *c, AVIOContext *pb,
|
|||||||
int size)
|
int size)
|
||||||
{
|
{
|
||||||
if (st->codec->codec_tag == MKTAG('t','m','c','d')) {
|
if (st->codec->codec_tag == MKTAG('t','m','c','d')) {
|
||||||
if (ff_alloc_extradata(st->codec, size))
|
if (ff_get_extradata(st->codec, pb, size) < 0)
|
||||||
return AVERROR(ENOMEM);
|
return AVERROR(ENOMEM);
|
||||||
avio_read(pb, st->codec->extradata, size);
|
|
||||||
if (size > 16) {
|
if (size > 16) {
|
||||||
MOVStreamContext *tmcd_ctx = st->priv_data;
|
MOVStreamContext *tmcd_ctx = st->priv_data;
|
||||||
int val;
|
int val;
|
||||||
|
Reference in New Issue
Block a user